commandmate 0.29.1 → 0.29.2

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 (906) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +458 -414
  3. package/.next/app-path-routes-manifest.json +32 -26
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +15 -15
  6. package/.next/react-loadable-manifest.json +3 -3
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +17 -0
  9. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  10. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/update/route.js +2 -0
  12. package/.next/server/app/api/agents/update/route.js.nft.json +1 -0
  13. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -0
  14. package/.next/server/app/api/agents/versions/route.js +1 -0
  15. package/.next/server/app/api/agents/versions/route.js.nft.json +1 -0
  16. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -0
  17. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/app/update-check/route.js +1 -1
  19. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  21. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  22. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  24. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  25. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/assistant/messages/route.js +1 -1
  27. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  28. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/assistant/session/route.js +1 -1
  30. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  31. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/assistant/start/route.js +2 -2
  33. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  34. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/assistant/terminal/route.js +1 -1
  36. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  37. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/assistant/tools/route.js +1 -1
  39. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  40. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/capabilities/route.js +1 -1
  45. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/daily-summary/route.js +1 -1
  47. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  48. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  50. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  51. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
  53. package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
  54. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  56. package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
  57. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/external-apps/route.js +1 -1
  59. package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
  60. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/fs/browse/route.js +1 -7
  62. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
  63. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/fs/recent-paths/route.js +1 -7
  65. package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
  66. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  68. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  69. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  71. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  72. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  74. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  75. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/metrics/vibe/route.js +2 -2
  77. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
  78. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/push/escalation/route.js +7 -1
  81. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  82. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  84. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  85. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/push/vapid/route.js +7 -1
  87. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  88. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/repositories/[id]/route.js +1 -1
  91. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  92. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  94. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +1 -1
  95. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  97. package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +1 -1
  98. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  100. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  101. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/repositories/clone/route.js +1 -1
  103. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  104. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/repositories/excluded/route.js +1 -1
  106. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  107. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/repositories/restore/route.js +1 -1
  109. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  110. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/repositories/route.js +1 -1
  112. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  113. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/repositories/scan/route.js +1 -1
  115. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  116. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/repositories/sync/route.js +1 -1
  118. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  119. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/repositories/validate-path/route.js +1 -1
  121. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
  122. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/settings/default-agents/route.js +1 -0
  124. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -0
  125. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -0
  126. package/.next/server/app/api/sidebar/group-order/route.js +1 -7
  127. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  128. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/skills/[id]/route.js +1 -1
  130. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  131. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/skills/installations/route.js +2 -2
  133. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  134. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/skills/operations/route.js +2 -2
  136. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
  137. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/skills/reindex/route.js +1 -1
  139. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
  140. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/skills/route.js +1 -1
  142. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  143. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/slash-commands/route.js +1 -1
  145. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  146. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/tasks/[taskId]/cancel/route.js +1 -1
  148. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  149. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  151. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
  152. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/templates/[id]/route.js +2 -2
  154. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  155. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/templates/route.js +2 -2
  157. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  158. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/todos/route.js +1 -1
  160. package/.next/server/app/api/todos/route.js.nft.json +1 -1
  161. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  163. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
  164. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/verification/runs/route.js +1 -1
  166. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
  167. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  173. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  176. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +2 -2
  181. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  182. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -2
  184. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  185. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
  188. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  191. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  193. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  197. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  200. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  206. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  218. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  221. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  233. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  236. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  239. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  242. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  245. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  248. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  251. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  254. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  257. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  260. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  263. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  266. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  269. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  272. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  275. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  278. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  279. package/.next/server/app/api/worktrees/[id]/logs/route.js +2 -2
  280. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  281. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +3 -3
  283. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  284. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  286. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  287. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  289. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  290. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  291. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  293. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  294. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
  296. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  298. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  299. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  301. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  302. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  304. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  305. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  306. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  307. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
  308. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  309. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  310. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  311. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  312. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  313. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  314. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  315. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  316. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  317. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  318. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  319. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  320. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  321. package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
  322. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  323. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  324. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  325. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  326. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  327. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -7
  328. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  329. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  330. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
  331. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  332. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  333. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  334. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  335. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  336. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  337. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  338. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  339. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  340. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  341. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  342. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  343. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  344. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  345. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
  346. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
  347. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  348. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  349. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  350. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  351. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  352. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  353. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  354. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  355. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  356. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  357. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  358. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  359. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  360. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  361. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
  362. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  363. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  364. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  365. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  366. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  367. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  368. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  369. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  370. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  371. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  372. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  373. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  374. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  375. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  376. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  377. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  378. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  379. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  380. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  381. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  382. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  383. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  384. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  385. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  386. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  387. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  388. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  389. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  390. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +2 -0
  391. package/.next/server/app/api/worktrees/[id]/verify/config/route.js.nft.json +1 -0
  392. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -0
  393. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  394. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  395. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  396. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -0
  397. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -0
  398. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -0
  399. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  400. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
  401. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  402. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  403. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
  404. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  405. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  406. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  407. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  408. package/.next/server/app/api/worktrees/apply-default-agents/route.js +1 -0
  409. package/.next/server/app/api/worktrees/apply-default-agents/route.js.nft.json +1 -0
  410. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -0
  411. package/.next/server/app/api/worktrees/route.js +1 -1
  412. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  413. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  414. package/.next/server/app/chat/page.js +2 -2
  415. package/.next/server/app/chat/page.js.nft.json +1 -1
  416. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  417. package/.next/server/app/login/page.js +2 -2
  418. package/.next/server/app/login/page.js.nft.json +1 -1
  419. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  420. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  421. package/.next/server/app/more/page.js +2 -2
  422. package/.next/server/app/more/page.js.nft.json +1 -1
  423. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  424. package/.next/server/app/offline/page.js.nft.json +1 -1
  425. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  426. package/.next/server/app/page.js +1 -1
  427. package/.next/server/app/page.js.nft.json +1 -1
  428. package/.next/server/app/page_client-reference-manifest.js +1 -1
  429. package/.next/server/app/proxy/[...path]/route.js +1 -1
  430. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  431. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  432. package/.next/server/app/repositories/page.js +2 -2
  433. package/.next/server/app/repositories/page.js.nft.json +1 -1
  434. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  435. package/.next/server/app/review/page.js +1 -1
  436. package/.next/server/app/review/page.js.nft.json +1 -1
  437. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  438. package/.next/server/app/sessions/page.js +1 -1
  439. package/.next/server/app/sessions/page.js.nft.json +1 -1
  440. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  441. package/.next/server/app/skills/[skillId]/page.js +2 -2
  442. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  443. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  444. package/.next/server/app/skills/installed/page.js +2 -2
  445. package/.next/server/app/skills/installed/page.js.nft.json +1 -1
  446. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  447. package/.next/server/app/skills/page.js +2 -2
  448. package/.next/server/app/skills/page.js.nft.json +1 -1
  449. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  450. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
  451. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  452. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  453. package/.next/server/app/worktrees/[id]/page.js +12 -12
  454. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  455. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  456. package/.next/server/app/worktrees/[id]/terminal/page.js +3 -3
  457. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  458. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  459. package/.next/server/app-paths-manifest.json +32 -26
  460. package/.next/server/chunks/1058.js +1 -1
  461. package/.next/server/chunks/1068.js +1 -1
  462. package/.next/server/chunks/1341.js +1 -0
  463. package/.next/server/chunks/1501.js +5 -0
  464. package/.next/server/chunks/1886.js +3 -4
  465. package/.next/server/chunks/2119.js +1 -1
  466. package/.next/server/chunks/2198.js +1 -0
  467. package/.next/server/chunks/221.js +7 -1
  468. package/.next/server/chunks/2445.js +1 -1
  469. package/.next/server/chunks/2759.js +1 -1
  470. package/.next/server/chunks/3543.js +1 -1
  471. package/.next/server/chunks/3558.js +1 -1
  472. package/.next/server/chunks/3707.js +15 -0
  473. package/.next/server/chunks/3722.js +25 -1
  474. package/.next/server/chunks/3869.js +1 -0
  475. package/.next/server/chunks/3945.js +1 -1
  476. package/.next/server/chunks/4299.js +1 -1
  477. package/.next/server/chunks/4390.js +1 -0
  478. package/.next/server/chunks/4393.js +1 -1
  479. package/.next/server/chunks/5017.js +1 -1
  480. package/.next/server/chunks/5164.js +1 -1
  481. package/.next/server/chunks/5571.js +1 -1
  482. package/.next/server/chunks/6130.js +1 -1
  483. package/.next/server/chunks/6285.js +1 -1
  484. package/.next/server/chunks/6781.js +1 -1
  485. package/.next/server/chunks/7366.js +5 -0
  486. package/.next/server/chunks/7824.js +1 -1
  487. package/.next/server/chunks/7905.js +1 -1
  488. package/.next/server/chunks/8118.js +1 -0
  489. package/.next/server/chunks/848.js +1 -1
  490. package/.next/server/chunks/880.js +3 -3
  491. package/.next/server/chunks/8800.js +3 -0
  492. package/.next/server/chunks/9123.js +2 -2
  493. package/.next/server/chunks/9508.js +1 -1
  494. package/.next/server/chunks/9627.js +30 -24
  495. package/.next/server/middleware-build-manifest.js +1 -1
  496. package/.next/server/middleware-manifest.json +5 -5
  497. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  498. package/.next/server/pages/500.html +1 -1
  499. package/.next/server/server-reference-manifest.json +1 -1
  500. package/.next/static/0YoRrahue4Vchxg1z83IQ/_buildManifest.js +1 -0
  501. package/.next/static/chunks/1379-af7af9e08f47c979.js +1 -0
  502. package/.next/static/chunks/{2053-c0e931eb4391baa1.js → 2053-3f299a7a2c7d6767.js} +1 -1
  503. package/.next/static/chunks/3922.9c1ec01fff819c88.js +1 -0
  504. package/.next/static/chunks/{3968-8d8ca15657748bfb.js → 4882-388e94fe0a03c2ba.js} +1 -1
  505. package/.next/static/chunks/5229-b2a81bb8fb5c19e9.js +1 -0
  506. package/.next/static/chunks/6381-9ba5198c0a6ff197.js +1 -0
  507. package/.next/static/chunks/8019-f8e73c1fb5f6f0d3.js +1 -0
  508. package/.next/static/chunks/{1188-8567ee5ecfef02ee.js → 8593-fa0eb2802e0ce68a.js} +1 -1
  509. package/.next/static/chunks/app/api/agents/update/route-1c30fb8d4d6fa6ef.js +1 -0
  510. package/.next/static/chunks/app/api/agents/versions/route-1c30fb8d4d6fa6ef.js +1 -0
  511. package/.next/static/chunks/app/api/app/update/route-1c30fb8d4d6fa6ef.js +1 -0
  512. package/.next/static/chunks/app/api/app/update-check/route-1c30fb8d4d6fa6ef.js +1 -0
  513. package/.next/static/chunks/app/api/assistant/conversation/route-1c30fb8d4d6fa6ef.js +1 -0
  514. package/.next/static/chunks/app/api/assistant/current-output/route-1c30fb8d4d6fa6ef.js +1 -0
  515. package/.next/static/chunks/app/api/assistant/messages/route-1c30fb8d4d6fa6ef.js +1 -0
  516. package/.next/static/chunks/app/api/assistant/session/route-1c30fb8d4d6fa6ef.js +1 -0
  517. package/.next/static/chunks/app/api/assistant/start/route-1c30fb8d4d6fa6ef.js +1 -0
  518. package/.next/static/chunks/app/api/assistant/terminal/route-1c30fb8d4d6fa6ef.js +1 -0
  519. package/.next/static/chunks/app/api/assistant/tools/route-1c30fb8d4d6fa6ef.js +1 -0
  520. package/.next/static/chunks/app/api/auth/login/route-1c30fb8d4d6fa6ef.js +1 -0
  521. package/.next/static/chunks/app/api/auth/logout/route-1c30fb8d4d6fa6ef.js +1 -0
  522. package/.next/static/chunks/app/api/auth/status/route-1c30fb8d4d6fa6ef.js +1 -0
  523. package/.next/static/chunks/app/api/capabilities/route-1c30fb8d4d6fa6ef.js +1 -0
  524. package/.next/static/chunks/app/api/daily-summary/route-1c30fb8d4d6fa6ef.js +1 -0
  525. package/.next/static/chunks/app/api/daily-summary/status/route-1c30fb8d4d6fa6ef.js +1 -0
  526. package/.next/static/chunks/app/api/external-apps/[id]/health/route-1c30fb8d4d6fa6ef.js +1 -0
  527. package/.next/static/chunks/app/api/external-apps/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  528. package/.next/static/chunks/app/api/external-apps/route-1c30fb8d4d6fa6ef.js +1 -0
  529. package/.next/static/chunks/app/api/fs/browse/route-1c30fb8d4d6fa6ef.js +1 -0
  530. package/.next/static/chunks/app/api/fs/recent-paths/route-1c30fb8d4d6fa6ef.js +1 -0
  531. package/.next/static/chunks/app/api/hooks/agent-event/route-1c30fb8d4d6fa6ef.js +1 -0
  532. package/.next/static/chunks/app/api/hooks/claude-done/route-1c30fb8d4d6fa6ef.js +1 -0
  533. package/.next/static/chunks/app/api/hooks/permission-request/route-1c30fb8d4d6fa6ef.js +1 -0
  534. package/.next/static/chunks/app/api/metrics/vibe/route-1c30fb8d4d6fa6ef.js +1 -0
  535. package/.next/static/chunks/app/api/ollama/models/route-1c30fb8d4d6fa6ef.js +1 -0
  536. package/.next/static/chunks/app/api/push/escalation/route-1c30fb8d4d6fa6ef.js +1 -0
  537. package/.next/static/chunks/app/api/push/subscriptions/route-1c30fb8d4d6fa6ef.js +1 -0
  538. package/.next/static/chunks/app/api/push/vapid/route-1c30fb8d4d6fa6ef.js +1 -0
  539. package/.next/static/chunks/app/api/remote/pair/route-1c30fb8d4d6fa6ef.js +1 -0
  540. package/.next/static/chunks/app/api/repositories/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  541. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-1c30fb8d4d6fa6ef.js +1 -0
  542. package/.next/static/chunks/app/api/repositories/[id]/todos/route-1c30fb8d4d6fa6ef.js +1 -0
  543. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-1c30fb8d4d6fa6ef.js +1 -0
  544. package/.next/static/chunks/app/api/repositories/clone/route-1c30fb8d4d6fa6ef.js +1 -0
  545. package/.next/static/chunks/app/api/repositories/excluded/route-1c30fb8d4d6fa6ef.js +1 -0
  546. package/.next/static/chunks/app/api/repositories/restore/route-1c30fb8d4d6fa6ef.js +1 -0
  547. package/.next/static/chunks/app/api/repositories/route-1c30fb8d4d6fa6ef.js +1 -0
  548. package/.next/static/chunks/app/api/repositories/scan/route-1c30fb8d4d6fa6ef.js +1 -0
  549. package/.next/static/chunks/app/api/repositories/sync/route-1c30fb8d4d6fa6ef.js +1 -0
  550. package/.next/static/chunks/app/api/repositories/validate-path/route-1c30fb8d4d6fa6ef.js +1 -0
  551. package/.next/static/chunks/app/api/settings/default-agents/route-1c30fb8d4d6fa6ef.js +1 -0
  552. package/.next/static/chunks/app/api/sidebar/group-order/route-1c30fb8d4d6fa6ef.js +1 -0
  553. package/.next/static/chunks/app/api/skills/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  554. package/.next/static/chunks/app/api/skills/installations/route-1c30fb8d4d6fa6ef.js +1 -0
  555. package/.next/static/chunks/app/api/skills/operations/route-1c30fb8d4d6fa6ef.js +1 -0
  556. package/.next/static/chunks/app/api/skills/reindex/route-1c30fb8d4d6fa6ef.js +1 -0
  557. package/.next/static/chunks/app/api/skills/route-1c30fb8d4d6fa6ef.js +1 -0
  558. package/.next/static/chunks/app/api/slash-commands/route-1c30fb8d4d6fa6ef.js +1 -0
  559. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-1c30fb8d4d6fa6ef.js +1 -0
  560. package/.next/static/chunks/app/api/tasks/[taskId]/route-1c30fb8d4d6fa6ef.js +1 -0
  561. package/.next/static/chunks/app/api/templates/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  562. package/.next/static/chunks/app/api/templates/route-1c30fb8d4d6fa6ef.js +1 -0
  563. package/.next/static/chunks/app/api/todos/route-1c30fb8d4d6fa6ef.js +1 -0
  564. package/.next/static/chunks/app/api/verification/runs/[runId]/route-1c30fb8d4d6fa6ef.js +1 -0
  565. package/.next/static/chunks/app/api/verification/runs/route-1c30fb8d4d6fa6ef.js +1 -0
  566. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-1c30fb8d4d6fa6ef.js +1 -0
  567. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-1c30fb8d4d6fa6ef.js +1 -0
  568. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-1c30fb8d4d6fa6ef.js +1 -0
  569. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-1c30fb8d4d6fa6ef.js +1 -0
  570. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-1c30fb8d4d6fa6ef.js +1 -0
  571. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-1c30fb8d4d6fa6ef.js +1 -0
  572. package/.next/static/chunks/app/api/worktrees/[id]/env/route-1c30fb8d4d6fa6ef.js +1 -0
  573. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-1c30fb8d4d6fa6ef.js +1 -0
  574. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-1c30fb8d4d6fa6ef.js +1 -0
  575. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
  576. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-1c30fb8d4d6fa6ef.js +1 -0
  577. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-1c30fb8d4d6fa6ef.js +1 -0
  578. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-1c30fb8d4d6fa6ef.js +1 -0
  579. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-1c30fb8d4d6fa6ef.js +1 -0
  580. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-1c30fb8d4d6fa6ef.js +1 -0
  581. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-1c30fb8d4d6fa6ef.js +1 -0
  582. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-1c30fb8d4d6fa6ef.js +1 -0
  583. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-1c30fb8d4d6fa6ef.js +1 -0
  584. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-1c30fb8d4d6fa6ef.js +1 -0
  585. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-1c30fb8d4d6fa6ef.js +1 -0
  586. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-1c30fb8d4d6fa6ef.js +1 -0
  587. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-1c30fb8d4d6fa6ef.js +1 -0
  588. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-1c30fb8d4d6fa6ef.js +1 -0
  589. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-1c30fb8d4d6fa6ef.js +1 -0
  590. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-1c30fb8d4d6fa6ef.js +1 -0
  591. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-1c30fb8d4d6fa6ef.js +1 -0
  592. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-1c30fb8d4d6fa6ef.js +1 -0
  593. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-1c30fb8d4d6fa6ef.js +1 -0
  594. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-1c30fb8d4d6fa6ef.js +1 -0
  595. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-1c30fb8d4d6fa6ef.js +1 -0
  596. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-1c30fb8d4d6fa6ef.js +1 -0
  597. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-1c30fb8d4d6fa6ef.js +1 -0
  598. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-1c30fb8d4d6fa6ef.js +1 -0
  599. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-1c30fb8d4d6fa6ef.js +1 -0
  600. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-1c30fb8d4d6fa6ef.js +1 -0
  601. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-1c30fb8d4d6fa6ef.js +1 -0
  602. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-1c30fb8d4d6fa6ef.js +1 -0
  603. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-1c30fb8d4d6fa6ef.js +1 -0
  604. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-1c30fb8d4d6fa6ef.js +1 -0
  605. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-1c30fb8d4d6fa6ef.js +1 -0
  606. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-1c30fb8d4d6fa6ef.js +1 -0
  607. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-1c30fb8d4d6fa6ef.js +1 -0
  608. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-1c30fb8d4d6fa6ef.js +1 -0
  609. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-1c30fb8d4d6fa6ef.js +1 -0
  610. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-1c30fb8d4d6fa6ef.js +1 -0
  611. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-1c30fb8d4d6fa6ef.js +1 -0
  612. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-1c30fb8d4d6fa6ef.js +1 -0
  613. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-1c30fb8d4d6fa6ef.js +1 -0
  614. package/.next/static/chunks/app/api/worktrees/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  615. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-1c30fb8d4d6fa6ef.js +1 -0
  616. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-1c30fb8d4d6fa6ef.js +1 -0
  617. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-1c30fb8d4d6fa6ef.js +1 -0
  618. package/.next/static/chunks/app/api/worktrees/[id]/search/route-1c30fb8d4d6fa6ef.js +1 -0
  619. package/.next/static/chunks/app/api/worktrees/[id]/send/route-1c30fb8d4d6fa6ef.js +1 -0
  620. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-1c30fb8d4d6fa6ef.js +1 -0
  621. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-1c30fb8d4d6fa6ef.js +1 -0
  622. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-1c30fb8d4d6fa6ef.js +1 -0
  623. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-1c30fb8d4d6fa6ef.js +1 -0
  624. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-1c30fb8d4d6fa6ef.js +1 -0
  625. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-1c30fb8d4d6fa6ef.js +1 -0
  626. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-1c30fb8d4d6fa6ef.js +1 -0
  627. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-1c30fb8d4d6fa6ef.js +1 -0
  628. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-1c30fb8d4d6fa6ef.js +1 -0
  629. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-1c30fb8d4d6fa6ef.js +1 -0
  630. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-1c30fb8d4d6fa6ef.js +1 -0
  631. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-1c30fb8d4d6fa6ef.js +1 -0
  632. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-1c30fb8d4d6fa6ef.js +1 -0
  633. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-1c30fb8d4d6fa6ef.js +1 -0
  634. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-1c30fb8d4d6fa6ef.js +1 -0
  635. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-1c30fb8d4d6fa6ef.js +1 -0
  636. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-1c30fb8d4d6fa6ef.js +1 -0
  637. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
  638. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-1c30fb8d4d6fa6ef.js +1 -0
  639. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
  640. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-1c30fb8d4d6fa6ef.js +1 -0
  641. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-1c30fb8d4d6fa6ef.js +1 -0
  642. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-1c30fb8d4d6fa6ef.js +1 -0
  643. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-1c30fb8d4d6fa6ef.js +1 -0
  644. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-1c30fb8d4d6fa6ef.js +1 -0
  645. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-1c30fb8d4d6fa6ef.js +1 -0
  646. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-1c30fb8d4d6fa6ef.js +1 -0
  647. package/.next/static/chunks/app/api/worktrees/route-1c30fb8d4d6fa6ef.js +1 -0
  648. package/.next/static/chunks/app/chat/{page-231df45127e876c2.js → page-9aa2011410895b0d.js} +1 -1
  649. package/.next/static/chunks/app/login/{page-03659dded846ef1d.js → page-af7241bb4c4a8e59.js} +1 -1
  650. package/.next/static/chunks/app/manifest.webmanifest/route-1c30fb8d4d6fa6ef.js +1 -0
  651. package/.next/static/chunks/app/more/page-75d3783da0d49a25.js +1 -0
  652. package/.next/static/chunks/app/{page-0305431f43195431.js → page-214f7ffa13a0cf10.js} +1 -1
  653. package/.next/static/chunks/app/proxy/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
  654. package/.next/static/chunks/app/repositories/{page-ae8fa55749976f79.js → page-4951cac905e50224.js} +1 -1
  655. package/.next/static/chunks/app/review/page-a0899b2d285318c3.js +1 -0
  656. package/.next/static/chunks/app/sessions/page-fb36145ec732092a.js +1 -0
  657. package/.next/static/chunks/app/skills/[skillId]/{page-aaf0bcb1dfb558b9.js → page-9099e26b60442873.js} +1 -1
  658. package/.next/static/chunks/app/skills/installed/{page-dafc486410e839b7.js → page-182e32368696d824.js} +1 -1
  659. package/.next/static/chunks/app/skills/{page-9e3c91da31514893.js → page-d3fdc88239ebe0ab.js} +1 -1
  660. package/.next/static/chunks/app/worktrees/[id]/files/[...path]/{page-90f96977c741bbf8.js → page-f3361237420719b4.js} +1 -1
  661. package/.next/static/chunks/app/worktrees/[id]/layout-1c30fb8d4d6fa6ef.js +1 -0
  662. package/.next/static/chunks/app/worktrees/[id]/page-ce6279d581d1df95.js +1 -0
  663. package/.next/static/chunks/{webpack-7e79064bfce988d7.js → webpack-9f75198882fdaf08.js} +1 -1
  664. package/.next/static/css/b326c8a734e1928e.css +1 -0
  665. package/.next/trace +13 -13
  666. package/.next/types/app/api/agents/update/route.ts +347 -0
  667. package/.next/types/app/api/agents/versions/route.ts +347 -0
  668. package/.next/types/app/api/settings/default-agents/route.ts +347 -0
  669. package/.next/types/app/api/worktrees/[id]/verify/config/route.ts +347 -0
  670. package/.next/types/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.ts +347 -0
  671. package/.next/types/app/api/worktrees/apply-default-agents/route.ts +347 -0
  672. package/.next/types/routes.d.ts +7 -1
  673. package/.next/types/validator.ts +54 -0
  674. package/dist/cli/commands/agents.d.ts +35 -0
  675. package/dist/cli/commands/agents.d.ts.map +1 -0
  676. package/dist/cli/commands/agents.js +212 -0
  677. package/dist/cli/commands/ls.d.ts.map +1 -1
  678. package/dist/cli/commands/ls.js +18 -0
  679. package/dist/cli/commands/verify.d.ts.map +1 -1
  680. package/dist/cli/commands/verify.js +111 -0
  681. package/dist/cli/config/cli-dependencies.d.ts.map +1 -1
  682. package/dist/cli/config/cli-dependencies.js +11 -0
  683. package/dist/cli/docs/agent-operations.d.ts +1 -1
  684. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  685. package/dist/cli/docs/agent-operations.js +30 -0
  686. package/dist/cli/program.d.ts.map +1 -1
  687. package/dist/cli/program.js +6 -0
  688. package/dist/cli/types/api-responses.d.ts +58 -0
  689. package/dist/cli/types/api-responses.d.ts.map +1 -1
  690. package/dist/cli/types/index.d.ts +8 -0
  691. package/dist/cli/types/index.d.ts.map +1 -1
  692. package/dist/cli/utils/preflight.d.ts.map +1 -1
  693. package/dist/cli/utils/preflight.js +6 -0
  694. package/dist/config/system-directories.d.ts +101 -0
  695. package/dist/config/system-directories.d.ts.map +1 -0
  696. package/dist/config/system-directories.js +211 -0
  697. package/dist/lib/cli-tools/types.d.ts +15 -1
  698. package/dist/lib/cli-tools/types.d.ts.map +1 -1
  699. package/dist/lib/detection/status-reason.d.ts +92 -0
  700. package/dist/lib/detection/status-reason.d.ts.map +1 -0
  701. package/dist/lib/detection/status-reason.js +94 -0
  702. package/dist/lib/updates/agent-updater.d.ts +247 -0
  703. package/dist/lib/updates/agent-updater.d.ts.map +1 -0
  704. package/dist/lib/updates/agent-updater.js +373 -0
  705. package/dist/lib/updates/agent-versions.d.ts +77 -0
  706. package/dist/lib/updates/agent-versions.d.ts.map +1 -0
  707. package/dist/lib/updates/agent-versions.js +138 -0
  708. package/dist/lib/updates/codex-version.d.ts +184 -0
  709. package/dist/lib/updates/codex-version.d.ts.map +1 -0
  710. package/dist/lib/updates/codex-version.js +215 -0
  711. package/dist/lib/verification/verify-config.d.ts +202 -0
  712. package/dist/lib/verification/verify-config.d.ts.map +1 -0
  713. package/dist/lib/verification/verify-config.js +429 -0
  714. package/dist/lib/verification/verify-draft.d.ts +182 -0
  715. package/dist/lib/verification/verify-draft.d.ts.map +1 -0
  716. package/dist/lib/verification/verify-draft.js +570 -0
  717. package/dist/server/src/cli/types/api-responses.js +9 -0
  718. package/dist/server/src/config/cli-tool-timing-config.js +15 -1
  719. package/dist/server/src/config/codex-update-dialog-config.js +154 -0
  720. package/dist/server/src/config/default-agents.js +138 -0
  721. package/dist/server/src/lib/cli-tools/antigravity.js +36 -12
  722. package/dist/server/src/lib/cli-tools/base.js +131 -0
  723. package/dist/server/src/lib/cli-tools/codex.js +350 -100
  724. package/dist/server/src/lib/cli-tools/copilot.js +34 -10
  725. package/dist/server/src/lib/cli-tools/gemini.js +34 -10
  726. package/dist/server/src/lib/cli-tools/liveness-spec.js +214 -0
  727. package/dist/server/src/lib/cli-tools/opencode.js +72 -19
  728. package/dist/server/src/lib/cli-tools/session-liveness.js +64 -0
  729. package/dist/server/src/lib/cli-tools/vibe-local.js +30 -10
  730. package/dist/server/src/lib/db/app-settings-db.js +142 -0
  731. package/dist/server/src/lib/db/worktree-db.js +178 -3
  732. package/dist/server/src/lib/detection/status-reason.js +17 -0
  733. package/dist/server/src/lib/detection/tool-liveness.js +233 -0
  734. package/dist/server/src/lib/detection/version-probes.js +290 -0
  735. package/dist/server/src/lib/git/worktrees.js +10 -0
  736. package/dist/server/src/lib/repo-config/agents-config.js +298 -0
  737. package/dist/server/src/lib/selected-agents-validator.js +93 -23
  738. package/dist/server/src/lib/session/claude-session.js +39 -108
  739. package/dist/server/src/lib/tmux/tmux.js +29 -0
  740. package/dist/server/src/lib/updates/agent-updater.js +373 -0
  741. package/dist/server/src/lib/updates/agent-versions.js +138 -0
  742. package/dist/server/src/lib/updates/codex-version.js +215 -0
  743. package/dist/server/src/lib/updates/index.js +42 -0
  744. package/dist/server/src/lib/verification/gate-runner.js +298 -37
  745. package/dist/server/src/lib/verification/machine-lock.js +11 -0
  746. package/dist/server/src/lib/verification/run-verdict-vocabulary.js +151 -0
  747. package/dist/server/src/lib/verification/verify-config.js +33 -0
  748. package/dist/server/src/types/sidebar.js +40 -9
  749. package/dist/types/cli-tool-contracts.d.ts +119 -0
  750. package/dist/types/cli-tool-contracts.d.ts.map +1 -1
  751. package/package.json +1 -1
  752. package/.next/server/chunks/1601.js +0 -7
  753. package/.next/server/chunks/222.js +0 -1
  754. package/.next/server/chunks/2366.js +0 -1
  755. package/.next/server/chunks/4689.js +0 -25
  756. package/.next/server/chunks/5089.js +0 -1
  757. package/.next/server/chunks/6274.js +0 -14
  758. package/.next/server/chunks/9067.js +0 -1
  759. package/.next/server/chunks/9373.js +0 -9
  760. package/.next/static/Dvfs4ZThl5vBhJGP-ZQuJ/_buildManifest.js +0 -1
  761. package/.next/static/chunks/3361-aa1b6e7c1d7eeeb4.js +0 -1
  762. package/.next/static/chunks/3922.0d2e64daf9f187da.js +0 -1
  763. package/.next/static/chunks/5229-580b581fce5aeb52.js +0 -1
  764. package/.next/static/chunks/6381-9a929249196a0e77.js +0 -1
  765. package/.next/static/chunks/app/api/app/update/route-e3626364434d521b.js +0 -1
  766. package/.next/static/chunks/app/api/app/update-check/route-e3626364434d521b.js +0 -1
  767. package/.next/static/chunks/app/api/assistant/conversation/route-e3626364434d521b.js +0 -1
  768. package/.next/static/chunks/app/api/assistant/current-output/route-e3626364434d521b.js +0 -1
  769. package/.next/static/chunks/app/api/assistant/messages/route-e3626364434d521b.js +0 -1
  770. package/.next/static/chunks/app/api/assistant/session/route-e3626364434d521b.js +0 -1
  771. package/.next/static/chunks/app/api/assistant/start/route-e3626364434d521b.js +0 -1
  772. package/.next/static/chunks/app/api/assistant/terminal/route-e3626364434d521b.js +0 -1
  773. package/.next/static/chunks/app/api/assistant/tools/route-e3626364434d521b.js +0 -1
  774. package/.next/static/chunks/app/api/auth/login/route-e3626364434d521b.js +0 -1
  775. package/.next/static/chunks/app/api/auth/logout/route-e3626364434d521b.js +0 -1
  776. package/.next/static/chunks/app/api/auth/status/route-e3626364434d521b.js +0 -1
  777. package/.next/static/chunks/app/api/capabilities/route-e3626364434d521b.js +0 -1
  778. package/.next/static/chunks/app/api/daily-summary/route-e3626364434d521b.js +0 -1
  779. package/.next/static/chunks/app/api/daily-summary/status/route-e3626364434d521b.js +0 -1
  780. package/.next/static/chunks/app/api/external-apps/[id]/health/route-e3626364434d521b.js +0 -1
  781. package/.next/static/chunks/app/api/external-apps/[id]/route-e3626364434d521b.js +0 -1
  782. package/.next/static/chunks/app/api/external-apps/route-e3626364434d521b.js +0 -1
  783. package/.next/static/chunks/app/api/fs/browse/route-e3626364434d521b.js +0 -1
  784. package/.next/static/chunks/app/api/fs/recent-paths/route-e3626364434d521b.js +0 -1
  785. package/.next/static/chunks/app/api/hooks/agent-event/route-e3626364434d521b.js +0 -1
  786. package/.next/static/chunks/app/api/hooks/claude-done/route-e3626364434d521b.js +0 -1
  787. package/.next/static/chunks/app/api/hooks/permission-request/route-e3626364434d521b.js +0 -1
  788. package/.next/static/chunks/app/api/metrics/vibe/route-e3626364434d521b.js +0 -1
  789. package/.next/static/chunks/app/api/ollama/models/route-e3626364434d521b.js +0 -1
  790. package/.next/static/chunks/app/api/push/escalation/route-e3626364434d521b.js +0 -1
  791. package/.next/static/chunks/app/api/push/subscriptions/route-e3626364434d521b.js +0 -1
  792. package/.next/static/chunks/app/api/push/vapid/route-e3626364434d521b.js +0 -1
  793. package/.next/static/chunks/app/api/remote/pair/route-e3626364434d521b.js +0 -1
  794. package/.next/static/chunks/app/api/repositories/[id]/route-e3626364434d521b.js +0 -1
  795. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-e3626364434d521b.js +0 -1
  796. package/.next/static/chunks/app/api/repositories/[id]/todos/route-e3626364434d521b.js +0 -1
  797. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-e3626364434d521b.js +0 -1
  798. package/.next/static/chunks/app/api/repositories/clone/route-e3626364434d521b.js +0 -1
  799. package/.next/static/chunks/app/api/repositories/excluded/route-e3626364434d521b.js +0 -1
  800. package/.next/static/chunks/app/api/repositories/restore/route-e3626364434d521b.js +0 -1
  801. package/.next/static/chunks/app/api/repositories/route-e3626364434d521b.js +0 -1
  802. package/.next/static/chunks/app/api/repositories/scan/route-e3626364434d521b.js +0 -1
  803. package/.next/static/chunks/app/api/repositories/sync/route-e3626364434d521b.js +0 -1
  804. package/.next/static/chunks/app/api/repositories/validate-path/route-e3626364434d521b.js +0 -1
  805. package/.next/static/chunks/app/api/sidebar/group-order/route-e3626364434d521b.js +0 -1
  806. package/.next/static/chunks/app/api/skills/[id]/route-e3626364434d521b.js +0 -1
  807. package/.next/static/chunks/app/api/skills/installations/route-e3626364434d521b.js +0 -1
  808. package/.next/static/chunks/app/api/skills/operations/route-e3626364434d521b.js +0 -1
  809. package/.next/static/chunks/app/api/skills/reindex/route-e3626364434d521b.js +0 -1
  810. package/.next/static/chunks/app/api/skills/route-e3626364434d521b.js +0 -1
  811. package/.next/static/chunks/app/api/slash-commands/route-e3626364434d521b.js +0 -1
  812. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-e3626364434d521b.js +0 -1
  813. package/.next/static/chunks/app/api/tasks/[taskId]/route-e3626364434d521b.js +0 -1
  814. package/.next/static/chunks/app/api/templates/[id]/route-e3626364434d521b.js +0 -1
  815. package/.next/static/chunks/app/api/templates/route-e3626364434d521b.js +0 -1
  816. package/.next/static/chunks/app/api/todos/route-e3626364434d521b.js +0 -1
  817. package/.next/static/chunks/app/api/verification/runs/[runId]/route-e3626364434d521b.js +0 -1
  818. package/.next/static/chunks/app/api/verification/runs/route-e3626364434d521b.js +0 -1
  819. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-e3626364434d521b.js +0 -1
  820. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-e3626364434d521b.js +0 -1
  821. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-e3626364434d521b.js +0 -1
  822. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-e3626364434d521b.js +0 -1
  823. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-e3626364434d521b.js +0 -1
  824. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-e3626364434d521b.js +0 -1
  825. package/.next/static/chunks/app/api/worktrees/[id]/env/route-e3626364434d521b.js +0 -1
  826. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-e3626364434d521b.js +0 -1
  827. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-e3626364434d521b.js +0 -1
  828. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-e3626364434d521b.js +0 -1
  829. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-e3626364434d521b.js +0 -1
  830. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-e3626364434d521b.js +0 -1
  831. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-e3626364434d521b.js +0 -1
  832. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-e3626364434d521b.js +0 -1
  833. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-e3626364434d521b.js +0 -1
  834. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-e3626364434d521b.js +0 -1
  835. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-e3626364434d521b.js +0 -1
  836. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-e3626364434d521b.js +0 -1
  837. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-e3626364434d521b.js +0 -1
  838. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-e3626364434d521b.js +0 -1
  839. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-e3626364434d521b.js +0 -1
  840. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-e3626364434d521b.js +0 -1
  841. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-e3626364434d521b.js +0 -1
  842. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-e3626364434d521b.js +0 -1
  843. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-e3626364434d521b.js +0 -1
  844. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-e3626364434d521b.js +0 -1
  845. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-e3626364434d521b.js +0 -1
  846. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-e3626364434d521b.js +0 -1
  847. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-e3626364434d521b.js +0 -1
  848. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-e3626364434d521b.js +0 -1
  849. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-e3626364434d521b.js +0 -1
  850. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-e3626364434d521b.js +0 -1
  851. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-e3626364434d521b.js +0 -1
  852. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-e3626364434d521b.js +0 -1
  853. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-e3626364434d521b.js +0 -1
  854. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-e3626364434d521b.js +0 -1
  855. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-e3626364434d521b.js +0 -1
  856. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-e3626364434d521b.js +0 -1
  857. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-e3626364434d521b.js +0 -1
  858. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-e3626364434d521b.js +0 -1
  859. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-e3626364434d521b.js +0 -1
  860. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-e3626364434d521b.js +0 -1
  861. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-e3626364434d521b.js +0 -1
  862. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-e3626364434d521b.js +0 -1
  863. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-e3626364434d521b.js +0 -1
  864. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-e3626364434d521b.js +0 -1
  865. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-e3626364434d521b.js +0 -1
  866. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-e3626364434d521b.js +0 -1
  867. package/.next/static/chunks/app/api/worktrees/[id]/route-e3626364434d521b.js +0 -1
  868. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-e3626364434d521b.js +0 -1
  869. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-e3626364434d521b.js +0 -1
  870. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-e3626364434d521b.js +0 -1
  871. package/.next/static/chunks/app/api/worktrees/[id]/search/route-e3626364434d521b.js +0 -1
  872. package/.next/static/chunks/app/api/worktrees/[id]/send/route-e3626364434d521b.js +0 -1
  873. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-e3626364434d521b.js +0 -1
  874. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-e3626364434d521b.js +0 -1
  875. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-e3626364434d521b.js +0 -1
  876. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-e3626364434d521b.js +0 -1
  877. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-e3626364434d521b.js +0 -1
  878. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-e3626364434d521b.js +0 -1
  879. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-e3626364434d521b.js +0 -1
  880. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-e3626364434d521b.js +0 -1
  881. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-e3626364434d521b.js +0 -1
  882. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-e3626364434d521b.js +0 -1
  883. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-e3626364434d521b.js +0 -1
  884. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-e3626364434d521b.js +0 -1
  885. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-e3626364434d521b.js +0 -1
  886. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-e3626364434d521b.js +0 -1
  887. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-e3626364434d521b.js +0 -1
  888. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-e3626364434d521b.js +0 -1
  889. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-e3626364434d521b.js +0 -1
  890. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-e3626364434d521b.js +0 -1
  891. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-e3626364434d521b.js +0 -1
  892. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-e3626364434d521b.js +0 -1
  893. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-e3626364434d521b.js +0 -1
  894. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-e3626364434d521b.js +0 -1
  895. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-e3626364434d521b.js +0 -1
  896. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-e3626364434d521b.js +0 -1
  897. package/.next/static/chunks/app/api/worktrees/route-e3626364434d521b.js +0 -1
  898. package/.next/static/chunks/app/manifest.webmanifest/route-e3626364434d521b.js +0 -1
  899. package/.next/static/chunks/app/more/page-03867ab635d197c7.js +0 -1
  900. package/.next/static/chunks/app/proxy/[...path]/route-e3626364434d521b.js +0 -1
  901. package/.next/static/chunks/app/review/page-9a6d18ddcccbb63c.js +0 -1
  902. package/.next/static/chunks/app/sessions/page-4d5382b257077c14.js +0 -1
  903. package/.next/static/chunks/app/worktrees/[id]/layout-e3626364434d521b.js +0 -1
  904. package/.next/static/chunks/app/worktrees/[id]/page-817378dd7c580774.js +0 -1
  905. package/.next/static/css/6266bde3bce465a2.css +0 -1
  906. /package/.next/static/{Dvfs4ZThl5vBhJGP-ZQuJ → 0YoRrahue4Vchxg1z83IQ}/_ssgManifest.js +0 -0
