commandmate 0.19.0 → 0.20.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 (765) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +252 -245
  3. package/.next/app-path-routes-manifest.json +31 -31
  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/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/api/app/update/route.js +5 -3
  9. package/.next/server/app/api/app/update/route.js.nft.json +1 -1
  10. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/update-check/route.js +1 -1
  12. package/.next/server/app/api/app/update-check/route.js.nft.json +1 -1
  13. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  15. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  16. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  18. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  19. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/assistant/messages/route.js +1 -1
  21. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  22. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/assistant/session/route.js +1 -1
  24. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  25. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/assistant/start/route.js +1 -1
  27. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  28. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/assistant/terminal/route.js +1 -1
  30. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  31. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/assistant/tools/route.js +1 -1
  33. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  34. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/auth/login/route.js +1 -1
  36. package/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  37. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/auth/logout/route.js +1 -1
  39. package/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  40. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/auth/status/route.js +1 -1
  42. package/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  43. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/daily-summary/route.js +1 -1
  45. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  46. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  48. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  49. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
  51. package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
  52. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  54. package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
  55. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/external-apps/route.js +1 -1
  57. package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
  58. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/fs/browse/route.js +2 -2
  60. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
  61. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/fs/recent-paths/route.js +2 -2
  63. package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
  64. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  66. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  67. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  69. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  70. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/metrics/vibe/route.js +2 -2
  72. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
  73. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/ollama/models/route.js +1 -1
  75. package/.next/server/app/api/ollama/models/route.js.nft.json +1 -1
  76. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  78. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  79. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/push/vapid/route.js +1 -1
  81. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  82. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/repositories/[id]/route.js +1 -1
  84. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  85. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  87. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +1 -1
  88. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  90. package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +1 -1
  91. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  93. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  94. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/repositories/clone/route.js +1 -1
  96. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  97. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/repositories/excluded/route.js +1 -1
  99. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  100. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/repositories/restore/route.js +1 -1
  102. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  103. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/repositories/route.js +1 -1
  105. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  106. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/repositories/scan/route.js +1 -1
  108. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  109. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/repositories/sync/route.js +1 -1
  111. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  112. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/repositories/validate-path/route.js +1 -1
  114. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
  115. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/sidebar/group-order/route.js +2 -2
  117. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  118. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/skills/[id]/route.js +1 -1
  120. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  121. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/skills/installations/route.js +1 -1
  123. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  124. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/skills/operations/route.js +2 -2
  126. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
  127. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/skills/reindex/route.js +1 -1
  129. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
  130. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/skills/route.js +1 -1
  132. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  133. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/slash-commands/route.js +1 -1
  135. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  136. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/tasks/[taskId]/cancel/route.js +2 -2
  138. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  139. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/tasks/[taskId]/route.js +2 -2
  141. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
  142. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/templates/[id]/route.js +2 -2
  144. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  145. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/templates/route.js +2 -2
  147. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  148. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/todos/route.js +1 -1
  150. package/.next/server/app/api/todos/route.js.nft.json +1 -1
  151. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  153. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
  154. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/verification/runs/route.js +1 -1
  156. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
  157. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  160. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  163. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  166. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +2 -2
  168. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  169. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  172. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  175. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  177. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  178. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  181. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  184. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  196. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  199. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  202. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  205. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  208. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  211. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  214. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  217. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  220. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  223. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  226. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  229. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  232. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  235. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  238. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  241. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  244. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  247. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  250. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  253. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  256. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  259. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/logs/route.js +2 -2
  261. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  262. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  263. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +6 -6
  264. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  265. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  266. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  268. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  269. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  271. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  272. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  274. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  275. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  277. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  278. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  279. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  280. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  281. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  283. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  284. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  285. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  286. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  287. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  289. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  290. package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -3
  291. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  292. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  293. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  294. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  295. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  296. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  298. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  299. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
  300. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  301. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  302. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  303. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  304. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  305. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  306. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  307. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  308. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  309. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  310. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  311. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  312. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  313. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  314. package/.next/server/app/api/worktrees/[id]/skills/route.js +2 -2
  315. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  316. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  317. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  318. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  319. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  320. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  321. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  322. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  323. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  324. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
  325. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  326. package/.next/server/app/api/worktrees/[id]/tasks/route.js +4 -4
  327. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  328. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  329. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  330. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  331. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  332. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  333. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  334. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  335. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  336. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  337. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  338. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  339. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  340. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  341. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  342. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  343. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  344. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  345. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  346. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  347. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  348. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  349. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  350. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  351. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  352. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  353. package/.next/server/app/api/worktrees/[id]/verify/route.js +2 -2
  354. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  355. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  356. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  357. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
  358. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  359. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  360. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
  361. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  362. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  363. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  364. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  365. package/.next/server/app/api/worktrees/route.js +1 -1
  366. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  367. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  368. package/.next/server/app/apple-icon.png/route.js +1 -1
  369. package/.next/server/app/apple-icon.png/route.js.nft.json +1 -1
  370. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  371. package/.next/server/app/icon.png/route.js +1 -1
  372. package/.next/server/app/icon.png/route.js.nft.json +1 -1
  373. package/.next/server/app/icon1.png/route.js +1 -1
  374. package/.next/server/app/icon1.png/route.js.nft.json +1 -1
  375. package/.next/server/app/icon2.png/route.js +1 -1
  376. package/.next/server/app/icon2.png/route.js.nft.json +1 -1
  377. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  378. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  379. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  380. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  381. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  382. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  383. package/.next/server/app/page_client-reference-manifest.js +1 -1
  384. package/.next/server/app/proxy/[...path]/route.js +1 -1
  385. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  386. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  387. package/.next/server/app/repositories/page.js +1 -1
  388. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  389. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  390. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  391. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  392. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  393. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  394. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
  395. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  396. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  397. package/.next/server/app/worktrees/[id]/page.js +8 -8
  398. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  399. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  400. package/.next/server/app/worktrees/[id]/terminal/page.js +3 -3
  401. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  402. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  403. package/.next/server/app-paths-manifest.json +31 -31
  404. package/.next/server/chunks/1029.js +1 -0
  405. package/.next/server/chunks/1068.js +1 -1
  406. package/.next/server/chunks/1598.js +4 -0
  407. package/.next/server/chunks/3042.js +1 -1
  408. package/.next/server/chunks/3417.js +1 -0
  409. package/.next/server/chunks/3451.js +1 -1
  410. package/.next/server/chunks/3543.js +1 -1
  411. package/.next/server/chunks/3753.js +21 -17
  412. package/.next/server/chunks/3945.js +1 -1
  413. package/.next/server/chunks/406.js +5 -5
  414. package/.next/server/chunks/{1185.js → 5048.js} +1 -1
  415. package/.next/server/chunks/5959.js +3 -3
  416. package/.next/server/chunks/{5381.js → 5998.js} +2 -2
  417. package/.next/server/chunks/6130.js +1 -1
  418. package/.next/server/chunks/6274.js +5 -5
  419. package/.next/server/chunks/6283.js +1 -1
  420. package/.next/server/chunks/6401.js +1 -0
  421. package/.next/server/chunks/641.js +1 -0
  422. package/.next/server/chunks/8536.js +1 -0
  423. package/.next/server/chunks/8543.js +1 -0
  424. package/.next/server/chunks/8807.js +157 -143
  425. package/.next/server/chunks/8856.js +2 -2
  426. package/.next/server/chunks/9058.js +1 -0
  427. package/.next/server/chunks/9067.js +1 -0
  428. package/.next/server/chunks/9123.js +1 -1
  429. package/.next/server/middleware-manifest.json +5 -5
  430. package/.next/server/pages/500.html +1 -1
  431. package/.next/server/server-reference-manifest.json +1 -1
  432. package/.next/server/src/middleware.js +1 -1
  433. package/.next/server/src/middleware.js.map +1 -1
  434. package/.next/static/chunks/{6488-2c412c29258637b6.js → 6488-3e7539550c3ef358.js} +1 -1
  435. package/.next/static/chunks/744-fa8c0ae444c8338c.js +1 -0
  436. package/.next/static/chunks/app/api/app/update/route-5bdd550ed6386f57.js +1 -0
  437. package/.next/static/chunks/app/api/app/update-check/route-5bdd550ed6386f57.js +1 -0
  438. package/.next/static/chunks/app/api/assistant/conversation/route-5bdd550ed6386f57.js +1 -0
  439. package/.next/static/chunks/app/api/assistant/current-output/route-5bdd550ed6386f57.js +1 -0
  440. package/.next/static/chunks/app/api/assistant/messages/route-5bdd550ed6386f57.js +1 -0
  441. package/.next/static/chunks/app/api/assistant/session/route-5bdd550ed6386f57.js +1 -0
  442. package/.next/static/chunks/app/api/assistant/start/route-5bdd550ed6386f57.js +1 -0
  443. package/.next/static/chunks/app/api/assistant/terminal/route-5bdd550ed6386f57.js +1 -0
  444. package/.next/static/chunks/app/api/assistant/tools/route-5bdd550ed6386f57.js +1 -0
  445. package/.next/static/chunks/app/api/auth/login/route-5bdd550ed6386f57.js +1 -0
  446. package/.next/static/chunks/app/api/auth/logout/route-5bdd550ed6386f57.js +1 -0
  447. package/.next/static/chunks/app/api/auth/status/route-5bdd550ed6386f57.js +1 -0
  448. package/.next/static/chunks/app/api/daily-summary/route-5bdd550ed6386f57.js +1 -0
  449. package/.next/static/chunks/app/api/daily-summary/status/route-5bdd550ed6386f57.js +1 -0
  450. package/.next/static/chunks/app/api/external-apps/[id]/health/route-5bdd550ed6386f57.js +1 -0
  451. package/.next/static/chunks/app/api/external-apps/[id]/route-5bdd550ed6386f57.js +1 -0
  452. package/.next/static/chunks/app/api/external-apps/route-5bdd550ed6386f57.js +1 -0
  453. package/.next/static/chunks/app/api/fs/browse/route-5bdd550ed6386f57.js +1 -0
  454. package/.next/static/chunks/app/api/fs/recent-paths/route-5bdd550ed6386f57.js +1 -0
  455. package/.next/static/chunks/app/api/hooks/agent-event/route-5bdd550ed6386f57.js +1 -0
  456. package/.next/static/chunks/app/api/hooks/claude-done/route-5bdd550ed6386f57.js +1 -0
  457. package/.next/static/chunks/app/api/metrics/vibe/route-5bdd550ed6386f57.js +1 -0
  458. package/.next/static/chunks/app/api/ollama/models/route-5bdd550ed6386f57.js +1 -0
  459. package/.next/static/chunks/app/api/push/subscriptions/route-5bdd550ed6386f57.js +1 -0
  460. package/.next/static/chunks/app/api/push/vapid/route-5bdd550ed6386f57.js +1 -0
  461. package/.next/static/chunks/app/api/repositories/[id]/route-5bdd550ed6386f57.js +1 -0
  462. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-5bdd550ed6386f57.js +1 -0
  463. package/.next/static/chunks/app/api/repositories/[id]/todos/route-5bdd550ed6386f57.js +1 -0
  464. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-5bdd550ed6386f57.js +1 -0
  465. package/.next/static/chunks/app/api/repositories/clone/route-5bdd550ed6386f57.js +1 -0
  466. package/.next/static/chunks/app/api/repositories/excluded/route-5bdd550ed6386f57.js +1 -0
  467. package/.next/static/chunks/app/api/repositories/restore/route-5bdd550ed6386f57.js +1 -0
  468. package/.next/static/chunks/app/api/repositories/route-5bdd550ed6386f57.js +1 -0
  469. package/.next/static/chunks/app/api/repositories/scan/route-5bdd550ed6386f57.js +1 -0
  470. package/.next/static/chunks/app/api/repositories/sync/route-5bdd550ed6386f57.js +1 -0
  471. package/.next/static/chunks/app/api/repositories/validate-path/route-5bdd550ed6386f57.js +1 -0
  472. package/.next/static/chunks/app/api/sidebar/group-order/route-5bdd550ed6386f57.js +1 -0
  473. package/.next/static/chunks/app/api/skills/[id]/route-5bdd550ed6386f57.js +1 -0
  474. package/.next/static/chunks/app/api/skills/installations/route-5bdd550ed6386f57.js +1 -0
  475. package/.next/static/chunks/app/api/skills/operations/route-5bdd550ed6386f57.js +1 -0
  476. package/.next/static/chunks/app/api/skills/reindex/route-5bdd550ed6386f57.js +1 -0
  477. package/.next/static/chunks/app/api/skills/route-5bdd550ed6386f57.js +1 -0
  478. package/.next/static/chunks/app/api/slash-commands/route-5bdd550ed6386f57.js +1 -0
  479. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-5bdd550ed6386f57.js +1 -0
  480. package/.next/static/chunks/app/api/tasks/[taskId]/route-5bdd550ed6386f57.js +1 -0
  481. package/.next/static/chunks/app/api/templates/[id]/route-5bdd550ed6386f57.js +1 -0
  482. package/.next/static/chunks/app/api/templates/route-5bdd550ed6386f57.js +1 -0
  483. package/.next/static/chunks/app/api/todos/route-5bdd550ed6386f57.js +1 -0
  484. package/.next/static/chunks/app/api/verification/runs/[runId]/route-5bdd550ed6386f57.js +1 -0
  485. package/.next/static/chunks/app/api/verification/runs/route-5bdd550ed6386f57.js +1 -0
  486. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-5bdd550ed6386f57.js +1 -0
  487. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-5bdd550ed6386f57.js +1 -0
  488. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-5bdd550ed6386f57.js +1 -0
  489. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-5bdd550ed6386f57.js +1 -0
  490. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-5bdd550ed6386f57.js +1 -0
  491. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-5bdd550ed6386f57.js +1 -0
  492. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-5bdd550ed6386f57.js +1 -0
  493. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-5bdd550ed6386f57.js +1 -0
  494. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-5bdd550ed6386f57.js +1 -0
  495. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-5bdd550ed6386f57.js +1 -0
  496. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-5bdd550ed6386f57.js +1 -0
  497. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-5bdd550ed6386f57.js +1 -0
  498. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-5bdd550ed6386f57.js +1 -0
  499. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-5bdd550ed6386f57.js +1 -0
  500. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-5bdd550ed6386f57.js +1 -0
  501. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-5bdd550ed6386f57.js +1 -0
  502. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-5bdd550ed6386f57.js +1 -0
  503. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-5bdd550ed6386f57.js +1 -0
  504. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-5bdd550ed6386f57.js +1 -0
  505. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-5bdd550ed6386f57.js +1 -0
  506. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-5bdd550ed6386f57.js +1 -0
  507. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-5bdd550ed6386f57.js +1 -0
  508. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-5bdd550ed6386f57.js +1 -0
  509. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-5bdd550ed6386f57.js +1 -0
  510. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-5bdd550ed6386f57.js +1 -0
  511. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-5bdd550ed6386f57.js +1 -0
  512. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-5bdd550ed6386f57.js +1 -0
  513. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-5bdd550ed6386f57.js +1 -0
  514. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-5bdd550ed6386f57.js +1 -0
  515. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-5bdd550ed6386f57.js +1 -0
  516. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-5bdd550ed6386f57.js +1 -0
  517. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-5bdd550ed6386f57.js +1 -0
  518. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-5bdd550ed6386f57.js +1 -0
  519. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-5bdd550ed6386f57.js +1 -0
  520. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-5bdd550ed6386f57.js +1 -0
  521. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-5bdd550ed6386f57.js +1 -0
  522. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-5bdd550ed6386f57.js +1 -0
  523. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-5bdd550ed6386f57.js +1 -0
  524. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-5bdd550ed6386f57.js +1 -0
  525. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-5bdd550ed6386f57.js +1 -0
  526. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-5bdd550ed6386f57.js +1 -0
  527. package/.next/static/chunks/app/api/worktrees/[id]/route-5bdd550ed6386f57.js +1 -0
  528. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-5bdd550ed6386f57.js +1 -0
  529. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-5bdd550ed6386f57.js +1 -0
  530. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-5bdd550ed6386f57.js +1 -0
  531. package/.next/static/chunks/app/api/worktrees/[id]/search/route-5bdd550ed6386f57.js +1 -0
  532. package/.next/static/chunks/app/api/worktrees/[id]/send/route-5bdd550ed6386f57.js +1 -0
  533. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-5bdd550ed6386f57.js +1 -0
  534. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-5bdd550ed6386f57.js +1 -0
  535. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-5bdd550ed6386f57.js +1 -0
  536. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-5bdd550ed6386f57.js +1 -0
  537. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-5bdd550ed6386f57.js +1 -0
  538. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-5bdd550ed6386f57.js +1 -0
  539. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-5bdd550ed6386f57.js +1 -0
  540. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-5bdd550ed6386f57.js +1 -0
  541. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-5bdd550ed6386f57.js +1 -0
  542. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-5bdd550ed6386f57.js +1 -0
  543. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-5bdd550ed6386f57.js +1 -0
  544. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-5bdd550ed6386f57.js +1 -0
  545. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-5bdd550ed6386f57.js +1 -0
  546. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-5bdd550ed6386f57.js +1 -0
  547. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-5bdd550ed6386f57.js +1 -0
  548. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-5bdd550ed6386f57.js +1 -0
  549. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-5bdd550ed6386f57.js +1 -0
  550. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-5bdd550ed6386f57.js +1 -0
  551. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-5bdd550ed6386f57.js +1 -0
  552. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-5bdd550ed6386f57.js +1 -0
  553. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-5bdd550ed6386f57.js +1 -0
  554. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-5bdd550ed6386f57.js +1 -0
  555. package/.next/static/chunks/app/api/worktrees/route-5bdd550ed6386f57.js +1 -0
  556. package/.next/static/chunks/app/manifest.webmanifest/route-5bdd550ed6386f57.js +1 -0
  557. package/.next/static/chunks/app/proxy/[...path]/route-5bdd550ed6386f57.js +1 -0
  558. package/.next/static/chunks/app/repositories/page-202680fe6ec169c8.js +1 -0
  559. package/.next/static/chunks/app/worktrees/[id]/layout-5bdd550ed6386f57.js +1 -0
  560. package/.next/static/chunks/app/worktrees/[id]/page-214ee8b97dca856b.js +1 -0
  561. package/.next/trace +12 -12
  562. package/.next/types/routes.d.ts +2 -1
  563. package/.next/types/validator.ts +9 -0
  564. package/README.md +10 -1
  565. package/dist/cli/commands/auto-yes.d.ts.map +1 -1
  566. package/dist/cli/commands/auto-yes.js +3 -2
  567. package/dist/cli/commands/capture.d.ts.map +1 -1
  568. package/dist/cli/commands/capture.js +3 -2
  569. package/dist/cli/commands/ls.d.ts.map +1 -1
  570. package/dist/cli/commands/ls.js +9 -3
  571. package/dist/cli/commands/respond.d.ts.map +1 -1
  572. package/dist/cli/commands/respond.js +3 -2
  573. package/dist/cli/commands/send.d.ts.map +1 -1
  574. package/dist/cli/commands/send.js +4 -3
  575. package/dist/cli/commands/update.d.ts.map +1 -1
  576. package/dist/cli/commands/update.js +66 -0
  577. package/dist/cli/commands/wait.d.ts.map +1 -1
  578. package/dist/cli/commands/wait.js +2 -1
  579. package/dist/cli/config/agent-target-options.d.ts +46 -0
  580. package/dist/cli/config/agent-target-options.d.ts.map +1 -0
  581. package/dist/cli/config/agent-target-options.js +54 -0
  582. package/dist/cli/docs/agent-operations.d.ts +2 -2
  583. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  584. package/dist/cli/docs/agent-operations.js +47 -14
  585. package/dist/cli/utils/api-client.d.ts +4 -1
  586. package/dist/cli/utils/api-client.d.ts.map +1 -1
  587. package/dist/cli/utils/api-client.js +43 -5
  588. package/dist/cli/utils/npm-runner.d.ts +24 -0
  589. package/dist/cli/utils/npm-runner.d.ts.map +1 -1
  590. package/dist/cli/utils/npm-runner.js +51 -1
  591. package/dist/cli/utils/pid-manager.d.ts +12 -2
  592. package/dist/cli/utils/pid-manager.d.ts.map +1 -1
  593. package/dist/cli/utils/pid-manager.js +76 -13
  594. package/dist/server/server.js +107 -14
  595. package/dist/server/src/lib/auto-yes-state.js +64 -0
  596. package/dist/server/src/lib/db/db-repository.js +66 -2
  597. package/dist/server/src/lib/db/db.js +12 -3
  598. package/dist/server/src/lib/db/migrations/index.js +6 -0
  599. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  600. package/dist/server/src/lib/db/migrations/v53-worktree-aliases.js +53 -0
  601. package/dist/server/src/lib/db/migrations/v54-worktree-id-path-derived.js +204 -0
  602. package/dist/server/src/lib/db/migrations/v55-compact-churned-worktree-ids.js +207 -0
  603. package/dist/server/src/lib/db/migrations/worktree-id-rename.js +153 -0
  604. package/dist/server/src/lib/db/worktree-alias-db.js +155 -0
  605. package/dist/server/src/lib/db/worktree-db.js +53 -71
  606. package/dist/server/src/lib/detection/cli-patterns.js +86 -2
  607. package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +10 -1
  608. package/dist/server/src/lib/git/worktree-id.js +145 -0
  609. package/dist/server/src/lib/git/worktree-redirect.js +155 -0
  610. package/dist/server/src/lib/git/worktrees.js +173 -27
  611. package/dist/server/src/lib/logger.js +13 -1
  612. package/dist/server/src/lib/polling/auto-yes-manager.js +3 -1
  613. package/dist/server/src/lib/polling/prompt-dedup.js +22 -0
  614. package/dist/server/src/lib/polling/response-checker.js +53 -13
  615. package/dist/server/src/lib/polling/response-dedup.js +22 -0
  616. package/dist/server/src/lib/polling/response-poller-core.js +107 -0
  617. package/dist/server/src/lib/polling/response-poller.js +4 -1
  618. package/dist/server/src/lib/response-extractor.js +22 -2
  619. package/dist/server/src/lib/session/claude-session.js +117 -35
  620. package/dist/server/src/lib/session/current-output-builder.js +14 -1
  621. package/dist/server/src/lib/session/session-start-error.js +125 -0
  622. package/dist/server/src/lib/session/worktree-session-reconcile.js +603 -0
  623. package/dist/server/src/lib/tasks/contract-parser.js +17 -1
  624. package/dist/server/src/lib/tasks/task-state-machine.js +23 -1
  625. package/dist/server/src/lib/tmux/control-mode-tmux-transport.js +7 -0
  626. package/dist/server/src/lib/tmux/read-mode.js +22 -2
  627. package/dist/server/src/lib/tmux/tmux-capture-cache.js +33 -0
  628. package/dist/server/src/lib/tmux/tmux-control-client.js +12 -0
  629. package/dist/server/src/lib/tmux/tmux-control-registry.js +55 -11
  630. package/dist/server/src/lib/tmux/tmux.js +61 -0
  631. package/dist/server/src/lib/ws-server.js +104 -1
  632. package/package.json +1 -1
  633. package/.next/server/chunks/1117.js +0 -1
  634. package/.next/server/chunks/1356.js +0 -4
  635. package/.next/server/chunks/1692.js +0 -1
  636. package/.next/server/chunks/4018.js +0 -1
  637. package/.next/server/chunks/4390.js +0 -1
  638. package/.next/server/chunks/8681.js +0 -1
  639. package/.next/static/chunks/744-d5e47fe16e7b9e06.js +0 -1
  640. package/.next/static/chunks/app/api/app/update/route-8440b6c72bed83a1.js +0 -1
  641. package/.next/static/chunks/app/api/app/update-check/route-8440b6c72bed83a1.js +0 -1
  642. package/.next/static/chunks/app/api/assistant/conversation/route-8440b6c72bed83a1.js +0 -1
  643. package/.next/static/chunks/app/api/assistant/current-output/route-8440b6c72bed83a1.js +0 -1
  644. package/.next/static/chunks/app/api/assistant/messages/route-8440b6c72bed83a1.js +0 -1
  645. package/.next/static/chunks/app/api/assistant/session/route-8440b6c72bed83a1.js +0 -1
  646. package/.next/static/chunks/app/api/assistant/start/route-8440b6c72bed83a1.js +0 -1
  647. package/.next/static/chunks/app/api/assistant/terminal/route-8440b6c72bed83a1.js +0 -1
  648. package/.next/static/chunks/app/api/assistant/tools/route-8440b6c72bed83a1.js +0 -1
  649. package/.next/static/chunks/app/api/auth/login/route-8440b6c72bed83a1.js +0 -1
  650. package/.next/static/chunks/app/api/auth/logout/route-8440b6c72bed83a1.js +0 -1
  651. package/.next/static/chunks/app/api/auth/status/route-8440b6c72bed83a1.js +0 -1
  652. package/.next/static/chunks/app/api/daily-summary/route-8440b6c72bed83a1.js +0 -1
  653. package/.next/static/chunks/app/api/daily-summary/status/route-8440b6c72bed83a1.js +0 -1
  654. package/.next/static/chunks/app/api/external-apps/[id]/health/route-8440b6c72bed83a1.js +0 -1
  655. package/.next/static/chunks/app/api/external-apps/[id]/route-8440b6c72bed83a1.js +0 -1
  656. package/.next/static/chunks/app/api/external-apps/route-8440b6c72bed83a1.js +0 -1
  657. package/.next/static/chunks/app/api/fs/browse/route-8440b6c72bed83a1.js +0 -1
  658. package/.next/static/chunks/app/api/fs/recent-paths/route-8440b6c72bed83a1.js +0 -1
  659. package/.next/static/chunks/app/api/hooks/agent-event/route-8440b6c72bed83a1.js +0 -1
  660. package/.next/static/chunks/app/api/hooks/claude-done/route-8440b6c72bed83a1.js +0 -1
  661. package/.next/static/chunks/app/api/metrics/vibe/route-8440b6c72bed83a1.js +0 -1
  662. package/.next/static/chunks/app/api/ollama/models/route-8440b6c72bed83a1.js +0 -1
  663. package/.next/static/chunks/app/api/push/subscriptions/route-8440b6c72bed83a1.js +0 -1
  664. package/.next/static/chunks/app/api/push/vapid/route-8440b6c72bed83a1.js +0 -1
  665. package/.next/static/chunks/app/api/repositories/[id]/route-8440b6c72bed83a1.js +0 -1
  666. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8440b6c72bed83a1.js +0 -1
  667. package/.next/static/chunks/app/api/repositories/[id]/todos/route-8440b6c72bed83a1.js +0 -1
  668. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8440b6c72bed83a1.js +0 -1
  669. package/.next/static/chunks/app/api/repositories/clone/route-8440b6c72bed83a1.js +0 -1
  670. package/.next/static/chunks/app/api/repositories/excluded/route-8440b6c72bed83a1.js +0 -1
  671. package/.next/static/chunks/app/api/repositories/restore/route-8440b6c72bed83a1.js +0 -1
  672. package/.next/static/chunks/app/api/repositories/route-8440b6c72bed83a1.js +0 -1
  673. package/.next/static/chunks/app/api/repositories/scan/route-8440b6c72bed83a1.js +0 -1
  674. package/.next/static/chunks/app/api/repositories/sync/route-8440b6c72bed83a1.js +0 -1
  675. package/.next/static/chunks/app/api/repositories/validate-path/route-8440b6c72bed83a1.js +0 -1
  676. package/.next/static/chunks/app/api/sidebar/group-order/route-8440b6c72bed83a1.js +0 -1
  677. package/.next/static/chunks/app/api/skills/[id]/route-8440b6c72bed83a1.js +0 -1
  678. package/.next/static/chunks/app/api/skills/installations/route-8440b6c72bed83a1.js +0 -1
  679. package/.next/static/chunks/app/api/skills/operations/route-8440b6c72bed83a1.js +0 -1
  680. package/.next/static/chunks/app/api/skills/reindex/route-8440b6c72bed83a1.js +0 -1
  681. package/.next/static/chunks/app/api/skills/route-8440b6c72bed83a1.js +0 -1
  682. package/.next/static/chunks/app/api/slash-commands/route-8440b6c72bed83a1.js +0 -1
  683. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-8440b6c72bed83a1.js +0 -1
  684. package/.next/static/chunks/app/api/tasks/[taskId]/route-8440b6c72bed83a1.js +0 -1
  685. package/.next/static/chunks/app/api/templates/[id]/route-8440b6c72bed83a1.js +0 -1
  686. package/.next/static/chunks/app/api/templates/route-8440b6c72bed83a1.js +0 -1
  687. package/.next/static/chunks/app/api/todos/route-8440b6c72bed83a1.js +0 -1
  688. package/.next/static/chunks/app/api/verification/runs/[runId]/route-8440b6c72bed83a1.js +0 -1
  689. package/.next/static/chunks/app/api/verification/runs/route-8440b6c72bed83a1.js +0 -1
  690. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8440b6c72bed83a1.js +0 -1
  691. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8440b6c72bed83a1.js +0 -1
  692. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8440b6c72bed83a1.js +0 -1
  693. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8440b6c72bed83a1.js +0 -1
  694. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8440b6c72bed83a1.js +0 -1
  695. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8440b6c72bed83a1.js +0 -1
  696. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8440b6c72bed83a1.js +0 -1
  697. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8440b6c72bed83a1.js +0 -1
  698. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8440b6c72bed83a1.js +0 -1
  699. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8440b6c72bed83a1.js +0 -1
  700. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8440b6c72bed83a1.js +0 -1
  701. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8440b6c72bed83a1.js +0 -1
  702. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8440b6c72bed83a1.js +0 -1
  703. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8440b6c72bed83a1.js +0 -1
  704. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8440b6c72bed83a1.js +0 -1
  705. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8440b6c72bed83a1.js +0 -1
  706. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8440b6c72bed83a1.js +0 -1
  707. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8440b6c72bed83a1.js +0 -1
  708. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8440b6c72bed83a1.js +0 -1
  709. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8440b6c72bed83a1.js +0 -1
  710. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8440b6c72bed83a1.js +0 -1
  711. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8440b6c72bed83a1.js +0 -1
  712. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8440b6c72bed83a1.js +0 -1
  713. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8440b6c72bed83a1.js +0 -1
  714. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8440b6c72bed83a1.js +0 -1
  715. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8440b6c72bed83a1.js +0 -1
  716. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8440b6c72bed83a1.js +0 -1
  717. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8440b6c72bed83a1.js +0 -1
  718. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8440b6c72bed83a1.js +0 -1
  719. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8440b6c72bed83a1.js +0 -1
  720. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8440b6c72bed83a1.js +0 -1
  721. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8440b6c72bed83a1.js +0 -1
  722. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8440b6c72bed83a1.js +0 -1
  723. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8440b6c72bed83a1.js +0 -1
  724. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8440b6c72bed83a1.js +0 -1
  725. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8440b6c72bed83a1.js +0 -1
  726. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8440b6c72bed83a1.js +0 -1
  727. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8440b6c72bed83a1.js +0 -1
  728. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8440b6c72bed83a1.js +0 -1
  729. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8440b6c72bed83a1.js +0 -1
  730. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8440b6c72bed83a1.js +0 -1
  731. package/.next/static/chunks/app/api/worktrees/[id]/route-8440b6c72bed83a1.js +0 -1
  732. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8440b6c72bed83a1.js +0 -1
  733. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8440b6c72bed83a1.js +0 -1
  734. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8440b6c72bed83a1.js +0 -1
  735. package/.next/static/chunks/app/api/worktrees/[id]/search/route-8440b6c72bed83a1.js +0 -1
  736. package/.next/static/chunks/app/api/worktrees/[id]/send/route-8440b6c72bed83a1.js +0 -1
  737. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-8440b6c72bed83a1.js +0 -1
  738. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8440b6c72bed83a1.js +0 -1
  739. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8440b6c72bed83a1.js +0 -1
  740. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8440b6c72bed83a1.js +0 -1
  741. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8440b6c72bed83a1.js +0 -1
  742. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8440b6c72bed83a1.js +0 -1
  743. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8440b6c72bed83a1.js +0 -1
  744. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8440b6c72bed83a1.js +0 -1
  745. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-8440b6c72bed83a1.js +0 -1
  746. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-8440b6c72bed83a1.js +0 -1
  747. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8440b6c72bed83a1.js +0 -1
  748. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8440b6c72bed83a1.js +0 -1
  749. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8440b6c72bed83a1.js +0 -1
  750. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8440b6c72bed83a1.js +0 -1
  751. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8440b6c72bed83a1.js +0 -1
  752. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8440b6c72bed83a1.js +0 -1
  753. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8440b6c72bed83a1.js +0 -1
  754. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8440b6c72bed83a1.js +0 -1
  755. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-8440b6c72bed83a1.js +0 -1
  756. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-8440b6c72bed83a1.js +0 -1
  757. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-8440b6c72bed83a1.js +0 -1
  758. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8440b6c72bed83a1.js +0 -1
  759. package/.next/static/chunks/app/api/worktrees/route-8440b6c72bed83a1.js +0 -1
  760. package/.next/static/chunks/app/manifest.webmanifest/route-8440b6c72bed83a1.js +0 -1
  761. package/.next/static/chunks/app/proxy/[...path]/route-8440b6c72bed83a1.js +0 -1
  762. package/.next/static/chunks/app/repositories/page-1ed1e5a542ecc168.js +0 -1
  763. package/.next/static/chunks/app/worktrees/[id]/page-f6e09d25cd3b56f9.js +0 -1
  764. /package/.next/static/{-E7I667pJDTBamyG8M_Z- → C01FQOE5FCmB3I_GhMa4_}/_buildManifest.js +0 -0
  765. /package/.next/static/{-E7I667pJDTBamyG8M_Z- → C01FQOE5FCmB3I_GhMa4_}/_ssgManifest.js +0 -0
