commandmate 0.21.5 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +240 -233
  3. package/.next/app-path-routes-manifest.json +29 -28
  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_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/app/update-check/route.js +1 -1
  10. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  12. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  13. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  15. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  16. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/assistant/messages/route.js +1 -1
  18. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  19. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/assistant/session/route.js +1 -1
  21. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  22. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/assistant/start/route.js +1 -1
  24. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  25. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/assistant/terminal/route.js +1 -1
  27. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  28. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/assistant/tools/route.js +1 -1
  30. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  31. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/fs/browse/route.js +2 -2
  41. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
  42. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  45. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  46. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  48. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  49. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/hooks/permission-request/route.js +1 -0
  51. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -0
  52. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -0
  53. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/push/vapid/route.js +1 -1
  57. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  58. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  63. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  64. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/clone/route.js +1 -1
  66. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  67. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/repositories/restore/route.js +1 -1
  70. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  71. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/repositories/route.js +1 -1
  73. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  74. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/repositories/scan/route.js +1 -1
  76. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  77. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/repositories/sync/route.js +1 -1
  79. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  80. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/repositories/validate-path/route.js +1 -1
  82. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
  83. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  99. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  100. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  102. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  103. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  107. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  110. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  139. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  142. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  151. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  154. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  157. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  161. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  166. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  169. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  180. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
  183. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/tasks/route.js +2 -6
  185. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  186. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  189. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  193. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  201. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/route.js +1 -1
  206. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  209. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  210. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  212. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  213. package/.next/server/app/page_client-reference-manifest.js +1 -1
  214. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  216. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  217. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  218. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  219. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  220. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  221. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  222. package/.next/server/app/worktrees/[id]/page.js +9 -9
  223. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  224. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  225. package/.next/server/app-paths-manifest.json +29 -28
  226. package/.next/server/chunks/1068.js +1 -1
  227. package/.next/server/chunks/1356.js +4 -0
  228. package/.next/server/chunks/1841.js +1 -0
  229. package/.next/server/chunks/2404.js +1 -1
  230. package/.next/server/chunks/2816.js +1 -1
  231. package/.next/server/chunks/3022.js +1 -0
  232. package/.next/server/chunks/3736.js +1 -1
  233. package/.next/server/chunks/5959.js +5 -4
  234. package/.next/server/chunks/6130.js +1 -1
  235. package/.next/server/chunks/6274.js +8 -12
  236. package/.next/server/chunks/6919.js +1 -0
  237. package/.next/server/chunks/7685.js +1 -1
  238. package/.next/server/chunks/8856.js +1 -1
  239. package/.next/server/chunks/9067.js +1 -1
  240. package/.next/server/chunks/9373.js +8 -0
  241. package/.next/server/chunks/9687.js +2 -2
  242. package/.next/server/middleware-manifest.json +5 -5
  243. package/.next/server/pages/500.html +1 -1
  244. package/.next/server/server-reference-manifest.json +1 -1
  245. package/.next/server/src/middleware.js.map +1 -1
  246. package/.next/static/b69eWhjC1rRrFTa-g3lMS/_buildManifest.js +1 -0
  247. package/.next/static/chunks/{6488-572dbfd9986e8a92.js → 6488-2ad4f67779f8d00a.js} +1 -1
  248. package/.next/static/chunks/app/api/app/update/route-973ec48531555712.js +1 -0
  249. package/.next/static/chunks/app/api/app/update-check/route-973ec48531555712.js +1 -0
  250. package/.next/static/chunks/app/api/assistant/conversation/route-973ec48531555712.js +1 -0
  251. package/.next/static/chunks/app/api/assistant/current-output/route-973ec48531555712.js +1 -0
  252. package/.next/static/chunks/app/api/assistant/messages/route-973ec48531555712.js +1 -0
  253. package/.next/static/chunks/app/api/assistant/session/route-973ec48531555712.js +1 -0
  254. package/.next/static/chunks/app/api/assistant/start/route-973ec48531555712.js +1 -0
  255. package/.next/static/chunks/app/api/assistant/terminal/route-973ec48531555712.js +1 -0
  256. package/.next/static/chunks/app/api/assistant/tools/route-973ec48531555712.js +1 -0
  257. package/.next/static/chunks/app/api/auth/login/route-973ec48531555712.js +1 -0
  258. package/.next/static/chunks/app/api/auth/logout/route-973ec48531555712.js +1 -0
  259. package/.next/static/chunks/app/api/auth/status/route-973ec48531555712.js +1 -0
  260. package/.next/static/chunks/app/api/daily-summary/route-973ec48531555712.js +1 -0
  261. package/.next/static/chunks/app/api/daily-summary/status/route-973ec48531555712.js +1 -0
  262. package/.next/static/chunks/app/api/external-apps/[id]/health/route-973ec48531555712.js +1 -0
  263. package/.next/static/chunks/app/api/external-apps/[id]/route-973ec48531555712.js +1 -0
  264. package/.next/static/chunks/app/api/external-apps/route-973ec48531555712.js +1 -0
  265. package/.next/static/chunks/app/api/fs/browse/route-973ec48531555712.js +1 -0
  266. package/.next/static/chunks/app/api/fs/recent-paths/route-973ec48531555712.js +1 -0
  267. package/.next/static/chunks/app/api/hooks/agent-event/route-973ec48531555712.js +1 -0
  268. package/.next/static/chunks/app/api/hooks/claude-done/route-973ec48531555712.js +1 -0
  269. package/.next/static/chunks/app/api/hooks/permission-request/route-973ec48531555712.js +1 -0
  270. package/.next/static/chunks/app/api/metrics/vibe/route-973ec48531555712.js +1 -0
  271. package/.next/static/chunks/app/api/ollama/models/route-973ec48531555712.js +1 -0
  272. package/.next/static/chunks/app/api/push/subscriptions/route-973ec48531555712.js +1 -0
  273. package/.next/static/chunks/app/api/push/vapid/route-973ec48531555712.js +1 -0
  274. package/.next/static/chunks/app/api/repositories/[id]/route-973ec48531555712.js +1 -0
  275. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-973ec48531555712.js +1 -0
  276. package/.next/static/chunks/app/api/repositories/[id]/todos/route-973ec48531555712.js +1 -0
  277. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-973ec48531555712.js +1 -0
  278. package/.next/static/chunks/app/api/repositories/clone/route-973ec48531555712.js +1 -0
  279. package/.next/static/chunks/app/api/repositories/excluded/route-973ec48531555712.js +1 -0
  280. package/.next/static/chunks/app/api/repositories/restore/route-973ec48531555712.js +1 -0
  281. package/.next/static/chunks/app/api/repositories/route-973ec48531555712.js +1 -0
  282. package/.next/static/chunks/app/api/repositories/scan/route-973ec48531555712.js +1 -0
  283. package/.next/static/chunks/app/api/repositories/sync/route-973ec48531555712.js +1 -0
  284. package/.next/static/chunks/app/api/repositories/validate-path/route-973ec48531555712.js +1 -0
  285. package/.next/static/chunks/app/api/sidebar/group-order/route-973ec48531555712.js +1 -0
  286. package/.next/static/chunks/app/api/skills/[id]/route-973ec48531555712.js +1 -0
  287. package/.next/static/chunks/app/api/skills/installations/route-973ec48531555712.js +1 -0
  288. package/.next/static/chunks/app/api/skills/operations/route-973ec48531555712.js +1 -0
  289. package/.next/static/chunks/app/api/skills/reindex/route-973ec48531555712.js +1 -0
  290. package/.next/static/chunks/app/api/skills/route-973ec48531555712.js +1 -0
  291. package/.next/static/chunks/app/api/slash-commands/route-973ec48531555712.js +1 -0
  292. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-973ec48531555712.js +1 -0
  293. package/.next/static/chunks/app/api/tasks/[taskId]/route-973ec48531555712.js +1 -0
  294. package/.next/static/chunks/app/api/templates/[id]/route-973ec48531555712.js +1 -0
  295. package/.next/static/chunks/app/api/templates/route-973ec48531555712.js +1 -0
  296. package/.next/static/chunks/app/api/todos/route-973ec48531555712.js +1 -0
  297. package/.next/static/chunks/app/api/verification/runs/[runId]/route-973ec48531555712.js +1 -0
  298. package/.next/static/chunks/app/api/verification/runs/route-973ec48531555712.js +1 -0
  299. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-973ec48531555712.js +1 -0
  300. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-973ec48531555712.js +1 -0
  301. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-973ec48531555712.js +1 -0
  302. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-973ec48531555712.js +1 -0
  303. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-973ec48531555712.js +1 -0
  304. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-973ec48531555712.js +1 -0
  305. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-973ec48531555712.js +1 -0
  306. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-973ec48531555712.js +1 -0
  307. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-973ec48531555712.js +1 -0
  308. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-973ec48531555712.js +1 -0
  309. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-973ec48531555712.js +1 -0
  310. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-973ec48531555712.js +1 -0
  311. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-973ec48531555712.js +1 -0
  312. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-973ec48531555712.js +1 -0
  313. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-973ec48531555712.js +1 -0
  314. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-973ec48531555712.js +1 -0
  315. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-973ec48531555712.js +1 -0
  316. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-973ec48531555712.js +1 -0
  317. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-973ec48531555712.js +1 -0
  318. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-973ec48531555712.js +1 -0
  319. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-973ec48531555712.js +1 -0
  320. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-973ec48531555712.js +1 -0
  321. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-973ec48531555712.js +1 -0
  322. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-973ec48531555712.js +1 -0
  323. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-973ec48531555712.js +1 -0
  324. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-973ec48531555712.js +1 -0
  325. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-973ec48531555712.js +1 -0
  326. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-973ec48531555712.js +1 -0
  327. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-973ec48531555712.js +1 -0
  328. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-973ec48531555712.js +1 -0
  329. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-973ec48531555712.js +1 -0
  330. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-973ec48531555712.js +1 -0
  331. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-973ec48531555712.js +1 -0
  332. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-973ec48531555712.js +1 -0
  333. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-973ec48531555712.js +1 -0
  334. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-973ec48531555712.js +1 -0
  335. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-973ec48531555712.js +1 -0
  336. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-973ec48531555712.js +1 -0
  337. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-973ec48531555712.js +1 -0
  338. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-973ec48531555712.js +1 -0
  339. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-973ec48531555712.js +1 -0
  340. package/.next/static/chunks/app/api/worktrees/[id]/route-973ec48531555712.js +1 -0
  341. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-973ec48531555712.js +1 -0
  342. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-973ec48531555712.js +1 -0
  343. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-973ec48531555712.js +1 -0
  344. package/.next/static/chunks/app/api/worktrees/[id]/search/route-973ec48531555712.js +1 -0
  345. package/.next/static/chunks/app/api/worktrees/[id]/send/route-973ec48531555712.js +1 -0
  346. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-973ec48531555712.js +1 -0
  347. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-973ec48531555712.js +1 -0
  348. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-973ec48531555712.js +1 -0
  349. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-973ec48531555712.js +1 -0
  350. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-973ec48531555712.js +1 -0
  351. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-973ec48531555712.js +1 -0
  352. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-973ec48531555712.js +1 -0
  353. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-973ec48531555712.js +1 -0
  354. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-973ec48531555712.js +1 -0
  355. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-973ec48531555712.js +1 -0
  356. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-973ec48531555712.js +1 -0
  357. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-973ec48531555712.js +1 -0
  358. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-973ec48531555712.js +1 -0
  359. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-973ec48531555712.js +1 -0
  360. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-973ec48531555712.js +1 -0
  361. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-973ec48531555712.js +1 -0
  362. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-973ec48531555712.js +1 -0
  363. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-973ec48531555712.js +1 -0
  364. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-973ec48531555712.js +1 -0
  365. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-973ec48531555712.js +1 -0
  366. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-973ec48531555712.js +1 -0
  367. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-973ec48531555712.js +1 -0
  368. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-973ec48531555712.js +1 -0
  369. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-973ec48531555712.js +1 -0
  370. package/.next/static/chunks/app/api/worktrees/route-973ec48531555712.js +1 -0
  371. package/.next/static/chunks/app/manifest.webmanifest/route-973ec48531555712.js +1 -0
  372. package/.next/static/chunks/app/proxy/[...path]/route-973ec48531555712.js +1 -0
  373. package/.next/static/chunks/app/worktrees/[id]/layout-973ec48531555712.js +1 -0
  374. package/.next/static/chunks/app/worktrees/[id]/page-70704fe257e0cccc.js +1 -0
  375. package/.next/trace +12 -12
  376. package/.next/types/app/api/hooks/permission-request/route.ts +347 -0
  377. package/.next/types/routes.d.ts +2 -1
  378. package/.next/types/validator.ts +9 -0
  379. package/dist/cli/commands/capture.d.ts.map +1 -1
  380. package/dist/cli/commands/capture.js +27 -1
  381. package/dist/cli/commands/respond.d.ts.map +1 -1
  382. package/dist/cli/commands/respond.js +9 -3
  383. package/dist/cli/commands/send.d.ts.map +1 -1
  384. package/dist/cli/commands/send.js +35 -0
  385. package/dist/cli/commands/wait.d.ts +4 -1
  386. package/dist/cli/commands/wait.d.ts.map +1 -1
  387. package/dist/cli/commands/wait.js +109 -2
  388. package/dist/cli/docs/agent-operations.d.ts +1 -1
  389. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  390. package/dist/cli/docs/agent-operations.js +39 -0
  391. package/dist/cli/types/api-responses.d.ts +69 -4
  392. package/dist/cli/types/api-responses.d.ts.map +1 -1
  393. package/dist/cli/types/index.d.ts +6 -0
  394. package/dist/cli/types/index.d.ts.map +1 -1
  395. package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +105 -1
  396. package/dist/server/src/lib/detection/unclassified-frame-tracker.js +96 -0
  397. package/dist/server/src/lib/env.js +27 -1
  398. package/dist/server/src/lib/hooks/agent-event-types.js +131 -0
  399. package/dist/server/src/lib/hooks/ask-user-question-payload.js +156 -0
  400. package/dist/server/src/lib/hooks/hook-settings-generator.js +411 -0
  401. package/dist/server/src/lib/hooks/permission-request-payload.js +144 -0
  402. package/dist/server/src/lib/polling/auto-yes-resolver.js +25 -10
  403. package/dist/server/src/lib/polling/auto-yes-suppression-state.js +2 -1
  404. package/dist/server/src/lib/session/agent-event-state.js +612 -11
  405. package/dist/server/src/lib/session/ask-user-question-prompt.js +295 -0
  406. package/dist/server/src/lib/session/claude-session.js +41 -2
  407. package/dist/server/src/lib/session/current-output-builder.js +375 -8
  408. package/dist/server/src/lib/session/prompt-waiting-composition.js +178 -0
  409. package/dist/server/src/lib/session/prompt-waiting-guard.js +147 -0
  410. package/dist/server/src/lib/session/send-user-message.js +35 -0
  411. package/dist/server/src/lib/session/status-mapping.js +121 -0
  412. package/dist/server/src/lib/session/structured-prompt.js +109 -0
  413. package/dist/server/src/types/models.js +30 -0
  414. package/package.json +3 -2
  415. package/scripts/hooks/cmate-agent-event.sh +44 -3
  416. package/.next/server/chunks/1355.js +0 -1
  417. package/.next/server/chunks/1598.js +0 -4
  418. package/.next/server/chunks/2366.js +0 -1
  419. package/.next/static/-A6IRK1c_KvFlxiDrsyVc/_buildManifest.js +0 -1
  420. package/.next/static/chunks/app/api/app/update/route-be21650964d61b1d.js +0 -1
  421. package/.next/static/chunks/app/api/app/update-check/route-be21650964d61b1d.js +0 -1
  422. package/.next/static/chunks/app/api/assistant/conversation/route-be21650964d61b1d.js +0 -1
  423. package/.next/static/chunks/app/api/assistant/current-output/route-be21650964d61b1d.js +0 -1
  424. package/.next/static/chunks/app/api/assistant/messages/route-be21650964d61b1d.js +0 -1
  425. package/.next/static/chunks/app/api/assistant/session/route-be21650964d61b1d.js +0 -1
  426. package/.next/static/chunks/app/api/assistant/start/route-be21650964d61b1d.js +0 -1
  427. package/.next/static/chunks/app/api/assistant/terminal/route-be21650964d61b1d.js +0 -1
  428. package/.next/static/chunks/app/api/assistant/tools/route-be21650964d61b1d.js +0 -1
  429. package/.next/static/chunks/app/api/auth/login/route-be21650964d61b1d.js +0 -1
  430. package/.next/static/chunks/app/api/auth/logout/route-be21650964d61b1d.js +0 -1
  431. package/.next/static/chunks/app/api/auth/status/route-be21650964d61b1d.js +0 -1
  432. package/.next/static/chunks/app/api/daily-summary/route-be21650964d61b1d.js +0 -1
  433. package/.next/static/chunks/app/api/daily-summary/status/route-be21650964d61b1d.js +0 -1
  434. package/.next/static/chunks/app/api/external-apps/[id]/health/route-be21650964d61b1d.js +0 -1
  435. package/.next/static/chunks/app/api/external-apps/[id]/route-be21650964d61b1d.js +0 -1
  436. package/.next/static/chunks/app/api/external-apps/route-be21650964d61b1d.js +0 -1
  437. package/.next/static/chunks/app/api/fs/browse/route-be21650964d61b1d.js +0 -1
  438. package/.next/static/chunks/app/api/fs/recent-paths/route-be21650964d61b1d.js +0 -1
  439. package/.next/static/chunks/app/api/hooks/agent-event/route-be21650964d61b1d.js +0 -1
  440. package/.next/static/chunks/app/api/hooks/claude-done/route-be21650964d61b1d.js +0 -1
  441. package/.next/static/chunks/app/api/metrics/vibe/route-be21650964d61b1d.js +0 -1
  442. package/.next/static/chunks/app/api/ollama/models/route-be21650964d61b1d.js +0 -1
  443. package/.next/static/chunks/app/api/push/subscriptions/route-be21650964d61b1d.js +0 -1
  444. package/.next/static/chunks/app/api/push/vapid/route-be21650964d61b1d.js +0 -1
  445. package/.next/static/chunks/app/api/repositories/[id]/route-be21650964d61b1d.js +0 -1
  446. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-be21650964d61b1d.js +0 -1
  447. package/.next/static/chunks/app/api/repositories/[id]/todos/route-be21650964d61b1d.js +0 -1
  448. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-be21650964d61b1d.js +0 -1
  449. package/.next/static/chunks/app/api/repositories/clone/route-be21650964d61b1d.js +0 -1
  450. package/.next/static/chunks/app/api/repositories/excluded/route-be21650964d61b1d.js +0 -1
  451. package/.next/static/chunks/app/api/repositories/restore/route-be21650964d61b1d.js +0 -1
  452. package/.next/static/chunks/app/api/repositories/route-be21650964d61b1d.js +0 -1
  453. package/.next/static/chunks/app/api/repositories/scan/route-be21650964d61b1d.js +0 -1
  454. package/.next/static/chunks/app/api/repositories/sync/route-be21650964d61b1d.js +0 -1
  455. package/.next/static/chunks/app/api/repositories/validate-path/route-be21650964d61b1d.js +0 -1
  456. package/.next/static/chunks/app/api/sidebar/group-order/route-be21650964d61b1d.js +0 -1
  457. package/.next/static/chunks/app/api/skills/[id]/route-be21650964d61b1d.js +0 -1
  458. package/.next/static/chunks/app/api/skills/installations/route-be21650964d61b1d.js +0 -1
  459. package/.next/static/chunks/app/api/skills/operations/route-be21650964d61b1d.js +0 -1
  460. package/.next/static/chunks/app/api/skills/reindex/route-be21650964d61b1d.js +0 -1
  461. package/.next/static/chunks/app/api/skills/route-be21650964d61b1d.js +0 -1
  462. package/.next/static/chunks/app/api/slash-commands/route-be21650964d61b1d.js +0 -1
  463. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-be21650964d61b1d.js +0 -1
  464. package/.next/static/chunks/app/api/tasks/[taskId]/route-be21650964d61b1d.js +0 -1
  465. package/.next/static/chunks/app/api/templates/[id]/route-be21650964d61b1d.js +0 -1
  466. package/.next/static/chunks/app/api/templates/route-be21650964d61b1d.js +0 -1
  467. package/.next/static/chunks/app/api/todos/route-be21650964d61b1d.js +0 -1
  468. package/.next/static/chunks/app/api/verification/runs/[runId]/route-be21650964d61b1d.js +0 -1
  469. package/.next/static/chunks/app/api/verification/runs/route-be21650964d61b1d.js +0 -1
  470. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-be21650964d61b1d.js +0 -1
  471. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-be21650964d61b1d.js +0 -1
  472. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-be21650964d61b1d.js +0 -1
  473. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-be21650964d61b1d.js +0 -1
  474. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-be21650964d61b1d.js +0 -1
  475. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-be21650964d61b1d.js +0 -1
  476. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-be21650964d61b1d.js +0 -1
  477. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-be21650964d61b1d.js +0 -1
  478. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-be21650964d61b1d.js +0 -1
  479. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-be21650964d61b1d.js +0 -1
  480. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-be21650964d61b1d.js +0 -1
  481. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-be21650964d61b1d.js +0 -1
  482. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-be21650964d61b1d.js +0 -1
  483. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-be21650964d61b1d.js +0 -1
  484. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-be21650964d61b1d.js +0 -1
  485. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-be21650964d61b1d.js +0 -1
  486. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-be21650964d61b1d.js +0 -1
  487. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-be21650964d61b1d.js +0 -1
  488. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-be21650964d61b1d.js +0 -1
  489. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-be21650964d61b1d.js +0 -1
  490. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-be21650964d61b1d.js +0 -1
  491. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-be21650964d61b1d.js +0 -1
  492. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-be21650964d61b1d.js +0 -1
  493. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-be21650964d61b1d.js +0 -1
  494. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-be21650964d61b1d.js +0 -1
  495. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-be21650964d61b1d.js +0 -1
  496. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-be21650964d61b1d.js +0 -1
  497. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-be21650964d61b1d.js +0 -1
  498. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-be21650964d61b1d.js +0 -1
  499. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-be21650964d61b1d.js +0 -1
  500. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-be21650964d61b1d.js +0 -1
  501. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-be21650964d61b1d.js +0 -1
  502. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-be21650964d61b1d.js +0 -1
  503. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-be21650964d61b1d.js +0 -1
  504. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-be21650964d61b1d.js +0 -1
  505. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-be21650964d61b1d.js +0 -1
  506. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-be21650964d61b1d.js +0 -1
  507. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-be21650964d61b1d.js +0 -1
  508. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-be21650964d61b1d.js +0 -1
  509. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-be21650964d61b1d.js +0 -1
  510. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-be21650964d61b1d.js +0 -1
  511. package/.next/static/chunks/app/api/worktrees/[id]/route-be21650964d61b1d.js +0 -1
  512. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-be21650964d61b1d.js +0 -1
  513. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-be21650964d61b1d.js +0 -1
  514. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-be21650964d61b1d.js +0 -1
  515. package/.next/static/chunks/app/api/worktrees/[id]/search/route-be21650964d61b1d.js +0 -1
  516. package/.next/static/chunks/app/api/worktrees/[id]/send/route-be21650964d61b1d.js +0 -1
  517. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-be21650964d61b1d.js +0 -1
  518. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-be21650964d61b1d.js +0 -1
  519. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-be21650964d61b1d.js +0 -1
  520. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-be21650964d61b1d.js +0 -1
  521. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-be21650964d61b1d.js +0 -1
  522. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-be21650964d61b1d.js +0 -1
  523. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-be21650964d61b1d.js +0 -1
  524. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-be21650964d61b1d.js +0 -1
  525. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-be21650964d61b1d.js +0 -1
  526. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-be21650964d61b1d.js +0 -1
  527. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-be21650964d61b1d.js +0 -1
  528. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-be21650964d61b1d.js +0 -1
  529. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-be21650964d61b1d.js +0 -1
  530. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-be21650964d61b1d.js +0 -1
  531. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-be21650964d61b1d.js +0 -1
  532. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-be21650964d61b1d.js +0 -1
  533. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-be21650964d61b1d.js +0 -1
  534. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-be21650964d61b1d.js +0 -1
  535. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-be21650964d61b1d.js +0 -1
  536. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-be21650964d61b1d.js +0 -1
  537. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-be21650964d61b1d.js +0 -1
  538. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-be21650964d61b1d.js +0 -1
  539. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-be21650964d61b1d.js +0 -1
  540. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-be21650964d61b1d.js +0 -1
  541. package/.next/static/chunks/app/api/worktrees/route-be21650964d61b1d.js +0 -1
  542. package/.next/static/chunks/app/manifest.webmanifest/route-be21650964d61b1d.js +0 -1
  543. package/.next/static/chunks/app/proxy/[...path]/route-be21650964d61b1d.js +0 -1
  544. package/.next/static/chunks/app/worktrees/[id]/layout-be21650964d61b1d.js +0 -1
  545. package/.next/static/chunks/app/worktrees/[id]/page-de42fed52de80834.js +0 -1
  546. /package/.next/static/{-A6IRK1c_KvFlxiDrsyVc → b69eWhjC1rRrFTa-g3lMS}/_ssgManifest.js +0 -0
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ /**
3
+ * Putting the agent's own question in front of the human (Issue #1726).
4
+ *
5
+ * `PreToolUse(AskUserQuestion)` hands this server the question and its options
6
+ * as JSON. The screen renders something *related but not equal* to that JSON,
7
+ * and the difference is the whole of this module's subject matter — it was
8
+ * measured, not assumed (`tests/fixtures/canary/askuserquestion-task-panel.ts`,
9
+ * `tests/unit/lib/detection/fixtures/claude-live-1708/`):
10
+ *
11
+ * | on screen | in `tool_input` |
12
+ * |-----------------------------------------------|-----------------|
13
+ * | `1. Clear desk` + an indented description line | yes (the description is a separate line the scraper drops) |
14
+ * | `4. Type something.` | **no** — the picker appends it |
15
+ * | `5. Chat about this` | **no** — the picker appends it |
16
+ * | `1. Submit answers` / `2. Cancel` | **no** — a different screen entirely |
17
+ * | `7. tasks (0 done, 1 in progress, 6 open)` | **no** — a task-panel row misread as an option (#1708) |
18
+ *
19
+ * So the payload is authority over *what was asked*; the screen is authority
20
+ * over *which keys answer it*. Everything below follows from refusing to
21
+ * confuse the two:
22
+ *
23
+ * - options are matched **by position** against what the scraper parsed, and
24
+ * the whole substitution is abandoned unless every one of them lines up. A
25
+ * screen this module cannot explain is a screen it does not touch.
26
+ * - option **numbers always come from the screen**, never from the payload's
27
+ * array index, because the number is what gets typed.
28
+ * - the two picker-added options are kept, by name; anything else the payload
29
+ * does not describe is dropped, which is what keeps the #1708 phantom out.
30
+ *
31
+ * Pure — type-only imports — so a client component can import it.
32
+ *
33
+ * @module lib/session/ask-user-question-prompt
34
+ */
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.PICKER_META_OPTION_LABELS = void 0;
37
+ exports.isPickerMetaOption = isPickerMetaOption;
38
+ exports.matchAskUserQuestion = matchAskUserQuestion;
39
+ exports.applyAskUserQuestion = applyAskUserQuestion;
40
+ exports.resolveAskUserQuestionAnswer = resolveAskUserQuestionAnswer;
41
+ /**
42
+ * Options the Claude picker renders itself, which are therefore in no
43
+ * `tool_input`.
44
+ *
45
+ * Observed verbatim as `Type something.` and `Chat about this` in the live
46
+ * captures. Matched after normalisation (so the multi-select `[ ] ` prefix and
47
+ * the trailing period do not matter) and by prefix, because a narrow terminal
48
+ * truncates them.
49
+ *
50
+ * Keeping them is not cosmetic: they are selectable, so dropping them would
51
+ * make `commandmate respond <id> 5` refuse a number the picker accepts.
52
+ */
53
+ exports.PICKER_META_OPTION_LABELS = ['type something', 'chat about this'];
54
+ /**
55
+ * Shortest text allowed to line two labels up by prefix.
56
+ *
57
+ * Prefix matching exists for one reason — the picker truncates a label that
58
+ * does not fit the pane — so it must not become a way for short, unrelated
59
+ * words to match. Anything shorter than this has to be equal.
60
+ */
61
+ const MIN_PREFIX_MATCH_LENGTH = 8;
62
+ /** The multi-select checkbox the picker prefixes each option with. */
63
+ const CHECKBOX_PREFIX_PATTERN = /^\s*\[[ xX]\]\s*/;
64
+ /** Trailing ellipsis left by the picker truncating a label to the pane width. */
65
+ const TRAILING_ELLIPSIS_PATTERN = /(?:…|\.\.\.)\s*$/;
66
+ /** Semantic tokens that must never be delivered as text to a numbered picker. */
67
+ const SEMANTIC_ANSWER_TOKENS = new Set(['yes', 'y', 'no', 'n']);
68
+ /** Normalise a label or a question for comparison against the other source. */
69
+ function normalize(value) {
70
+ return value
71
+ .replace(CHECKBOX_PREFIX_PATTERN, '')
72
+ .replace(TRAILING_ELLIPSIS_PATTERN, '')
73
+ .replace(/\s+/g, ' ')
74
+ .trim()
75
+ .toLowerCase();
76
+ }
77
+ /** The `[ ] ` / `[x] ` the screen carried, so a rewritten label keeps it. */
78
+ function checkboxPrefix(screenLabel) {
79
+ return CHECKBOX_PREFIX_PATTERN.exec(screenLabel)?.[0] ?? '';
80
+ }
81
+ /**
82
+ * Whether two normalised strings describe the same thing.
83
+ *
84
+ * Equality, or the shorter being a prefix of the longer — the only way the
85
+ * picker distorts a label is by cutting it off at the pane width.
86
+ */
87
+ function corresponds(a, b) {
88
+ if (a === '' || b === '')
89
+ return false;
90
+ if (a === b)
91
+ return true;
92
+ const [shorter, longer] = a.length <= b.length ? [a, b] : [b, a];
93
+ if (shorter.length < MIN_PREFIX_MATCH_LENGTH)
94
+ return false;
95
+ return longer.startsWith(shorter);
96
+ }
97
+ /**
98
+ * Whether the screen is showing this question.
99
+ *
100
+ * Containment rather than the prefix rule the labels use, because the two are
101
+ * extracted differently. An option label is a parsed line; the question is
102
+ * whatever the detector's upward scan swept together, and on a real capture that
103
+ * is several lines glued into one — the canary frame yields
104
+ * `"⏺ I'll load the TaskCreate tool schema first. ☐ First task Which task would
105
+ * you like to start with?"` for a question that is only its last clause.
106
+ *
107
+ * The floor stops a short question ("Continue?") from matching unrelated prose;
108
+ * the uniqueness requirement in {@link matchAskUserQuestion} does the rest. On
109
+ * the "Review your answers" screen, which lists every question at once, a
110
+ * multi-question call matches them all and is refused for exactly that reason.
111
+ */
112
+ function questionCorresponds(entryQuestion, screenQuestion) {
113
+ const [shorter, longer] = entryQuestion.length <= screenQuestion.length
114
+ ? [entryQuestion, screenQuestion]
115
+ : [screenQuestion, entryQuestion];
116
+ // The floor applies to whichever side is being looked for, not to the payload:
117
+ // a one-character screen question is contained in every question ever written.
118
+ if (shorter.length < MIN_PREFIX_MATCH_LENGTH)
119
+ return shorter === longer;
120
+ return longer.includes(shorter);
121
+ }
122
+ /** Whether this screen option is one the picker adds rather than the agent. */
123
+ function isPickerMetaOption(label) {
124
+ const normalized = normalize(label);
125
+ return exports.PICKER_META_OPTION_LABELS.some((meta) => normalized === meta || normalized.startsWith(meta));
126
+ }
127
+ /**
128
+ * Which of the call's questions the screen is showing, or null.
129
+ *
130
+ * Null is the right answer for more of the flow than it might look. A single
131
+ * `AskUserQuestion` tool call walks through one screen per question, then
132
+ * "Review your answers", then "Ready to submit your answers?" with its own
133
+ * `1. Submit answers / 2. Cancel` — and no event is emitted at any of those
134
+ * transitions (§5.6), so the *only* way to know which screen is up is to read
135
+ * the question off it. A screen whose question matches nothing in the payload is
136
+ * a screen this module has nothing to say about, and the scraper's own parse
137
+ * stands.
138
+ *
139
+ * Ambiguity answers null too: two questions that both match cannot be told
140
+ * apart, and picking either would put one question's options under the other's.
141
+ */
142
+ function matchAskUserQuestion(spec, screenQuestion) {
143
+ const screen = normalize(screenQuestion);
144
+ if (screen === '')
145
+ return null;
146
+ const matches = spec.questions
147
+ .map((entry, index) => ({ entry, index }))
148
+ .filter(({ entry }) => questionCorresponds(normalize(entry.question), screen));
149
+ return matches.length === 1 ? matches[0] : null;
150
+ }
151
+ /**
152
+ * Rebuild a scraper-parsed picker's options from the agent's own payload.
153
+ *
154
+ * @param promptData - What the detection layer read off the pane
155
+ * @param spec - The `AskUserQuestion` call in flight for this instance
156
+ * @returns The corrected prompt, or **null** when the payload cannot be lined up
157
+ * against this screen — in which case the caller must publish `promptData`
158
+ * unchanged. Null is the answer for the confirmation and review screens, for
159
+ * any prompt that is not a multiple choice, and for any rendering this module
160
+ * does not recognise.
161
+ */
162
+ function applyAskUserQuestion(promptData, spec) {
163
+ if (promptData.type !== 'multiple_choice')
164
+ return null;
165
+ const matched = matchAskUserQuestion(spec, promptData.question);
166
+ if (matched === null)
167
+ return null;
168
+ const { entry, index } = matched;
169
+ const byNumber = new Map(promptData.options.map((option) => [option.number, option]));
170
+ // Position is the correspondence: the picker renders the payload's options in
171
+ // array order as 1..n. Verifying every one of them before substituting is what
172
+ // makes this safe to do at all — if the screen has moved on to something else
173
+ // (or the scraper mis-parsed it), the check fails and nothing is replaced.
174
+ const options = [];
175
+ for (const [position, choice] of entry.choices.entries()) {
176
+ const number = position + 1;
177
+ const screenOption = byNumber.get(number);
178
+ if (!screenOption)
179
+ return null;
180
+ if (!corresponds(normalize(screenOption.label), normalize(choice.label)))
181
+ return null;
182
+ options.push({
183
+ ...screenOption,
184
+ // The checkbox prefix is load-bearing, not decoration: `prompt-answer-sender`
185
+ // recognises a multi-select picker by `^\[[ x]\] ` on the labels and sends a
186
+ // different key sequence for it. Dropping it while "improving" the label
187
+ // would silently turn Space-toggle-then-Next into a bare Enter.
188
+ label: `${checkboxPrefix(screenOption.label)}${choice.label}`,
189
+ ...(choice.description ? { description: choice.description } : {}),
190
+ });
191
+ }
192
+ // Everything past the payload's options is the picker's own doing — or it is
193
+ // not an option at all. `7. tasks (0 done, 1 in progress, 6 open)` is the
194
+ // second kind: a task-panel row that `NORMAL_OPTION_PATTERN` reads as an
195
+ // option whenever the panel's task count lands exactly one past the real
196
+ // options (#1708). The detector has its own guard for that since #1708; this
197
+ // is the second line, and it is the one that does not depend on recognising
198
+ // the panel's wording.
199
+ const metaOptionNumbers = [];
200
+ for (const option of promptData.options) {
201
+ if (option.number <= entry.choices.length)
202
+ continue;
203
+ if (!isPickerMetaOption(option.label))
204
+ continue;
205
+ options.push(option);
206
+ metaOptionNumbers.push(option.number);
207
+ }
208
+ options.sort((a, b) => a.number - b.number);
209
+ return {
210
+ ...promptData,
211
+ // The payload's text, not the pane's: the picker wraps and truncates the
212
+ // question to the pane width, and this is the string `respond` echoes and
213
+ // the audit trail keeps.
214
+ question: entry.question,
215
+ options,
216
+ isAskUserQuestion: true,
217
+ askUserQuestion: {
218
+ ...(entry.header ? { header: entry.header } : {}),
219
+ multiSelect: entry.multiSelect,
220
+ questionIndex: index,
221
+ questionCount: spec.questions.length,
222
+ metaOptionNumbers,
223
+ },
224
+ };
225
+ }
226
+ /**
227
+ * Messages are fixed strings and never quote the answer (SEC-003, as in
228
+ * `prompt-answer-semantic`), so they are safe to return to a client verbatim.
229
+ */
230
+ const OUT_OF_RANGE_MESSAGE = 'The option number is outside the range this prompt offers. ' +
231
+ 'Use `commandmate capture <worktree-id> --json` to list the current options.';
232
+ const NO_MATCH_MESSAGE = 'No option label matches the answer. Answer with an option number ' +
233
+ '(yes/no is not resolved on a numbered picker — Issue #1681).';
234
+ const AMBIGUOUS_MESSAGE = 'The answer matches more than one option label. Answer with an option number.';
235
+ /** Every option label this answer matches, exactly or by prefix. */
236
+ function matchingOptions(options, answer) {
237
+ const normalized = normalize(answer);
238
+ if (normalized === '')
239
+ return [];
240
+ const exact = options.filter((option) => normalize(option.label) === normalized);
241
+ if (exact.length > 0)
242
+ return exact;
243
+ // A prefix is allowed here for the human's benefit rather than the picker's:
244
+ // `respond <id> vim` for "Vim / Neovim". Two characters is enough of a floor,
245
+ // because a prefix matching several options is refused as ambiguous anyway.
246
+ if (normalized.length < 2)
247
+ return [];
248
+ return options.filter((option) => normalize(option.label).startsWith(normalized));
249
+ }
250
+ /**
251
+ * Check an answer against the options the agent actually offered (Issue #1726).
252
+ *
253
+ * Only ever called with a prompt {@link applyAskUserQuestion} vouched for, which
254
+ * is what makes refusing legitimate: the option list is the agent's own, so a
255
+ * number outside it cannot be right, and a word that matches no label cannot be
256
+ * resolved. Without that vouching the pre-#1726 behaviour applies and this
257
+ * function is not consulted at all.
258
+ *
259
+ * The refusal that matters most is `yes` / `no`. On a cursor-navigated picker
260
+ * typed text is not a selection — the Enter that follows it takes whatever
261
+ * option is highlighted — so `respond <id> no` has been able to deliver an
262
+ * approval (Issue #1681). Here it is refused before anything is sent.
263
+ *
264
+ * @param promptData - A prompt `applyAskUserQuestion` produced
265
+ * @param answer - The raw answer from the request
266
+ */
267
+ function resolveAskUserQuestionAnswer(promptData, answer) {
268
+ const trimmed = answer.trim();
269
+ if (/^\d+$/.test(trimmed)) {
270
+ const number = Number.parseInt(trimmed, 10);
271
+ return promptData.options.some((option) => option.number === number)
272
+ ? { ok: true, input: String(number) }
273
+ : { ok: false, reason: 'answer_out_of_range', message: OUT_OF_RANGE_MESSAGE };
274
+ }
275
+ const matches = matchingOptions(promptData.options, trimmed);
276
+ if (matches.length === 1) {
277
+ const [option] = matches;
278
+ return {
279
+ ok: true,
280
+ input: String(option.number),
281
+ resolved: { via: 'semantic', optionNumber: option.number, optionLabel: option.label },
282
+ };
283
+ }
284
+ if (matches.length > 1) {
285
+ return { ok: false, reason: 'unresolvable_answer', message: AMBIGUOUS_MESSAGE };
286
+ }
287
+ // An option that takes free text ("Tell Claude what to do differently") makes
288
+ // arbitrary text a legitimate answer, so it passes through as it did before.
289
+ // `yes` / `no` never do: they are the Issue #1681 accident, not free text.
290
+ const acceptsFreeText = promptData.options.some((option) => option.requiresTextInput === true);
291
+ if (acceptsFreeText && !SEMANTIC_ANSWER_TOKENS.has(trimmed.toLowerCase())) {
292
+ return { ok: true, input: answer };
293
+ }
294
+ return { ok: false, reason: 'unresolvable_answer', message: NO_MATCH_MESSAGE };
295
+ }
@@ -26,6 +26,8 @@ const promises_1 = require("fs/promises");
26
26
  const logger_1 = require("../../lib/logger");
