commandmate 0.49.3 → 0.50.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 (877) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +454 -408
  3. package/.next/app-path-routes-manifest.json +19 -13
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/react-loadable-manifest.json +1 -1
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +32 -0
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/capabilities/route.js +1 -1
  19. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/daily-summary/route.js +1 -1
  21. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  22. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  24. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  25. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/hooks/agent-event/route.js +1 -103
  32. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  33. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  35. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  36. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  38. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  39. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/push/escalation/route.js +1 -1
  43. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  44. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  46. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/push/vapid/route.js +1 -1
  48. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  49. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  51. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  52. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/relays/[relayId]/resolve/route.js +1 -1
  54. package/.next/server/app/api/relays/[relayId]/resolve/route.js.nft.json +1 -1
  55. package/.next/server/app/api/relays/[relayId]/resolve/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/relays/[relayId]/route.js +1 -1
  57. package/.next/server/app/api/relays/[relayId]/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/relays/route.js +1 -1
  59. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  60. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/remote/pair/route.js +2 -2
  62. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/repositories/[id]/role-defaults/route.js +1 -0
  64. package/.next/server/app/api/repositories/[id]/role-defaults/route.js.nft.json +1 -0
  65. package/.next/server/app/api/repositories/[id]/role-defaults/route_client-reference-manifest.js +1 -0
  66. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  68. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  69. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/repositories/clone/route.js +1 -1
  71. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  72. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/repositories/restore/route.js +1 -1
  75. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  76. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/repositories/route.js +1 -1
  78. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  79. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/repositories/scan/route.js +1 -1
  81. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  82. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/repositories/sync/route.js +1 -1
  84. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  85. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/repositories/validate-path/route.js +1 -1
  87. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/roles/[id]/route.js +1 -0
  89. package/.next/server/app/api/roles/[id]/route.js.nft.json +1 -0
  90. package/.next/server/app/api/roles/[id]/route_client-reference-manifest.js +1 -0
  91. package/.next/server/app/api/roles/route.js +1 -0
  92. package/.next/server/app/api/roles/route.js.nft.json +1 -0
  93. package/.next/server/app/api/roles/route_client-reference-manifest.js +1 -0
  94. package/.next/server/app/api/settings/agent-role-defaults/route.js +1 -0
  95. package/.next/server/app/api/settings/agent-role-defaults/route.js.nft.json +1 -0
  96. package/.next/server/app/api/settings/agent-role-defaults/route_client-reference-manifest.js +1 -0
  97. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  98. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  99. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/slash-commands/route.js +1 -1
  108. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  111. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  115. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/verification/runs/route.js +1 -1
  117. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  120. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  123. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  126. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +3 -3
  132. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  133. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  136. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  139. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  145. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  146. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  198. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/instances/roles/route.js +1 -0
  200. package/.next/server/app/api/worktrees/[id]/instances/roles/route.js.nft.json +1 -0
  201. package/.next/server/app/api/worktrees/[id]/instances/roles/route_client-reference-manifest.js +1 -0
  202. package/.next/server/app/api/worktrees/[id]/instances/roles/settle/route.js +1 -0
  203. package/.next/server/app/api/worktrees/[id]/instances/roles/settle/route.js.nft.json +1 -0
  204. package/.next/server/app/api/worktrees/[id]/instances/roles/settle/route_client-reference-manifest.js +1 -0
  205. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +2 -2
  209. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  210. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -1
  233. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  238. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  241. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  243. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  244. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +2 -2
  246. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  247. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
  249. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  250. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  254. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +3 -104
  256. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  257. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  260. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  263. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  266. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  269. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
  272. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  275. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  278. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  279. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  280. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  281. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  283. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  284. package/.next/server/app/api/worktrees/[id]/tasks/route.js +2 -2
  285. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  286. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  287. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -103
  288. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  289. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  290. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  291. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  293. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  294. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  296. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  298. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  299. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
  301. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  302. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  303. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  304. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  305. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  306. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
  307. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  308. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  309. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  310. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  311. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  312. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  313. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  314. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  315. package/.next/server/app/api/worktrees/route.js +1 -1
  316. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  317. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  318. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  319. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  320. package/.next/server/app/more/page.js +1 -1
  321. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  322. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  323. package/.next/server/app/page_client-reference-manifest.js +1 -1
  324. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  325. package/.next/server/app/repositories/page.js +2 -2
  326. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  327. package/.next/server/app/review/page.js +1 -1
  328. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  329. package/.next/server/app/sessions/page.js +1 -1
  330. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  331. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  332. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  333. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  334. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  335. package/.next/server/app/worktrees/[id]/page.js +11 -11
  336. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  337. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  338. package/.next/server/app-paths-manifest.json +19 -13
  339. package/.next/server/chunks/1184.js +5 -0
  340. package/.next/server/chunks/1501.js +5 -5
  341. package/.next/server/chunks/1656.js +2 -2
  342. package/.next/server/chunks/1957.js +2 -2
  343. package/.next/server/chunks/1990.js +103 -0
  344. package/.next/server/chunks/2119.js +1 -1
  345. package/.next/server/chunks/2404.js +1 -1
  346. package/.next/server/chunks/2445.js +1 -1
  347. package/.next/server/chunks/2819.js +1 -0
  348. package/.next/server/chunks/2897.js +1 -1
  349. package/.next/server/chunks/3042.js +2 -0
  350. package/.next/server/chunks/3241.js +1 -1
  351. package/.next/server/chunks/3294.js +3 -0
  352. package/.next/server/chunks/3417.js +1 -1
  353. package/.next/server/chunks/3480.js +1 -1
  354. package/.next/server/chunks/3505.js +2 -6
  355. package/.next/server/chunks/3543.js +1 -1
  356. package/.next/server/chunks/3801.js +2 -2
  357. package/.next/server/chunks/3945.js +1 -1
  358. package/.next/server/chunks/4207.js +1 -1
  359. package/.next/server/chunks/454.js +1 -0
  360. package/.next/server/chunks/4645.js +1 -0
  361. package/.next/server/chunks/4911.js +1 -1
  362. package/.next/server/chunks/5350.js +6 -2
  363. package/.next/server/chunks/5354.js +1 -1
  364. package/.next/server/chunks/5571.js +1 -1
  365. package/.next/server/chunks/6009.js +12 -0
  366. package/.next/server/chunks/6130.js +1 -1
  367. package/.next/server/chunks/6285.js +1 -1
  368. package/.next/server/chunks/6401.js +1 -1
  369. package/.next/server/chunks/6486.js +2 -2
  370. package/.next/server/chunks/6569.js +1 -0
  371. package/.next/server/chunks/6781.js +1 -1
  372. package/.next/server/chunks/6793.js +4 -4
  373. package/.next/server/chunks/696.js +3 -0
  374. package/.next/server/chunks/7023.js +3 -3
  375. package/.next/server/chunks/{9702.js → 7083.js} +1 -1
  376. package/.next/server/chunks/741.js +1 -0
  377. package/.next/server/chunks/7662.js +1 -0
  378. package/.next/server/chunks/7905.js +1 -1
  379. package/.next/server/chunks/8143.js +33 -0
  380. package/.next/server/chunks/8581.js +6 -6
  381. package/.next/server/chunks/8728.js +2 -2
  382. package/.next/server/chunks/8782.js +1 -1
  383. package/.next/server/chunks/8807.js +97 -10
  384. package/.next/server/chunks/8918.js +3 -105
  385. package/.next/server/chunks/8955.js +1 -0
  386. package/.next/server/chunks/923.js +1 -0
  387. package/.next/server/chunks/9390.js +2 -2
  388. package/.next/server/chunks/9627.js +5 -5
  389. package/.next/server/chunks/973.js +1 -0
  390. package/.next/server/chunks/9731.js +3 -3
  391. package/.next/server/middleware-build-manifest.js +1 -1
  392. package/.next/server/middleware-manifest.json +5 -5
  393. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  394. package/.next/server/pages/500.html +1 -1
  395. package/.next/server/server-reference-manifest.json +1 -1
  396. package/.next/static/chunks/2314-2c9d587a27e8f731.js +1 -0
  397. package/.next/static/chunks/2407-ee881c99e218975b.js +1 -0
  398. package/.next/static/chunks/3931-24d7e245a93feb25.js +1 -0
  399. package/.next/static/chunks/4548-9afa02fd18afa6c7.js +1 -0
  400. package/.next/static/chunks/{5794-7975b8e51e731b19.js → 5794-38b3b504b3d97e04.js} +1 -1
  401. package/.next/static/chunks/{6966-d8dc6032410ffaba.js → 6966-dbfa4a43397f8c6d.js} +1 -1
  402. package/.next/static/chunks/7090-28e83f5a0efdb3b4.js +1 -0
  403. package/.next/static/chunks/7229.016d007c467a3600.js +1 -0
  404. package/.next/static/chunks/{8407-35bbfc84793d7004.js → 8407-dd6a8062fc449899.js} +1 -1
  405. package/.next/static/chunks/app/api/agents/update/route-476063c3571b81dd.js +1 -0
  406. package/.next/static/chunks/app/api/agents/versions/route-476063c3571b81dd.js +1 -0
  407. package/.next/static/chunks/app/api/app/release-notes/route-476063c3571b81dd.js +1 -0
  408. package/.next/static/chunks/app/api/app/update/route-476063c3571b81dd.js +1 -0
  409. package/.next/static/chunks/app/api/app/update-check/route-476063c3571b81dd.js +1 -0
  410. package/.next/static/chunks/app/api/auth/login/route-476063c3571b81dd.js +1 -0
  411. package/.next/static/chunks/app/api/auth/logout/route-476063c3571b81dd.js +1 -0
  412. package/.next/static/chunks/app/api/auth/status/route-476063c3571b81dd.js +1 -0
  413. package/.next/static/chunks/app/api/capabilities/route-476063c3571b81dd.js +1 -0
  414. package/.next/static/chunks/app/api/daily-summary/route-476063c3571b81dd.js +1 -0
  415. package/.next/static/chunks/app/api/daily-summary/status/route-476063c3571b81dd.js +1 -0
  416. package/.next/static/chunks/app/api/external-apps/[id]/health/route-476063c3571b81dd.js +1 -0
  417. package/.next/static/chunks/app/api/external-apps/[id]/route-476063c3571b81dd.js +1 -0
  418. package/.next/static/chunks/app/api/external-apps/route-476063c3571b81dd.js +1 -0
  419. package/.next/static/chunks/app/api/fs/browse/route-476063c3571b81dd.js +1 -0
  420. package/.next/static/chunks/app/api/fs/recent-paths/route-476063c3571b81dd.js +1 -0
  421. package/.next/static/chunks/app/api/hooks/agent-event/route-476063c3571b81dd.js +1 -0
  422. package/.next/static/chunks/app/api/hooks/claude-done/route-476063c3571b81dd.js +1 -0
  423. package/.next/static/chunks/app/api/hooks/permission-request/route-476063c3571b81dd.js +1 -0
  424. package/.next/static/chunks/app/api/metrics/vibe/route-476063c3571b81dd.js +1 -0
  425. package/.next/static/chunks/app/api/ollama/models/route-476063c3571b81dd.js +1 -0
  426. package/.next/static/chunks/app/api/push/escalation/route-476063c3571b81dd.js +1 -0
  427. package/.next/static/chunks/app/api/push/subscriptions/route-476063c3571b81dd.js +1 -0
  428. package/.next/static/chunks/app/api/push/vapid/route-476063c3571b81dd.js +1 -0
  429. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-476063c3571b81dd.js +1 -0
  430. package/.next/static/chunks/app/api/relays/[relayId]/resolve/route-476063c3571b81dd.js +1 -0
  431. package/.next/static/chunks/app/api/relays/[relayId]/route-476063c3571b81dd.js +1 -0
  432. package/.next/static/chunks/app/api/relays/route-476063c3571b81dd.js +1 -0
  433. package/.next/static/chunks/app/api/remote/pair/route-476063c3571b81dd.js +1 -0
  434. package/.next/static/chunks/app/api/repositories/[id]/role-defaults/route-476063c3571b81dd.js +1 -0
  435. package/.next/static/chunks/app/api/repositories/[id]/route-476063c3571b81dd.js +1 -0
  436. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-476063c3571b81dd.js +1 -0
  437. package/.next/static/chunks/app/api/repositories/clone/route-476063c3571b81dd.js +1 -0
  438. package/.next/static/chunks/app/api/repositories/excluded/route-476063c3571b81dd.js +1 -0
  439. package/.next/static/chunks/app/api/repositories/restore/route-476063c3571b81dd.js +1 -0
  440. package/.next/static/chunks/app/api/repositories/route-476063c3571b81dd.js +1 -0
  441. package/.next/static/chunks/app/api/repositories/scan/route-476063c3571b81dd.js +1 -0
  442. package/.next/static/chunks/app/api/repositories/sync/route-476063c3571b81dd.js +1 -0
  443. package/.next/static/chunks/app/api/repositories/validate-path/route-476063c3571b81dd.js +1 -0
  444. package/.next/static/chunks/app/api/roles/[id]/route-476063c3571b81dd.js +1 -0
  445. package/.next/static/chunks/app/api/roles/route-476063c3571b81dd.js +1 -0
  446. package/.next/static/chunks/app/api/settings/agent-role-defaults/route-476063c3571b81dd.js +1 -0
  447. package/.next/static/chunks/app/api/settings/default-agents/route-476063c3571b81dd.js +1 -0
  448. package/.next/static/chunks/app/api/settings/default-surface-mode/route-476063c3571b81dd.js +1 -0
  449. package/.next/static/chunks/app/api/sidebar/group-order/route-476063c3571b81dd.js +1 -0
  450. package/.next/static/chunks/app/api/skills/[id]/route-476063c3571b81dd.js +1 -0
  451. package/.next/static/chunks/app/api/skills/installations/route-476063c3571b81dd.js +1 -0
  452. package/.next/static/chunks/app/api/skills/operations/route-476063c3571b81dd.js +1 -0
  453. package/.next/static/chunks/app/api/skills/reindex/route-476063c3571b81dd.js +1 -0
  454. package/.next/static/chunks/app/api/skills/route-476063c3571b81dd.js +1 -0
  455. package/.next/static/chunks/app/api/slash-commands/route-476063c3571b81dd.js +1 -0
  456. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-476063c3571b81dd.js +1 -0
  457. package/.next/static/chunks/app/api/tasks/[taskId]/route-476063c3571b81dd.js +1 -0
  458. package/.next/static/chunks/app/api/templates/[id]/route-476063c3571b81dd.js +1 -0
  459. package/.next/static/chunks/app/api/templates/route-476063c3571b81dd.js +1 -0
  460. package/.next/static/chunks/app/api/verification/runs/[runId]/route-476063c3571b81dd.js +1 -0
  461. package/.next/static/chunks/app/api/verification/runs/route-476063c3571b81dd.js +1 -0
  462. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-476063c3571b81dd.js +1 -0
  463. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-476063c3571b81dd.js +1 -0
  464. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-476063c3571b81dd.js +1 -0
  465. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-476063c3571b81dd.js +1 -0
  466. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-476063c3571b81dd.js +1 -0
  467. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-476063c3571b81dd.js +1 -0
  468. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-476063c3571b81dd.js +1 -0
  469. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-476063c3571b81dd.js +1 -0
  470. package/.next/static/chunks/app/api/worktrees/[id]/env/route-476063c3571b81dd.js +1 -0
  471. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-476063c3571b81dd.js +1 -0
  472. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-476063c3571b81dd.js +1 -0
  473. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-476063c3571b81dd.js +1 -0
  474. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-476063c3571b81dd.js +1 -0
  475. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-476063c3571b81dd.js +1 -0
  476. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-476063c3571b81dd.js +1 -0
  477. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-476063c3571b81dd.js +1 -0
  478. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-476063c3571b81dd.js +1 -0
  479. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-476063c3571b81dd.js +1 -0
  480. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-476063c3571b81dd.js +1 -0
  481. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-476063c3571b81dd.js +1 -0
  482. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-476063c3571b81dd.js +1 -0
  483. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-476063c3571b81dd.js +1 -0
  484. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-476063c3571b81dd.js +1 -0
  485. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-476063c3571b81dd.js +1 -0
  486. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-476063c3571b81dd.js +1 -0
  487. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-476063c3571b81dd.js +1 -0
  488. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-476063c3571b81dd.js +1 -0
  489. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-476063c3571b81dd.js +1 -0
  490. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-476063c3571b81dd.js +1 -0
  491. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-476063c3571b81dd.js +1 -0
  492. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-476063c3571b81dd.js +1 -0
  493. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-476063c3571b81dd.js +1 -0
  494. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-476063c3571b81dd.js +1 -0
  495. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-476063c3571b81dd.js +1 -0
  496. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-476063c3571b81dd.js +1 -0
  497. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-476063c3571b81dd.js +1 -0
  498. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-476063c3571b81dd.js +1 -0
  499. package/.next/static/chunks/app/api/worktrees/[id]/instances/roles/route-476063c3571b81dd.js +1 -0
  500. package/.next/static/chunks/app/api/worktrees/[id]/instances/roles/settle/route-476063c3571b81dd.js +1 -0
  501. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-476063c3571b81dd.js +1 -0
  502. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-476063c3571b81dd.js +1 -0
  503. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-476063c3571b81dd.js +1 -0
  504. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-476063c3571b81dd.js +1 -0
  505. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-476063c3571b81dd.js +1 -0
  506. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-476063c3571b81dd.js +1 -0
  507. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-476063c3571b81dd.js +1 -0
  508. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-476063c3571b81dd.js +1 -0
  509. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-476063c3571b81dd.js +1 -0
  510. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-476063c3571b81dd.js +1 -0
  511. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-476063c3571b81dd.js +1 -0
  512. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-476063c3571b81dd.js +1 -0
  513. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-476063c3571b81dd.js +1 -0
  514. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-476063c3571b81dd.js +1 -0
  515. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-476063c3571b81dd.js +1 -0
  516. package/.next/static/chunks/app/api/worktrees/[id]/route-476063c3571b81dd.js +1 -0
  517. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-476063c3571b81dd.js +1 -0
  518. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-476063c3571b81dd.js +1 -0
  519. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-476063c3571b81dd.js +1 -0
  520. package/.next/static/chunks/app/api/worktrees/[id]/search/route-476063c3571b81dd.js +1 -0
  521. package/.next/static/chunks/app/api/worktrees/[id]/send/route-476063c3571b81dd.js +1 -0
  522. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-476063c3571b81dd.js +1 -0
  523. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-476063c3571b81dd.js +1 -0
  524. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-476063c3571b81dd.js +1 -0
  525. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-476063c3571b81dd.js +1 -0
  526. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-476063c3571b81dd.js +1 -0
  527. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-476063c3571b81dd.js +1 -0
  528. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-476063c3571b81dd.js +1 -0
  529. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-476063c3571b81dd.js +1 -0
  530. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-476063c3571b81dd.js +1 -0
  531. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-476063c3571b81dd.js +1 -0
  532. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-476063c3571b81dd.js +1 -0
  533. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-476063c3571b81dd.js +1 -0
  534. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-476063c3571b81dd.js +1 -0
  535. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-476063c3571b81dd.js +1 -0
  536. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-476063c3571b81dd.js +1 -0
  537. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-476063c3571b81dd.js +1 -0
  538. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-476063c3571b81dd.js +1 -0
  539. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-476063c3571b81dd.js +1 -0
  540. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-476063c3571b81dd.js +1 -0
  541. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-476063c3571b81dd.js +1 -0
  542. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-476063c3571b81dd.js +1 -0
  543. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-476063c3571b81dd.js +1 -0
  544. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-476063c3571b81dd.js +1 -0
  545. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-476063c3571b81dd.js +1 -0
  546. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-476063c3571b81dd.js +1 -0
  547. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-476063c3571b81dd.js +1 -0
  548. package/.next/static/chunks/app/api/worktrees/route-476063c3571b81dd.js +1 -0
  549. package/.next/static/chunks/app/layout-7bf800fcc5e025b1.js +1 -0
  550. package/.next/static/chunks/app/manifest.webmanifest/route-476063c3571b81dd.js +1 -0
  551. package/.next/static/chunks/app/more/{page-ff5af5ca48774c89.js → page-e8f5780f6e4fb657.js} +1 -1
  552. package/.next/static/chunks/app/{page-b4863bfe0452e09d.js → page-869f353a4ac4e15b.js} +1 -1
  553. package/.next/static/chunks/app/proxy/[...path]/route-476063c3571b81dd.js +1 -0
  554. package/.next/static/chunks/app/repositories/page-bedb505687010f18.js +1 -0
  555. package/.next/static/chunks/app/review/page-87c4a9b0de50fa80.js +1 -0
  556. package/.next/static/chunks/app/sessions/{page-c6eb7c02db2f4c80.js → page-82ca46793789fce4.js} +1 -1
  557. package/.next/static/chunks/app/worktrees/[id]/layout-476063c3571b81dd.js +1 -0
  558. package/.next/static/chunks/app/worktrees/[id]/page-570eb79fbbd1a934.js +1 -0
  559. package/.next/static/chunks/{webpack-838df0273b03af19.js → webpack-16b1a3143fa42ca0.js} +1 -1
  560. package/.next/static/css/d4f2c9522cf1b449.css +1 -0
  561. package/.next/static/z4d8-5MaLkoD-4EhueZwk/_buildManifest.js +1 -0
  562. package/.next/trace +14 -13
  563. package/.next/types/app/api/repositories/[id]/role-defaults/route.ts +347 -0
  564. package/.next/types/app/api/roles/[id]/route.ts +347 -0
  565. package/.next/types/app/api/roles/route.ts +347 -0
  566. package/.next/types/app/api/settings/agent-role-defaults/route.ts +347 -0
  567. package/.next/types/app/api/worktrees/[id]/instances/roles/route.ts +347 -0
  568. package/.next/types/app/api/worktrees/[id]/instances/roles/settle/route.ts +347 -0
  569. package/.next/types/routes.d.ts +7 -1
  570. package/.next/types/validator.ts +54 -0
  571. package/dist/cli/commands/instances.d.ts +1 -0
  572. package/dist/cli/commands/instances.d.ts.map +1 -1
  573. package/dist/cli/commands/instances.js +290 -33
  574. package/dist/cli/commands/message-dispatch.d.ts +25 -3
  575. package/dist/cli/commands/message-dispatch.d.ts.map +1 -1
  576. package/dist/cli/commands/message-dispatch.js +26 -6
  577. package/dist/cli/commands/relays.d.ts +5 -0
  578. package/dist/cli/commands/relays.d.ts.map +1 -1
  579. package/dist/cli/commands/relays.js +37 -1
  580. package/dist/cli/commands/roles.d.ts +11 -0
  581. package/dist/cli/commands/roles.d.ts.map +1 -0
  582. package/dist/cli/commands/roles.js +392 -0
  583. package/dist/cli/commands/send.d.ts.map +1 -1
  584. package/dist/cli/commands/send.js +526 -38
  585. package/dist/cli/docs/agent-operations.d.ts +1 -1
  586. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  587. package/dist/cli/docs/agent-operations.js +91 -3
  588. package/dist/cli/index.d.ts +4 -0
  589. package/dist/cli/index.d.ts.map +1 -1
  590. package/dist/cli/index.js +6 -0
  591. package/dist/cli/types/api-responses.d.ts +54 -0
  592. package/dist/cli/types/api-responses.d.ts.map +1 -1
  593. package/dist/cli/types/index.d.ts +38 -0
  594. package/dist/cli/types/index.d.ts.map +1 -1
  595. package/dist/cli/types/index.js +15 -1
  596. package/dist/cli/utils/agent-instances.d.ts +29 -1
  597. package/dist/cli/utils/agent-instances.d.ts.map +1 -1
  598. package/dist/cli/utils/agent-instances.js +67 -7
  599. package/dist/cli/utils/agent-roles.d.ts +75 -0
  600. package/dist/cli/utils/agent-roles.d.ts.map +1 -0
  601. package/dist/cli/utils/agent-roles.js +238 -0
  602. package/dist/cli/utils/api-client-errors.d.ts +23 -1
  603. package/dist/cli/utils/api-client-errors.d.ts.map +1 -1
  604. package/dist/cli/utils/api-client-errors.js +14 -2
  605. package/dist/cli/utils/api-client.d.ts +8 -0
  606. package/dist/cli/utils/api-client.d.ts.map +1 -1
  607. package/dist/cli/utils/api-client.js +13 -1
  608. package/dist/cli/utils/role-failure.d.ts +31 -0
  609. package/dist/cli/utils/role-failure.d.ts.map +1 -0
  610. package/dist/cli/utils/role-failure.js +90 -0
  611. package/dist/cli/utils/role-input.d.ts +16 -0
  612. package/dist/cli/utils/role-input.d.ts.map +1 -0
  613. package/dist/cli/utils/role-input.js +78 -0
  614. package/dist/cli/utils/security-logger.d.ts +17 -0
  615. package/dist/cli/utils/security-logger.d.ts.map +1 -1
  616. package/dist/cli/utils/security-logger.js +44 -5
  617. package/dist/lib/detection/tools/verified-against.d.ts +16 -0
  618. package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
  619. package/dist/lib/detection/tools/verified-against.js +16 -0
  620. package/dist/lib/session/send-attempt-types.d.ts +4 -0
  621. package/dist/lib/session/send-attempt-types.d.ts.map +1 -1
  622. package/dist/lib/verification/verify-config.d.ts +22 -0
  623. package/dist/lib/verification/verify-config.d.ts.map +1 -1
  624. package/dist/lib/verification/verify-config.js +32 -2
  625. package/dist/server/locales/en/worktree.json +25 -6
  626. package/dist/server/locales/ja/worktree.json +25 -6
  627. package/dist/server/src/config/safe-directory.js +30 -0
  628. package/dist/server/src/lib/agent-roles/adapters.js +174 -0
  629. package/dist/server/src/lib/agent-roles/artifacts.js +638 -0
  630. package/dist/server/src/lib/agent-roles/composition.js +222 -0
  631. package/dist/server/src/lib/agent-roles/fingerprint.js +21 -0
  632. package/dist/server/src/lib/agent-roles/jsonc.js +85 -0
  633. package/dist/server/src/lib/agent-roles/launch-errors.js +58 -0
  634. package/dist/server/src/lib/agent-roles/pane-env.js +63 -0
  635. package/dist/server/src/lib/agent-roles/resolve.js +375 -0
  636. package/dist/server/src/lib/agent-roles/toml-basic.js +140 -0
  637. package/dist/server/src/lib/agent-roles/unicode.js +16 -0
  638. package/dist/server/src/lib/agent-roles/validation.js +61 -0
  639. package/dist/server/src/lib/cli-tools/antigravity.js +39 -6
  640. package/dist/server/src/lib/cli-tools/base.js +63 -5
  641. package/dist/server/src/lib/cli-tools/claude-auto-default-nudge.js +141 -0
  642. package/dist/server/src/lib/cli-tools/claude.js +7 -1
  643. package/dist/server/src/lib/cli-tools/codex.js +134 -21
  644. package/dist/server/src/lib/cli-tools/command-code.js +24 -1
  645. package/dist/server/src/lib/cli-tools/copilot.js +36 -7
  646. package/dist/server/src/lib/cli-tools/gemini.js +37 -3
  647. package/dist/server/src/lib/cli-tools/launch-answer-skips.js +76 -0
  648. package/dist/server/src/lib/cli-tools/opencode-v2.js +10 -0
  649. package/dist/server/src/lib/cli-tools/opencode.js +58 -7
  650. package/dist/server/src/lib/cli-tools/submit-composer-read.js +24 -4
  651. package/dist/server/src/lib/cli-tools/vibe-local.js +25 -1
  652. package/dist/server/src/lib/db/agent-instances-db.js +53 -0
  653. package/dist/server/src/lib/db/agent-roles-db.js +409 -0
  654. package/dist/server/src/lib/db/agent-session-cost-sampler.js +3 -2
  655. package/dist/server/src/lib/db/db-instance.js +7 -37
  656. package/dist/server/src/lib/db/migrations/index.js +4 -0
  657. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  658. package/dist/server/src/lib/db/migrations/v64-agent-roles.js +123 -0
  659. package/dist/server/src/lib/db/migrations/v65-agent-instance-creation-keys.js +42 -0
  660. package/dist/server/src/lib/db/relay-db.js +35 -0
  661. package/dist/server/src/lib/detection/cli-patterns.js +13 -3
  662. package/dist/server/src/lib/detection/model-info-extractor.js +1 -1
  663. package/dist/server/src/lib/detection/tools/claude/patterns.js +76 -0
  664. package/dist/server/src/lib/detection/tools/codex/cli-patterns.js +5 -0
  665. package/dist/server/src/lib/detection/tools/codex/detect.js +5 -1
  666. package/dist/server/src/lib/detection/tools/codex/patterns.js +52 -2
  667. package/dist/server/src/lib/detection/tools/codex/prompt.js +23 -3
  668. package/dist/server/src/lib/detection/tools/opencode/detect.js +30 -15
  669. package/dist/server/src/lib/detection/tools/opencode/patterns.js +268 -7
  670. package/dist/server/src/lib/detection/tools/opencode/readiness.js +16 -7
  671. package/dist/server/src/lib/detection/tools/opencode-v2/detect.js +51 -15
  672. package/dist/server/src/lib/detection/tools/opencode-v2/patterns.js +195 -11
  673. package/dist/server/src/lib/detection/tools/run-detection.js +5 -2
  674. package/dist/server/src/lib/detection/tools/verified-against.js +16 -0
  675. package/dist/server/src/lib/detection/tools/vibe-local/readiness.js +22 -0
  676. package/dist/server/src/lib/git/git-common-dir.js +192 -0
  677. package/dist/server/src/lib/hooks/hook-settings-generator.js +8 -2
  678. package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +31 -1
  679. package/dist/server/src/lib/hooks/sources/launch-command.js +31 -8
  680. package/dist/server/src/lib/hooks/sources/opencode/client.js +20 -0
  681. package/dist/server/src/lib/hooks/sources/opencode-v2/client.js +24 -0
  682. package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +208 -35
  683. package/dist/server/src/lib/hooks/sources/opencode-v2/secrets.js +7 -1
  684. package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +117 -2
  685. package/dist/server/src/lib/job-executor.js +18 -1
  686. package/dist/server/src/lib/polling/response-checker-extraction-steps.js +58 -4
  687. package/dist/server/src/lib/polling/response-checker.js +32 -7
  688. package/dist/server/src/lib/relay/relay-delivery-block.js +150 -0
  689. package/dist/server/src/lib/relay/relay-delivery.js +59 -2
  690. package/dist/server/src/lib/response-cleaner.js +13 -3
  691. package/dist/server/src/lib/response-extractor.js +38 -3
  692. package/dist/server/src/lib/session/agent-session-lifecycle.js +9 -1
  693. package/dist/server/src/lib/session/claude-executor.js +13 -1
  694. package/dist/server/src/lib/session/claude-session.js +109 -13
  695. package/dist/server/src/lib/session/instance-input-lock.js +93 -4
  696. package/dist/server/src/lib/session/role-launch.js +722 -0
  697. package/dist/server/src/lib/session/send-attempt-state.js +7 -0
  698. package/dist/server/src/lib/session/send-user-message.js +6 -0
  699. package/dist/server/src/lib/session/session-generation-archive.js +7 -8
  700. package/dist/server/src/lib/session/session-launch-flight.js +33 -1
  701. package/dist/server/src/lib/session/worktree-session-reconcile.js +5 -0
  702. package/dist/server/src/lib/test-run-detection.js +53 -0
  703. package/dist/server/src/lib/tmux/read-mode.js +4 -0
  704. package/dist/server/src/lib/tmux/session-hook-scripts.js +36 -4
  705. package/dist/server/src/lib/tui-accumulator.js +14 -5
  706. package/dist/server/src/lib/verification/env-clean-gate.js +117 -12
  707. package/dist/server/src/lib/verification/gate-runner.js +9 -8
  708. package/dist/server/src/lib/verification/verify-config.js +32 -2
  709. package/dist/server/src/types/agent-roles.js +56 -0
  710. package/dist/types/agent-roles.d.ts +351 -0
  711. package/dist/types/agent-roles.d.ts.map +1 -0
  712. package/dist/types/agent-roles.js +56 -0
  713. package/docs/en/user-guide/webapp-guide.md +16 -0
  714. package/package.json +2 -1
  715. package/release-notes/0.50.0.json +113 -0
  716. package/.next/server/chunks/1308.js +0 -1
  717. package/.next/server/chunks/4490.js +0 -1
  718. package/.next/server/chunks/4936.js +0 -1
  719. package/.next/server/chunks/610.js +0 -1
  720. package/.next/server/chunks/6119.js +0 -1
  721. package/.next/server/chunks/7491.js +0 -3
  722. package/.next/server/chunks/7926.js +0 -1
  723. package/.next/server/chunks/9360.js +0 -2
  724. package/.next/server/chunks/9584.js +0 -1
  725. package/.next/static/LNfVZiq6FZwKsV7L9Mi6M/_buildManifest.js +0 -1
  726. package/.next/static/chunks/2407-87ec01332344ec2b.js +0 -1
  727. package/.next/static/chunks/344-e1cefd00787060e4.js +0 -1
  728. package/.next/static/chunks/3931-3ef48b8d97357282.js +0 -1
  729. package/.next/static/chunks/7229.7f0f5a7032b612b4.js +0 -1
  730. package/.next/static/chunks/8165-263172c17ae8e8c3.js +0 -1
  731. package/.next/static/chunks/app/api/agents/update/route-96fc12d400b49b13.js +0 -1
  732. package/.next/static/chunks/app/api/agents/versions/route-96fc12d400b49b13.js +0 -1
  733. package/.next/static/chunks/app/api/app/release-notes/route-96fc12d400b49b13.js +0 -1
  734. package/.next/static/chunks/app/api/app/update/route-96fc12d400b49b13.js +0 -1
  735. package/.next/static/chunks/app/api/app/update-check/route-96fc12d400b49b13.js +0 -1
  736. package/.next/static/chunks/app/api/auth/login/route-96fc12d400b49b13.js +0 -1
  737. package/.next/static/chunks/app/api/auth/logout/route-96fc12d400b49b13.js +0 -1
  738. package/.next/static/chunks/app/api/auth/status/route-96fc12d400b49b13.js +0 -1
  739. package/.next/static/chunks/app/api/capabilities/route-96fc12d400b49b13.js +0 -1
  740. package/.next/static/chunks/app/api/daily-summary/route-96fc12d400b49b13.js +0 -1
  741. package/.next/static/chunks/app/api/daily-summary/status/route-96fc12d400b49b13.js +0 -1
  742. package/.next/static/chunks/app/api/external-apps/[id]/health/route-96fc12d400b49b13.js +0 -1
  743. package/.next/static/chunks/app/api/external-apps/[id]/route-96fc12d400b49b13.js +0 -1
  744. package/.next/static/chunks/app/api/external-apps/route-96fc12d400b49b13.js +0 -1
  745. package/.next/static/chunks/app/api/fs/browse/route-96fc12d400b49b13.js +0 -1
  746. package/.next/static/chunks/app/api/fs/recent-paths/route-96fc12d400b49b13.js +0 -1
  747. package/.next/static/chunks/app/api/hooks/agent-event/route-96fc12d400b49b13.js +0 -1
  748. package/.next/static/chunks/app/api/hooks/claude-done/route-96fc12d400b49b13.js +0 -1
  749. package/.next/static/chunks/app/api/hooks/permission-request/route-96fc12d400b49b13.js +0 -1
  750. package/.next/static/chunks/app/api/metrics/vibe/route-96fc12d400b49b13.js +0 -1
  751. package/.next/static/chunks/app/api/ollama/models/route-96fc12d400b49b13.js +0 -1
  752. package/.next/static/chunks/app/api/push/escalation/route-96fc12d400b49b13.js +0 -1
  753. package/.next/static/chunks/app/api/push/subscriptions/route-96fc12d400b49b13.js +0 -1
  754. package/.next/static/chunks/app/api/push/vapid/route-96fc12d400b49b13.js +0 -1
  755. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-96fc12d400b49b13.js +0 -1
  756. package/.next/static/chunks/app/api/relays/[relayId]/resolve/route-96fc12d400b49b13.js +0 -1
  757. package/.next/static/chunks/app/api/relays/[relayId]/route-96fc12d400b49b13.js +0 -1
  758. package/.next/static/chunks/app/api/relays/route-96fc12d400b49b13.js +0 -1
  759. package/.next/static/chunks/app/api/remote/pair/route-96fc12d400b49b13.js +0 -1
  760. package/.next/static/chunks/app/api/repositories/[id]/route-96fc12d400b49b13.js +0 -1
  761. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-96fc12d400b49b13.js +0 -1
  762. package/.next/static/chunks/app/api/repositories/clone/route-96fc12d400b49b13.js +0 -1
  763. package/.next/static/chunks/app/api/repositories/excluded/route-96fc12d400b49b13.js +0 -1
  764. package/.next/static/chunks/app/api/repositories/restore/route-96fc12d400b49b13.js +0 -1
  765. package/.next/static/chunks/app/api/repositories/route-96fc12d400b49b13.js +0 -1
  766. package/.next/static/chunks/app/api/repositories/scan/route-96fc12d400b49b13.js +0 -1
  767. package/.next/static/chunks/app/api/repositories/sync/route-96fc12d400b49b13.js +0 -1
  768. package/.next/static/chunks/app/api/repositories/validate-path/route-96fc12d400b49b13.js +0 -1
  769. package/.next/static/chunks/app/api/settings/default-agents/route-96fc12d400b49b13.js +0 -1
  770. package/.next/static/chunks/app/api/settings/default-surface-mode/route-96fc12d400b49b13.js +0 -1
  771. package/.next/static/chunks/app/api/sidebar/group-order/route-96fc12d400b49b13.js +0 -1
  772. package/.next/static/chunks/app/api/skills/[id]/route-96fc12d400b49b13.js +0 -1
  773. package/.next/static/chunks/app/api/skills/installations/route-96fc12d400b49b13.js +0 -1
  774. package/.next/static/chunks/app/api/skills/operations/route-96fc12d400b49b13.js +0 -1
  775. package/.next/static/chunks/app/api/skills/reindex/route-96fc12d400b49b13.js +0 -1
  776. package/.next/static/chunks/app/api/skills/route-96fc12d400b49b13.js +0 -1
  777. package/.next/static/chunks/app/api/slash-commands/route-96fc12d400b49b13.js +0 -1
  778. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-96fc12d400b49b13.js +0 -1
  779. package/.next/static/chunks/app/api/tasks/[taskId]/route-96fc12d400b49b13.js +0 -1
  780. package/.next/static/chunks/app/api/templates/[id]/route-96fc12d400b49b13.js +0 -1
  781. package/.next/static/chunks/app/api/templates/route-96fc12d400b49b13.js +0 -1
  782. package/.next/static/chunks/app/api/verification/runs/[runId]/route-96fc12d400b49b13.js +0 -1
  783. package/.next/static/chunks/app/api/verification/runs/route-96fc12d400b49b13.js +0 -1
  784. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-96fc12d400b49b13.js +0 -1
  785. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-96fc12d400b49b13.js +0 -1
  786. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-96fc12d400b49b13.js +0 -1
  787. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-96fc12d400b49b13.js +0 -1
  788. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-96fc12d400b49b13.js +0 -1
  789. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-96fc12d400b49b13.js +0 -1
  790. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-96fc12d400b49b13.js +0 -1
  791. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-96fc12d400b49b13.js +0 -1
  792. package/.next/static/chunks/app/api/worktrees/[id]/env/route-96fc12d400b49b13.js +0 -1
  793. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-96fc12d400b49b13.js +0 -1
  794. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-96fc12d400b49b13.js +0 -1
  795. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-96fc12d400b49b13.js +0 -1
  796. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-96fc12d400b49b13.js +0 -1
  797. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-96fc12d400b49b13.js +0 -1
  798. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-96fc12d400b49b13.js +0 -1
  799. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-96fc12d400b49b13.js +0 -1
  800. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-96fc12d400b49b13.js +0 -1
  801. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-96fc12d400b49b13.js +0 -1
  802. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-96fc12d400b49b13.js +0 -1
  803. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-96fc12d400b49b13.js +0 -1
  804. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-96fc12d400b49b13.js +0 -1
  805. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-96fc12d400b49b13.js +0 -1
  806. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-96fc12d400b49b13.js +0 -1
  807. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-96fc12d400b49b13.js +0 -1
  808. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-96fc12d400b49b13.js +0 -1
  809. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-96fc12d400b49b13.js +0 -1
  810. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-96fc12d400b49b13.js +0 -1
  811. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-96fc12d400b49b13.js +0 -1
  812. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-96fc12d400b49b13.js +0 -1
  813. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-96fc12d400b49b13.js +0 -1
  814. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-96fc12d400b49b13.js +0 -1
  815. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-96fc12d400b49b13.js +0 -1
  816. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-96fc12d400b49b13.js +0 -1
  817. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-96fc12d400b49b13.js +0 -1
  818. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-96fc12d400b49b13.js +0 -1
  819. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-96fc12d400b49b13.js +0 -1
  820. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-96fc12d400b49b13.js +0 -1
  821. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-96fc12d400b49b13.js +0 -1
  822. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-96fc12d400b49b13.js +0 -1
  823. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-96fc12d400b49b13.js +0 -1
  824. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-96fc12d400b49b13.js +0 -1
  825. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-96fc12d400b49b13.js +0 -1
  826. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-96fc12d400b49b13.js +0 -1
  827. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-96fc12d400b49b13.js +0 -1
  828. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-96fc12d400b49b13.js +0 -1
  829. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-96fc12d400b49b13.js +0 -1
  830. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-96fc12d400b49b13.js +0 -1
  831. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-96fc12d400b49b13.js +0 -1
  832. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-96fc12d400b49b13.js +0 -1
  833. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-96fc12d400b49b13.js +0 -1
  834. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-96fc12d400b49b13.js +0 -1
  835. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-96fc12d400b49b13.js +0 -1
  836. package/.next/static/chunks/app/api/worktrees/[id]/route-96fc12d400b49b13.js +0 -1
  837. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-96fc12d400b49b13.js +0 -1
  838. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-96fc12d400b49b13.js +0 -1
  839. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-96fc12d400b49b13.js +0 -1
  840. package/.next/static/chunks/app/api/worktrees/[id]/search/route-96fc12d400b49b13.js +0 -1
  841. package/.next/static/chunks/app/api/worktrees/[id]/send/route-96fc12d400b49b13.js +0 -1
  842. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-96fc12d400b49b13.js +0 -1
  843. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-96fc12d400b49b13.js +0 -1
  844. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-96fc12d400b49b13.js +0 -1
  845. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-96fc12d400b49b13.js +0 -1
  846. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-96fc12d400b49b13.js +0 -1
  847. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-96fc12d400b49b13.js +0 -1
  848. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-96fc12d400b49b13.js +0 -1
  849. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-96fc12d400b49b13.js +0 -1
  850. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-96fc12d400b49b13.js +0 -1
  851. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-96fc12d400b49b13.js +0 -1
  852. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-96fc12d400b49b13.js +0 -1
  853. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-96fc12d400b49b13.js +0 -1
  854. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-96fc12d400b49b13.js +0 -1
  855. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-96fc12d400b49b13.js +0 -1
  856. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-96fc12d400b49b13.js +0 -1
  857. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-96fc12d400b49b13.js +0 -1
  858. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-96fc12d400b49b13.js +0 -1
  859. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-96fc12d400b49b13.js +0 -1
  860. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-96fc12d400b49b13.js +0 -1
  861. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-96fc12d400b49b13.js +0 -1
  862. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-96fc12d400b49b13.js +0 -1
  863. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-96fc12d400b49b13.js +0 -1
  864. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-96fc12d400b49b13.js +0 -1
  865. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-96fc12d400b49b13.js +0 -1
  866. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-96fc12d400b49b13.js +0 -1
  867. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-96fc12d400b49b13.js +0 -1
  868. package/.next/static/chunks/app/api/worktrees/route-96fc12d400b49b13.js +0 -1
  869. package/.next/static/chunks/app/layout-b9d8aef70e4f17b2.js +0 -1
  870. package/.next/static/chunks/app/manifest.webmanifest/route-96fc12d400b49b13.js +0 -1
  871. package/.next/static/chunks/app/proxy/[...path]/route-96fc12d400b49b13.js +0 -1
  872. package/.next/static/chunks/app/repositories/page-71f5a5ac29b0370d.js +0 -1
  873. package/.next/static/chunks/app/review/page-ff3efb96fdf9bb4b.js +0 -1
  874. package/.next/static/chunks/app/worktrees/[id]/layout-96fc12d400b49b13.js +0 -1
  875. package/.next/static/chunks/app/worktrees/[id]/page-f6a151304860b549.js +0 -1
  876. package/.next/static/css/c1e307d05daf93b6.css +0 -1
  877. /package/.next/static/{LNfVZiq6FZwKsV7L9Mi6M → z4d8-5MaLkoD-4EhueZwk}/_ssgManifest.js +0 -0
