commandmate 0.19.0 → 0.21.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 (830) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +259 -238
  3. package/.next/app-path-routes-manifest.json +28 -26
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +12 -12
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +18 -0
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/app/update/route.js +5 -3
  10. package/.next/server/app/api/app/update/route.js.nft.json +1 -1
  11. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/update-check/route.js +1 -1
  13. package/.next/server/app/api/app/update-check/route.js.nft.json +1 -1
  14. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  16. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  17. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  19. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  20. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/assistant/messages/route.js +1 -1
  22. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  23. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/assistant/session/route.js +1 -1
  25. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  26. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/assistant/start/route.js +1 -1
  28. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  29. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/assistant/terminal/route.js +1 -1
  31. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  32. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/assistant/tools/route.js +1 -1
  34. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  35. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/auth/login/route.js +1 -1
  37. package/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  38. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/auth/logout/route.js +1 -1
  40. package/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  41. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/auth/status/route.js +1 -1
  43. package/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  44. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/daily-summary/route.js +1 -1
  46. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  47. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  49. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  50. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
  52. package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
  53. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  55. package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
  56. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/external-apps/route.js +1 -1
  58. package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
  59. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/fs/browse/route.js +2 -2
  61. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
  62. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/fs/recent-paths/route.js +2 -2
  64. package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
  65. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  67. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  68. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  70. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  71. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/metrics/vibe/route.js +2 -2
  73. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
  74. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/ollama/models/route.js +1 -1
  76. package/.next/server/app/api/ollama/models/route.js.nft.json +1 -1
  77. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  79. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  80. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/push/vapid/route.js +1 -1
  82. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  83. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/repositories/[id]/route.js +1 -1
  85. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  86. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  88. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +1 -1
  89. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  91. package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +1 -1
  92. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  94. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  95. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/repositories/clone/route.js +1 -1
  97. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  98. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/repositories/excluded/route.js +1 -1
  100. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  101. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/repositories/restore/route.js +1 -1
  103. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  104. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/repositories/route.js +1 -1
  106. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  107. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/repositories/scan/route.js +1 -1
  109. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  110. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/repositories/sync/route.js +1 -1
  112. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  113. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/repositories/validate-path/route.js +1 -1
  115. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
  116. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/sidebar/group-order/route.js +2 -2
  118. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  119. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/skills/[id]/route.js +1 -1
  121. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  122. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/skills/installations/route.js +1 -1
  124. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  125. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/skills/operations/route.js +3 -3
  127. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
  128. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/skills/reindex/route.js +1 -1
  130. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
  131. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/skills/route.js +1 -1
  133. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  134. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/slash-commands/route.js +1 -1
  136. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  137. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/tasks/[taskId]/cancel/route.js +2 -2
  139. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  140. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/tasks/[taskId]/route.js +2 -2
  142. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
  143. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/templates/[id]/route.js +2 -2
  145. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  146. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/templates/route.js +2 -2
  148. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  149. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/todos/route.js +1 -1
  151. package/.next/server/app/api/todos/route.js.nft.json +1 -1
  152. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  154. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
  155. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/verification/runs/route.js +1 -1
  157. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
  158. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  161. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  164. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  167. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +2 -2
  169. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  173. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  176. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  178. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  182. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  185. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  197. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  200. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  206. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  218. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  221. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  233. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  236. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  239. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  242. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  245. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  248. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  251. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  254. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  257. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  260. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/logs/route.js +2 -2
  262. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  263. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +6 -6
  265. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  266. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  269. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  272. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  275. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  278. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  279. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  280. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  281. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  283. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  284. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  286. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  287. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  289. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  290. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  291. package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -3
  292. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  293. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  294. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  296. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  298. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  299. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
  301. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  302. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  304. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  305. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  306. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  307. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  308. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  309. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  310. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  311. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  312. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  313. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  314. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  315. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -0
  316. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -0
  317. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -0
  318. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -0
  319. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -0
  320. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -0
  321. package/.next/server/app/api/worktrees/[id]/skills/route.js +2 -2
  322. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  323. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  324. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  325. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  326. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  327. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  328. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  329. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  330. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  331. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
  332. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  333. package/.next/server/app/api/worktrees/[id]/tasks/route.js +4 -4
  334. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  335. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  336. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  337. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  338. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  339. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  340. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  341. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  342. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  343. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  344. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  345. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  346. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  347. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  348. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  349. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  350. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  351. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  352. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  353. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  354. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  355. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  356. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  357. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  358. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  359. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  360. package/.next/server/app/api/worktrees/[id]/verify/route.js +2 -2
  361. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  362. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  363. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  364. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
  365. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  366. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  367. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
  368. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  369. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  370. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  371. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  372. package/.next/server/app/api/worktrees/route.js +1 -1
  373. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  374. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  375. package/.next/server/app/apple-icon.png/route.js +1 -1
  376. package/.next/server/app/apple-icon.png/route.js.nft.json +1 -1
  377. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  378. package/.next/server/app/icon.png/route.js +1 -1
  379. package/.next/server/app/icon.png/route.js.nft.json +1 -1
  380. package/.next/server/app/icon1.png/route.js +1 -1
  381. package/.next/server/app/icon1.png/route.js.nft.json +1 -1
  382. package/.next/server/app/icon2.png/route.js +1 -1
  383. package/.next/server/app/icon2.png/route.js.nft.json +1 -1
  384. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  385. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  386. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  387. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  388. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  389. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  390. package/.next/server/app/page_client-reference-manifest.js +1 -1
  391. package/.next/server/app/proxy/[...path]/route.js +1 -1
  392. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  393. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  394. package/.next/server/app/repositories/page.js +1 -1
  395. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  396. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  397. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  398. package/.next/server/app/skills/[skillId]/page.js +2 -2
  399. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  400. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  401. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  402. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  403. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
  404. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  405. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  406. package/.next/server/app/worktrees/[id]/page.js +8 -8
  407. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  408. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  409. package/.next/server/app/worktrees/[id]/terminal/page.js +3 -3
  410. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  411. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  412. package/.next/server/app-paths-manifest.json +28 -26
  413. package/.next/server/chunks/1029.js +1 -0
  414. package/.next/server/chunks/1068.js +1 -1
  415. package/.next/server/chunks/1503.js +1 -1
  416. package/.next/server/chunks/1598.js +4 -0
  417. package/.next/server/chunks/22.js +1 -1
  418. package/.next/server/chunks/2328.js +1 -1
  419. package/.next/server/chunks/2546.js +1 -0
  420. package/.next/server/chunks/2710.js +2 -2
  421. package/.next/server/chunks/28.js +2 -2
  422. package/.next/server/chunks/3417.js +1 -0
  423. package/.next/server/chunks/3451.js +1 -1
  424. package/.next/server/chunks/3543.js +1 -1
  425. package/.next/server/chunks/365.js +1 -0
  426. package/.next/server/chunks/3736.js +1 -1
  427. package/.next/server/chunks/3753.js +33 -20
  428. package/.next/server/chunks/3945.js +1 -1
  429. package/.next/server/chunks/406.js +5 -5
  430. package/.next/server/chunks/4444.js +1 -1
  431. package/.next/server/chunks/{1185.js → 5048.js} +1 -1
  432. package/.next/server/chunks/5064.js +1 -1
  433. package/.next/server/chunks/5737.js +1 -1
  434. package/.next/server/chunks/5959.js +10 -3
  435. package/.next/server/chunks/{5381.js → 5998.js} +2 -2
  436. package/.next/server/chunks/6130.js +1 -1
  437. package/.next/server/chunks/6274.js +5 -5
  438. package/.next/server/chunks/6283.js +1 -1
  439. package/.next/server/chunks/6401.js +1 -0
  440. package/.next/server/chunks/641.js +1 -0
  441. package/.next/server/chunks/848.js +1 -0
  442. package/.next/server/chunks/8536.js +1 -0
  443. package/.next/server/chunks/8543.js +1 -0
  444. package/.next/server/chunks/8584.js +1 -1
  445. package/.next/server/chunks/8807.js +157 -143
  446. package/.next/server/chunks/8856.js +2 -2
  447. package/.next/server/chunks/9058.js +1 -0
  448. package/.next/server/chunks/9067.js +1 -0
  449. package/.next/server/chunks/9123.js +1 -1
  450. package/.next/server/chunks/9360.js +2 -0
  451. package/.next/server/chunks/9687.js +1 -1
  452. package/.next/server/middleware-manifest.json +5 -5
  453. package/.next/server/pages/500.html +1 -1
  454. package/.next/server/server-reference-manifest.json +1 -1
  455. package/.next/server/src/middleware.js +1 -1
  456. package/.next/server/src/middleware.js.map +1 -1
  457. package/.next/static/chunks/{8562-6e2ab32452f4fa5b.js → 2053-52d3c82014e1cd54.js} +1 -1
  458. package/.next/static/chunks/2751-9ef0f4b450bd4ef0.js +1 -0
  459. package/.next/static/chunks/{6488-2c412c29258637b6.js → 6488-b5e707dfdd33d633.js} +1 -1
  460. package/.next/static/chunks/744-fa8c0ae444c8338c.js +1 -0
  461. package/.next/static/chunks/app/api/app/update/route-be21650964d61b1d.js +1 -0
  462. package/.next/static/chunks/app/api/app/update-check/route-be21650964d61b1d.js +1 -0
  463. package/.next/static/chunks/app/api/assistant/conversation/route-be21650964d61b1d.js +1 -0
  464. package/.next/static/chunks/app/api/assistant/current-output/route-be21650964d61b1d.js +1 -0
  465. package/.next/static/chunks/app/api/assistant/messages/route-be21650964d61b1d.js +1 -0
  466. package/.next/static/chunks/app/api/assistant/session/route-be21650964d61b1d.js +1 -0
  467. package/.next/static/chunks/app/api/assistant/start/route-be21650964d61b1d.js +1 -0
  468. package/.next/static/chunks/app/api/assistant/terminal/route-be21650964d61b1d.js +1 -0
  469. package/.next/static/chunks/app/api/assistant/tools/route-be21650964d61b1d.js +1 -0
  470. package/.next/static/chunks/app/api/auth/login/route-be21650964d61b1d.js +1 -0
  471. package/.next/static/chunks/app/api/auth/logout/route-be21650964d61b1d.js +1 -0
  472. package/.next/static/chunks/app/api/auth/status/route-be21650964d61b1d.js +1 -0
  473. package/.next/static/chunks/app/api/daily-summary/route-be21650964d61b1d.js +1 -0
  474. package/.next/static/chunks/app/api/daily-summary/status/route-be21650964d61b1d.js +1 -0
  475. package/.next/static/chunks/app/api/external-apps/[id]/health/route-be21650964d61b1d.js +1 -0
  476. package/.next/static/chunks/app/api/external-apps/[id]/route-be21650964d61b1d.js +1 -0
  477. package/.next/static/chunks/app/api/external-apps/route-be21650964d61b1d.js +1 -0
  478. package/.next/static/chunks/app/api/fs/browse/route-be21650964d61b1d.js +1 -0
  479. package/.next/static/chunks/app/api/fs/recent-paths/route-be21650964d61b1d.js +1 -0
  480. package/.next/static/chunks/app/api/hooks/agent-event/route-be21650964d61b1d.js +1 -0
  481. package/.next/static/chunks/app/api/hooks/claude-done/route-be21650964d61b1d.js +1 -0
  482. package/.next/static/chunks/app/api/metrics/vibe/route-be21650964d61b1d.js +1 -0
  483. package/.next/static/chunks/app/api/ollama/models/route-be21650964d61b1d.js +1 -0
  484. package/.next/static/chunks/app/api/push/subscriptions/route-be21650964d61b1d.js +1 -0
  485. package/.next/static/chunks/app/api/push/vapid/route-be21650964d61b1d.js +1 -0
  486. package/.next/static/chunks/app/api/repositories/[id]/route-be21650964d61b1d.js +1 -0
  487. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-be21650964d61b1d.js +1 -0
  488. package/.next/static/chunks/app/api/repositories/[id]/todos/route-be21650964d61b1d.js +1 -0
  489. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-be21650964d61b1d.js +1 -0
  490. package/.next/static/chunks/app/api/repositories/clone/route-be21650964d61b1d.js +1 -0
  491. package/.next/static/chunks/app/api/repositories/excluded/route-be21650964d61b1d.js +1 -0
  492. package/.next/static/chunks/app/api/repositories/restore/route-be21650964d61b1d.js +1 -0
  493. package/.next/static/chunks/app/api/repositories/route-be21650964d61b1d.js +1 -0
  494. package/.next/static/chunks/app/api/repositories/scan/route-be21650964d61b1d.js +1 -0
  495. package/.next/static/chunks/app/api/repositories/sync/route-be21650964d61b1d.js +1 -0
  496. package/.next/static/chunks/app/api/repositories/validate-path/route-be21650964d61b1d.js +1 -0
  497. package/.next/static/chunks/app/api/sidebar/group-order/route-be21650964d61b1d.js +1 -0
  498. package/.next/static/chunks/app/api/skills/[id]/route-be21650964d61b1d.js +1 -0
  499. package/.next/static/chunks/app/api/skills/installations/route-be21650964d61b1d.js +1 -0
  500. package/.next/static/chunks/app/api/skills/operations/route-be21650964d61b1d.js +1 -0
  501. package/.next/static/chunks/app/api/skills/reindex/route-be21650964d61b1d.js +1 -0
  502. package/.next/static/chunks/app/api/skills/route-be21650964d61b1d.js +1 -0
  503. package/.next/static/chunks/app/api/slash-commands/route-be21650964d61b1d.js +1 -0
  504. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-be21650964d61b1d.js +1 -0
  505. package/.next/static/chunks/app/api/tasks/[taskId]/route-be21650964d61b1d.js +1 -0
  506. package/.next/static/chunks/app/api/templates/[id]/route-be21650964d61b1d.js +1 -0
  507. package/.next/static/chunks/app/api/templates/route-be21650964d61b1d.js +1 -0
  508. package/.next/static/chunks/app/api/todos/route-be21650964d61b1d.js +1 -0
  509. package/.next/static/chunks/app/api/verification/runs/[runId]/route-be21650964d61b1d.js +1 -0
  510. package/.next/static/chunks/app/api/verification/runs/route-be21650964d61b1d.js +1 -0
  511. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-be21650964d61b1d.js +1 -0
  512. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-be21650964d61b1d.js +1 -0
  513. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-be21650964d61b1d.js +1 -0
  514. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-be21650964d61b1d.js +1 -0
  515. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-be21650964d61b1d.js +1 -0
  516. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-be21650964d61b1d.js +1 -0
  517. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-be21650964d61b1d.js +1 -0
  518. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-be21650964d61b1d.js +1 -0
  519. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-be21650964d61b1d.js +1 -0
  520. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-be21650964d61b1d.js +1 -0
  521. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-be21650964d61b1d.js +1 -0
  522. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-be21650964d61b1d.js +1 -0
  523. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-be21650964d61b1d.js +1 -0
  524. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-be21650964d61b1d.js +1 -0
  525. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-be21650964d61b1d.js +1 -0
  526. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-be21650964d61b1d.js +1 -0
  527. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-be21650964d61b1d.js +1 -0
  528. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-be21650964d61b1d.js +1 -0
  529. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-be21650964d61b1d.js +1 -0
  530. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-be21650964d61b1d.js +1 -0
  531. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-be21650964d61b1d.js +1 -0
  532. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-be21650964d61b1d.js +1 -0
  533. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-be21650964d61b1d.js +1 -0
  534. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-be21650964d61b1d.js +1 -0
  535. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-be21650964d61b1d.js +1 -0
  536. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-be21650964d61b1d.js +1 -0
  537. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-be21650964d61b1d.js +1 -0
  538. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-be21650964d61b1d.js +1 -0
  539. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-be21650964d61b1d.js +1 -0
  540. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-be21650964d61b1d.js +1 -0
  541. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-be21650964d61b1d.js +1 -0
  542. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-be21650964d61b1d.js +1 -0
  543. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-be21650964d61b1d.js +1 -0
  544. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-be21650964d61b1d.js +1 -0
  545. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-be21650964d61b1d.js +1 -0
  546. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-be21650964d61b1d.js +1 -0
  547. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-be21650964d61b1d.js +1 -0
  548. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-be21650964d61b1d.js +1 -0
  549. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-be21650964d61b1d.js +1 -0
  550. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-be21650964d61b1d.js +1 -0
  551. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-be21650964d61b1d.js +1 -0
  552. package/.next/static/chunks/app/api/worktrees/[id]/route-be21650964d61b1d.js +1 -0
  553. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-be21650964d61b1d.js +1 -0
  554. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-be21650964d61b1d.js +1 -0
  555. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-be21650964d61b1d.js +1 -0
  556. package/.next/static/chunks/app/api/worktrees/[id]/search/route-be21650964d61b1d.js +1 -0
  557. package/.next/static/chunks/app/api/worktrees/[id]/send/route-be21650964d61b1d.js +1 -0
  558. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-be21650964d61b1d.js +1 -0
  559. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-be21650964d61b1d.js +1 -0
  560. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-be21650964d61b1d.js +1 -0
  561. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-be21650964d61b1d.js +1 -0
  562. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-be21650964d61b1d.js +1 -0
  563. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-be21650964d61b1d.js +1 -0
  564. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-be21650964d61b1d.js +1 -0
  565. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-be21650964d61b1d.js +1 -0
  566. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-be21650964d61b1d.js +1 -0
  567. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-be21650964d61b1d.js +1 -0
  568. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-be21650964d61b1d.js +1 -0
  569. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-be21650964d61b1d.js +1 -0
  570. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-be21650964d61b1d.js +1 -0
  571. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-be21650964d61b1d.js +1 -0
  572. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-be21650964d61b1d.js +1 -0
  573. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-be21650964d61b1d.js +1 -0
  574. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-be21650964d61b1d.js +1 -0
  575. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-be21650964d61b1d.js +1 -0
  576. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-be21650964d61b1d.js +1 -0
  577. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-be21650964d61b1d.js +1 -0
  578. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-be21650964d61b1d.js +1 -0
  579. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-be21650964d61b1d.js +1 -0
  580. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-be21650964d61b1d.js +1 -0
  581. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-be21650964d61b1d.js +1 -0
  582. package/.next/static/chunks/app/api/worktrees/route-be21650964d61b1d.js +1 -0
  583. package/.next/static/chunks/app/manifest.webmanifest/route-be21650964d61b1d.js +1 -0
  584. package/.next/static/chunks/app/proxy/[...path]/route-be21650964d61b1d.js +1 -0
  585. package/.next/static/chunks/app/repositories/page-202680fe6ec169c8.js +1 -0
  586. package/.next/static/chunks/app/skills/[skillId]/page-10d6f983e5f06ffb.js +1 -0
  587. package/.next/static/chunks/app/worktrees/[id]/layout-be21650964d61b1d.js +1 -0
  588. package/.next/static/chunks/app/worktrees/[id]/page-b73ac6531829c698.js +1 -0
  589. package/.next/trace +12 -12
  590. package/.next/types/app/api/worktrees/[id]/skills/[skillId]/update/route.ts +347 -0
  591. package/.next/types/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.ts +347 -0
  592. package/.next/types/routes.d.ts +5 -2
  593. package/.next/types/validator.ts +27 -0
  594. package/README.md +10 -1
  595. package/dist/cli/commands/auto-yes.d.ts.map +1 -1
  596. package/dist/cli/commands/auto-yes.js +4 -3
  597. package/dist/cli/commands/capture.d.ts +1 -0
  598. package/dist/cli/commands/capture.d.ts.map +1 -1
  599. package/dist/cli/commands/capture.js +112 -2
  600. package/dist/cli/commands/ls.d.ts.map +1 -1
  601. package/dist/cli/commands/ls.js +9 -3
  602. package/dist/cli/commands/respond.d.ts.map +1 -1
  603. package/dist/cli/commands/respond.js +34 -8
  604. package/dist/cli/commands/send.d.ts.map +1 -1
  605. package/dist/cli/commands/send.js +6 -5
  606. package/dist/cli/commands/skill-format.d.ts +7 -1
  607. package/dist/cli/commands/skill-format.d.ts.map +1 -1
  608. package/dist/cli/commands/skill-format.js +67 -0
  609. package/dist/cli/commands/skill.d.ts +2 -0
  610. package/dist/cli/commands/skill.d.ts.map +1 -1
  611. package/dist/cli/commands/skill.js +149 -0
  612. package/dist/cli/commands/sync.d.ts +14 -0
  613. package/dist/cli/commands/sync.d.ts.map +1 -0
  614. package/dist/cli/commands/sync.js +53 -0
  615. package/dist/cli/commands/update.d.ts.map +1 -1
  616. package/dist/cli/commands/update.js +66 -0
  617. package/dist/cli/commands/wait.d.ts.map +1 -1
  618. package/dist/cli/commands/wait.js +3 -2
  619. package/dist/cli/config/agent-target-options.d.ts +46 -0
  620. package/dist/cli/config/agent-target-options.d.ts.map +1 -0
  621. package/dist/cli/config/agent-target-options.js +54 -0
  622. package/dist/cli/docs/agent-operations.d.ts +2 -2
  623. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  624. package/dist/cli/docs/agent-operations.js +72 -17
  625. package/dist/cli/program.d.ts.map +1 -1
  626. package/dist/cli/program.js +3 -0
  627. package/dist/cli/types/api-responses.d.ts +174 -0
  628. package/dist/cli/types/api-responses.d.ts.map +1 -1
  629. package/dist/cli/types/index.d.ts +31 -0
  630. package/dist/cli/types/index.d.ts.map +1 -1
  631. package/dist/cli/utils/api-client.d.ts +4 -1
  632. package/dist/cli/utils/api-client.d.ts.map +1 -1
  633. package/dist/cli/utils/api-client.js +43 -5
  634. package/dist/cli/utils/npm-runner.d.ts +24 -0
  635. package/dist/cli/utils/npm-runner.d.ts.map +1 -1
  636. package/dist/cli/utils/npm-runner.js +51 -1
  637. package/dist/cli/utils/pid-manager.d.ts +12 -2
  638. package/dist/cli/utils/pid-manager.d.ts.map +1 -1
  639. package/dist/cli/utils/pid-manager.js +76 -13
  640. package/dist/cli/utils/verify-runner.d.ts +9 -0
  641. package/dist/cli/utils/verify-runner.d.ts.map +1 -1
  642. package/dist/cli/utils/verify-runner.js +28 -2
  643. package/dist/config/history-display-config.d.ts +61 -0
  644. package/dist/config/history-display-config.d.ts.map +1 -0
  645. package/dist/config/history-display-config.js +62 -0
  646. package/dist/server/server.js +107 -14
  647. package/dist/server/src/lib/auto-yes-poller.js +49 -0
  648. package/dist/server/src/lib/auto-yes-state.js +64 -0
  649. package/dist/server/src/lib/db/chat-db.js +75 -1
  650. package/dist/server/src/lib/db/db-repository.js +66 -2
  651. package/dist/server/src/lib/db/db.js +13 -3
  652. package/dist/server/src/lib/db/migrations/index.js +6 -0
  653. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  654. package/dist/server/src/lib/db/migrations/v53-worktree-aliases.js +53 -0
  655. package/dist/server/src/lib/db/migrations/v54-worktree-id-path-derived.js +204 -0
  656. package/dist/server/src/lib/db/migrations/v55-compact-churned-worktree-ids.js +207 -0
  657. package/dist/server/src/lib/db/migrations/worktree-id-rename.js +153 -0
  658. package/dist/server/src/lib/db/worktree-alias-db.js +155 -0
  659. package/dist/server/src/lib/db/worktree-db.js +53 -71
  660. package/dist/server/src/lib/detection/cli-patterns.js +86 -2
  661. package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +10 -1
  662. package/dist/server/src/lib/git/worktree-id.js +145 -0
  663. package/dist/server/src/lib/git/worktree-redirect.js +155 -0
  664. package/dist/server/src/lib/git/worktrees.js +173 -27
  665. package/dist/server/src/lib/logger.js +13 -1
  666. package/dist/server/src/lib/polling/auto-yes-manager.js +3 -1
  667. package/dist/server/src/lib/polling/auto-yes-suppression-state.js +54 -0
  668. package/dist/server/src/lib/polling/prompt-dedup.js +22 -0
  669. package/dist/server/src/lib/polling/response-checker.js +53 -13
  670. package/dist/server/src/lib/polling/response-dedup.js +22 -0
  671. package/dist/server/src/lib/polling/response-poller-core.js +107 -0
  672. package/dist/server/src/lib/polling/response-poller.js +4 -1
  673. package/dist/server/src/lib/response-extractor.js +22 -2
  674. package/dist/server/src/lib/session/claude-session.js +117 -35
  675. package/dist/server/src/lib/session/current-output-builder.js +16 -1
  676. package/dist/server/src/lib/session/session-start-error.js +125 -0
  677. package/dist/server/src/lib/session/worktree-session-reconcile.js +603 -0
  678. package/dist/server/src/lib/skills/install-apply.js +63 -23
  679. package/dist/server/src/lib/skills/operation-audit.js +5 -6
  680. package/dist/server/src/lib/skills/startup-reconcile.js +26 -5
  681. package/dist/server/src/lib/skills/updater.js +830 -0
  682. package/dist/server/src/lib/tasks/contract-parser.js +17 -1
  683. package/dist/server/src/lib/tasks/task-state-machine.js +23 -1
  684. package/dist/server/src/lib/tmux/control-mode-tmux-transport.js +7 -0
  685. package/dist/server/src/lib/tmux/read-mode.js +22 -2
  686. package/dist/server/src/lib/tmux/tmux-capture-cache.js +33 -0
  687. package/dist/server/src/lib/tmux/tmux-control-client.js +12 -0
  688. package/dist/server/src/lib/tmux/tmux-control-registry.js +55 -11
  689. package/dist/server/src/lib/tmux/tmux.js +61 -0
  690. package/dist/server/src/lib/ws-server.js +104 -1
  691. package/package.json +1 -1
  692. package/.next/server/chunks/1117.js +0 -1
  693. package/.next/server/chunks/1356.js +0 -4
  694. package/.next/server/chunks/1692.js +0 -1
  695. package/.next/server/chunks/3042.js +0 -1
  696. package/.next/server/chunks/4018.js +0 -1
  697. package/.next/server/chunks/4390.js +0 -1
  698. package/.next/server/chunks/4440.js +0 -2
  699. package/.next/server/chunks/4548.js +0 -1
  700. package/.next/server/chunks/5793.js +0 -1
  701. package/.next/server/chunks/8681.js +0 -1
  702. package/.next/static/chunks/2751-7fabd91275b14ca3.js +0 -1
  703. package/.next/static/chunks/744-d5e47fe16e7b9e06.js +0 -1
  704. package/.next/static/chunks/app/api/app/update/route-8440b6c72bed83a1.js +0 -1
  705. package/.next/static/chunks/app/api/app/update-check/route-8440b6c72bed83a1.js +0 -1
  706. package/.next/static/chunks/app/api/assistant/conversation/route-8440b6c72bed83a1.js +0 -1
  707. package/.next/static/chunks/app/api/assistant/current-output/route-8440b6c72bed83a1.js +0 -1
  708. package/.next/static/chunks/app/api/assistant/messages/route-8440b6c72bed83a1.js +0 -1
  709. package/.next/static/chunks/app/api/assistant/session/route-8440b6c72bed83a1.js +0 -1
  710. package/.next/static/chunks/app/api/assistant/start/route-8440b6c72bed83a1.js +0 -1
  711. package/.next/static/chunks/app/api/assistant/terminal/route-8440b6c72bed83a1.js +0 -1
  712. package/.next/static/chunks/app/api/assistant/tools/route-8440b6c72bed83a1.js +0 -1
  713. package/.next/static/chunks/app/api/auth/login/route-8440b6c72bed83a1.js +0 -1
  714. package/.next/static/chunks/app/api/auth/logout/route-8440b6c72bed83a1.js +0 -1
  715. package/.next/static/chunks/app/api/auth/status/route-8440b6c72bed83a1.js +0 -1
  716. package/.next/static/chunks/app/api/daily-summary/route-8440b6c72bed83a1.js +0 -1
  717. package/.next/static/chunks/app/api/daily-summary/status/route-8440b6c72bed83a1.js +0 -1
  718. package/.next/static/chunks/app/api/external-apps/[id]/health/route-8440b6c72bed83a1.js +0 -1
  719. package/.next/static/chunks/app/api/external-apps/[id]/route-8440b6c72bed83a1.js +0 -1
  720. package/.next/static/chunks/app/api/external-apps/route-8440b6c72bed83a1.js +0 -1
  721. package/.next/static/chunks/app/api/fs/browse/route-8440b6c72bed83a1.js +0 -1
  722. package/.next/static/chunks/app/api/fs/recent-paths/route-8440b6c72bed83a1.js +0 -1
  723. package/.next/static/chunks/app/api/hooks/agent-event/route-8440b6c72bed83a1.js +0 -1
  724. package/.next/static/chunks/app/api/hooks/claude-done/route-8440b6c72bed83a1.js +0 -1
  725. package/.next/static/chunks/app/api/metrics/vibe/route-8440b6c72bed83a1.js +0 -1
  726. package/.next/static/chunks/app/api/ollama/models/route-8440b6c72bed83a1.js +0 -1
  727. package/.next/static/chunks/app/api/push/subscriptions/route-8440b6c72bed83a1.js +0 -1
  728. package/.next/static/chunks/app/api/push/vapid/route-8440b6c72bed83a1.js +0 -1
  729. package/.next/static/chunks/app/api/repositories/[id]/route-8440b6c72bed83a1.js +0 -1
  730. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8440b6c72bed83a1.js +0 -1
  731. package/.next/static/chunks/app/api/repositories/[id]/todos/route-8440b6c72bed83a1.js +0 -1
  732. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8440b6c72bed83a1.js +0 -1
  733. package/.next/static/chunks/app/api/repositories/clone/route-8440b6c72bed83a1.js +0 -1
  734. package/.next/static/chunks/app/api/repositories/excluded/route-8440b6c72bed83a1.js +0 -1
  735. package/.next/static/chunks/app/api/repositories/restore/route-8440b6c72bed83a1.js +0 -1
  736. package/.next/static/chunks/app/api/repositories/route-8440b6c72bed83a1.js +0 -1
  737. package/.next/static/chunks/app/api/repositories/scan/route-8440b6c72bed83a1.js +0 -1
  738. package/.next/static/chunks/app/api/repositories/sync/route-8440b6c72bed83a1.js +0 -1
  739. package/.next/static/chunks/app/api/repositories/validate-path/route-8440b6c72bed83a1.js +0 -1
  740. package/.next/static/chunks/app/api/sidebar/group-order/route-8440b6c72bed83a1.js +0 -1
  741. package/.next/static/chunks/app/api/skills/[id]/route-8440b6c72bed83a1.js +0 -1
  742. package/.next/static/chunks/app/api/skills/installations/route-8440b6c72bed83a1.js +0 -1
  743. package/.next/static/chunks/app/api/skills/operations/route-8440b6c72bed83a1.js +0 -1
  744. package/.next/static/chunks/app/api/skills/reindex/route-8440b6c72bed83a1.js +0 -1
  745. package/.next/static/chunks/app/api/skills/route-8440b6c72bed83a1.js +0 -1
  746. package/.next/static/chunks/app/api/slash-commands/route-8440b6c72bed83a1.js +0 -1
  747. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-8440b6c72bed83a1.js +0 -1
  748. package/.next/static/chunks/app/api/tasks/[taskId]/route-8440b6c72bed83a1.js +0 -1
  749. package/.next/static/chunks/app/api/templates/[id]/route-8440b6c72bed83a1.js +0 -1
  750. package/.next/static/chunks/app/api/templates/route-8440b6c72bed83a1.js +0 -1
  751. package/.next/static/chunks/app/api/todos/route-8440b6c72bed83a1.js +0 -1
  752. package/.next/static/chunks/app/api/verification/runs/[runId]/route-8440b6c72bed83a1.js +0 -1
  753. package/.next/static/chunks/app/api/verification/runs/route-8440b6c72bed83a1.js +0 -1
  754. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8440b6c72bed83a1.js +0 -1
  755. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8440b6c72bed83a1.js +0 -1
  756. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8440b6c72bed83a1.js +0 -1
  757. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8440b6c72bed83a1.js +0 -1
  758. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8440b6c72bed83a1.js +0 -1
  759. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8440b6c72bed83a1.js +0 -1
  760. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8440b6c72bed83a1.js +0 -1
  761. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8440b6c72bed83a1.js +0 -1
  762. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8440b6c72bed83a1.js +0 -1
  763. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8440b6c72bed83a1.js +0 -1
  764. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8440b6c72bed83a1.js +0 -1
  765. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8440b6c72bed83a1.js +0 -1
  766. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8440b6c72bed83a1.js +0 -1
  767. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8440b6c72bed83a1.js +0 -1
  768. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8440b6c72bed83a1.js +0 -1
  769. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8440b6c72bed83a1.js +0 -1
  770. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8440b6c72bed83a1.js +0 -1
  771. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8440b6c72bed83a1.js +0 -1
  772. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8440b6c72bed83a1.js +0 -1
  773. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8440b6c72bed83a1.js +0 -1
  774. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8440b6c72bed83a1.js +0 -1
  775. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8440b6c72bed83a1.js +0 -1
  776. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8440b6c72bed83a1.js +0 -1
  777. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8440b6c72bed83a1.js +0 -1
  778. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8440b6c72bed83a1.js +0 -1
  779. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8440b6c72bed83a1.js +0 -1
  780. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8440b6c72bed83a1.js +0 -1
  781. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8440b6c72bed83a1.js +0 -1
  782. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8440b6c72bed83a1.js +0 -1
  783. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8440b6c72bed83a1.js +0 -1
  784. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8440b6c72bed83a1.js +0 -1
  785. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8440b6c72bed83a1.js +0 -1
  786. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8440b6c72bed83a1.js +0 -1
  787. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8440b6c72bed83a1.js +0 -1
  788. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8440b6c72bed83a1.js +0 -1
  789. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8440b6c72bed83a1.js +0 -1
  790. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8440b6c72bed83a1.js +0 -1
  791. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8440b6c72bed83a1.js +0 -1
  792. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8440b6c72bed83a1.js +0 -1
  793. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8440b6c72bed83a1.js +0 -1
  794. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8440b6c72bed83a1.js +0 -1
  795. package/.next/static/chunks/app/api/worktrees/[id]/route-8440b6c72bed83a1.js +0 -1
  796. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8440b6c72bed83a1.js +0 -1
  797. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8440b6c72bed83a1.js +0 -1
  798. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8440b6c72bed83a1.js +0 -1
  799. package/.next/static/chunks/app/api/worktrees/[id]/search/route-8440b6c72bed83a1.js +0 -1
  800. package/.next/static/chunks/app/api/worktrees/[id]/send/route-8440b6c72bed83a1.js +0 -1
  801. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-8440b6c72bed83a1.js +0 -1
  802. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8440b6c72bed83a1.js +0 -1
  803. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8440b6c72bed83a1.js +0 -1
  804. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8440b6c72bed83a1.js +0 -1
  805. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8440b6c72bed83a1.js +0 -1
  806. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8440b6c72bed83a1.js +0 -1
  807. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8440b6c72bed83a1.js +0 -1
  808. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8440b6c72bed83a1.js +0 -1
  809. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-8440b6c72bed83a1.js +0 -1
  810. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-8440b6c72bed83a1.js +0 -1
  811. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8440b6c72bed83a1.js +0 -1
  812. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8440b6c72bed83a1.js +0 -1
  813. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8440b6c72bed83a1.js +0 -1
  814. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8440b6c72bed83a1.js +0 -1
  815. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8440b6c72bed83a1.js +0 -1
  816. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8440b6c72bed83a1.js +0 -1
  817. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8440b6c72bed83a1.js +0 -1
  818. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8440b6c72bed83a1.js +0 -1
  819. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-8440b6c72bed83a1.js +0 -1
  820. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-8440b6c72bed83a1.js +0 -1
  821. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-8440b6c72bed83a1.js +0 -1
  822. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8440b6c72bed83a1.js +0 -1
  823. package/.next/static/chunks/app/api/worktrees/route-8440b6c72bed83a1.js +0 -1
  824. package/.next/static/chunks/app/manifest.webmanifest/route-8440b6c72bed83a1.js +0 -1
  825. package/.next/static/chunks/app/proxy/[...path]/route-8440b6c72bed83a1.js +0 -1
  826. package/.next/static/chunks/app/repositories/page-1ed1e5a542ecc168.js +0 -1
  827. package/.next/static/chunks/app/skills/[skillId]/page-6008b904225ebb25.js +0 -1
  828. package/.next/static/chunks/app/worktrees/[id]/page-f6e09d25cd3b56f9.js +0 -1
  829. /package/.next/static/{-E7I667pJDTBamyG8M_Z- → _AR-TSCnEog5nL9JjjCna}/_buildManifest.js +0 -0
  830. /package/.next/static/{-E7I667pJDTBamyG8M_Z- → _AR-TSCnEog5nL9JjjCna}/_ssgManifest.js +0 -0
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ /**
3
+ * Historical worktree IDs and the worktree they now resolve to (Issue #1621,
4
+ * Phase 2; table created by migration v53).
5
+ *
6
+ * A worktree ID leaks out of the database the moment it is minted: into URLs
7
+ * the user bookmarks, into tabs they leave open, into `commandmate send <id>`
8
+ * lines in someone's script. #1644 stops the ID from moving on its own, but IDs
9
+ * written under the old branch-derived scheme still have to be renumbered
10
+ * (#1645), and a directory can still be moved. Recording the old ID is what
11
+ * keeps every one of those references answering instead of 404ing.
12
+ *
13
+ * Deliberately free of any dependency on the request/singleton layer: every
14
+ * function takes the `db` it should act on. The route-boundary wrapper that
15
+ * reaches for the singleton lives in `@/lib/git/git-route-worktree`.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.recordWorktreeAlias = recordWorktreeAlias;
19
+ exports.resolveWorktreeIdWithAlias = resolveWorktreeIdWithAlias;
20
+ exports.getWorktreeAliases = getWorktreeAliases;
21
+ exports.getAllWorktreeAliases = getAllWorktreeAliases;
22
+ exports.getAliasedWorktreeIds = getAliasedWorktreeIds;
23
+ const worktree_id_rename_1 = require("./migrations/worktree-id-rename");
24
+ /**
25
+ * Whether `worktree_aliases` exists in this database.
26
+ *
27
+ * A database opened by `getDbInstance` is always migrated, but tests hand
28
+ * hand-built connections around and the CLI can point at an older file. Callers
29
+ * on the request path must degrade to "no alias" rather than throw, so the
30
+ * lookups below check first.
31
+ */
32
+ function hasAliasTable(db) {
33
+ const row = db
34
+ .prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'worktree_aliases'")
35
+ .get();
36
+ return row !== undefined;
37
+ }
38
+ /**
39
+ * Record that `oldId` used to name the worktree now known as `worktreeId`.
40
+ *
41
+ * Idempotent, and safe to call from inside the rename transaction:
42
+ *
43
+ * - a self-alias (`oldId === worktreeId`) is dropped — it would resolve to
44
+ * itself and shadow nothing useful;
45
+ * - an alias whose `old_id` equals the *destination* is deleted, because that
46
+ * ID is a live worktree again and the live row must win;
47
+ * - re-recording an existing `old_id` re-points it (`ON CONFLICT DO UPDATE`),
48
+ * so an ID renamed A→B→C resolves A→C in one hop rather than a chain.
49
+ *
50
+ * @param db - Database instance (caller supplies the transaction, if any)
51
+ * @param oldId - The ID that is being retired
52
+ * @param worktreeId - The ID it should resolve to from now on
53
+ * @param now - Timestamp in epoch milliseconds
54
+ */
55
+ function recordWorktreeAlias(db, oldId, worktreeId, now = Date.now()) {
56
+ // The statements live in `migrations/worktree-id-rename.ts`: the rename that
57
+ // records the alias has to be callable from a migration, and a migration that
58
+ // imports a `@/lib/db/*` module inherits every `vi.mock` of it in the suite
59
+ // (Issue #1621, #1645). This function stays the public entry point.
60
+ (0, worktree_id_rename_1.recordWorktreeAliasRow)(db, oldId, worktreeId, now);
61
+ }
62
+ /**
63
+ * Resolve an ID that may be historical to the ID that is current.
64
+ *
65
+ * Live worktrees win over aliases, always. An ID can be both — a worktree
66
+ * created at a directory whose basename matches an ID some other worktree used
67
+ * to have — and in that case the thing that exists now is the answer.
68
+ *
69
+ * @param db - Database instance
70
+ * @param id - A worktree ID as supplied by a URL, a CLI argument, …
71
+ * @returns The current worktree ID, or `null` when nothing resolves
72
+ */
73
+ function resolveWorktreeIdWithAlias(db, id) {
74
+ if (!id)
75
+ return null;
76
+ const live = db.prepare('SELECT 1 FROM worktrees WHERE id = ?').get(id);
77
+ if (live)
78
+ return id;
79
+ if (!hasAliasTable(db))
80
+ return null;
81
+ const row = db
82
+ .prepare('SELECT worktree_id FROM worktree_aliases WHERE old_id = ?')
83
+ .get(id);
84
+ if (!row)
85
+ return null;
86
+ // An alias pointing at a worktree that is gone is not a redirect, it is a
87
+ // dangling row (only reachable if foreign keys were off when it was deleted).
88
+ const target = db.prepare('SELECT 1 FROM worktrees WHERE id = ?').get(row.worktree_id);
89
+ return target ? row.worktree_id : null;
90
+ }
91
+ /**
92
+ * Every historical ID recorded for one worktree, newest first.
93
+ *
94
+ * @param db - Database instance
95
+ * @param worktreeId - Current worktree ID
96
+ */
97
+ function getWorktreeAliases(db, worktreeId) {
98
+ if (!hasAliasTable(db))
99
+ return [];
100
+ const rows = db
101
+ .prepare(`SELECT old_id, worktree_id, created_at
102
+ FROM worktree_aliases
103
+ WHERE worktree_id = ?
104
+ ORDER BY created_at DESC, old_id ASC`)
105
+ .all(worktreeId);
106
+ return rows.map((row) => ({
107
+ oldId: row.old_id,
108
+ worktreeId: row.worktree_id,
109
+ createdAt: row.created_at,
110
+ }));
111
+ }
112
+ /**
113
+ * Every alias in the database, oldest first.
114
+ *
115
+ * Feeds the startup session reconciliation (Issue #1621 Phase 3/4): each row is
116
+ * an ID that used to name a worktree, so `mcbd-<cli>-<old_id>` is exactly the
117
+ * tmux session name a still-running agent may be sitting under. Ordering by
118
+ * `created_at` makes the pass deterministic; the rename itself is
119
+ * order-independent because it runs in two stages.
120
+ *
121
+ * Returns `[]` rather than throwing when the table has not been created yet, so
122
+ * a caller on an older database degrades to "nothing to reconcile".
123
+ *
124
+ * @param db - Database instance
125
+ */
126
+ function getAllWorktreeAliases(db) {
127
+ if (!hasAliasTable(db))
128
+ return [];
129
+ const rows = db
130
+ .prepare(`SELECT old_id, worktree_id, created_at
131
+ FROM worktree_aliases
132
+ ORDER BY created_at ASC, old_id ASC`)
133
+ .all();
134
+ return rows.map((row) => ({
135
+ oldId: row.old_id,
136
+ worktreeId: row.worktree_id,
137
+ createdAt: row.created_at,
138
+ }));
139
+ }
140
+ /**
141
+ * Every ID that is currently answerable as an alias.
142
+ *
143
+ * Feeds `deriveWorktreeId`'s taken set: a brand-new worktree must not be minted
144
+ * an ID that an alias already redirects somewhere else, or the redirect would
145
+ * be shadowed and one of the two references would start pointing at the wrong
146
+ * worktree (Issue #1621).
147
+ *
148
+ * @param db - Database instance
149
+ */
150
+ function getAliasedWorktreeIds(db) {
151
+ if (!hasAliasTable(db))
152
+ return [];
153
+ const rows = db.prepare('SELECT old_id FROM worktree_aliases').all();
154
+ return rows.map((row) => row.old_id);
155
+ }
@@ -23,12 +23,14 @@ exports.updateVibeLocalContextWindow = updateVibeLocalContextWindow;
23
23
  exports.saveInitialBranch = saveInitialBranch;