@@ -18,6 +18,8 @@ exports.updateFavorite = updateFavorite;
18
18
  exports.updateStatus = updateStatus;
19
19
  exports.updateCliToolId = updateCliToolId;
20
20
  exports.updateSelectedAgents = updateSelectedAgents;
21
+ exports.findUnchangedAgentWorktrees = findUnchangedAgentWorktrees;
22
+ exports.applySelectedAgentsToUnchanged = applySelectedAgentsToUnchanged;
21
23
  exports.updateVibeLocalModel = updateVibeLocalModel;
22
24
  exports.updateVibeLocalContextWindow = updateVibeLocalContextWindow;
23
25
  exports.saveInitialBranch = saveInitialBranch;
@@ -29,6 +31,8 @@ exports.getWorktreesByRepository = getWorktreesByRepository;
29
31
  exports.deleteRepositoryWorktrees = deleteRepositoryWorktrees;
30
32
  exports.deleteWorktreesByIds = deleteWorktreesByIds;
31
33
  const selected_agents_validator_1 = require("../../lib/selected-agents-validator");
34
+ const agents_config_1 = require("../../lib/repo-config/agents-config");
35
+ const app_settings_db_1 = require("./app-settings-db");
32
36
  const chat_db_1 = require("./chat-db");
33
37
  const worktree_id_rename_1 = require("./migrations/worktree-id-rename");