@@ -25,6 +25,7 @@ const child_process_1 = require("child_process");
25
25
  const util_1 = require("util");
26
26
  const promises_1 = require("fs/promises");
27
27
  const logger_1 = require("../../lib/logger");
28
+ const claude_auto_default_nudge_1 = require("../../lib/cli-tools/claude-auto-default-nudge");
28
29
  const session_ownership_1 = require("../../lib/cli-tools/session-ownership");
29
30
  const session_name_1 = require("../../lib/cli-tools/session-name");
30
31
  const sources_1 = require("../../lib/hooks/sources");
@@ -35,6 +36,7 @@ const agent_event_state_1 = require("../../lib/session/agent-event-state");
35
36
  const session_start_error_1 = require("../../lib/session/session-start-error");
36
37
  const launch_screen_1 = require("../../lib/session/launch-screen");
37
38
  const instance_input_lock_1 = require("../../lib/session/instance-input-lock");
39
+ const launch_answer_skips_1 = require("../../lib/cli-tools/launch-answer-skips");
38
40
  const session_launch_flight_1 = require("../../lib/session/session-launch-flight");
39
41
  const launch_keys_1 = require("../../lib/cli-tools/launch-keys");
40
42
  const logger = (0, logger_1.createLogger)('claude-session');
@@ -156,6 +158,69 @@ const TRUST_DIALOG_MAX_MOVES = 20;
156
158
  exports.CLAUDE_TRUST_DIALOG_CURSOR_STUCK = 'trust dialog: cursor did not reach "Yes, I trust this folder"';