24
24
  exports.getInitialBranch = getInitialBranch;
25
25
  exports.getWorktreeIdsByRepository = getWorktreeIdsByRepository;
26
+ exports.getAllWorktreeIds = getAllWorktreeIds;
27
+ exports.getAllWorktreePathIds = getAllWorktreePathIds;
26
28
  exports.getWorktreesByRepository = getWorktreesByRepository;
27
29
  exports.deleteRepositoryWorktrees = deleteRepositoryWorktrees;
28
30
  exports.deleteWorktreesByIds = deleteWorktreesByIds;
29
31
  const selected_agents_validator_1 = require("../../lib/selected-agents-validator");
30
32
  const chat_db_1 = require("./chat-db");
31
- const worktree_child_tables_1 = require("./migrations/worktree-child-tables");
33
+ const worktree_id_rename_1 = require("./migrations/worktree-id-rename");
32
34
  /**
33
35
  * Get latest user message per CLI tool for multiple worktrees (batch query)
34
36
  * Optimized to avoid N+1 query problem
@@ -269,80 +271,20 @@ function upsertWorktree(db, worktree) {
269
271
  });
270
272
  run();
271
273
  }
272
- /**
273
- * Delete every child row pointing at any of `worktreeIds`.
274
- *
275
- * Deliberately covers *all* deletable child tables, not just the FK-less ones:
276
- * doing so makes deletion correct even when `PRAGMA foreign_keys` is off, and
277
- * the extra statements against CASCADE tables remove rows that would have been
278
- * removed anyway. Append-only ledgers are skipped (see getWriteGuardedTables).
279
- * Must run before the parent row is deleted (Issue #1621).
280
- */
281
- function deleteWorktreeChildRows(db, worktreeIds, children = (0, worktree_child_tables_1.getWorktreeChildTables)(db)) {
282
- if (worktreeIds.length === 0)
283
- return;
284
- const { noDelete } = (0, worktree_child_tables_1.getWriteGuardedTables)(db);
285
- const placeholders = worktreeIds.map(() => '?').join(',');
286
- for (const { table, column } of children) {
287
- if (noDelete.has(table))
288
- continue;
289
- db.prepare(`DELETE FROM "${table}" WHERE "${column}" IN (${placeholders})`).run(...worktreeIds);
290
- }
291
- }
292
274
  /**
293
275
  * Rename a worktree row's primary key from `oldId` to `newId`, re-pointing every
294
- * child table's foreign key so no CASCADE deletion occurs. This is what makes a
295
- * same-directory branch switch preserve chat history and all related data
296
- * instead of destroying it (Issue #1151).
276
+ * child table's foreign key so no CASCADE deletion occurs (Issue #1151, #1621).
297
277
  *
298
- * "Every child table" means every table carrying a worktree reference, not just
299
- * the ones that declare a foreign key: `tasks`, `verification_runs` and
300
- * `skill_operations` do not, and used to be left addressing an ID that no
301
- * longer resolves (Issue #1621).
278
+ * The implementation lives in `migrations/worktree-id-rename.ts` because the
279
+ * Phase 4 renumbering (#1645) needs it from inside a migration, and a migration
280
+ * that imports THIS module inherits every `vi.mock('@/lib/db/worktree-db')` in
281
+ * the suite (measured — see that module's header). This wrapper keeps the
282
+ * public API and its import path unchanged.
302
283
  *
303
- * Append-only ledgers are the one exception, and the schema states it itself —
304
- * `skill_operations` aborts any UPDATE (#1234). An immutable audit row records
305
- * what happened under the identity in force at the time, and rewriting it is
306
- * precisely what its trigger exists to prevent; attempting it does not fail
307
- * quietly either, it aborts the enclosing transaction and takes the rename with
308
- * it (measured). See getWriteGuardedTables.
309
- *
310
- * Must be called inside a transaction. `PRAGMA defer_foreign_keys` defers FK
311
- * enforcement to COMMIT, letting us repoint the parent PK and its children in
312
- * any order without needing `ON UPDATE CASCADE` on every constraint.
284
+ * Must be called inside a transaction.
313
285
  */