34
38
  /**
@@ -82,6 +86,38 @@ function getLastMessagesByCliBatch(db, worktreeIds) {
82
86
  }
83
87
  return result;
84
88
  }
89
+ /** Shared empty set, so the common "no repository declares anything" path allocates nothing. */
90
+ const EMPTY_ID_SET = new Set();
91
+ /**
92
+ * IDs of every worktree that already owns an `agent_instances` roster.
93
+ *
94
+ * One query for the whole list rather than one per row (Issue #2066): the
95
+ * sidebar poll must not grow N point queries. `agent_instances` holds a handful
96
+ * of rows per registered worktree, and only the distinct worktree ids are read.
97
+ */
98
+ function worktreeIdsWithAgentInstances(db) {
99
+ const rows = db
100
+ .prepare('SELECT DISTINCT worktree_id FROM agent_instances')
101
+ .all();
102
+ return new Set(rows.map((row) => row.worktree_id));
103
+ }
104
+ /** Whether one worktree already owns an `agent_instances` roster (Issue #2066). */
105
+ function hasAgentInstances(db, worktreeId) {
106
+ return (db.prepare('SELECT 1 FROM agent_instances WHERE worktree_id = ? LIMIT 1').get(worktreeId) !==
107
+ undefined);
108
+ }
109
+ /**
110
+ * The repository layer for ONE worktree, withheld when that worktree already
111
+ * owns a roster (Issue #2066). The single-row twin of the batch logic in
112
+ * `getWorktrees()`; see the long comment there for why the withholding exists
113
+ * and why it is narrowed to this layer.
114
+ */
115
+ function repoDefaultWithheldFromRoster(db, worktreeId, repositoryPath) {
116
+ const declared = (0, agents_config_1.getRepoDefaultSelectedAgents)(repositoryPath);
117
+ if (declared === null)
118
+ return null;
119
+ return hasAgentInstances(db, worktreeId) ? null : declared;
120
+ }
85
121
  /**
86
122
  * Get all worktrees sorted by updated_at (desc)
87
123
  * Optionally filter by repository path
@@ -111,6 +147,52 @@ function getWorktrees(db, repositoryPath) {
111
147
  // Batch fetch last messages for all worktrees (N+1 optimization)
112
148
  const worktreeIds = rows.map(row => row.id);
113
149
  const lastMessagesByCliMap = getLastMessagesByCliBatch(db, worktreeIds);
150
+ // Issue #2065: read the server-wide default ONCE. `upsertWorktree` never
151
+ // writes `selected_agents`, so on a scan/sync-populated install every row
152
+ // below takes the fallback path — resolving it per row would turn one point
153
+ // query into one per worktree on the sidebar's poll.
154
+ const appSettingsDefault = (0, app_settings_db_1.getDefaultSelectedAgents)(db);
155
+ // Issue #2066: the repository layer, resolved ONCE per distinct
156
+ // `repository_path` rather than per row. `getRepoDefaultSelectedAgents()` is
157
+ // itself served from a process-wide cache filled at sync — see its module
158
+ // header for why the read does not belong on this (polled) path.
159
+ const repoDefaults = new Map();
160
+ for (const repositoryPath of new Set(rows.map((row) => row.repository_path))) {
161
+ if (!repositoryPath)
162
+ continue;
163
+ repoDefaults.set(repositoryPath, (0, agents_config_1.getRepoDefaultSelectedAgents)(repositoryPath));
164
+ }
165
+ // Issue #2066: a worktree that ALREADY has an `agent_instances` roster is not
166
+ // offered the repository declaration.
167
+ //
168
+ // `resolveAgentInstances()` protects the roster itself with an early return,
169
+ // but `selectedAgents` is a SECOND channel: `/sessions` and the Review tab
170
+ // render `wt.selectedAgents ?? clientDefault` and never look at
171
+ // `agentInstances`. Without this, committing an `agents.yaml` would repaint
172
+ // the chips of a branch whose tabs it cannot and must not change — and the
173
+ // running agent would drop out of "active agents" because it is not in the
174
+ // declared list. `PATCH /api/worktrees/[id]` writes `agentInstances` and
175
+ // `selectedAgents` from independent branches, so "has a roster, column still
176
+ // NULL" is a state the product produces routinely, not an edge case.
177
+ //
178
+ // Deliberately narrowed to the repository layer. The `app_settings` layer has
179
+ // the same shape (#2065) and the same gap, but changing it is a change to
180
+ // #2065's behaviour; what #2066 has to answer for is that it widened the gap
181
+ // from "an admin who can reach server settings" to "anyone who can commit to
182
+ // the repository". See docs/design/repo-agents-config.md §2.
183
+ //
184
+ // The roster query runs only when some repository actually declares
185
+ // something, so an install with no `agents.yaml` anywhere issues exactly the
186
+ // queries it issued before this Issue.
187
+ const anyRepoDeclares = [...repoDefaults.values()].some((value) => value !== null);
188
+ const withRoster = anyRepoDeclares ? worktreeIdsWithAgentInstances(db) : EMPTY_ID_SET;
189
+ const repoDefaultFor = (row) => {
190
+ if (!row.repository_path)
191
+ return null;
192
+ if (withRoster.has(row.id))
193
+ return null;
194
+ return repoDefaults.get(row.repository_path) ?? null;
195
+ };
114
196
  return rows.map((row) => {
115
197
  const lastMessagesByCli = lastMessagesByCliMap.get(row.id) || {};
116
198
  return {
@@ -133,7 +215,7 @@ function getWorktrees(db, repositoryPath) {
133
215
  status: row.status || null,
134
216
  link: row.link || undefined,
135
217
  cliToolId: row.cli_tool_id ?? 'claude',
136
- selectedAgents: (0, selected_agents_validator_1.parseSelectedAgents)(row.selected_agents),
218
+ selectedAgents: (0, selected_agents_validator_1.parseSelectedAgents)(row.selected_agents, appSettingsDefault, repoDefaultFor(row)),
137
219
  vibeLocalModel: row.vibe_local_model ?? null,
138
220
  vibeLocalContextWindow: row.vibe_local_context_window ?? null,
139
221
  };
@@ -216,7 +298,10 @@ function getWorktreeById(db, id) {
216
298
  status: row.status || null,
217
299
  link: row.link || undefined,
218
300
  cliToolId: row.cli_tool_id ?? 'claude',
219
- selectedAgents: (0, selected_agents_validator_1.parseSelectedAgents)(row.selected_agents),
301
+ // Issue #2066: same layers, and the same withholding, as getWorktrees().
302
+ // The roster probe runs only when this repository actually declares
303
+ // something, so a tree with no `agents.yaml` issues no extra query.
304
+ selectedAgents: (0, selected_agents_validator_1.parseSelectedAgents)(row.selected_agents, (0, app_settings_db_1.getDefaultSelectedAgents)(db), repoDefaultWithheldFromRoster(db, row.id, row.repository_path)),
220
305
  vibeLocalModel: row.vibe_local_model ?? null,
221
306
  vibeLocalContextWindow: row.vibe_local_context_window ?? null,
222
307
  };
@@ -359,7 +444,7 @@ function updateCliToolId(db, id, cliToolId) {
359
444
  *
360
445
  * @param db - Database instance
361
446
  * @param id - Worktree ID
362
- * @param selectedAgents - Array of 2-4 CLIToolType values
447
+ * @param selectedAgents - Array of 2-6 CLIToolType values (MIN/MAX_SELECTED_AGENTS)
363
448
  */