157
159
  /** Reported when Claude Code quit from the trust dialog (Issue #3089). A fixed string, never captured output. */
158
160
  exports.CLAUDE_TRUST_DIALOG_EXITED = 'trust dialog: Claude Code exited to the shell';
161
+ /** The log event of a trust-dialog key that did not go out (Issue #4149). */
162
+ const TRUST_KEY_SKIPPED = 'trust-dialog-key-skipped';
163
+ /**
164
+ * The start budget ran out with a startup dialog on the screen (Issue #4149).
165
+ *
166
+ * Nothing about that is slow, so {@link SessionStartTimeoutError}'s sentence would send
167
+ * the reader off to wait. Still that error to everything that reads it (`code`): the
168
+ * session is left alive, nothing was typed, the answer is a 503 and no push is sent. The
169
+ * message follows the module's rule (SEC-SF-002): built only from fixed strings, the
170
+ * session name, a number and {@link TrustDialogKeySkip}, never captured output.
171
+ */
172
+ class ClaudeStartupDialogStalledError extends session_start_error_1.SessionStartTimeoutError {
173
+ /**
174
+ * @param where - Says what the session is stopped on, and what became of the keys
175
+ * @param next - What the reader can do: a send to a running process answers only some dialogs
176
+ */
177
+ constructor(sessionName, timeoutMs, where, next) {
178
+ super('Claude Code', sessionName, timeoutMs);
179
+ this.message =
180
+ `Claude Code did not reach its input prompt within ${Math.round(timeoutMs / 1000)}s (initialization timeout): ` +
181
+ `the tmux session '${sessionName}' is stopped on ${where} This is not a slow start, so waiting will not ` +
182
+ `move it. The message was not delivered. ${next}`;
183
+ this.name = 'ClaudeStartupDialogStalledError';
184
+ }
185
+ }
186
+ /**
187
+ * The error for a start whose budget ran out, by what its last screen shows.
188
+ *
189
+ * @param lastScreen - The last pane output read, or null when none could be
190
+ */
191
+ function startTimeoutError(sessionName, lastScreen, trust) {
192
+ if (lastScreen !== null && (0, cli_patterns_1.isClaudeTrustDialogOpen)(lastScreen)) {
193
+ const keys = trust.answers + trust.moves;
194
+ const fate = keys === 0
195
+ ? `no key reached it (${trust.lastSkip ?? 'no key was due'})`
196
+ : `it stayed open after ${keys} keys`;
197
+ return new ClaudeStartupDialogStalledError(sessionName, exports.CLAUDE_INIT_TIMEOUT, `the folder-trust dialog, and ${fate}. Enter is never pressed while the cursor is on "No, exit".`,
198
+ // The process stays, and a send to a running one reuses it without answering this dialog.
199
+ 'A send on its own does not answer this dialog: run `commandmate capture <worktree-id>` to see it, ' +
200
+ 'clear it in a terminal with `commandmate attach <worktree-id>` (each with --instance for a named instance), ' +
201
+ 'then send the message again. A retry before that will not get through.');
202
+ }
203
+ if (lastScreen !== null && (0, cli_patterns_1.isClaudeAutoDefaultNudgeOpen)(lastScreen)) {
204
+ return new ClaudeStartupDialogStalledError(sessionName, exports.CLAUDE_INIT_TIMEOUT, '"Make auto mode your default permission mode?", which did not take its keys. No keeps the current mode.',
205
+ // A send answers this one first (answerClaudeAutoDefaultNudgeBeforeSend).
206
+ 'Send it again, or run `commandmate capture <worktree-id>` to see the dialog.');
207
+ }
208
+ return new session_start_error_1.SessionStartTimeoutError('Claude Code', sessionName, exports.CLAUDE_INIT_TIMEOUT);
209
+ }
210
+ /**
211
+ * Record a key that did not go out, at warn (Issue #4149: at info an ERROR-only setting
212
+ * hid the only trace of a start that sent nothing). Once per reason in a row: a key that
213
+ * cannot go out is due again on every poll.
214
+ *
215
+ * Issue #4211: the record is the wait's {@link LaunchAnswerSkips} (#4189), which is
216
+ * also the lock's `repeatScope`: a key that went out ends the streak, and a session
217
+ * made again (`invalidateInstanceInput`) is a new one. `startedIn` is the life taken
218
+ * before the key's await, as the nudge and the other tools take it.
219
+ */
220
+ function noteTrustKeySkipped(sessionName, state, key, reason, startedIn) {
221
+ (0, launch_answer_skips_1.noteLaunchAnswerSkipped)(logger, state.skips, TRUST_KEY_SKIPPED, { sessionName, key, reason }, startedIn);
222
+ state.lastSkip = reason;
223
+ }
159
224
  /**
160
225
  * One poll's answer to the folder-trust dialog (Issue #201 / #3078 / #3089).
161
226
  *
@@ -178,9 +243,12 @@ exports.CLAUDE_TRUST_DIALOG_EXITED = 'trust dialog: Claude Code exited to the sh
178
243
  * @param dialogScreen - ANSI-stripped pane output when the dialog is open, else null
179
244
  * @param state - Mutated in place
180
245
  * @param readMark - {@link instanceInputLaunchReadMark} taken before `dialogScreen` was captured
246
+ * @param screenLife - {@link instanceInputAnswerSkipLife} taken before `dialogScreen` was captured
247
+ * (review 4211 P2): a decline judged on that screen alone (`cursor-unreadable`) is
248
+ * recorded in the life it was read in, not the one after this function's awaits
181
249
  * @throws {SessionStartFailedError} When the move budget is spent
182
250
  */