@@ -46,8 +46,11 @@ These commands enable coding agents (Claude Code, Codex, etc.) to orchestrate ot
46
46
  Send a message to an agent (async). Starts session automatically if not running.
47
47
 
48
48
  Options:
49
- --agent <id> Agent type: claude (default), codex, gemini, vibe-local, opencode, copilot, antigravity
50
- --instance <id> Agent instance ID: <agent> or <agent>-<n> (e.g. claude-2). See "Multi-Session" below.
49
+ --instance <id> Agent instance ID: <agent> or <agent>-<n> (e.g. claude-2, or codex
50
+ for the codex primary instance). The recommended way to name a
51
+ target: send / wait / respond / capture / auto-yes all take it.
52
+ --agent <id> Ad-hoc CLI tool for an instance the roster does not know:
53
+ claude (default), codex, gemini, vibe-local, opencode, copilot, antigravity
51
54
  --register Register the --instance session into the agent-instance roster
52
55
  --auto-yes Enable auto-yes before sending
53
56
  --duration <d> Auto-yes duration: 1h, 3h, 8h (default: 1h)
@@ -58,6 +61,13 @@ These commands enable coding agents (Claude Code, Codex, etc.) to orchestrate ot
58
61
  WT=$(commandmate ls --id anvil- --quiet) # disambiguate by repo (id prefix)