27
27
  const cli_tool_timing_config_1 = require("../../config/cli-tool-timing-config");
28
28
  const types_1 = require("../../lib/cli-tools/types");
29
+ const hook_settings_generator_1 = require("../../lib/hooks/hook-settings-generator");
30
+ const agent_event_state_1 = require("../../lib/session/agent-event-state");
29
31
  const session_start_error_1 = require("../../lib/session/session-start-error");
30
32
  const logger = (0, logger_1.createLogger)('claude-session');
31
33
  const execAsync = (0, util_1.promisify)(child_process_1.exec);
@@ -552,6 +554,19 @@ async function startClaudeSession(options) {
552
554
  // Fall through to the session creation logic below.
553
555
  // (SF-S2-004: Explicit fall-through instead of hidden re-entry)
554
556
  }
557
+ // Issue #1723: everything the previous agent process reported through this
558
+ // (worktreeId, instanceId) belongs to a session that no longer exists. The
559
+ // key is reused verbatim by the session about to be created, so without this
560
+ // fence the last `user_prompt_submit` of the old process would be read as the
561
+ // new one's and a brand-new session would publish `running` before anyone had
562
+ // typed into it.
563
+ //
564
+ // Placed on the creation path only — the reuse branch above has already
565
+ // returned — and before `createSession`, so there is no window in which a
566
+ // live pane is matched against a stale generation. Bumped even if the start
567
+ // then fails: falling back to the scraper is always safe, trusting a dead
568
+ // session's events is not.
569
+ (0, agent_event_state_1.beginAgentEventGeneration)(worktreeId, 'claude', instanceId);
555
570
  try {
556
571
  // Create tmux session. Scrollback depth comes from the shared
557
572
  // TMUX_HISTORY_LIMIT default (Issue #1624) — do not re-hardcode it here.
@@ -565,8 +580,23 @@ async function startClaudeSession(options) {
565
580
  await (0, session_key_sender_1.sanitizeSessionEnvironment)(sessionName);
566
581
  // Get Claude CLI path dynamically
567
582
  const claudePath = await getClaudePath();
583
+ // Issue #1722: hand this session its own hooks config, so structured
584
+ // lifecycle events exist without the operator having edited
585
+ // ~/.claude/settings.json (which is never written — `--settings` is
586
+ // concatenated with it, and leaves it byte-identical).
587
+ //
588
+ // Only on the creation path. The reuse branch above has already returned,
589
+ // so the injected generation and the tmux session generation are the same
590
+ // generation by construction. A running session *can* be re-hooked — Claude
591
+ // hot-reloads settings without asking (Issue #1721, D8) — but that would
592
+ // make "which config is this pane running?" a question with a time-varying
593
+ // answer, and the events are not load-bearing enough to buy that.
594
+ //
595
+ // Falls back to the bare path on any failure; a session that starts without
596
+ // hooks is the pre-#1722 status quo, and a session that fails to start is not.
597
+ const launchCommand = (0, hook_settings_generator_1.buildClaudeLaunchCommand)(claudePath, { worktreeId, instanceId });
568
598
  // Start Claude CLI in interactive mode using dynamically resolved path
569
- await (0, tmux_1.sendKeys)(sessionName, claudePath, true);
599
+ await (0, tmux_1.sendKeys)(sessionName, launchCommand, true);
570
600
  // Wait for Claude to initialize with dynamic detection (OCP-001)
571
601
  // Use constants instead of hardcoded values
572
602
  const maxWaitTime = exports.CLAUDE_INIT_TIMEOUT;
@@ -705,7 +735,16 @@ async function captureClaudeOutput(worktreeId, lines = 1000, instanceId) {
705
735
  */
706
736
  async function stopClaudeSession(worktreeId, instanceId) {
707
737
  const sessionName = getSessionName(worktreeId, instanceId);
708
- return (0, session_key_sender_1.stopSession)(sessionName);
738
+ const stopped = await (0, session_key_sender_1.stopSession)(sessionName);
739
+ // Issue #1723: the session this instance's structured state described is
740
+ // gone. Belt and braces rather than the load-bearing guard — a stopped
741
+ // session makes `buildCurrentOutput` return `session_not_running` before it
742
+ // ever asks, and a restart opens a new generation — but the state is about a
743
+ // live pane and should not outlive one. Unconditional: `stopSession` answers
744
+ // false for a session that was already gone, which is not a reason to keep
745
+ // state about it.
746
+ (0, agent_event_state_1.discardAgentEventState)(worktreeId, 'claude', instanceId);
747
+ return stopped;
709
748
  }
710
749
  /**
711
750
  * Restart a Claude session