183
- async function answerTrustDialog(sessionName, dialogScreen, state, readMark = (0, instance_input_lock_1.instanceInputLaunchReadMark)()) {
251
+ async function answerTrustDialog(sessionName, dialogScreen, state, readMark = (0, instance_input_lock_1.instanceInputLaunchReadMark)(), screenLife = (0, instance_input_lock_1.instanceInputAnswerSkipLife)(sessionName)) {
184
252
  if (state.pollsSinceAnswer !== null)
185
253
  state.pollsSinceAnswer++;
186
254
  if (state.pollsSinceMove !== null)
@@ -192,23 +260,34 @@ async function answerTrustDialog(sessionName, dialogScreen, state, readMark = (0
192
260
  state.shellTellsExit = await paneCommandIsAgent(sessionName);
193
261
  }
194
262
  const keys = (0, cli_patterns_1.resolveClaudeTrustDialogKeys)(dialogScreen);
195
- if (keys === null)
263
+ if (keys === null) {
264
+ // Review 4211 P2: the screen's life, taken before `paneCommandIsAgent`'s await. A
265
+ // session made again meanwhile makes this an old life's decline: its warn, no record.
266
+ noteTrustKeySkipped(sessionName, state, null, 'cursor-unreadable', screenLife);
196
267
  return;
268
+ }
197
269
  if (keys.length === 1) {
198
270
  // Cursor on Yes, on this very screen: the Issue #201 Enter.
199
271
  const due = state.pollsSinceAnswer === null ||
200
272
  (state.pollsSinceAnswer >= TRUST_DIALOG_REANSWER_POLLS && state.answers < TRUST_DIALOG_MAX_ANSWERS);
201
273
  if (!due)
202
274
  return;
275
+ // Issue #4211: the life the answer starts in, before its await.
276
+ const answerLife = (0, instance_input_lock_1.instanceInputAnswerSkipLife)(sessionName);
203
277
  try {
204
- if (!(await sendTrustDialogKey(sessionName, readMark, 'Enter')))
278
+ const skipped = await sendTrustDialogKey(sessionName, readMark, 'Enter', state.skips);
279
+ if (skipped !== null) {
280
+ noteTrustKeySkipped(sessionName, state, 'Enter', skipped, answerLife);
205
281
  return;
282
+ }
283
+ (0, launch_answer_skips_1.forgetLaunchAnswerSkip)(state.skips, TRUST_KEY_SKIPPED);
206
284
  state.pollsSinceAnswer = 0;
207
285
  state.answers++;
208
286
  logger.info('trust-dialog-detected', { keys: 'Enter', attempt: state.answers });
209
287
  }
210
288
  catch {
211
289
  // Left unhandled so a later poll answers the dialog again
290
+ noteTrustKeySkipped(sessionName, state, 'Enter', 'send-failed', answerLife);
212
291
  }
213
292
  return;
214
293
  }
@@ -218,15 +297,22 @@ async function answerTrustDialog(sessionName, dialogScreen, state, readMark = (0
218
297
  if (state.moves >= TRUST_DIALOG_MAX_MOVES) {
219
298
  throw new session_start_error_1.SessionStartFailedError('Claude Code', sessionName, exports.CLAUDE_TRUST_DIALOG_CURSOR_STUCK);
220
299
  }
300
+ // Issue #4211: the life the answer starts in, before its await.
301
+ const answerLife = (0, instance_input_lock_1.instanceInputAnswerSkipLife)(sessionName);
221
302
  try {
222
- if (!(await sendTrustDialogKey(sessionName, readMark, keys[0])))
303
+ const skipped = await sendTrustDialogKey(sessionName, readMark, keys[0], state.skips);
304
+ if (skipped !== null) {
305
+ noteTrustKeySkipped(sessionName, state, keys[0], skipped, answerLife);
223
306
  return;
307
+ }
308
+ (0, launch_answer_skips_1.forgetLaunchAnswerSkip)(state.skips, TRUST_KEY_SKIPPED);
224
309
  state.pollsSinceMove = 0;
225
310
  state.moves++;
226
311
  logger.info('trust-dialog-cursor-move', { key: keys[0], attempt: state.moves });
227
312
  }
228
313
  catch {
229
314
  // Left unhandled so a later poll moves the cursor again
315
+ noteTrustKeySkipped(sessionName, state, keys[0], 'send-failed', answerLife);
230
316
  }
231
317
  }
232
318
  /**
@@ -235,9 +321,13 @@ async function answerTrustDialog(sessionName, dialogScreen, state, readMark = (0
235
321
  * the read the key was decided on (`readMark`) and the lock, the dialog is read
236
322
  * again and the key goes out only if that screen still calls for it.
237
323
  *
238
- * @returns Whether the key was sent; false when it was not (the next poll decides again)
324
+ * Issue #4211: `repeatScope` is the wait's record, so the lock's own warn of a
325
+ * decline (`instance-input-answer-*`) is once per streak, as the nudge's is (#4189).
326
+ *
327
+ * @param repeatScope - The wait's {@link LaunchAnswerSkips}
328
+ * @returns null when the key was sent, otherwise why not (the next poll decides again)
239
329
  */
240
- async function sendTrustDialogKey(sessionName, readMark, key) {
330
+ async function sendTrustDialogKey(sessionName, readMark, key, repeatScope) {
241
331
  const outcome = await (0, instance_input_lock_1.answerUnderInstanceInputLock)(sessionName, readMark, async () => {
242
332
  const screen = await getCleanPaneOutput(sessionName);
243
333
  if (!(0, cli_patterns_1.isClaudeTrustDialogOpen)(screen))
@@ -246,10 +336,8 @@ async function sendTrustDialogKey(sessionName, readMark, key) {
246
336
  if (keys === null)
247
337
  return false;
248
338
  return key === 'Enter' ? keys.length === 1 : keys.length > 1 && keys[0] === key;
249
- }, () => (key === 'Enter' ? (0, tmux_1.sendKeys)(sessionName, '', true) : (0, tmux_1.sendSpecialKeys)(sessionName, [key])), { mode: 'exclusive' });
250
- if (!outcome.answered)
251
- logger.info('trust-dialog-key-skipped', { key, reason: outcome.reason });
252
- return outcome.answered;
339
+ }, () => (key === 'Enter' ? (0, tmux_1.sendKeys)(sessionName, '', true) : (0, tmux_1.sendSpecialKeys)(sessionName, [key])), { mode: 'exclusive', repeatScope });
340
+ return outcome.answered ? null : outcome.reason;
253
341
  }
254
342
  /**
255
343
  * Whether the pane's foreground process is a shell again (Issue #3089). A
@@ -711,13 +799,17 @@ async function startClaudeSession(options) {
711
799
  const startTime = Date.now();
712
800
  let initialized = false;
713
801
  // Issue #3078 / #3089: the trust dialog's progress this start.
714
- const trust = { pollsSinceAnswer: null, pollsSinceMove: null, answers: 0, moves: 0, seen: false, shellTellsExit: false };
802
+ const trust = { pollsSinceAnswer: null, pollsSinceMove: null, answers: 0, moves: 0, lastSkip: null, skips: (0, launch_answer_skips_1.newLaunchAnswerSkips)(), seen: false, shellTellsExit: false };
803
+ // Issue #4149: what the budget ran out on.
804
+ let lastScreen = null;
715
805
  while (Date.now() - startTime < maxWaitTime) {
716
806
  await new Promise((resolve) => setTimeout(resolve, pollInterval));
717
807
  // SF-001: Use getCleanPaneOutput helper (DRY)
718
808
  let cleanOutput = null;
719
809
  // Issue #3975: before the read the trust keys are decided on.
720
810
  const readMark = (0, instance_input_lock_1.instanceInputLaunchReadMark)();
811
+ // Review 4211 P2: the life the screen is read in, for a decline judged on it alone.
812
+ const screenLife = (0, instance_input_lock_1.instanceInputAnswerSkipLife)(sessionName);
721
813
  try {
722
814
  cleanOutput = await getCleanPaneOutput(sessionName);
723
815
  }
@@ -727,11 +819,12 @@ async function startClaudeSession(options) {
727
819
  if (cleanOutput === null) {
728
820
  continue;
729
821
  }
822
+ lastScreen = cleanOutput;
730
823
  // Issue #201 / #3078 / #3089: answer the folder-trust dialog. Checked
731
824
  // BEFORE the prompt: the dialog's cursor row (`❯ No, exit`) wears the
732
825
  // prompt glyph, so an open dialog is never read as a ready prompt.
733
826
  const trustDialogOpen = (0, cli_patterns_1.isClaudeTrustDialogOpen)(cleanOutput);
734
- await answerTrustDialog(sessionName, trustDialogOpen ? cleanOutput : null, trust, readMark);
827
+ await answerTrustDialog(sessionName, trustDialogOpen ? cleanOutput : null, trust, readMark, screenLife);
735
828
  // Claude is ready when we see the prompt (DRY-001)
736
829
  // Use CLAUDE_PROMPT_PATTERN from cli-patterns.ts for consistency
737
830
  // Note: CLAUDE_SEPARATOR_PATTERN was removed from initialization check (Issue #187, P1-1)
@@ -775,7 +868,7 @@ async function startClaudeSession(options) {
775
868
  // carried to the caller by the error type rather than lost in a generic
776
869
  // message (CONS-005, IMP-001).
777
870
  if (!initialized) {
778
- throw new session_start_error_1.SessionStartTimeoutError('Claude Code', sessionName, exports.CLAUDE_INIT_TIMEOUT);
871
+ throw startTimeoutError(sessionName, lastScreen, trust);
779
872
  }
780
873
  logger.info('started-claude-session');
781
874
  }
@@ -815,6 +908,9 @@ async function sendMessageToClaude(worktreeId, message, instanceId) {
815
908
  // (`❯ ` can pass for Claude's prompt) — wait for that launch, or, holding the
816
909
  // input lock as the send service does, refuse with nothing typed (R1).
817
910
  await (0, session_launch_flight_1.settleSessionLaunch)(sessionName, 'Claude Code');
911
+ // Issue #4134: a process already parked on this dialog starts no launch, so
912
+ // nothing else answers it and the prompt wait below could only time out.
913
+ await (0, claude_auto_default_nudge_1.answerClaudeAutoDefaultNudgeBeforeSend)(sessionName);
818
914
  await (0, session_key_sender_1.sendMessageToSession)(sessionName, message, exports.CLAUDE_POST_PROMPT_DELAY, exports.CLAUDE_SEND_PROMPT_WAIT_TIMEOUT,
819
915
  // Issue #4048: the instance this send is for, so the first prompt's hook
820
916
  // check reads that instance's entry — the same one the name resolves to.
@@ -56,7 +56,9 @@
56
56
  * @module lib/session/instance-input-lock
57
57
  */
58
58
  Object.defineProperty(exports, "__esModule", { value: true });
59
- exports.InputBoundaryRefusedError = exports.INPUT_BOUNDARY_REFUSED_CODE = exports.InstanceInputSessionReplacedError = exports.InstanceInputOwnershipLostError = exports.InstanceInputLockTimeoutError = exports.INSTANCE_INPUT_OWNERSHIP_LOST_CODE = exports.INSTANCE_INPUT_SESSION_REPLACED_CODE = exports.INSTANCE_INPUT_LOCK_TIMEOUT_CODE = exports.CARRIED_PASTE_MARK_TTL_MS = exports.LATE_PASTE_OBSERVE_MS = exports.INSTANCE_INPUT_LOCK_WAIT_MS = void 0;
59
+ exports.InputBoundaryRefusedError = exports.INPUT_BOUNDARY_REFUSED_CODE = exports.ANSWER_SKIP_RECORD_MAX = exports.InstanceInputSessionReplacedError = exports.InstanceInputOwnershipLostError = exports.InstanceInputLockTimeoutError = exports.INSTANCE_INPUT_OWNERSHIP_LOST_CODE = exports.INSTANCE_INPUT_SESSION_REPLACED_CODE = exports.INSTANCE_INPUT_LOCK_TIMEOUT_CODE = exports.CARRIED_PASTE_MARK_TTL_MS = exports.LATE_PASTE_OBSERVE_MS = exports.INSTANCE_INPUT_LOCK_WAIT_MS = void 0;
60
+ exports.instanceInputAnswerSkipLife = instanceInputAnswerSkipLife;
61
+ exports.isInstanceInputAnswerSkipLife = isInstanceInputAnswerSkipLife;
60
62
  exports.currentInstanceInputTicket = currentInstanceInputTicket;
61
63
  exports.withInstanceInputLock = withInstanceInputLock;
62
64
  exports.instanceInputReadMark = instanceInputReadMark;
@@ -198,6 +200,80 @@ function noteSharedRelease() {
198
200
  */
199
201
  const revokedTickets = (0, global_state_1.getOrInitGlobal)('__instanceInputRevoked', () => new WeakSet());
200
202
  const ownerScope = (0, global_state_1.getOrInitGlobal)('__instanceInputOwnerScope', () => new node_async_hooks_1.AsyncLocalStorage());
203
+ /** How many sessions' lives {@link answerSkipLives} keeps (Issue #4175). */
204
+ exports.ANSWER_SKIP_RECORD_MAX = 256;
205
+ const answerSkipLives = (0, global_state_1.getOrInitGlobal)('__instanceInputAnswerSkipLives', () => ({ seq: 0, droppedUpTo: 0, bySession: new Map() }));
206
+ /** Each scope's records, by session. */
207
+ const answerSkipRecords = new WeakMap();
208
+ function answerSkipLifeNow(sessionName) {
209
+ return { known: answerSkipLives.bySession.get(sessionName) ?? null, seq: answerSkipLives.seq };
210
+ }
211
+ /** Whether `sessionName` is still in the life `life` was taken in. */
212
+ function stillAnswerSkipLife(sessionName, life) {
213
+ const current = answerSkipLives.bySession.get(sessionName);
214
+ if (life.known !== null)
215
+ return current === life.known;
216
+ return current === undefined && answerSkipLives.droppedUpTo <= life.seq;
217
+ }
218
+ function beginAnswerSkipLife(sessionName) {
219
+ const lives = answerSkipLives;
220
+ lives.seq += 1;
221
+ lives.bySession.delete(sessionName);
222
+ lives.bySession.set(sessionName, lives.seq);
223
+ while (lives.bySession.size > exports.ANSWER_SKIP_RECORD_MAX) {
224
+ const oldest = lives.bySession.entries().next().value;
225
+ if (oldest === undefined)
226
+ break;
227
+ lives.bySession.delete(oldest[0]);
228
+ lives.droppedUpTo = Math.max(lives.droppedUpTo, oldest[1]);
229
+ }
230
+ }
231
+ /** Read-only (Issue #4189): {@link InstanceInputAnswerSkipLife} as it stands now. */
232
+ function instanceInputAnswerSkipLife(sessionName) {
233
+ return answerSkipLifeNow(sessionName);
234
+ }
235
+ /** Read-only (Issue #4189): whether the session is still in the life `life` was taken in. */
236
+ function isInstanceInputAnswerSkipLife(sessionName, life) {
237
+ return stillAnswerSkipLife(sessionName, life);
238
+ }
239
+ /** The scope's record for the session, if it is of the life this answer is in. */
240
+ function answerSkipRecordOf(scope, sessionName, life) {
241
+ if (!stillAnswerSkipLife(sessionName, life))
242
+ return undefined;
243
+ const record = answerSkipRecords.get(scope)?.get(sessionName);
244
+ return record !== undefined && stillAnswerSkipLife(sessionName, record.life) ? record : undefined;
245
+ }
246
+ function putAnswerSkipRecord(scope, sessionName, record) {
247
+ let bySession = answerSkipRecords.get(scope);
248
+ if (bySession === undefined) {
249
+ bySession = new Map();
250
+ answerSkipRecords.set(scope, bySession);
251
+ }
252
+ bySession.set(sessionName, record);
253
+ }
254
+ /** Write a decline's warn unless the scope's streak is already this reason. */
255
+ function warnAnswerSkip(event, sessionName, scope, life, reason, fields) {
256
+ if (scope === undefined) {
257
+ logger.warn(event, fields);
258
+ return;
259
+ }
260
+ if (answerSkipRecordOf(scope, sessionName, life)?.reason === reason) {
261
+ logger.debug(event, { ...fields, repeated: true });
262
+ return;
263
+ }
264
+ logger.warn(event, fields);
265
+ // An answer of an older life writes nothing for the new one.
266
+ if (stillAnswerSkipLife(sessionName, life))
267
+ putAnswerSkipRecord(scope, sessionName, { life, reason });
268
+ }
269
+ /** A decline that is not a warn (`target-changed`), or an answer that went through, ends the streak. */
270
+ function endAnswerSkipStreak(sessionName, scope, life, reason) {
271
+ if (scope === undefined)
272
+ return;
273
+ const record = answerSkipRecordOf(scope, sessionName, life);
274
+ if (record !== undefined)
275
+ record.reason = reason;
276
+ }
201
277
  function entryOf(sessionName) {
202
278
  let entry = entries.get(sessionName);
203
279
  if (entry === undefined) {
@@ -413,12 +489,18 @@ function skipOfLockError(error) {
413
489
  * compared before admission there, since the launch's own admission moves it,
414
490
  * and `readMark` is {@link instanceInputLaunchReadMark}, so a `shared` answer
415
491
  * that finished after the launch's read also makes it read again (review P2-1).
492
+ *
493
+ * Issue #4175: `repeatScope` — one object per wait that asks again on every poll —
494
+ * makes a decline's warn once while the same reason goes on in that scope (see
495
+ * {@link ANSWER_SKIP_RECORD_MAX}'s record). Without it every decline is a warn.
416
496
  */
417
497
  async function answerUnderInstanceInputLock(sessionName, readMark, stillApplies, answer, options = {}) {
418
498
  // A context that already owns the composer (a send's own readiness wait)
419
499
  // has held it since before its read: it joins, and nothing is read again.
420
500
  const joined = currentInstanceInputTicket(sessionName) !== null;
421
501
  const mode = options.mode ?? 'shared';
502
+ const scope = options.repeatScope;
503
+ const life = answerSkipLifeNow(sessionName);
422
504
  const movedBeforeAdmission = (mode === 'exclusive' ? instanceInputLaunchReadMark() : instanceInputReadMark()) !== readMark;
423
505
  let admitted = false;
424
506
  try {
@@ -432,7 +514,7 @@ async function answerUnderInstanceInputLock(sessionName, readMark, stillApplies,
432
514
  applies = await stillApplies();
433
515
  }
434
516
  catch (error) {
435
- logger.warn('instance-input-answer-recheck-failed', {
517
+ warnAnswerSkip('instance-input-answer-recheck-failed', sessionName, scope, life, 'recheck-failed', {
436
518
  sessionName,
437
519
  error: error instanceof Error ? error.message : String(error),
438
520
  });
@@ -440,12 +522,15 @@ async function answerUnderInstanceInputLock(sessionName, readMark, stillApplies,
440
522
  }
441
523
  if (!applies) {
442
524
  logger.info('instance-input-answer-target-changed', { sessionName, generation: ticket.generation });
525
+ endAnswerSkipStreak(sessionName, scope, life, 'target-changed');
443
526
  return { answered: false, reason: 'target-changed' };
444
527
  }
445
528
  }
446
529
  if (!ticket.isCurrent())
447
530
  return { answered: false, reason: 'input-lock-lost' };
448
- return { answered: true, value: await answer(ticket) };
531
+ const value = await answer(ticket);
532
+ endAnswerSkipStreak(sessionName, scope, life, null);
533
+ return { answered: true, value };
449
534
  }, { waitMs: options.waitMs, mode });
450
535
  }
451
536
  catch (error) {
@@ -454,7 +539,7 @@ async function answerUnderInstanceInputLock(sessionName, readMark, stillApplies,
454
539
  const skip = admitted ? null : skipOfLockError(error);
455
540
  if (skip === null)
456
541
  throw error;
457
- logger.warn('instance-input-answer-not-admitted', { sessionName, reason: skip });
542
+ warnAnswerSkip('instance-input-answer-not-admitted', sessionName, scope, life, skip, { sessionName, reason: skip });
458
543
  return { answered: false, reason: skip };
459
544
  }
460
545
  }
@@ -533,6 +618,8 @@ async function waitOutCarriedPasteMark(ticket) {
533
618
  * pane it just created.
534
619
  */
535
620
  function invalidateInstanceInput(sessionName) {
621
+ // Issue #4175: the new process's first declined answer is a warn of its own.
622
+ beginAnswerSkipLife(sessionName);
536
623
  const entry = entries.get(sessionName);
537
624
  if (entry === undefined)
538
625
  return;
@@ -706,4 +793,6 @@ function resetInstanceInputLocks() {
706
793
  clearTimeout(waiter.timer);
707
794
  }
708
795
  entries.clear();
796
+ answerSkipLives.bySession.clear();
797
+ answerSkipLives.droppedUpTo = answerSkipLives.seq;
709
798
  }