314
286
  function migrateWorktreeIdPreservingChildren(db, oldId, newId) {
315
- if (oldId === newId)
316
- return;
317
- const oldExists = db.prepare('SELECT 1 FROM worktrees WHERE id = ?').get(oldId);
318
- if (!oldExists)
319
- return;
320
- // Defer FK checks until COMMIT so the parent PK and child FKs can be updated
321
- // independently. Resets automatically at the end of the transaction.
322
- db.pragma('defer_foreign_keys = ON');
323
- const newExists = db.prepare('SELECT 1 FROM worktrees WHERE id = ?').get(newId);
324
- const { noUpdate } = (0, worktree_child_tables_1.getWriteGuardedTables)(db);
325
- const allChildren = (0, worktree_child_tables_1.getWorktreeChildTables)(db);
326
- const children = allChildren.filter(({ table }) => !noUpdate.has(table));
327
- if (newExists) {
328
- // Collision guard. `path` is UNIQUE so two rows for the same directory
329
- // should never coexist, but if the DB is already inconsistent keep the
330
- // destination row's data and fold in the source's non-conflicting children.
331
- for (const { table, column } of children) {
332
- db.prepare(`UPDATE OR IGNORE "${table}" SET "${column}" = ? WHERE "${column}" = ?`).run(newId, oldId);
333
- }
334
- // Conflicting leftovers are dropped explicitly rather than left to CASCADE:
335
- // tables without a foreign key never cascade, so relying on the parent
336
- // delete alone would strand their rows on a dead ID (#1621).
337
- deleteWorktreeChildRows(db, [oldId], allChildren);
338
- db.prepare('DELETE FROM worktrees WHERE id = ?').run(oldId);
339
- return;
340
- }
341
- // Normal rename: move the parent PK, then repoint all child rows.
342
- db.prepare('UPDATE worktrees SET id = ? WHERE id = ?').run(newId, oldId);
343
- for (const { table, column } of children) {
344
- db.prepare(`UPDATE "${table}" SET "${column}" = ? WHERE "${column}" = ?`).run(newId, oldId);
345
- }
287
+ (0, worktree_id_rename_1.renameWorktreeIdPreservingChildren)(db, oldId, newId);
346
288
  }