59
62
  commandmate send "$WT" "Implement this"
60
63
 
64
+ Targeting a non-default agent (Issue #1638): pass --instance, not --agent. Only
65
+ --instance is accepted by every command -- 'wait --agent' does not exist -- so a
66
+ workflow that names the agent on 'send' and nothing on 'wait' waits on the wrong
67
+ session in silence.
68
+ commandmate send "$WT" "Implement this" --instance codex
69
+ commandmate wait "$WT" --instance codex
70
+
61
71
  ### commandmate wait <worktree-id...>
62
72
  Block until agent completes or prompt is detected.
63
73
 
@@ -65,6 +75,7 @@ These commands enable coding agents (Claude Code, Codex, etc.) to orchestrate ot
65
75
  --timeout <seconds> Maximum wait time
66
76
  --on-prompt <mode> agent (default) or human
67
77
  --stall-timeout <seconds> Max time without output change
78
+ --instance <id> Agent instance to wait on. There is no --agent here.
68
79
  --verify After completion, run every verification gate
69
80
  --require-work After completion, run only the work-evidence gate
70
81
 
@@ -148,6 +159,7 @@ These commands enable coding agents (Claude Code, Codex, etc.) to orchestrate ot
148
159
  commandmate respond <id> "yes" # Yes/No
149
160
  commandmate respond <id> "2" # Multiple choice (number)
150
161
  commandmate respond <id> "custom text" # Free text
162
+ commandmate respond <id> "yes" --instance codex-2 # Specific instance
151
163
 
152
164
  Exit codes:
153
165
  0 - Response sent
@@ -156,9 +168,9 @@ These commands enable coding agents (Claude Code, Codex, etc.) to orchestrate ot
156
168
  ### commandmate capture <worktree-id>
157
169
  Get current terminal output.
158
170
 
159
- commandmate capture <id> # Plain text
160
- commandmate capture <id> --json # JSON with status info
161
- commandmate capture <id> --agent codex # Specific agent
171
+ commandmate capture <id> # Plain text
172
+ commandmate capture <id> --json # JSON with status info
173
+ commandmate capture <id> --instance codex # Specific instance
162
174
 
163
175
  ### commandmate auto-yes <worktree-id>
164
176
  Control auto-yes (automatic prompt response).
@@ -167,6 +179,7 @@ These commands enable coding agents (Claude Code, Codex, etc.) to orchestrate ot
167
179
  commandmate auto-yes <id> --enable --duration 3h # With duration
168
180
  commandmate auto-yes <id> --enable --stop-pattern "error"
169
181
  commandmate auto-yes <id> --disable # Disable
182
+ commandmate auto-yes <id> --enable --instance codex-2 # Scoped to one instance
170
183
 
171
184
  ### commandmate instances <worktree-id> [action] [args]
172
185
  Discover and manage a worktree's agent-instance roster (1 agent, multiple sessions).
@@ -228,6 +241,17 @@ These commands enable coding agents (Claude Code, Codex, etc.) to orchestrate ot
228
241
  --instance is accepted by send / wait / respond / capture / auto-yes.
229
242
  send --instance auto-starts the session if it is not already running.
230
243
 
244
+ --instance alone is the recommended way to name a target (Issue #1638). It is
245
+ the only flag all five commands share: --agent is rejected by 'wait'. A
246
+ rostered instance already carries its CLI tool (Issue #1629), and an instance
247
+ id that is itself a tool id resolves to that tool's primary instance even
248
+ without a roster entry, so '--instance codex' needs no --agent.
249
+
250
+ --agent remains accepted by send / respond / capture / auto-yes as the
251
+ supplement for ad-hoc instances the roster does not know -- notably
252
+ '--register', which cannot infer the tool from an id like codex-3. Passing an
253
+ --agent that contradicts the roster is an error (exit 2), not an override.
254
+
231
255
  The roster (visible in the browser UI's Agent panel) is the list of known
232
256
  instances with aliases and display order. Ad-hoc sessions started via
233
257
  'send --instance' do NOT appear in the roster unless registered:
@@ -240,9 +264,9 @@ These commands enable coding agents (Claude Code, Codex, etc.) to orchestrate ot
240
264
  to that specific session, independent of other instances of the same agent.
241
265
 
242
266
  commandmate instances <id> # discover valid --instance values
243
- commandmate send <id> "task" --agent codex --instance codex-2 --auto-yes
267
+ commandmate send <id> "task" --instance codex-2 --auto-yes
244
268
  commandmate wait <id> --instance codex-2 --timeout 600
245
- commandmate capture <id> --agent codex --instance codex-2
269
+ commandmate capture <id> --instance codex-2
246
270
 
247
271
  ## All Exit Codes
248
272
 
@@ -318,12 +342,18 @@ Copy and adapt these patterns for your use case.
318
342
  WT2=$(commandmate ls --branch feature/102 --quiet)
319
343
 
320
344
  commandmate send "$WT1" "Implement #101" --auto-yes
321
- commandmate send "$WT2" "Implement #102" --auto-yes --agent codex
345
+ commandmate send "$WT2" "Implement #102" --auto-yes --instance codex
322
346
 
323
- commandmate wait "$WT1" "$WT2" --timeout 1800
347
+ # One --instance covers every worktree id in the call, so worktrees on
348
+ # different instances need one wait each. Both agents keep running while the
349
+ # first wait blocks, so this costs no wall clock over a combined wait.
350
+ # A bare 'wait "$WT2"' would watch WT2's DEFAULT agent, not the codex session:
351
+ # 'wait' has no --agent to correct that with.
352
+ commandmate wait "$WT1" --timeout 1800
353
+ commandmate wait "$WT2" --instance codex --timeout 1800
324
354
 
325
355
  commandmate capture "$WT1" --json
326
- commandmate capture "$WT2" --json
356
+ commandmate capture "$WT2" --instance codex --json
327
357
 
328
358
  ## 5. Check status before sending
329
359
 
@@ -362,13 +392,16 @@ Copy and adapt these patterns for your use case.
362
392
  # Discover the roster before picking an --instance value
363
393
  commandmate instances "$WT"
364
394
 
365
- # Register a second Codex instance, then send/wait/capture scoped to it
395
+ # Register a second Codex instance, then send/wait/capture scoped to it.
396
+ # Once it is in the roster, --instance alone carries the CLI tool.
366
397
  commandmate instances "$WT" add --agent codex --alias "Review"
367
- commandmate send "$WT" "Review the diff" --agent codex --instance codex-2 --auto-yes
398
+ commandmate send "$WT" "Review the diff" --instance codex-2 --auto-yes
368
399
  commandmate wait "$WT" --instance codex-2 --timeout 600
369
- commandmate capture "$WT" --agent codex --instance codex-2 --json
400
+ commandmate capture "$WT" --instance codex-2 --json
370
401
 
371
- # Ad-hoc instance without pre-registering (still runs; register to show in UI)
402
+ # Ad-hoc instance without pre-registering (still runs; register to show in UI).
403
+ # --agent is required here: codex-3 is not in the roster yet, so nothing else
404
+ # says which CLI tool to start.
372
405
  commandmate send "$WT" "Quick check" --agent codex --instance codex-3 --register
373
406
 
374
407
  # Clean up when done
@@ -44,9 +44,12 @@ export interface ApiErrorResult {
44
44
  *
45
45
  * @param error - Error object or unknown
46
46
  * @param status - HTTP status code if available
47
+ * @param payload - Parsed error body, when the response carried one (Issue #1637).
48
+ * Used for 5xx only: the 4xx messages below are already specific, and are
49
+ * pinned by tests as the CLI's own wording.
47
50
  * @returns User-friendly error message and exit code
48
51
  */
49
- export declare function handleApiError(error: unknown, status?: number): ApiErrorResult;
52
+ export declare function handleApiError(error: unknown, status?: number, payload?: ApiErrorPayload): ApiErrorResult;
50
53
  /**
51
54
  * API Client for CLI HTTP communication.
52
55
  * Uses Node.js built-in fetch. Handles auth headers and error mapping.
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,4CAA4C;AAC5C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAK3C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAaD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CASjF;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAmE9E;AAeD;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAC,CAAS;gBAEX,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAa1D,OAAO,CAAC,UAAU;IAUlB;;;OAGG;IACG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAqBtC;;;OAGG;IACG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAyBvD;;;;OAIG;IACG,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAuBzD;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACxD,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AA0BD;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;aAGf,QAAQ,EAAE,MAAM;aAChB,UAAU,CAAC,EAAE,MAAM;IACnC,gEAAgE;aAChD,OAAO,CAAC,EAAE,eAAe;gBAJzC,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,YAAA;IACnC,gEAAgE;IAChD,OAAO,CAAC,EAAE,eAAe,YAAA;IAM3C,uEAAuE;IACvE,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAEhC;CACF;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EACvC,OAAO,EAAE,MAAM,GACd,CAAC,CAiBH;AAOD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CASvF;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CASxE"}
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,4CAA4C;AAC5C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAK3C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAaD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CASjF;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA0BD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,cAAc,CAyEhB;AAeD;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAC,CAAS;gBAEX,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAa1D,OAAO,CAAC,UAAU;IAUlB;;;OAGG;IACG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAuBtC;;;OAGG;IACG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IA2BvD;;;;OAIG;IACG,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAyBzD;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACxD,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AA0BD;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;aAGf,QAAQ,EAAE,MAAM;aAChB,UAAU,CAAC,EAAE,MAAM;IACnC,gEAAgE;aAChD,OAAO,CAAC,EAAE,eAAe;gBAJzC,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,YAAA;IACnC,gEAAgE;IAChD,OAAO,CAAC,EAAE,eAAe,YAAA;IAM3C,uEAAuE;IACvE,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAEhC;CACF;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EACvC,OAAO,EAAE,MAAM,GACd,CAAC,CAiBH;AAOD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CASvF;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CASxE"}
@@ -63,15 +63,41 @@ function resolveAuthToken(options) {
63
63
  }
64
64
  return process.env.CM_AUTH_TOKEN;
65
65
  }
66
+ /**
67
+ * The server's own explanation for a failure, when it sent one worth showing.
68
+ *
69
+ * Issue #1637: every 5xx used to be flattened into `Server error. Check server
70
+ * logs for details.`, which is only useful to someone who has the server logs.
71
+ * A cold-start `send` failed with an initialization timeout and told the
72
+ * operator nothing but "go read the logs" — four orchestration runs in a row
73
+ * then misdiagnosed it as a session-creation race and worked around it by
74
+ * re-sending. Every route in this codebase already answers `{ error }`, so the
75
+ * cause was always in the response body; nothing read it.
76
+ *
77
+ * Trimmed and length-capped because it is printed to a terminal, and an
78
+ * unbounded server string is not something a CLI should paste verbatim.
79
+ */
80
+ const MAX_SERVER_ERROR_DETAIL = 2000;
81
+ function serverErrorDetail(payload) {
82
+ const detail = typeof payload?.error === 'string' ? payload.error.trim() : '';
83
+ if (detail === '')
84
+ return undefined;
85
+ return detail.length > MAX_SERVER_ERROR_DETAIL
86
+ ? `${detail.slice(0, MAX_SERVER_ERROR_DETAIL)}…`
87
+ : detail;
88
+ }
66
89
  /**
67
90
  * Classify API errors into user-friendly messages and exit codes.
68
91
  * [IA3-09] Covers: ECONNREFUSED, 400, 401/403, 404, 429, 500, timeout
69
92
  *
70
93
  * @param error - Error object or unknown
71
94
  * @param status - HTTP status code if available
95
+ * @param payload - Parsed error body, when the response carried one (Issue #1637).
96
+ * Used for 5xx only: the 4xx messages below are already specific, and are
97
+ * pinned by tests as the CLI's own wording.
72
98
  * @returns User-friendly error message and exit code
73
99
  */
74
- function handleApiError(error, status) {
100
+ function handleApiError(error, status, payload) {
75
101
  // HTTP status-based errors
76
102
  if (status !== undefined) {
77
103
  switch (status) {
@@ -99,8 +125,14 @@ function handleApiError(error, status) {
99
125
  case 500:
100
126
  default:
101
127
  if (status >= 500) {
128
+ // Issue #1637: pass the server's own reason through. The prefix is
129
+ // kept so "this came from the server, not from the CLI" survives, and
130
+ // so does the log pointer when the body said nothing.
131
+ const detail = serverErrorDetail(payload);
102
132
  return {
103
- message: 'Server error. Check server logs for details.',
133
+ message: detail
134
+ ? `Server error: ${detail}`
135
+ : 'Server error. Check server logs for details.',
104
136
  exitCode: types_1.ExitCode.UNEXPECTED_ERROR,
105
137
  };
106
138
  }
@@ -186,8 +218,10 @@ class ApiClient {
186
218
  headers: this.getHeaders(),
187
219
  });
188
220
  if (!response.ok) {
189
- const errResult = handleApiError(null, response.status);
221
+ // Issue #1637: read the body first — handleApiError needs it to surface
222
+ // the server's reason for a 5xx instead of "check the logs".
190
223
  const payload = await readErrorPayload(response);
224
+ const errResult = handleApiError(null, response.status, payload);
191
225
  throw new ApiError(errResult.message, errResult.exitCode, response.status, payload);
192
226
  }
193
227
  return (await response.json());
@@ -211,8 +245,10 @@ class ApiClient {
211
245
  body: body !== undefined ? JSON.stringify(body) : undefined,
212
246
  });
213
247
  if (!response.ok) {
214
- const errResult = handleApiError(null, response.status);
248
+ // Issue #1637: read the body first — handleApiError needs it to surface
249
+ // the server's reason for a 5xx instead of "check the logs".
215
250
  const payload = await readErrorPayload(response);
251
+ const errResult = handleApiError(null, response.status, payload);
216
252
  throw new ApiError(errResult.message, errResult.exitCode, response.status, payload);
217
253
  }
218
254
  // Handle 204 No Content
@@ -241,8 +277,10 @@ class ApiClient {
241
277
  body: body !== undefined ? JSON.stringify(body) : undefined,
242
278
  });
243
279
  if (!response.ok) {
244
- const errResult = handleApiError(null, response.status);
280
+ // Issue #1637: read the body first — handleApiError needs it to surface
281
+ // the server's reason for a 5xx instead of "check the logs".
245
282
  const payload = await readErrorPayload(response);
283
+ const errResult = handleApiError(null, response.status, payload);
246
284
  throw new ApiError(errResult.message, errResult.exitCode, response.status, payload);
247
285
  }
248
286
  const text = await response.text();
@@ -16,6 +16,8 @@
16
16
  */
17
17
  /** Timeout for `npm view` (longer than preflight's 5s: this is a network round trip) */
18
18
  export declare const NPM_VIEW_TIMEOUT_MS = 10000;
19
+ /** Timeout for `npm root -g` (a local path lookup, so preflight's 5s is plenty) */
20
+ export declare const NPM_ROOT_TIMEOUT_MS = 5000;
19
21
  /**
20
22
  * Result of a registry version query
21
23
  */
@@ -55,4 +57,26 @@ export declare function viewLatestVersion(packageName: string): NpmViewResult;
55
57
  * @returns Success, or a classified failure (EACCES flagged separately)
56
58
  */
57
59
  export declare function installGlobalLatest(packageName: string): NpmInstallResult;
60
+ /**
61
+ * A package present in the npm global root (`npm root -g`)
62
+ */
63
+ export interface GlobalInstallation {
64
+ /** Absolute path of the installed package directory */
65
+ path: string;
66
+ /** Version read from its package.json; undefined when that cannot be read */
67
+ version?: string;
68
+ }
69
+ /**
70
+ * Locate a globally installed (`npm install -g`) package.
71
+ *
72
+ * Issue #1633: an npx self-update refreshes only the npx cache, so a global install left on the
73
+ * machine keeps shadowing `commandmate` on PATH at whatever version it was — a divergence that
74
+ * went unnoticed for months and surfaced as #1632. Callers only *warn* about what this reports,
75
+ * so every failure mode (npm missing, `npm root -g` failing on permissions, an unreadable
76
+ * package.json) degrades to "nothing to report" instead of propagating.
77
+ *
78
+ * @param packageName - Package name (e.g. `commandmate`)
79
+ * @returns The installation, or null when npm could not be asked or the package is not there
80
+ */
81
+ export declare function findGlobalInstallation(packageName: string): GlobalInstallation | null;
58
82
  //# sourceMappingURL=npm-runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"npm-runner.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/npm-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,wFAAwF;AACxF,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CA+BpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAwCzE"}
1
+ {"version":3,"file":"npm-runner.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/npm-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,wFAAwF;AACxF,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,OAAQ,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CA+BpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAwCzE;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAsBrF"}
@@ -16,12 +16,17 @@
16
16
  * @module npm-runner
17
17
  */
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.NPM_VIEW_TIMEOUT_MS = void 0;
19
+ exports.NPM_ROOT_TIMEOUT_MS = exports.NPM_VIEW_TIMEOUT_MS = void 0;
20
20
  exports.viewLatestVersion = viewLatestVersion;
21
21
  exports.installGlobalLatest = installGlobalLatest;
22
+ exports.findGlobalInstallation = findGlobalInstallation;
22
23
  const child_process_1 = require("child_process");
24
+ const fs_1 = require("fs");
25
+ const path_1 = require("path");
23
26
  /** Timeout for `npm view` (longer than preflight's 5s: this is a network round trip) */
24
27
  exports.NPM_VIEW_TIMEOUT_MS = 10_000;
28
+ /** Timeout for `npm root -g` (a local path lookup, so preflight's 5s is plenty) */
29
+ exports.NPM_ROOT_TIMEOUT_MS = 5_000;
25
30
  /**
26
31
  * Query the npm registry for the latest published version of a package.
27
32
  *
@@ -101,6 +106,51 @@ function installGlobalLatest(packageName) {
101
106
  }
102
107
  return { success: true, permissionDenied: false };
103
108
  }
109
+ /**
110
+ * Locate a globally installed (`npm install -g`) package.
111
+ *
112
+ * Issue #1633: an npx self-update refreshes only the npx cache, so a global install left on the
113
+ * machine keeps shadowing `commandmate` on PATH at whatever version it was — a divergence that
114
+ * went unnoticed for months and surfaced as #1632. Callers only *warn* about what this reports,
115
+ * so every failure mode (npm missing, `npm root -g` failing on permissions, an unreadable
116
+ * package.json) degrades to "nothing to report" instead of propagating.
117
+ *
118
+ * @param packageName - Package name (e.g. `commandmate`)
119
+ * @returns The installation, or null when npm could not be asked or the package is not there
120
+ */
121
+ function findGlobalInstallation(packageName) {
122
+ const result = (0, child_process_1.spawnSync)('npm', ['root', '-g'], {
123
+ encoding: 'utf-8',
124
+ timeout: exports.NPM_ROOT_TIMEOUT_MS,
125
+ });
126
+ // Covers ENOENT (no npm), a timeout, and a non-zero exit alike: nothing to report.
127
+ if (result.error || result.status !== 0) {
128
+ return null;
129
+ }
130
+ const root = readStream(result.stdout);
131
+ if (!root) {
132
+ return null;
133
+ }
134
+ const packagePath = (0, path_1.join)(root, packageName);
135
+ if (!(0, fs_1.existsSync)(packagePath)) {
136
+ return null;
137
+ }
138
+ return { path: packagePath, version: readInstalledVersion(packagePath) };
139
+ }
140
+ /**
141
+ * Best-effort version read from an installed package's package.json.
142
+ * The install itself is what matters, so an unreadable manifest still reports the install.
143
+ */
144
+ function readInstalledVersion(packagePath) {
145
+ try {
146
+ const raw = (0, fs_1.readFileSync)((0, path_1.join)(packagePath, 'package.json'), 'utf-8');
147
+ const version = JSON.parse(raw).version;
148
+ return typeof version === 'string' && version.length > 0 ? version : undefined;
149
+ }
150
+ catch {
151
+ return undefined;
152
+ }
153
+ }
104
154
  /**
105
155
  * Detect an npm global permission error.
106
156
  */
@@ -4,6 +4,8 @@
4
4
  * Issue #136: Phase 2 - Task 2.4 - Added factory functions for Issue number support
5
5
  * Issue #1354/#1355/#1358: the file now records the daemon's version, effective settings, and
6
6
  * a process-identity signature, not just the PID. See DaemonState.
7
+ * Issue #1632: the file is written in a hybrid format (bare PID on line 1, JSON on line 2) so
8
+ * that CLIs predating #1354 can still recover the PID from it. See formatState().
7
9
  * SF-1: SRP - Separated from daemon.ts for single responsibility
8
10
  * MF-SEC-2: TOCTOU protection with O_EXCL atomic writes
9
11
  */
@@ -51,8 +53,15 @@ export declare class PidManager {
51
53
  /**
52
54
  * Read the daemon state from file.
53
55
  *
54
- * Tolerates the legacy format (a bare integer PID) by returning `{ pid }`, so a state file
55
- * written by an older running daemon is still understood after a CLI upgrade (Issue #1354).
56
+ * Understands all three formats this file has ever had (Issue #1632):
57
+ * - hybrid (current): bare PID on line 1, JSON state on line 2
58
+ * - JSON only (#1354 .. #1632): the full state as one JSON object
59
+ * - bare integer (pre-#1354): just the PID, returned as `{ pid }`
60
+ *
61
+ * Reading the JSON of the hybrid format is not optional: falling back to the line-1 PID
62
+ * would silently drop `version`, disabling the CLI↔server version mismatch warning added
63
+ * by #1354, and drop `port`/`protocol`/`bind`, sending status back to re-deriving the URL
64
+ * from a possibly-diverged .env (#1355).
56
65
  *
57
66
  * @returns The daemon state, or null when the file is missing or invalid
58
67
  */
@@ -65,6 +74,7 @@ export declare class PidManager {
65
74
  /**
66
75
  * Write the daemon state to file atomically
67
76
  * MF-SEC-2: Uses O_EXCL to prevent TOCTOU race conditions
77
+ * Issue #1632: written in the hybrid format (see formatState)
68
78
  *
69
79
  * @returns true if successful, false if file already exists
70
80
  * @throws Error for other filesystem errors
@@ -1 +1 @@
1
- {"version":3,"file":"pid-manager.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/pid-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,OAAO,EAAuB,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElF;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,wEAAwE;IACxE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,UAAU;IAOnB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAPhC;;;;OAIG;gBAEgB,WAAW,EAAE,MAAM,EACnB,aAAa,GAAE,sBAA4C;IAG9E;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;;;;;;OAOG;IACH,SAAS,IAAI,WAAW,GAAG,IAAI;IA2B/B;;;OAGG;IACH,OAAO,IAAI,MAAM,GAAG,IAAI;IAIxB;;;;;;OAMG;IACH,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAwBvC;;;;;;OAMG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,SAAS,IAAI,IAAI;IAUjB;;;;;;;;;;;OAWG;IACH,gBAAgB,IAAI,OAAO;CAoC5B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAI7D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAEjE"}
1
+ {"version":3,"file":"pid-manager.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/pid-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,OAAO,EAAuB,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElF;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,wEAAwE;IACxE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuED;;GAEG;AACH,qBAAa,UAAU;IAOnB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAPhC;;;;OAIG;gBAEgB,WAAW,EAAE,MAAM,EACnB,aAAa,GAAE,sBAA4C;IAG9E;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;;;;;;;;;;;;;OAcG;IACH,SAAS,IAAI,WAAW,GAAG,IAAI;IAgB/B;;;OAGG;IACH,OAAO,IAAI,MAAM,GAAG,IAAI;IAIxB;;;;;;;OAOG;IACH,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAwBvC;;;;;;OAMG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,SAAS,IAAI,IAAI;IAUjB;;;;;;;;;;;OAWG;IACH,gBAAgB,IAAI,OAAO;CAoC5B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAI7D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAEjE"}
@@ -5,6 +5,8 @@
5
5
  * Issue #136: Phase 2 - Task 2.4 - Added factory functions for Issue number support
6
6
  * Issue #1354/#1355/#1358: the file now records the daemon's version, effective settings, and
7
7
  * a process-identity signature, not just the PID. See DaemonState.
8
+ * Issue #1632: the file is written in a hybrid format (bare PID on line 1, JSON on line 2) so
9
+ * that CLIs predating #1354 can still recover the PID from it. See formatState().
8
10
  * SF-1: SRP - Separated from daemon.ts for single responsibility
9
11
  * MF-SEC-2: TOCTOU protection with O_EXCL atomic writes
10
12
  */
@@ -15,6 +17,68 @@ exports.createIssuePidManager = createIssuePidManager;
15
17
  const fs_1 = require("fs");
16
18
  const resource_resolvers_1 = require("./resource-resolvers");
17
19
  const process_inspector_1 = require("./process-inspector");
20
+ /**
21
+ * Serialize the state in the hybrid format (Issue #1632).
22
+ *
23
+ * ```
24
+ * 84890
25
+ * {"pid":84890,"version":"0.18.0","port":3000,...}
26
+ * ```
27
+ *
28
+ * The path of this file has never changed, so a CLI predating #1354 that is still on PATH
29
+ * (a stale `npm install -g`) reads whatever the current daemon wrote. Those CLIs parse it as
30
+ * `parseInt(readFileSync(...).trim(), 10)`, which returned NaN for a leading `{` and made them
31
+ * report "Stopped (no PID file)" for a perfectly healthy server. `parseInt` stops at the first
32
+ * non-digit, so putting the bare PID on line 1 restores that forward compatibility.
33
+ *
34
+ * The JSON is always exactly one line: JSON.stringify escapes control characters inside
35
+ * strings, so it can never emit a raw newline of its own.
36
+ */
37
+ function formatState(state) {
38
+ return `${state.pid}\n${JSON.stringify(state)}\n`;
39
+ }
40
+ /**
41
+ * Parse the (already trimmed, non-empty) contents of a state file in any format it has had.
42
+ *
43
+ * @returns The daemon state, or null when nothing usable could be parsed
44
+ */
45
+ function parseState(content) {
46
+ const firstBreak = content.indexOf('\n');
47
+ // .trim() also drops the \r of a CRLF file, which /^\d+$/ would otherwise reject.
48
+ const head = (firstBreak === -1 ? content : content.slice(0, firstBreak)).trim();
49
+ if (/^\d+$/.test(head)) {
50
+ const pid = parseInt(head, 10);
51
+ if (pid <= 0) {
52
+ return null;
53
+ }
54
+ const body = firstBreak === -1 ? '' : content.slice(firstBreak + 1).trim();
55
+ if (body.length === 0) {
56
+ // Pre-#1354 format: the file held only the PID.
57
+ return { pid };
58
+ }
59
+ // Hybrid format (#1632): line 2 carries the full state. Line 1 is the fallback, so a
60
+ // truncated or corrupt JSON body still yields a usable PID instead of "no PID file".
61
+ return parseJsonState(body) ?? { pid };
62
+ }
63
+ // #1354..#1632 format: the whole file is the JSON state.
64
+ return parseJsonState(content);
65
+ }
66
+ /**
67
+ * Parse a JSON state object, rejecting anything without a usable PID.
68
+ */
69
+ function parseJsonState(json) {
70
+ let parsed;
71
+ try {
72
+ parsed = JSON.parse(json);
73
+ }
74
+ catch {
75
+ return null;
76
+ }
77
+ if (typeof parsed.pid !== 'number' || !Number.isInteger(parsed.pid) || parsed.pid <= 0) {
78
+ return null;
79
+ }
80
+ return parsed;
81
+ }
18
82
  /**
19
83
  * PID file manager for daemon process tracking
20
84
  */
@@ -39,8 +103,15 @@ class PidManager {
39
103
  /**
40
104
  * Read the daemon state from file.
41
105
  *
42
- * Tolerates the legacy format (a bare integer PID) by returning `{ pid }`, so a state file
43
- * written by an older running daemon is still understood after a CLI upgrade (Issue #1354).
106
+ * Understands all three formats this file has ever had (Issue #1632):
107
+ * - hybrid (current): bare PID on line 1, JSON state on line 2
108
+ * - JSON only (#1354 .. #1632): the full state as one JSON object
109
+ * - bare integer (pre-#1354): just the PID, returned as `{ pid }`
110
+ *
111
+ * Reading the JSON of the hybrid format is not optional: falling back to the line-1 PID
112
+ * would silently drop `version`, disabling the CLI↔server version mismatch warning added
113
+ * by #1354, and drop `port`/`protocol`/`bind`, sending status back to re-deriving the URL
114
+ * from a possibly-diverged .env (#1355).
44
115
  *
45
116
  * @returns The daemon state, or null when the file is missing or invalid
46
117
  */
@@ -53,16 +124,7 @@ class PidManager {
53
124
  if (content.length === 0) {
54
125
  return null;
55
126
  }
56
- // Legacy format: the file held only the PID as a bare integer.
57
- if (/^\d+$/.test(content)) {
58
- const pid = parseInt(content, 10);
59
- return pid > 0 ? { pid } : null;
60
- }
61
- const parsed = JSON.parse(content);
62
- if (typeof parsed.pid !== 'number' || !Number.isInteger(parsed.pid) || parsed.pid <= 0) {
63
- return null;
64
- }
65
- return parsed;
127
+ return parseState(content);
66
128
  }
67
129
  catch {
68
130
  return null;
@@ -78,6 +140,7 @@ class PidManager {
78
140
  /**
79
141
  * Write the daemon state to file atomically
80
142
  * MF-SEC-2: Uses O_EXCL to prevent TOCTOU race conditions
143
+ * Issue #1632: written in the hybrid format (see formatState)
81
144
  *
82
145
  * @returns true if successful, false if file already exists
83
146
  * @throws Error for other filesystem errors
@@ -87,7 +150,7 @@ class PidManager {
87
150
  // O_EXCL: Fail if file already exists (atomic check-and-create)
88
151
  const fd = (0, fs_1.openSync)(this.pidFilePath, fs_1.constants.O_WRONLY | fs_1.constants.O_CREAT | fs_1.constants.O_EXCL, 0o600);
89
152
  try {
90
- (0, fs_1.writeSync)(fd, JSON.stringify(state));
153
+ (0, fs_1.writeSync)(fd, formatState(state));
91
154
  return true;
92
155
  }
93
156
  finally {