364
449
  function updateSelectedAgents(db, id, selectedAgents) {
365
450
  const stmt = db.prepare(`
@@ -369,6 +454,96 @@ function updateSelectedAgents(db, id, selectedAgents) {
369
454
  `);
370
455
  stmt.run(JSON.stringify(selectedAgents), id);
371
456
  }
457
+ /**
458
+ * The worktrees of ONE repository whose agent list is still UNCHANGED by its
459
+ * user (Issue #2067).
460
+ *
461
+ * ## The repository argument is not optional, and that is the point
462
+ *
463
+ * The action this serves lives in the agent pane of ONE worktree, so its blast
464
+ * radius has to be the repository that worktree belongs to. An earlier revision
465
+ * of this function took no repository and scanned `worktrees` whole: pressing
466
+ * "apply to unchanged branches" from a worktree of repository B rewrote the
467
+ * unchanged worktrees of repository A as well. Requiring the argument is what
468
+ * makes that impossible to reintroduce by omission.
469
+ *
470
+ * ## "Unchanged"
471
+ *
472
+ * `selected_agents IS NULL` **and** no `agent_instances` row — deliberately the
473
+ * same two facts #2066 checks before it lets a repository declaration reach a
474
+ * worktree, checked with the same helper (`worktreeIdsWithAgentInstances`)
475
+ * rather than a second query that says the same thing. The two channels are
476
+ * independent: `PATCH /api/worktrees/[id]` writes `agentInstances` and
477
+ * `selectedAgents` from separate branches, so "has a roster, column still NULL"
478
+ * and "column set, no roster" are both states the product produces routinely,
479
+ * and a worktree in EITHER of them has been touched by a human.
480
+ *
481
+ * ## Why a declaring repository yields nothing
482
+ *
483
+ * `SELECTED_AGENTS_LAYERS` puts the `worktree` column ABOVE the repository file,
484
+ * so writing `selected_agents` onto a worktree of a repository that ships
485
+ * `.commandmate/agents.yaml` does not merely win once — it retires the
486
+ * declaration for that branch permanently, and editing the file afterwards has
487
+ * no effect and no explanation. A committed declaration is a more deliberate
488
+ * answer to "which agents does this branch open with" than a button press in one
489
+ * branch's settings pane, so the declaration wins and the caller is told why
490
+ * (`repoDeclares`) instead of being handed a count of zero it cannot explain.
491
+ *
492
+ * @param db - Database instance
493
+ * @param repositoryPath - The repository to scope to (`worktrees.repository_path`)
494
+ * @returns The scope, whether the repository declares, and the eligible IDs
495
+ */
496
+ function findUnchangedAgentWorktrees(db, repositoryPath) {
497
+ // Served from #2066's process-wide cache; see `agents-config.ts` for why this
498
+ // is not a filesystem probe on a hot path.
499
+ const repoDeclares = (0, agents_config_1.getRepoDefaultSelectedAgents)(repositoryPath) !== null;
500
+ if (repoDeclares) {
501
+ return { repositoryPath, repoDeclares, ids: [] };
502
+ }
503
+ const withRoster = worktreeIdsWithAgentInstances(db);
504
+ const rows = db
505
+ .prepare('SELECT id FROM worktrees WHERE repository_path = ? AND selected_agents IS NULL ORDER BY id ASC')
506
+ .all(repositoryPath);
507
+ return {
508
+ repositoryPath,
509
+ repoDeclares,
510
+ ids: rows.map((row) => row.id).filter((id) => !withRoster.has(id)),
511
+ };
512
+ }
513
+ /**
514
+ * Write `selectedAgents` onto every worktree {@link findUnchangedAgentWorktrees}
515
+ * reports for `repositoryPath`, in ONE transaction (Issue #2067).
516
+ *
517
+ * The eligible set is recomputed INSIDE the transaction rather than taken as an
518
+ * argument: the UI shows a count before it asks for confirmation, and the number
519
+ * it shows has to be the number of rows this actually writes. Passing the ids in
520
+ * would make the caller's snapshot authoritative and turn a worktree created
521
+ * between the count and the confirmation into a silent miss.
522
+ *
523
+ * The transaction is not decoration. Without it, a write that fails partway —
524
+ * a locked database, a constraint, a trigger — leaves a repository split between
525
+ * branches that took the new order and branches that did not, with nothing on
526
+ * screen saying which. `tests/unit/db/apply-default-agents-2067.test.ts` pins
527
+ * this by aborting a middle row and asserting the earlier ones rolled back.
528
+ *
529
+ * Rows are written through `updateSelectedAgents()` so the column's one writer
530
+ * stays its one writer.
531
+ *
532
+ * @param db - Database instance
533
+ * @param repositoryPath - The repository to scope to; never server-wide
534
+ * @param selectedAgents - Ordered, already-validated agents; `[0]` is the primary
535
+ * @returns The IDs that were written, in the order they were written
536
+ */
537
+ function applySelectedAgentsToUnchanged(db, repositoryPath, selectedAgents) {
538
+ const apply = db.transaction(() => {
539
+ const { ids } = findUnchangedAgentWorktrees(db, repositoryPath);
540
+ for (const id of ids) {
541
+ updateSelectedAgents(db, id, selectedAgents);
542
+ }
543
+ return ids;
544
+ });
545
+ return apply();
546
+ }
372
547
  /**
373
548
  * Update vibe_local_model for a worktree
374
549
  * Issue #368: Persists the user's Ollama model selection for vibe-local
@@ -56,6 +56,23 @@ exports.STATUS_REASON = {
56
56
  OPENCODE_RESPONSE_COMPLETE: 'opencode_response_complete',
57
57
  INPUT_PROMPT: 'input_prompt',
58
58
  NO_RECENT_OUTPUT: 'no_recent_output',
59
+ /**
60
+ * Issue #2070: the tmux session is there, and the TOOL is not.
61
+ *
62
+ * Published by `worktree-status-helper` when the liveness probe reads a bare
63
+ * shell prompt at the bottom of a pane whose agent quit, updated itself or
64
+ * crashed (`judgeToolLiveness`). It is the ONE reason on this list that
65
+ * accompanies `isRunning: false` — every other one describes a frame a live
66
+ * agent drew — which is exactly why it is worth a token of its own: without
67
+ * it the sidebar and `commandmate ls` render such a session as plain `idle`,
68
+ * indistinguishable from one that was never started, and the operator has no
69
+ * way to tell "start it" from "it died under you".
70
+ *
71
+ * ADDITIVE, in the strict sense: no existing reason's value or meaning
72
+ * changes, and no surface that does not know the token behaves differently —
73
+ * a reader that does not recognise it sees the same `idle` it saw before.
74
+ */
75
+ EXITED: 'exited',
59
76
  /**
60
77
  * A tool's own detector looked at this frame and recognised nothing
61
78
  * (Issue #1927, §6.1).
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ /**
3
+ * "Did the TOOL exit and leave a bare shell behind?" — the shared rule
4
+ * (Issue #2070).
5
+ *
6
+ * A tmux session outlives the process it was created for more often than the
7
+ * code used to admit. codex's own update dialog replaces codex with `npm
8
+ * install` and exits; `Ctrl+C` twice quits it; a crash does the same thing
9
+ * without asking. In each case `has-session` keeps answering yes, so `isRunning`
10
+ * stayed true, the sidebar kept its dot, and the next `send` sat in
11
+ * `waitForPrompt` until it timed out — recoverable only by killing the session
12
+ * by hand.
13
+ *
14
+ * CommandMate already had the answer to this, written for claude and reachable
15
+ * from exactly one `cliToolId === 'claude'` branch (`isSessionHealthy`). What
16
+ * was claude-specific about it was not the rule but the two patterns it was
17
+ * spelled in terms of. This module is that rule with the patterns lifted out
18
+ * into {@link ToolLivenessSpec}; `lib/cli-tools/liveness-spec` is where each
19
+ * tool fills them in.
20
+ *
21
+ * Pure and synchronous on purpose: no tmux, no capture, nothing to mock. The
22
+ * probe that feeds it a frame is `probeSessionLiveness` in
23
+ * `lib/cli-tools/session-liveness`, which is where the tmux round trip belongs
24
+ * (§4 D4 keeps `src/lib/detection/**` off the transport).
25
+ *
26
+ * @module lib/detection/tool-liveness
27
+ */
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.FATAL_PATTERN_TAIL_LINES = exports.SHELL_PROMPT_LINE_PATTERNS = exports.MAX_SHELL_PROMPT_LENGTH = exports.SHELL_PROMPT_ENDINGS = void 0;
30
+ exports.findFatalPattern = findFatalPattern;
31
+ exports.findShellPromptTail = findShellPromptTail;
32
+ exports.judgeToolLiveness = judgeToolLiveness;
33
+ const ansi_1 = require("./ansi");
34
+ /**
35
+ * Trailing characters that make a short last row a shell prompt.
36
+ *
37
+ * `$` bash/sh, `%` zsh, `#` root. Verbatim the list `claude-session.ts` has
38
+ * carried as its private `SHELL_PROMPT_ENDINGS` since the health check was
39
+ * written — moved, not redesigned.
40
+ */
41
+ exports.SHELL_PROMPT_ENDINGS = ['$', '%', '#'];
42
+ /**
43
+ * Longest a last row may be and still be read as a shell prompt by the endings
44
+ * rule alone.
45
+ *
46
+ * claude's number, kept as claude's default (`MAX_SHELL_PROMPT_LENGTH`, "40 is
47
+ * an empirical threshold with safety margin"). Issue #2070 measured why it
48
+ * cannot be the whole rule: the zsh default prompt of the machine the Issue was
49
+ * reproduced on renders as `maenokota@MAENOnoMac-Studio work-codex %` — forty
50
+ * characters exactly, i.e. one past this gate — so a codex session that had
51
+ * genuinely fallen back to the shell read as alive. See
52
+ * {@link SHELL_PROMPT_LINE_PATTERNS}.
53
+ */
54
+ exports.MAX_SHELL_PROMPT_LENGTH = 40;
55
+ /**
56
+ * Whole-line forms that positively identify a shell prompt, independent of
57
+ * length (Issue #2070).
58
+ *
59
+ * Checked BEFORE the length gate, so a long-but-real prompt is still a prompt.
60
+ * Both are anchored at both ends and require a `user@host` head, which is what
61
+ * keeps them off TUI content: an agent's transcript row that happens to end in
62
+ * `$` does not begin with `name@host`.
63
+ *
64
+ * Deliberately NOT extended to the bare `❯` / `>` prompts starship, pure and
65
+ * agnoster draw. Those glyphs are the composer of claude, copilot and gemini —
66
+ * `COPILOT_PROMPT_PATTERN` matching a starship prompt is a measured hazard
67
+ * (#1907) — so a rule that read them as "shell" would relaunch a tool into its
68
+ * own live pane. The cost is a false NEGATIVE on those prompts (the exit is not
69
+ * noticed), which is the direction this rule is allowed to be wrong in.
70
+ */
71
+ exports.SHELL_PROMPT_LINE_PATTERNS = [
72
+ // zsh / bash defaults: `user@host dir %`, `user@host:~/dir$`
73
+ /^[\w.-]+@[\w.-]+[\s:].*[$%#]$/,
74
+ // RHEL-style bash: `[user@host dir]$`
75
+ /^\[[\w.-]+@[\w.-]+[^\]]*\][$#]$/,
76
+ ];
77
+ /**
78
+ * How many content rows from the bottom a fatal-pattern search may read.
79
+ *
80
+ * claude's `HEALTH_CHECK_ERROR_TAIL_LINES`, unchanged: an error that has already
81
+ * scrolled up describes a session that recovered, and must not condemn it.
82
+ */
83
+ exports.FATAL_PATTERN_TAIL_LINES = 10;
84
+ /** `cleanOutput` split into rows, blank ones dropped. */
85
+ function contentRows(cleanTrimmedOutput) {
86
+ return cleanTrimmedOutput.split('\n').filter((line) => line.trim() !== '');
87
+ }
88
+ /**
89
+ * The fatal pattern visible in the tail of `cleanOutput`, or null.
90
+ *
91
+ * Only the last {@link FATAL_PATTERN_TAIL_LINES} content rows are searched.
92
+ * Exported because claude's launch loop applies the same judgement while it is
93
+ * still waiting for the prompt (Issue #1637) — a session already showing
94
+ * "Claude Code cannot be launched inside another Claude Code session" must not
95
+ * burn the whole 60 s budget before saying so.
96
+ *
97
+ * @param cleanOutput - ANSI-stripped pane output
98
+ * @param spec - The tool's liveness declaration
99
+ * @returns The matched pattern (or regex source) for the log, or null
100
+ */
101
+ function findFatalPattern(cleanOutput, spec) {
102
+ const tailText = contentRows(cleanOutput.trim())
103
+ .slice(-exports.FATAL_PATTERN_TAIL_LINES)
104
+ .join('\n');
105
+ for (const pattern of spec.fatalPatterns) {
106
+ if (tailText.includes(pattern))
107
+ return pattern;
108
+ }
109
+ for (const regex of spec.fatalRegexPatterns) {
110
+ if (regex.test(tailText))
111
+ return regex.source;
112
+ }
113
+ return null;
114
+ }
115
+ /**
116
+ * Whether `line` ends in one of `endings`, applying claude's own exclusion.
117
+ *
118
+ * `Context left until auto-compact: 7%` ends in `%` and is not a prompt; the
119
+ * `\d+%$` carve-out is the one claude has always had, and it is kept here
120
+ * character for character because claude's verdicts must not move (Issue #2070
121
+ * 受入条件).
122
+ */
123
+ function endsWithShellPromptChar(line, endings) {
124
+ return endings.some((ending) => {
125
+ if (!line.endsWith(ending))
126
+ return false;
127
+ if (ending === '%' && /\d+%$/.test(line))
128
+ return false;
129
+ return true;
130
+ });
131
+ }
132
+ /**
133
+ * The bottom row of `cleanOutput`, when it reads as a shell prompt.
134
+ *
135
+ * Steps 4-6 of {@link judgeToolLiveness}, lifted out verbatim so there is one
136
+ * definition of "this pane is a bare shell" rather than two. Note what is NOT
137
+ * here: the alive-pattern window of step 2. That is the difference between the
138
+ * two questions, and it is why this is exported (Issue #2068).
139
+ *
140
+ * `judgeToolLiveness` asks **"is the tool gone?"** and answers conservatively —
141
+ * any alive pattern anywhere in the bottom window vetoes the exit, because a
142
+ * relaunch hangs off its verdict. That veto is right for the general case and
143
+ * wrong for exactly one measured frame: the pane codex leaves behind after its
144
+ * own `1. Update now`. codex-cli 0.149.1 exits into `npm install -g
145
+ * @openai/codex`, which prints three rows and returns to the shell — so the
146
+ * dead `› 1. Update now` option row is still SEVEN content rows above the live
147
+ * shell prompt, inside `LIVENESS_ALIVE_TAIL_LINES`, and `CODEX_PROMPT_PATTERN`
148
+ * reads it as codex still drawing the pane (measured 2026-08-31, private tmux
149
+ * socket, 200x1000, isolated `CODEX_HOME`).
150
+ *
151
+ * `CodexTool.waitForReady` therefore asks this narrower question instead, and
152
+ * only about a pane it has just watched answer the update dialog — where the
153
+ * scrollback above the prompt is known to be spent and position is the whole
154
+ * story, exactly as it is for every other codex classifier since Issue #892.
155
+ * Widening `judgeToolLiveness` itself to agree would be a change to the shared
156
+ * rule every tool is judged by, and it is not made here.
157
+ *
158
+ * @param cleanOutput - ANSI-stripped pane output
159
+ * @param spec - The tool's liveness declaration
160
+ * @returns The prompt row and how it was recognised, or null
161
+ */
162
+ function findShellPromptTail(cleanOutput, spec) {
163
+ const rows = contentRows(cleanOutput.trim());
164
+ const lastLine = rows[rows.length - 1]?.trim() ?? '';
165
+ if (!/\d+%$/.test(lastLine) && spec.shellPromptPatterns.some((p) => p.test(lastLine))) {
166
+ return { line: lastLine, via: 'pattern' };
167
+ }
168
+ // The length gate is a NEGATIVE result, not a fall-through: a row this long is
169
+ // not a prompt, and the endings rule below must not get to claim it.
170
+ if (lastLine.length >= spec.maxShellPromptLength) {
171
+ return null;
172
+ }
173
+ if (endsWithShellPromptChar(lastLine, spec.shellPromptEndings)) {
174
+ return { line: lastLine, via: 'ending' };
175
+ }
176
+ return null;
177
+ }
178
+ /**
179
+ * Decide whether the tool this spec describes is still drawing the pane.
180
+ *
181
+ * The rule, in the order the branches run — which is claude's order, because
182
+ * claude's spec must produce claude's historical answers:
183
+ *
184
+ * 1. **nothing on the pane** → exited only if the spec says an unreadable
185
+ * frame counts (claude alone; see {@link ToolLivenessSpec.unreadableIsExited});
186
+ * 2. **an alive pattern matches the bottom window** → alive. This is the
187
+ * tool's prompt-ready rule and its busy/dialog chrome, and it is checked
188
+ * against a WINDOW rather than the frame for every tool but claude: a tool's
189
+ * chrome does not vanish when it quits, it scrolls up;
190
+ * 3. **a fatal pattern in the tail** → exited;
191
+ * 4. **the last row positively reads as a shell prompt** → exited;
192
+ * 5. **the last row is too long to be a prompt** → alive;
193
+ * 6. **the last row ends in `$` / `%` / `#`** → exited;
194
+ * 7. otherwise **alive** — the honest answer when nothing said either way.
195
+ *
196
+ * Steps 4-6 are the positive half of the verdict and they are not optional.
197
+ * A frame that merely fails step 2 (a tool mid-launch, a screen nobody has
198
+ * measured) must come out ALIVE, because Issue #2070 puts a relaunch behind
199
+ * this answer and a relaunch into a live pane types the launch command into the
200
+ * agent's composer.
201
+ *
202
+ * @param rawOutput - Pane capture, ANSI intact (stripped here)
203
+ * @param spec - The tool's liveness declaration
204
+ * @returns Whether the tool is there, and — when it is not — why not
205
+ */
206
+ function judgeToolLiveness(rawOutput, spec) {
207
+ const trimmed = (0, ansi_1.stripAnsi)(rawOutput).trim();
208
+ if (trimmed === '') {
209
+ return spec.unreadableIsExited
210
+ ? { alive: false, reason: 'empty output' }
211
+ : { alive: true };
212
+ }
213
+ const rows = contentRows(trimmed);
214
+ const aliveWindow = spec.aliveTailLines === null ? trimmed : rows.slice(-spec.aliveTailLines).join('\n');
215
+ if (spec.alivePatterns.some((pattern) => pattern.test(aliveWindow))) {
216
+ return { alive: true };
217
+ }
218
+ const fatal = findFatalPattern(trimmed, spec);
219
+ if (fatal !== null) {
220
+ return { alive: false, reason: `error pattern: ${fatal}` };
221
+ }
222
+ // Steps 4-6, via the predicate they were lifted into (Issue #2068). The two
223
+ // reason strings are unchanged, and so is the verdict for every frame: a
224
+ // `null` here is the old "too long" and "nothing matched" branches, which both
225
+ // came out alive.
226
+ const shellTail = findShellPromptTail(trimmed, spec);
227
+ if (shellTail !== null) {
228
+ return shellTail.via === 'pattern'
229
+ ? { alive: false, reason: `shell prompt detected: ${shellTail.line}` }
230
+ : { alive: false, reason: `shell prompt ending detected: ${shellTail.line}` };
231
+ }
232
+ return { alive: true };
233
+ }