347
289
  /**
348
290
  * Update worktree description
@@ -516,6 +458,46 @@ function getWorktreeIdsByRepository(db, repositoryPath) {
516
458
  const rows = stmt.all(repositoryPath);
517
459
  return rows.map(r => r.id);
518
460
  }
461
+ /**
462
+ * Every worktree ID currently stored, across all repositories.
463
+ *
464
+ * Issue #1621: `deriveWorktreeId` mints an ID from a directory's basename, and
465
+ * two repositories can easily hold same-named directories (`.../a/main`,
466
+ * `.../b/main`). The ID is the global primary key of `worktrees`, so the
467
+ * "already taken" set the derivation consults has to be global too;
468
+ * {@link getWorktreeIdsByRepository} would silently allow a cross-repository
469
+ * collision, which then surfaces as a UNIQUE(path) failure on upsert.
470
+ *
471
+ * @param db - Database instance
472
+ * @returns Every `worktrees.id` value
473
+ */
474
+ function getAllWorktreeIds(db) {
475
+ const rows = db.prepare('SELECT id FROM worktrees').all();
476
+ return rows.map(row => row.id);
477
+ }
478
+ /**
479
+ * Every worktree row's `(id, path)` pair, across all repositories.
480
+ *
481
+ * The global counterpart of {@link getWorktreesByRepository}, and the difference
482
+ * matters (Issue #1658): `path` is the identity of a worktree — the column is
483
+ * `NOT NULL UNIQUE` — whereas `repository_path` merely records which scan root
484
+ * last upserted the row. When the *same* git repository is registered under two
485
+ * scan roots (a repo and one of its own linked worktrees, both in
486
+ * `WORKTREE_REPOS`), `git worktree list` returns the identical path set from
487
+ * either one, and `repository_path` ping-pongs between them on every sync.
488
+ * Looking an existing ID up per repository then misses the row half the time and
489
+ * re-derives its ID, which appends another 8 hex digits — forever.
490
+ *
491
+ * Resolving "which ID does this path already own?" must therefore be global.
492
+ * Pruning stays per-repository ({@link getWorktreesByRepository}): that question
493
+ * really is scoped to one scan root.
494
+ *
495
+ * @param db - Database instance
496
+ * @returns `{ id, path }` for every worktree row
497
+ */
498
+ function getAllWorktreePathIds(db) {
499
+ return db.prepare('SELECT id, path FROM worktrees').all();
500
+ }
519
501
  /**
520
502
  * Get all worktree rows (id + path) for a given repository path.
521
503
  *
@@ -553,7 +535,7 @@ function deleteRepositoryWorktrees(db, repositoryPath) {
553
535
  .all(repositoryPath)
554
536
  .map((row) => row.id)
555
537
  .filter((id) => id !== null);
556
- deleteWorktreeChildRows(db, ids);
538
+ (0, worktree_id_rename_1.deleteWorktreeChildRows)(db, ids);
557
539
  return db
558
540
  .prepare('DELETE FROM worktrees WHERE repository_path = ?')
559
541
  .run(repositoryPath).changes;
@@ -578,7 +560,7 @@ function deleteWorktreesByIds(db, worktreeIds) {
578
560
  }
579
561
  const placeholders = worktreeIds.map(() => '?').join(',');
580
562
  const run = db.transaction(() => {
581
- deleteWorktreeChildRows(db, worktreeIds);
563
+ (0, worktree_id_rename_1.deleteWorktreeChildRows)(db, worktreeIds);
582
564
  return db
583
565
  .prepare(`DELETE FROM worktrees WHERE id IN (${placeholders})`)
584
566
  .run(...worktreeIds).changes;
@@ -4,7 +4,8 @@
4
4
  * Shared between response-poller.ts and API routes
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.CLAUDE_SESSION_ERROR_REGEX_PATTERNS = exports.CLAUDE_SESSION_ERROR_PATTERNS = exports.extractAnsiSequences = exports.stripAnsi = exports.ANTIGRAVITY_SKIP_PATTERNS = exports.ANTIGRAVITY_SELECTION_LIST_PATTERN = exports.ANTIGRAVITY_SEPARATOR_PATTERN = exports.ANTIGRAVITY_THINKING_PATTERN = exports.ANTIGRAVITY_PROMPT_PATTERN = exports.VIBE_LOCAL_THINKING_PATTERN = exports.VIBE_LOCAL_PROMPT_PATTERN = exports.COPILOT_SKIP_PATTERNS = exports.COPILOT_SELECTION_LIST_PATTERN = exports.COPILOT_SEPARATOR_PATTERN = exports.COPILOT_THINKING_PATTERN = exports.COPILOT_PROMPT_PATTERN = exports.OPENCODE_SKIP_PATTERNS = exports.OPENCODE_SEPARATOR_PATTERN = exports.CLAUDE_SELECTION_LIST_FOOTER = exports.CLAUDE_MODEL_OVERLAY_FOOTER_PATTERN = exports.OPENCODE_SELECTION_LIST_PATTERN = exports.OPENCODE_PROCESSING_INDICATOR = exports.OPENCODE_RESPONSE_COMPLETE = exports.OPENCODE_LOADING_PATTERN = exports.OPENCODE_THINKING_PATTERN = exports.OPENCODE_PROMPT_AFTER_RESPONSE = exports.OPENCODE_PROMPT_PATTERN = exports.GEMINI_THINKING_PATTERN = exports.GEMINI_PROMPT_PATTERN = exports.MAX_PASTED_TEXT_RETRIES = exports.PASTED_TEXT_DETECT_DELAY = exports.PASTED_TEXT_PATTERN = exports.CODEX_STATUS_BAR_PATTERN = exports.CODEX_PAGER_FOOTER_PATTERN = exports.CODEX_APPROVAL_FOOTER_PATTERN = exports.CODEX_SELECTION_LIST_PATTERN = exports.CODEX_SEPARATOR_PATTERN = exports.CODEX_DIALOG_PATTERN = exports.CODEX_PROMPT_PATTERN = exports.CLAUDE_TRUST_DIALOG_PATTERN = exports.CLAUDE_SEPARATOR_PATTERN = exports.CLAUDE_PROMPT_PATTERN = exports.CODEX_THINKING_PATTERN = exports.CLAUDE_INTERRUPT_HINT_PATTERN = exports.CLAUDE_THINKING_PATTERN = exports.CLAUDE_SPINNER_CHARS = void 0;
7
+ exports.CLAUDE_SESSION_ERROR_REGEX_PATTERNS = exports.CLAUDE_SESSION_ERROR_PATTERNS = exports.extractAnsiSequences = exports.stripAnsi = exports.ANTIGRAVITY_SKIP_PATTERNS = exports.ANTIGRAVITY_SELECTION_LIST_PATTERN = exports.ANTIGRAVITY_SEPARATOR_PATTERN = exports.ANTIGRAVITY_THINKING_PATTERN = exports.ANTIGRAVITY_PROMPT_PATTERN = exports.VIBE_LOCAL_THINKING_PATTERN = exports.VIBE_LOCAL_PROMPT_PATTERN = exports.COPILOT_SKIP_PATTERNS = exports.COPILOT_SELECTION_LIST_PATTERN = exports.COPILOT_SEPARATOR_PATTERN = exports.COPILOT_THINKING_PATTERN = exports.COPILOT_PROMPT_PATTERN = exports.OPENCODE_SKIP_PATTERNS = exports.OPENCODE_SEPARATOR_PATTERN = exports.CLAUDE_SELECTION_LIST_FOOTER = exports.CLAUDE_MODEL_OVERLAY_FOOTER_PATTERN = exports.OPENCODE_SELECTION_LIST_PATTERN = exports.OPENCODE_PROCESSING_INDICATOR = exports.OPENCODE_RESPONSE_COMPLETE = exports.OPENCODE_LOADING_PATTERN = exports.OPENCODE_THINKING_PATTERN = exports.OPENCODE_PROMPT_AFTER_RESPONSE = exports.OPENCODE_PROMPT_PATTERN = exports.GEMINI_THINKING_PATTERN = exports.GEMINI_PROMPT_PATTERN = exports.MAX_PASTED_TEXT_RETRIES = exports.PASTED_TEXT_DETECT_DELAY = exports.PASTED_TEXT_PATTERN = exports.CODEX_STATUS_BAR_PATTERN = exports.CODEX_PAGER_FOOTER_PATTERN = exports.CODEX_APPROVAL_FOOTER_PATTERN = exports.CODEX_SELECTION_LIST_PATTERN = exports.CODEX_SEPARATOR_PATTERN = exports.CODEX_DIALOG_PATTERN = exports.CODEX_PROMPT_PATTERN = exports.CLAUDE_TRUST_DIALOG_PATTERN = exports.CLAUDE_SEPARATOR_PATTERN = exports.CLAUDE_PROMPT_PATTERN = exports.CODEX_INTERRUPT_HINT_PATTERN = exports.CODEX_THINKING_PATTERN = exports.CLAUDE_INTERRUPT_HINT_PATTERN = exports.CLAUDE_THINKING_PATTERN = exports.CLAUDE_SPINNER_CHARS = void 0;
8
+ exports.isCodexTurnActive = isCodexTurnActive;
8
9
  exports.findClaudeChromeStart = findClaudeChromeStart;
9
10
  exports.isCodexPromptReady = isCodexPromptReady;
10
11
  exports.getCodexActiveDialog = getCodexActiveDialog;
@@ -14,6 +15,7 @@ exports.stripBoxDrawing = stripBoxDrawing;
14
15
  exports.buildDetectPromptOptions = buildDetectPromptOptions;
15
16
  const logger_1 = require("../../lib/logger");
16
17
  const ansi_1 = require("./ansi");
18
+ const thinking_constants_1 = require("../../config/thinking-constants");
17
19
  const logger = (0, logger_1.createLogger)('cli-patterns');
18
20
  /**
19
21
  * Claude CLI spinner characters (expanded set)
@@ -56,11 +58,93 @@ exports.CLAUDE_THINKING_PATTERN = new RegExp(`[${exports.CLAUDE_SPINNER_CHARS.jo
56
58
  */
57
59
  exports.CLAUDE_INTERRUPT_HINT_PATTERN = /esc to interrupt/;
58
60
  /**
59
- * Codex thinking pattern
61
+ * Codex activity-marker pattern
60
62
  * Matches activity indicators like "• Planning", "• Searching", etc.
61
63
  * T1.1: Extended to include "Ran" and "Deciding"
64
+ *
65
+ * Issue #1671: these are *transcript records*, not a liveness signal. Codex is
66
+ * inline-rendered (no alternate screen), so every "• Ran <cmd>" / "• Running
67
+ * <cmd>" step it ever printed stays in the pane scrollback forever — measured on
68
+ * a live `mcbd-codex-*` pane: 396 "• Ran" and 11 "• Running" rows, all of them
69
+ * from finished steps. Matching this pattern against a fixed tail window
70
+ * therefore answers "did a step happen recently", not "is Codex working now".
71
+ * Use {@link isCodexTurnActive} for the latter.
62
72
  */
63
73
  exports.CODEX_THINKING_PATTERN = /•\s*(Planning|Searching|Exploring|Running|Thinking|Working|Reading|Writing|Analyzing|Ran|Deciding)/m;
74
+ /**
75
+ * Codex live status-line hint (Issue #1671)
76
+ *
77
+ * While a turn is in flight Codex pins a status row directly above the composer:
78
+ *
79
+ * • Working (13s • esc to interrupt) · 1 background terminal running · /ps to view
80
+ *
81
+ * It is repainted in place every tick and erased the moment the turn ends, so —
82
+ * unlike the "• Ran"/"• Running" step records — it never lingers in scrollback.
83
+ * Measured on a 11,000-line capture of an idle Codex pane: zero occurrences of
84
+ * "esc to interrupt", against 396 lingering "• Ran" rows. That makes it the one
85
+ * unambiguous "Codex is still generating" token, mirroring Claude's
86
+ * {@link CLAUDE_INTERRUPT_HINT_PATTERN}.
87
+ */
88
+ exports.CODEX_INTERRUPT_HINT_PATTERN = /esc to interrupt/;
89
+ /**
90
+ * How far above the last content row Codex's composer ("› …") may sit.
91
+ *
92
+ * Codex pins the composer and the status bar to the bottom of the pane, so the
93
+ * composer lands 2-3 rows above the last non-blank row in every observed frame.
94
+ * The small allowance keeps the search from walking up into the transcript and
95
+ * latching onto the echoed user message, which uses the same "› " marker.
96
+ */
97
+ const CODEX_COMPOSER_SEARCH_ROWS = 8;
98
+ /**
99
+ * Decide whether a Codex turn is still in flight (Issue #1671).
100
+ *
101
+ * Completion detection used to answer this with {@link CODEX_THINKING_PATTERN}
102
+ * over a fixed 20-row tail. Because "• Ran <cmd>" is a *past-tense record* that
103
+ * never leaves the transcript, a turn that ended with a short final message kept
104
+ * that record inside the tail window and was reported as "still thinking"
105
+ * forever — so its reply was never saved, while a turn whose final message
106
+ * happened to be longer than 20 rows pushed the record out of the window and was
107
+ * saved. Whether a reply reached Message History depended on how long it was.
108
+ *
109
+ * Two signals, both measured against live codex-cli 0.146.0 captures:
110
+ *
111
+ * 1. The live status line ({@link CODEX_INTERRUPT_HINT_PATTERN}) anywhere in the
112
+ * tail window. Present in every generating frame from 1s onwards, absent from
113
+ * every idle frame.
114
+ * 2. An activity marker in the rows immediately above the composer — the band
115
+ * Codex reserves for that status line. Version-agnostic backstop for a Codex
116
+ * build whose status row drops the "esc to interrupt" wording; deliberately
117
+ * narrow (THINKING_TAIL_LINE_COUNT rows, matching the window status-detector
118
+ * already uses) so records further up the transcript cannot reach it.
119
+ *
120
+ * When no composer can be located the frame is not a normal Codex layout (an
121
+ * overlay is up, or the pane is mid-redraw), so signal 2 falls back to the whole
122
+ * tail window — the pre-#1671 behaviour, which errs towards "still active".
123
+ *
124
+ * @param lines - Captured pane lines with trailing blank rows already trimmed
125
+ * @param tailLineCount - Size of the tail window completion detection looks at
126
+ * @returns True while Codex is still generating
127
+ */
128
+ function isCodexTurnActive(lines, tailLineCount) {
129
+ const tailWindow = (0, ansi_1.stripAnsi)(lines.slice(Math.max(0, lines.length - tailLineCount)).join('\n'));
130
+ // 1. Live status line — unambiguous, never survives the end of a turn.
131
+ if (exports.CODEX_INTERRUPT_HINT_PATTERN.test(tailWindow))
132
+ return true;
133
+ // 2. Activity marker in the status-line band directly above the composer.
134
+ // Searched bottom-up so the composer wins over the echoed user message.
135
+ let composerIndex = -1;
136
+ for (let i = lines.length - 1; i >= Math.max(0, lines.length - CODEX_COMPOSER_SEARCH_ROWS); i--) {
137
+ if (exports.CODEX_PROMPT_PATTERN.test((0, ansi_1.stripAnsi)(lines[i]))) {
138
+ composerIndex = i;
139
+ break;
140
+ }
141
+ }
142
+ if (composerIndex < 0)
143
+ return exports.CODEX_THINKING_PATTERN.test(tailWindow);
144
+ const bandStart = Math.max(0, composerIndex - thinking_constants_1.THINKING_TAIL_LINE_COUNT + 1);
145
+ const band = (0, ansi_1.stripAnsi)(lines.slice(bandStart, composerIndex + 1).join('\n'));
146
+ return exports.CODEX_THINKING_PATTERN.test(band);
147
+ }
64
148
  /**
65
149
  * Claude prompt pattern (waiting for input)
66
150
  * Supports both legacy '>' and new '❯' (U+276F) prompt characters
@@ -783,7 +783,16 @@ function detectMultipleChoicePrompt(output, options, truncateRawContentFn) {
783
783
  // Layer 5 [SEC-001]: Enhanced question line validation for requireDefaultIndicator=false.
784
784
  // When requireDefault is false, apply stricter validation to prevent false positives
785
785
  // from normal numbered lists (e.g., "Recommendations:\n1. Add tests\n2. Update docs").
786
- if (!requireDefault) {
786
+ //
787
+ // [Issue #1676] Frames where a ❯/●/› default indicator was actually collected are
788
+ // exempt from Layer 5: the cursor existence check (Layer 2 semantics) is the same
789
+ // false-positive defense that requireDefaultIndicator=true tools (codex/gemini)
790
+ // rely on without any question-line validation. This lets declarative permission
791
+ // dialogs with no question line ("Claude in Chrome wants to run JavaScript on …"
792
+ // + ❯ 1. Allow / 2. … / 3. Deny) and imperative AskUserQuestion headers
793
+ // (「実装方針を選んでください」) be detected. Indicator-less frames (#193 capture
794
+ // artifacts) still go through SEC-001a/b unchanged.
795
+ if (!requireDefault && !hasDefaultIndicator) {
787
796
  // SEC-001a: No question line found (questionEndIndex === -1) - reject.
788
797
  // Prevents generic question fallback from triggering Auto-Yes
789
798
  // on plain numbered lists that happen to be consecutive from 1.
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ /**
3
+ * Minting a worktree ID from its directory — the pure half of Issue #1621.
4
+ *
5
+ * Split out of `worktrees.ts` for one reason: a **migration** has to mint IDs
6
+ * (the Phase 4 renumbering in #1645), and `worktrees.ts` imports `@/lib/db`,
7
+ * which re-exports `db-migrations` — importing it from a migration closes a
8
+ * cycle. It also drags every `vi.mock('@/lib/git/worktrees')` in the suite into
9
+ * `runMigrations`, which is exactly how v52 was made to throw before it was
10
+ * moved (see `migrations/worktree-child-tables.ts`).
11
+ *
12
+ * This module imports nothing but `crypto` and `path`, so it is safe from both
13
+ * directions.
14
+ */
15
+ var __importDefault = (this && this.__importDefault) || function (mod) {
16
+ return (mod && mod.__esModule) ? mod : { "default": mod };
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.FALLBACK_ID_BASE = void 0;
20
+ exports.sanitizeIdSegment = sanitizeIdSegment;
21
+ exports.deriveWorktreeId = deriveWorktreeId;
22
+ exports.isDerivedWorktreeId = isDerivedWorktreeId;
23
+ const crypto_1 = require("crypto");
24
+ const path_1 = __importDefault(require("path"));
25
+ /**
26
+ * Lower-case, URL- and shell-safe slug of one identifier segment.
27
+ *
28
+ * Kept byte-identical to the rule the branch-derived `generateWorktreeId` has
29
+ * always used so the path-derived scheme produces IDs from the same alphabet:
30
+ * lower-case, `[^a-z0-9-]` collapsed to `-`, runs of `-` compressed, edges
31
+ * trimmed. The result always satisfies `isValidWorktreeId`.
32
+ */
33
+ function sanitizeIdSegment(str) {
34
+ return str
35
+ .toLowerCase()
36
+ .replace(/[^a-z0-9-]/g, '-') // Replace non-alphanumeric (except hyphen) with hyphen
37
+ .replace(/-+/g, '-') // Replace consecutive hyphens with single hyphen
38
+ .replace(/^-|-$/g, ''); // Remove leading/trailing hyphens
39
+ }
40
+ /**
41
+ * Base used when a directory name sanitizes to the empty string (`/`, `///`,
42
+ * a name made entirely of separators…). Without it the ID would be `''`, which
43
+ * `isValidWorktreeId` rejects and SQLite would happily store.
44
+ */
45
+ exports.FALLBACK_ID_BASE = 'worktree';
46
+ /**
47
+ * Mint the ID for a worktree that has never been registered before.
48
+ *
49
+ * The ID is a function of the **directory**, never of the branch, and — this is
50
+ * the part that actually buys stability — it is computed **once**, at first
51
+ * registration. `syncWorktreesToDB` looks an existing row up by path and keeps
52
+ * whatever ID that row already carries, so this function is only reached for a
53
+ * genuinely new path. A worktree's ID therefore survives every branch switch,
54
+ * every detached-HEAD commit, and any future change to the rule below.
55
+ *
56
+ * Rule (Issue #1621):
57
+ *
58
+ * id = sanitize(basename(resolvedPath))
59
+ * on collision only: `${id}-${sha256(resolvedPath).slice(0, 8)}`
60
+ *
61
+ * `takenIds` must contain every ID that is already spoken for — worktree rows
62
+ * across *all* repositories (the ID is a global primary key, not a per-repo one)
63
+ * plus historical IDs still resolvable as aliases, so a fresh worktree can never
64
+ * shadow an old ID that redirects somewhere else.
65
+ *
66
+ * Deterministic: same `(resolvedPath, takenIds)` always yields the same ID.
67
+ *
68
+ * @param resolvedPath - Absolute, `path.resolve()`d worktree directory
69
+ * @param takenIds - IDs that are unavailable
70
+ * @returns A URL-safe ID satisfying `isValidWorktreeId`
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * deriveWorktreeId('/repos/commandmate-issue-1644', []) // => 'commandmate-issue-1644'
75
+ * deriveWorktreeId('/b/main', ['main']) // => 'main-3f2a91cc'
76
+ * ```
77
+ */
78
+ function deriveWorktreeId(resolvedPath, takenIds = []) {
79
+ const taken = takenIds instanceof Set ? takenIds : new Set(takenIds);
80
+ const base = sanitizeIdSegment(path_1.default.basename(resolvedPath)) || exports.FALLBACK_ID_BASE;
81
+ if (!taken.has(base)) {
82
+ return base;
83
+ }
84
+ // Collision. Disambiguate with a digest of the path itself (not a counter):
85
+ // the result stays a pure function of the directory, so re-deriving the same
86
+ // path against the same set never produces a second, different ID.
87
+ const digest = (0, crypto_1.createHash)('sha256').update(resolvedPath).digest('hex');
88
+ for (let length = 8; length <= digest.length; length += 8) {
89
+ const candidate = `${base}-${digest.slice(0, length)}`;
90
+ if (!taken.has(candidate)) {
91
+ return candidate;
92
+ }
93
+ }
94
+ // Unreachable short of a full SHA-256 collision on two different paths with
95
+ // the same basename; kept so the function is total rather than returning a
96
+ // duplicate ID and violating the worktrees PK.
97
+ for (let ordinal = 2;; ordinal++) {
98
+ const candidate = `${base}-${digest}-${ordinal}`;
99
+ if (!taken.has(candidate)) {
100
+ return candidate;
101
+ }
102
+ }
103
+ }
104
+ /**
105
+ * Whether `id` is one that {@link deriveWorktreeId} could have minted for
106
+ * `resolvedPath` — i.e. the basename, or the basename followed by a prefix of
107
+ * the path's SHA-256 in 8-hex steps.
108
+ *
109
+ * The inverse of the derivation, and it exists to tell two kinds of retired ID
110
+ * apart (Issue #1658). When the same directory was re-derived over and over, it
111
+ * left a ladder of aliases — `foo`, `foo-2f4530fe`, `foo-2f4530fe1cf1f9f8`, … —
112
+ * every rung pointing at the same worktree, none of them ever handed out for
113
+ * longer than the second it took the next sync to replace it. Those are safe to
114
+ * discard, and must be, because the minter treats an alias as taken and the
115
+ * ladder would otherwise reserve those IDs forever. An ID like
116
+ * `commandagent-develop-develop` — a genuine former name, from the
117
+ * branch-derived scheme — is not of this shape and is kept.
118
+ *
119
+ * Note this is a statement about *shape*, not about history: an ID that happens
120
+ * to match is one this path would produce today.
121
+ *
122
+ * @param id - Candidate ID
123
+ * @param resolvedPath - Absolute, `path.resolve()`d worktree directory
124
+ */
125
+ function isDerivedWorktreeId(id, resolvedPath) {
126
+ if (!id)
127
+ return false;
128
+ const base = sanitizeIdSegment(path_1.default.basename(resolvedPath)) || exports.FALLBACK_ID_BASE;
129
+ if (id === base)
130
+ return true;
131
+ if (!id.startsWith(`${base}-`))
132
+ return false;
133
+ const suffix = id.slice(base.length + 1);
134
+ const digest = (0, crypto_1.createHash)('sha256').update(resolvedPath).digest('hex');
135
+ // The collision ladder: 8 hex digits at a time, always a prefix of the digest.
136
+ if (suffix.length > 0 &&
137
+ suffix.length % 8 === 0 &&
138
+ suffix.length <= digest.length &&
139
+ digest.startsWith(suffix)) {
140
+ return true;
141
+ }
142
+ // The exhausted-digest tail (`<digest>-<ordinal>`), unreachable short of a
143
+ // SHA-256 collision but part of the function's range all the same.
144
+ return /^-[0-9]+$/.test(suffix.slice(digest.length)) && suffix.startsWith(digest);
145
+ }