commandmate 0.29.1 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (979) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +468 -417
  3. package/.next/app-path-routes-manifest.json +30 -23
  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 +25 -8
  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 +18 -18
  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 +19 -19
  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/settings/default-surface-mode/route.js +1 -0
  127. package/.next/server/app/api/settings/default-surface-mode/route.js.nft.json +1 -0
  128. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -0
  129. package/.next/server/app/api/sidebar/group-order/route.js +1 -7
  130. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  131. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/skills/[id]/route.js +1 -1
  133. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  134. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/skills/installations/route.js +2 -2
  136. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  137. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/skills/operations/route.js +2 -2
  139. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
  140. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/skills/reindex/route.js +1 -1
  142. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
  143. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/skills/route.js +1 -1
  145. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  146. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/slash-commands/route.js +1 -1
  148. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  149. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/tasks/[taskId]/cancel/route.js +1 -1
  151. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  152. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  154. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
  155. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/templates/[id]/route.js +2 -2
  157. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  158. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/templates/route.js +2 -2
  160. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  161. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/todos/route.js +1 -1
  163. package/.next/server/app/api/todos/route.js.nft.json +1 -1
  164. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  166. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
  167. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/verification/runs/route.js +1 -1
  169. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
  170. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  173. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  176. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -0
  181. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js.nft.json +1 -0
  182. package/.next/server/app/api/worktrees/[id]/{start-polling → cli-reference}/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  185. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +2 -2
  187. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  188. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -2
  190. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  191. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  197. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  199. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  200. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  206. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  218. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  221. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  233. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  236. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  239. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  242. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  245. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  248. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  251. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  254. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  257. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  260. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  263. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  266. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  269. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  272. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  275. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  278. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  279. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  280. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  281. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  283. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  284. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/logs/route.js +2 -2
  286. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  287. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +3 -3
  289. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  290. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  291. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  293. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  294. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  296. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  298. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  299. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  301. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
  302. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  304. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  305. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  306. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  307. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  308. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  309. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  310. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  311. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  312. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  313. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
  314. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  315. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  316. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  317. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  318. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  319. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  320. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  321. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  322. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  323. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  324. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  325. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  326. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  327. package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
  328. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  329. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  330. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  331. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  332. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  333. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -7
  334. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  335. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  336. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
  337. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  338. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  339. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  340. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  341. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  342. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  343. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  344. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  345. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  346. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  347. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  348. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  349. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  350. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  351. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
  352. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
  353. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  354. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  355. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  356. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  357. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  358. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  359. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  360. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  361. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  362. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  363. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  364. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  365. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  366. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  367. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  368. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  369. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  370. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  371. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  372. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  373. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  374. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  375. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  376. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  377. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  378. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  379. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  380. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  381. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  382. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  383. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  384. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  385. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  386. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  387. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  388. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  389. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  390. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  391. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  392. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  393. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +2 -0
  394. package/.next/server/app/api/worktrees/[id]/verify/config/route.js.nft.json +1 -0
  395. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -0
  396. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  397. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  398. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  399. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -0
  400. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -0
  401. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -0
  402. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  403. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
  404. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  405. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  406. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
  407. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  408. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  409. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  410. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  411. package/.next/server/app/api/worktrees/apply-default-agents/route.js +1 -0
  412. package/.next/server/app/api/worktrees/apply-default-agents/route.js.nft.json +1 -0
  413. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -0
  414. package/.next/server/app/api/worktrees/route.js +1 -1
  415. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  416. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  417. package/.next/server/app/chat/page.js +2 -2
  418. package/.next/server/app/chat/page.js.nft.json +1 -1
  419. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  420. package/.next/server/app/login/page.js +2 -2
  421. package/.next/server/app/login/page.js.nft.json +1 -1
  422. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  423. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  424. package/.next/server/app/more/page.js +2 -2
  425. package/.next/server/app/more/page.js.nft.json +1 -1
  426. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  427. package/.next/server/app/offline/page.js.nft.json +1 -1
  428. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  429. package/.next/server/app/page.js +1 -1
  430. package/.next/server/app/page.js.nft.json +1 -1
  431. package/.next/server/app/page_client-reference-manifest.js +1 -1
  432. package/.next/server/app/proxy/[...path]/route.js +1 -1
  433. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  434. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  435. package/.next/server/app/repositories/page.js +2 -2
  436. package/.next/server/app/repositories/page.js.nft.json +1 -1
  437. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  438. package/.next/server/app/review/page.js +1 -1
  439. package/.next/server/app/review/page.js.nft.json +1 -1
  440. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  441. package/.next/server/app/sessions/page.js +1 -1
  442. package/.next/server/app/sessions/page.js.nft.json +1 -1
  443. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  444. package/.next/server/app/skills/[skillId]/page.js +2 -2
  445. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  446. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  447. package/.next/server/app/skills/installed/page.js +2 -2
  448. package/.next/server/app/skills/installed/page.js.nft.json +1 -1
  449. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  450. package/.next/server/app/skills/page.js +2 -2
  451. package/.next/server/app/skills/page.js.nft.json +1 -1
  452. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  453. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
  454. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  455. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  456. package/.next/server/app/worktrees/[id]/page.js +12 -12
  457. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  458. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  459. package/.next/server/app/worktrees/[id]/terminal/page.js +3 -3
  460. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  461. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  462. package/.next/server/app-paths-manifest.json +30 -23
  463. package/.next/server/chunks/1058.js +1 -1
  464. package/.next/server/chunks/1068.js +1 -1
  465. package/.next/server/chunks/1191.js +1 -1
  466. package/.next/server/chunks/1341.js +1 -0
  467. package/.next/server/chunks/1501.js +5 -0
  468. package/.next/server/chunks/1886.js +3 -4
  469. package/.next/server/chunks/2119.js +1 -1
  470. package/.next/server/chunks/2445.js +1 -1
  471. package/.next/server/chunks/261.js +1 -0
  472. package/.next/server/chunks/2739.js +1 -0
  473. package/.next/server/chunks/2816.js +1 -1
  474. package/.next/server/chunks/2827.js +29 -0
  475. package/.next/server/chunks/3123.js +1 -0
  476. package/.next/server/chunks/3241.js +1 -1
  477. package/.next/server/chunks/3543.js +1 -1
  478. package/.next/server/chunks/3707.js +15 -0
  479. package/.next/server/chunks/3722.js +25 -1
  480. package/.next/server/chunks/3869.js +1 -0
  481. package/.next/server/chunks/3945.js +1 -1
  482. package/.next/server/chunks/4299.js +1 -1
  483. package/.next/server/chunks/4325.js +1 -0
  484. package/.next/server/chunks/4390.js +1 -0
  485. package/.next/server/chunks/4393.js +1 -1
  486. package/.next/server/chunks/4443.js +6 -0
  487. package/.next/server/chunks/5017.js +1 -1
  488. package/.next/server/chunks/5120.js +1 -0
  489. package/.next/server/chunks/5164.js +1 -1
  490. package/.next/server/chunks/5571.js +1 -1
  491. package/.next/server/chunks/6130.js +1 -1
  492. package/.next/server/chunks/6285.js +1 -1
  493. package/.next/server/chunks/6337.js +1 -1
  494. package/.next/server/chunks/663.js +1 -1
  495. package/.next/server/chunks/6781.js +1 -1
  496. package/.next/server/chunks/6894.js +8 -0
  497. package/.next/server/chunks/7366.js +5 -0
  498. package/.next/server/chunks/7685.js +1 -1
  499. package/.next/server/chunks/7824.js +1 -1
  500. package/.next/server/chunks/7836.js +1 -0
  501. package/.next/server/chunks/7905.js +1 -1
  502. package/.next/server/chunks/8118.js +1 -0
  503. package/.next/server/chunks/8356.js +1 -1
  504. package/.next/server/chunks/848.js +1 -1
  505. package/.next/server/chunks/880.js +3 -3
  506. package/.next/server/chunks/8800.js +3 -0
  507. package/.next/server/chunks/8807.js +1 -1
  508. package/.next/server/chunks/9123.js +2 -2
  509. package/.next/server/chunks/9130.js +3 -3
  510. package/.next/server/chunks/9627.js +71 -43
  511. package/.next/server/chunks/9696.js +3 -0
  512. package/.next/server/chunks/9798.js +1 -1
  513. package/.next/server/middleware-build-manifest.js +1 -1
  514. package/.next/server/middleware-manifest.json +5 -5
  515. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  516. package/.next/server/pages/500.html +1 -1
  517. package/.next/server/server-reference-manifest.json +1 -1
  518. package/.next/server/src/middleware.js +1 -1
  519. package/.next/server/src/middleware.js.map +1 -1
  520. package/.next/static/7K0XXFu_ty4wRSkl4X21E/_buildManifest.js +1 -0
  521. package/.next/static/chunks/{2053-c0e931eb4391baa1.js → 2053-3f299a7a2c7d6767.js} +1 -1
  522. package/.next/static/chunks/{3968-8d8ca15657748bfb.js → 3916-0e929d089282dc5d.js} +1 -1
  523. package/.next/static/chunks/3922.9c1ec01fff819c88.js +1 -0
  524. package/.next/static/chunks/5229-6c89475b61bd2c8b.js +1 -0
  525. package/.next/static/chunks/6022-7a7d1760fc9814c7.js +1 -0
  526. package/.next/static/chunks/6381-28d0e95620aa018e.js +1 -0
  527. package/.next/static/chunks/8019-f8e73c1fb5f6f0d3.js +1 -0
  528. package/.next/static/chunks/{1188-8567ee5ecfef02ee.js → 8593-fa0eb2802e0ce68a.js} +1 -1
  529. package/.next/static/chunks/app/api/agents/update/route-ee11f7b8a34cba8c.js +1 -0
  530. package/.next/static/chunks/app/api/agents/versions/route-ee11f7b8a34cba8c.js +1 -0
  531. package/.next/static/chunks/app/api/app/update/route-ee11f7b8a34cba8c.js +1 -0
  532. package/.next/static/chunks/app/api/app/update-check/route-ee11f7b8a34cba8c.js +1 -0
  533. package/.next/static/chunks/app/api/assistant/conversation/route-ee11f7b8a34cba8c.js +1 -0
  534. package/.next/static/chunks/app/api/assistant/current-output/route-ee11f7b8a34cba8c.js +1 -0
  535. package/.next/static/chunks/app/api/assistant/messages/route-ee11f7b8a34cba8c.js +1 -0
  536. package/.next/static/chunks/app/api/assistant/session/route-ee11f7b8a34cba8c.js +1 -0
  537. package/.next/static/chunks/app/api/assistant/start/route-ee11f7b8a34cba8c.js +1 -0
  538. package/.next/static/chunks/app/api/assistant/terminal/route-ee11f7b8a34cba8c.js +1 -0
  539. package/.next/static/chunks/app/api/assistant/tools/route-ee11f7b8a34cba8c.js +1 -0
  540. package/.next/static/chunks/app/api/auth/login/route-ee11f7b8a34cba8c.js +1 -0
  541. package/.next/static/chunks/app/api/auth/logout/route-ee11f7b8a34cba8c.js +1 -0
  542. package/.next/static/chunks/app/api/auth/status/route-ee11f7b8a34cba8c.js +1 -0
  543. package/.next/static/chunks/app/api/capabilities/route-ee11f7b8a34cba8c.js +1 -0
  544. package/.next/static/chunks/app/api/daily-summary/route-ee11f7b8a34cba8c.js +1 -0
  545. package/.next/static/chunks/app/api/daily-summary/status/route-ee11f7b8a34cba8c.js +1 -0
  546. package/.next/static/chunks/app/api/external-apps/[id]/health/route-ee11f7b8a34cba8c.js +1 -0
  547. package/.next/static/chunks/app/api/external-apps/[id]/route-ee11f7b8a34cba8c.js +1 -0
  548. package/.next/static/chunks/app/api/external-apps/route-ee11f7b8a34cba8c.js +1 -0
  549. package/.next/static/chunks/app/api/fs/browse/route-ee11f7b8a34cba8c.js +1 -0
  550. package/.next/static/chunks/app/api/fs/recent-paths/route-ee11f7b8a34cba8c.js +1 -0
  551. package/.next/static/chunks/app/api/hooks/agent-event/route-ee11f7b8a34cba8c.js +1 -0
  552. package/.next/static/chunks/app/api/hooks/claude-done/route-ee11f7b8a34cba8c.js +1 -0
  553. package/.next/static/chunks/app/api/hooks/permission-request/route-ee11f7b8a34cba8c.js +1 -0
  554. package/.next/static/chunks/app/api/metrics/vibe/route-ee11f7b8a34cba8c.js +1 -0
  555. package/.next/static/chunks/app/api/ollama/models/route-ee11f7b8a34cba8c.js +1 -0
  556. package/.next/static/chunks/app/api/push/escalation/route-ee11f7b8a34cba8c.js +1 -0
  557. package/.next/static/chunks/app/api/push/subscriptions/route-ee11f7b8a34cba8c.js +1 -0
  558. package/.next/static/chunks/app/api/push/vapid/route-ee11f7b8a34cba8c.js +1 -0
  559. package/.next/static/chunks/app/api/remote/pair/route-ee11f7b8a34cba8c.js +1 -0
  560. package/.next/static/chunks/app/api/repositories/[id]/route-ee11f7b8a34cba8c.js +1 -0
  561. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +1 -0
  562. package/.next/static/chunks/app/api/repositories/[id]/todos/route-ee11f7b8a34cba8c.js +1 -0
  563. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-ee11f7b8a34cba8c.js +1 -0
  564. package/.next/static/chunks/app/api/repositories/clone/route-ee11f7b8a34cba8c.js +1 -0
  565. package/.next/static/chunks/app/api/repositories/excluded/route-ee11f7b8a34cba8c.js +1 -0
  566. package/.next/static/chunks/app/api/repositories/restore/route-ee11f7b8a34cba8c.js +1 -0
  567. package/.next/static/chunks/app/api/repositories/route-ee11f7b8a34cba8c.js +1 -0
  568. package/.next/static/chunks/app/api/repositories/scan/route-ee11f7b8a34cba8c.js +1 -0
  569. package/.next/static/chunks/app/api/repositories/sync/route-ee11f7b8a34cba8c.js +1 -0
  570. package/.next/static/chunks/app/api/repositories/validate-path/route-ee11f7b8a34cba8c.js +1 -0
  571. package/.next/static/chunks/app/api/settings/default-agents/route-ee11f7b8a34cba8c.js +1 -0
  572. package/.next/static/chunks/app/api/settings/default-surface-mode/route-ee11f7b8a34cba8c.js +1 -0
  573. package/.next/static/chunks/app/api/sidebar/group-order/route-ee11f7b8a34cba8c.js +1 -0
  574. package/.next/static/chunks/app/api/skills/[id]/route-ee11f7b8a34cba8c.js +1 -0
  575. package/.next/static/chunks/app/api/skills/installations/route-ee11f7b8a34cba8c.js +1 -0
  576. package/.next/static/chunks/app/api/skills/operations/route-ee11f7b8a34cba8c.js +1 -0
  577. package/.next/static/chunks/app/api/skills/reindex/route-ee11f7b8a34cba8c.js +1 -0
  578. package/.next/static/chunks/app/api/skills/route-ee11f7b8a34cba8c.js +1 -0
  579. package/.next/static/chunks/app/api/slash-commands/route-ee11f7b8a34cba8c.js +1 -0
  580. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-ee11f7b8a34cba8c.js +1 -0
  581. package/.next/static/chunks/app/api/tasks/[taskId]/route-ee11f7b8a34cba8c.js +1 -0
  582. package/.next/static/chunks/app/api/templates/[id]/route-ee11f7b8a34cba8c.js +1 -0
  583. package/.next/static/chunks/app/api/templates/route-ee11f7b8a34cba8c.js +1 -0
  584. package/.next/static/chunks/app/api/todos/route-ee11f7b8a34cba8c.js +1 -0
  585. package/.next/static/chunks/app/api/verification/runs/[runId]/route-ee11f7b8a34cba8c.js +1 -0
  586. package/.next/static/chunks/app/api/verification/runs/route-ee11f7b8a34cba8c.js +1 -0
  587. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-ee11f7b8a34cba8c.js +1 -0
  588. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-ee11f7b8a34cba8c.js +1 -0
  589. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-ee11f7b8a34cba8c.js +1 -0
  590. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-ee11f7b8a34cba8c.js +1 -0
  591. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-ee11f7b8a34cba8c.js +1 -0
  592. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-ee11f7b8a34cba8c.js +1 -0
  593. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-ee11f7b8a34cba8c.js +1 -0
  594. package/.next/static/chunks/app/api/worktrees/[id]/env/route-ee11f7b8a34cba8c.js +1 -0
  595. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-ee11f7b8a34cba8c.js +1 -0
  596. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-ee11f7b8a34cba8c.js +1 -0
  597. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-ee11f7b8a34cba8c.js +1 -0
  598. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-ee11f7b8a34cba8c.js +1 -0
  599. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-ee11f7b8a34cba8c.js +1 -0
  600. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-ee11f7b8a34cba8c.js +1 -0
  601. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-ee11f7b8a34cba8c.js +1 -0
  602. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-ee11f7b8a34cba8c.js +1 -0
  603. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-ee11f7b8a34cba8c.js +1 -0
  604. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-ee11f7b8a34cba8c.js +1 -0
  605. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-ee11f7b8a34cba8c.js +1 -0
  606. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-ee11f7b8a34cba8c.js +1 -0
  607. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-ee11f7b8a34cba8c.js +1 -0
  608. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-ee11f7b8a34cba8c.js +1 -0
  609. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-ee11f7b8a34cba8c.js +1 -0
  610. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-ee11f7b8a34cba8c.js +1 -0
  611. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-ee11f7b8a34cba8c.js +1 -0
  612. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-ee11f7b8a34cba8c.js +1 -0
  613. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-ee11f7b8a34cba8c.js +1 -0
  614. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-ee11f7b8a34cba8c.js +1 -0
  615. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-ee11f7b8a34cba8c.js +1 -0
  616. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-ee11f7b8a34cba8c.js +1 -0
  617. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-ee11f7b8a34cba8c.js +1 -0
  618. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-ee11f7b8a34cba8c.js +1 -0
  619. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-ee11f7b8a34cba8c.js +1 -0
  620. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-ee11f7b8a34cba8c.js +1 -0
  621. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-ee11f7b8a34cba8c.js +1 -0
  622. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-ee11f7b8a34cba8c.js +1 -0
  623. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-ee11f7b8a34cba8c.js +1 -0
  624. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-ee11f7b8a34cba8c.js +1 -0
  625. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-ee11f7b8a34cba8c.js +1 -0
  626. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-ee11f7b8a34cba8c.js +1 -0
  627. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-ee11f7b8a34cba8c.js +1 -0
  628. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-ee11f7b8a34cba8c.js +1 -0
  629. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-ee11f7b8a34cba8c.js +1 -0
  630. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-ee11f7b8a34cba8c.js +1 -0
  631. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-ee11f7b8a34cba8c.js +1 -0
  632. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-ee11f7b8a34cba8c.js +1 -0
  633. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-ee11f7b8a34cba8c.js +1 -0
  634. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-ee11f7b8a34cba8c.js +1 -0
  635. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-ee11f7b8a34cba8c.js +1 -0
  636. package/.next/static/chunks/app/api/worktrees/[id]/route-ee11f7b8a34cba8c.js +1 -0
  637. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-ee11f7b8a34cba8c.js +1 -0
  638. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-ee11f7b8a34cba8c.js +1 -0
  639. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-ee11f7b8a34cba8c.js +1 -0
  640. package/.next/static/chunks/app/api/worktrees/[id]/search/route-ee11f7b8a34cba8c.js +1 -0
  641. package/.next/static/chunks/app/api/worktrees/[id]/send/route-ee11f7b8a34cba8c.js +1 -0
  642. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-ee11f7b8a34cba8c.js +1 -0
  643. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-ee11f7b8a34cba8c.js +1 -0
  644. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-ee11f7b8a34cba8c.js +1 -0
  645. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-ee11f7b8a34cba8c.js +1 -0
  646. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-ee11f7b8a34cba8c.js +1 -0
  647. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-ee11f7b8a34cba8c.js +1 -0
  648. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-ee11f7b8a34cba8c.js +1 -0
  649. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-ee11f7b8a34cba8c.js +1 -0
  650. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-ee11f7b8a34cba8c.js +1 -0
  651. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-ee11f7b8a34cba8c.js +1 -0
  652. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-ee11f7b8a34cba8c.js +1 -0
  653. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-ee11f7b8a34cba8c.js +1 -0
  654. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-ee11f7b8a34cba8c.js +1 -0
  655. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-ee11f7b8a34cba8c.js +1 -0
  656. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +1 -0
  657. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-ee11f7b8a34cba8c.js +1 -0
  658. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-ee11f7b8a34cba8c.js +1 -0
  659. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-ee11f7b8a34cba8c.js +1 -0
  660. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-ee11f7b8a34cba8c.js +1 -0
  661. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-ee11f7b8a34cba8c.js +1 -0
  662. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-ee11f7b8a34cba8c.js +1 -0
  663. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-ee11f7b8a34cba8c.js +1 -0
  664. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-ee11f7b8a34cba8c.js +1 -0
  665. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-ee11f7b8a34cba8c.js +1 -0
  666. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-ee11f7b8a34cba8c.js +1 -0
  667. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-ee11f7b8a34cba8c.js +1 -0
  668. package/.next/static/chunks/app/api/worktrees/route-ee11f7b8a34cba8c.js +1 -0
  669. package/.next/static/chunks/app/chat/{page-231df45127e876c2.js → page-9aa2011410895b0d.js} +1 -1
  670. package/.next/static/chunks/app/login/{page-03659dded846ef1d.js → page-af7241bb4c4a8e59.js} +1 -1
  671. package/.next/static/chunks/app/manifest.webmanifest/route-ee11f7b8a34cba8c.js +1 -0
  672. package/.next/static/chunks/app/more/page-333bba1c8bbc9c11.js +1 -0
  673. package/.next/static/chunks/app/{page-0305431f43195431.js → page-214f7ffa13a0cf10.js} +1 -1
  674. package/.next/static/chunks/app/proxy/[...path]/route-ee11f7b8a34cba8c.js +1 -0
  675. package/.next/static/chunks/app/repositories/{page-ae8fa55749976f79.js → page-4951cac905e50224.js} +1 -1
  676. package/.next/static/chunks/app/review/page-a0899b2d285318c3.js +1 -0
  677. package/.next/static/chunks/app/sessions/page-fb36145ec732092a.js +1 -0
  678. package/.next/static/chunks/app/skills/[skillId]/{page-aaf0bcb1dfb558b9.js → page-9099e26b60442873.js} +1 -1
  679. package/.next/static/chunks/app/skills/installed/{page-dafc486410e839b7.js → page-182e32368696d824.js} +1 -1
  680. package/.next/static/chunks/app/skills/{page-9e3c91da31514893.js → page-d3fdc88239ebe0ab.js} +1 -1
  681. package/.next/static/chunks/app/worktrees/[id]/files/[...path]/{page-90f96977c741bbf8.js → page-f3361237420719b4.js} +1 -1
  682. package/.next/static/chunks/app/worktrees/[id]/layout-ee11f7b8a34cba8c.js +1 -0
  683. package/.next/static/chunks/app/worktrees/[id]/page-d48b95ed554bcd13.js +1 -0
  684. package/.next/static/chunks/app/worktrees/[id]/terminal/page-2631bc5c4b0a9fb8.js +1 -0
  685. package/.next/static/chunks/{webpack-7e79064bfce988d7.js → webpack-9f75198882fdaf08.js} +1 -1
  686. package/.next/static/css/61e10d4b1b11b193.css +1 -0
  687. package/.next/trace +13 -13
  688. package/.next/types/app/api/agents/update/route.ts +347 -0
  689. package/.next/types/app/api/agents/versions/route.ts +347 -0
  690. package/.next/types/app/api/settings/default-agents/route.ts +347 -0
  691. package/.next/types/app/api/settings/default-surface-mode/route.ts +347 -0
  692. package/.next/types/app/api/worktrees/[id]/{start-polling → cli-reference}/route.ts +3 -3
  693. package/.next/types/app/api/worktrees/[id]/verify/config/route.ts +347 -0
  694. package/.next/types/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.ts +347 -0
  695. package/.next/types/app/api/worktrees/apply-default-agents/route.ts +347 -0
  696. package/.next/types/routes.d.ts +9 -2
  697. package/.next/types/validator.ts +72 -9
  698. package/dist/cli/commands/agents.d.ts +35 -0
  699. package/dist/cli/commands/agents.d.ts.map +1 -0
  700. package/dist/cli/commands/agents.js +212 -0
  701. package/dist/cli/commands/ls.d.ts.map +1 -1
  702. package/dist/cli/commands/ls.js +18 -0
  703. package/dist/cli/commands/verify.d.ts.map +1 -1
  704. package/dist/cli/commands/verify.js +111 -0
  705. package/dist/cli/config/cli-dependencies.d.ts.map +1 -1
  706. package/dist/cli/config/cli-dependencies.js +11 -0
  707. package/dist/cli/docs/agent-operations.d.ts +1 -1
  708. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  709. package/dist/cli/docs/agent-operations.js +30 -0
  710. package/dist/cli/program.d.ts.map +1 -1
  711. package/dist/cli/program.js +6 -0
  712. package/dist/cli/types/api-responses.d.ts +58 -0
  713. package/dist/cli/types/api-responses.d.ts.map +1 -1
  714. package/dist/cli/types/index.d.ts +8 -0
  715. package/dist/cli/types/index.d.ts.map +1 -1
  716. package/dist/cli/utils/preflight.d.ts.map +1 -1
  717. package/dist/cli/utils/preflight.js +6 -0
  718. package/dist/config/system-directories.d.ts +101 -0
  719. package/dist/config/system-directories.d.ts.map +1 -0
  720. package/dist/config/system-directories.js +211 -0
  721. package/dist/lib/cli-tools/types.d.ts +15 -1
  722. package/dist/lib/cli-tools/types.d.ts.map +1 -1
  723. package/dist/lib/detection/status-reason.d.ts +92 -0
  724. package/dist/lib/detection/status-reason.d.ts.map +1 -0
  725. package/dist/lib/detection/status-reason.js +94 -0
  726. package/dist/lib/updates/agent-updater.d.ts +247 -0
  727. package/dist/lib/updates/agent-updater.d.ts.map +1 -0
  728. package/dist/lib/updates/agent-updater.js +373 -0
  729. package/dist/lib/updates/agent-versions.d.ts +77 -0
  730. package/dist/lib/updates/agent-versions.d.ts.map +1 -0
  731. package/dist/lib/updates/agent-versions.js +138 -0
  732. package/dist/lib/updates/codex-version.d.ts +184 -0
  733. package/dist/lib/updates/codex-version.d.ts.map +1 -0
  734. package/dist/lib/updates/codex-version.js +215 -0
  735. package/dist/lib/verification/verify-config.d.ts +202 -0
  736. package/dist/lib/verification/verify-config.d.ts.map +1 -0
  737. package/dist/lib/verification/verify-config.js +429 -0
  738. package/dist/lib/verification/verify-draft.d.ts +182 -0
  739. package/dist/lib/verification/verify-draft.d.ts.map +1 -0
  740. package/dist/lib/verification/verify-draft.js +570 -0
  741. package/dist/server/server.js +58 -0
  742. package/dist/server/src/cli/types/api-responses.js +9 -0
  743. package/dist/server/src/config/cli-tool-timing-config.js +15 -1
  744. package/dist/server/src/config/codex-update-dialog-config.js +154 -0
  745. package/dist/server/src/config/default-agents.js +138 -0
  746. package/dist/server/src/lib/claude-output.js +1 -0
  747. package/dist/server/src/lib/cli-tools/antigravity.js +36 -12
  748. package/dist/server/src/lib/cli-tools/base.js +131 -0
  749. package/dist/server/src/lib/cli-tools/codex.js +350 -100
  750. package/dist/server/src/lib/cli-tools/copilot.js +34 -10
  751. package/dist/server/src/lib/cli-tools/gemini.js +34 -10
  752. package/dist/server/src/lib/cli-tools/liveness-spec.js +214 -0
  753. package/dist/server/src/lib/cli-tools/opencode.js +72 -19
  754. package/dist/server/src/lib/cli-tools/session-liveness.js +64 -0
  755. package/dist/server/src/lib/cli-tools/vibe-local.js +30 -10
  756. package/dist/server/src/lib/db/app-settings-db.js +202 -0
  757. package/dist/server/src/lib/db/chat-db.js +120 -7
  758. package/dist/server/src/lib/db/worktree-db.js +178 -3
  759. package/dist/server/src/lib/detection/status-detector.js +3 -2
  760. package/dist/server/src/lib/detection/status-reason.js +17 -0
  761. package/dist/server/src/lib/detection/tool-liveness.js +233 -0
  762. package/dist/server/src/lib/detection/version-probes.js +290 -0
  763. package/dist/server/src/lib/env.js +122 -0
  764. package/dist/server/src/lib/git/worktrees.js +164 -0
  765. package/dist/server/src/lib/history/transcript-tail.js +80 -0
  766. package/dist/server/src/lib/history/user-turn-recorder.js +247 -0
  767. package/dist/server/src/lib/hooks/permission-decision-service.js +85 -1
  768. package/dist/server/src/lib/hooks/sources/antigravity/history.js +519 -0
  769. package/dist/server/src/lib/hooks/sources/antigravity/source.js +7 -0
  770. package/dist/server/src/lib/hooks/sources/antigravity/transcript.js +407 -0
  771. package/dist/server/src/lib/hooks/sources/claude/history.js +654 -0
  772. package/dist/server/src/lib/hooks/sources/claude/source.js +4 -0
  773. package/dist/server/src/lib/hooks/sources/claude/transcript.js +518 -0
  774. package/dist/server/src/lib/hooks/sources/codex/history.js +576 -0
  775. package/dist/server/src/lib/hooks/sources/codex/source.js +4 -0
  776. package/dist/server/src/lib/hooks/sources/codex/transcript.js +448 -0
  777. package/dist/server/src/lib/hooks/sources/copilot/source.js +2 -0
  778. package/dist/server/src/lib/hooks/sources/gemini/source.js +2 -0
  779. package/dist/server/src/lib/hooks/sources/legacy-relay.js +3 -0
  780. package/dist/server/src/lib/hooks/sources/opencode/history.js +57 -0
  781. package/dist/server/src/lib/hooks/sources/opencode/source.js +4 -0
  782. package/dist/server/src/lib/hooks/sources/opencode/transcript.js +10 -28
  783. package/dist/server/src/lib/hooks/sources/turn-body.js +118 -0
  784. package/dist/server/src/lib/polling/prompt-dedup.js +2 -4
  785. package/dist/server/src/lib/polling/response-checker.js +44 -3
  786. package/dist/server/src/lib/polling/response-dedup.js +2 -4
  787. package/dist/server/src/lib/polling/response-poller-core.js +191 -29
  788. package/dist/server/src/lib/polling/structured-history-gate.js +147 -16
  789. package/dist/server/src/lib/push/push-sender.js +21 -1
  790. package/dist/server/src/lib/push/waiting-push-notifier.js +126 -8
  791. package/dist/server/src/lib/realtime/publisher-registry.js +171 -0
  792. package/dist/server/src/lib/realtime/terminal-broadcast.js +14 -1
  793. package/dist/server/src/lib/realtime/types.js +96 -1
  794. package/dist/server/src/lib/repo-config/agents-config.js +298 -0
  795. package/dist/server/src/lib/selected-agents-validator.js +93 -23
  796. package/dist/server/src/lib/session/claude-session.js +39 -108
  797. package/dist/server/src/lib/session/current-output-builder.js +263 -4
  798. package/dist/server/src/lib/session/send-user-message.js +90 -2
  799. package/dist/server/src/lib/tmux/tmux.js +29 -0
  800. package/dist/server/src/lib/tui-accumulator.js +2 -8
  801. package/dist/server/src/lib/updates/agent-updater.js +373 -0
  802. package/dist/server/src/lib/updates/agent-versions.js +138 -0
  803. package/dist/server/src/lib/updates/codex-version.js +215 -0
  804. package/dist/server/src/lib/updates/index.js +42 -0
  805. package/dist/server/src/lib/verification/gate-runner.js +298 -37
  806. package/dist/server/src/lib/verification/machine-lock.js +11 -0
  807. package/dist/server/src/lib/verification/run-verdict-vocabulary.js +151 -0
  808. package/dist/server/src/lib/verification/verify-config.js +33 -0
  809. package/dist/server/src/lib/ws-server.js +143 -6
  810. package/dist/server/src/types/agent-transcript.js +241 -5
  811. package/dist/server/src/types/sidebar.js +40 -9
  812. package/dist/server/src/types/ui-state.js +24 -1
  813. package/dist/types/cli-tool-contracts.d.ts +119 -0
  814. package/dist/types/cli-tool-contracts.d.ts.map +1 -1
  815. package/package.json +1 -1
  816. package/public/sw.js +15 -1
  817. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +0 -1
  818. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +0 -1
  819. package/.next/server/chunks/1601.js +0 -7
  820. package/.next/server/chunks/1714.js +0 -7
  821. package/.next/server/chunks/221.js +0 -19
  822. package/.next/server/chunks/222.js +0 -1
  823. package/.next/server/chunks/2366.js +0 -1
  824. package/.next/server/chunks/2759.js +0 -8
  825. package/.next/server/chunks/3558.js +0 -1
  826. package/.next/server/chunks/4689.js +0 -25
  827. package/.next/server/chunks/5089.js +0 -1
  828. package/.next/server/chunks/6274.js +0 -14
  829. package/.next/server/chunks/9067.js +0 -1
  830. package/.next/server/chunks/9373.js +0 -9
  831. package/.next/server/chunks/9508.js +0 -1
  832. package/.next/static/Dvfs4ZThl5vBhJGP-ZQuJ/_buildManifest.js +0 -1
  833. package/.next/static/chunks/3361-aa1b6e7c1d7eeeb4.js +0 -1
  834. package/.next/static/chunks/3922.0d2e64daf9f187da.js +0 -1
  835. package/.next/static/chunks/5229-580b581fce5aeb52.js +0 -1
  836. package/.next/static/chunks/6381-9a929249196a0e77.js +0 -1
  837. package/.next/static/chunks/app/api/app/update/route-e3626364434d521b.js +0 -1
  838. package/.next/static/chunks/app/api/app/update-check/route-e3626364434d521b.js +0 -1
  839. package/.next/static/chunks/app/api/assistant/conversation/route-e3626364434d521b.js +0 -1
  840. package/.next/static/chunks/app/api/assistant/current-output/route-e3626364434d521b.js +0 -1
  841. package/.next/static/chunks/app/api/assistant/messages/route-e3626364434d521b.js +0 -1
  842. package/.next/static/chunks/app/api/assistant/session/route-e3626364434d521b.js +0 -1
  843. package/.next/static/chunks/app/api/assistant/start/route-e3626364434d521b.js +0 -1
  844. package/.next/static/chunks/app/api/assistant/terminal/route-e3626364434d521b.js +0 -1
  845. package/.next/static/chunks/app/api/assistant/tools/route-e3626364434d521b.js +0 -1
  846. package/.next/static/chunks/app/api/auth/login/route-e3626364434d521b.js +0 -1
  847. package/.next/static/chunks/app/api/auth/logout/route-e3626364434d521b.js +0 -1
  848. package/.next/static/chunks/app/api/auth/status/route-e3626364434d521b.js +0 -1
  849. package/.next/static/chunks/app/api/capabilities/route-e3626364434d521b.js +0 -1
  850. package/.next/static/chunks/app/api/daily-summary/route-e3626364434d521b.js +0 -1
  851. package/.next/static/chunks/app/api/daily-summary/status/route-e3626364434d521b.js +0 -1
  852. package/.next/static/chunks/app/api/external-apps/[id]/health/route-e3626364434d521b.js +0 -1
  853. package/.next/static/chunks/app/api/external-apps/[id]/route-e3626364434d521b.js +0 -1
  854. package/.next/static/chunks/app/api/external-apps/route-e3626364434d521b.js +0 -1
  855. package/.next/static/chunks/app/api/fs/browse/route-e3626364434d521b.js +0 -1
  856. package/.next/static/chunks/app/api/fs/recent-paths/route-e3626364434d521b.js +0 -1
  857. package/.next/static/chunks/app/api/hooks/agent-event/route-e3626364434d521b.js +0 -1
  858. package/.next/static/chunks/app/api/hooks/claude-done/route-e3626364434d521b.js +0 -1
  859. package/.next/static/chunks/app/api/hooks/permission-request/route-e3626364434d521b.js +0 -1
  860. package/.next/static/chunks/app/api/metrics/vibe/route-e3626364434d521b.js +0 -1
  861. package/.next/static/chunks/app/api/ollama/models/route-e3626364434d521b.js +0 -1
  862. package/.next/static/chunks/app/api/push/escalation/route-e3626364434d521b.js +0 -1
  863. package/.next/static/chunks/app/api/push/subscriptions/route-e3626364434d521b.js +0 -1
  864. package/.next/static/chunks/app/api/push/vapid/route-e3626364434d521b.js +0 -1
  865. package/.next/static/chunks/app/api/remote/pair/route-e3626364434d521b.js +0 -1
  866. package/.next/static/chunks/app/api/repositories/[id]/route-e3626364434d521b.js +0 -1
  867. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-e3626364434d521b.js +0 -1
  868. package/.next/static/chunks/app/api/repositories/[id]/todos/route-e3626364434d521b.js +0 -1
  869. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-e3626364434d521b.js +0 -1
  870. package/.next/static/chunks/app/api/repositories/clone/route-e3626364434d521b.js +0 -1
  871. package/.next/static/chunks/app/api/repositories/excluded/route-e3626364434d521b.js +0 -1
  872. package/.next/static/chunks/app/api/repositories/restore/route-e3626364434d521b.js +0 -1
  873. package/.next/static/chunks/app/api/repositories/route-e3626364434d521b.js +0 -1
  874. package/.next/static/chunks/app/api/repositories/scan/route-e3626364434d521b.js +0 -1
  875. package/.next/static/chunks/app/api/repositories/sync/route-e3626364434d521b.js +0 -1
  876. package/.next/static/chunks/app/api/repositories/validate-path/route-e3626364434d521b.js +0 -1
  877. package/.next/static/chunks/app/api/sidebar/group-order/route-e3626364434d521b.js +0 -1
  878. package/.next/static/chunks/app/api/skills/[id]/route-e3626364434d521b.js +0 -1
  879. package/.next/static/chunks/app/api/skills/installations/route-e3626364434d521b.js +0 -1
  880. package/.next/static/chunks/app/api/skills/operations/route-e3626364434d521b.js +0 -1
  881. package/.next/static/chunks/app/api/skills/reindex/route-e3626364434d521b.js +0 -1
  882. package/.next/static/chunks/app/api/skills/route-e3626364434d521b.js +0 -1
  883. package/.next/static/chunks/app/api/slash-commands/route-e3626364434d521b.js +0 -1
  884. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-e3626364434d521b.js +0 -1
  885. package/.next/static/chunks/app/api/tasks/[taskId]/route-e3626364434d521b.js +0 -1
  886. package/.next/static/chunks/app/api/templates/[id]/route-e3626364434d521b.js +0 -1
  887. package/.next/static/chunks/app/api/templates/route-e3626364434d521b.js +0 -1
  888. package/.next/static/chunks/app/api/todos/route-e3626364434d521b.js +0 -1
  889. package/.next/static/chunks/app/api/verification/runs/[runId]/route-e3626364434d521b.js +0 -1
  890. package/.next/static/chunks/app/api/verification/runs/route-e3626364434d521b.js +0 -1
  891. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-e3626364434d521b.js +0 -1
  892. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-e3626364434d521b.js +0 -1
  893. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-e3626364434d521b.js +0 -1
  894. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-e3626364434d521b.js +0 -1
  895. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-e3626364434d521b.js +0 -1
  896. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-e3626364434d521b.js +0 -1
  897. package/.next/static/chunks/app/api/worktrees/[id]/env/route-e3626364434d521b.js +0 -1
  898. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-e3626364434d521b.js +0 -1
  899. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-e3626364434d521b.js +0 -1
  900. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-e3626364434d521b.js +0 -1
  901. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-e3626364434d521b.js +0 -1
  902. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-e3626364434d521b.js +0 -1
  903. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-e3626364434d521b.js +0 -1
  904. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-e3626364434d521b.js +0 -1
  905. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-e3626364434d521b.js +0 -1
  906. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-e3626364434d521b.js +0 -1
  907. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-e3626364434d521b.js +0 -1
  908. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-e3626364434d521b.js +0 -1
  909. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-e3626364434d521b.js +0 -1
  910. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-e3626364434d521b.js +0 -1
  911. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-e3626364434d521b.js +0 -1
  912. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-e3626364434d521b.js +0 -1
  913. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-e3626364434d521b.js +0 -1
  914. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-e3626364434d521b.js +0 -1
  915. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-e3626364434d521b.js +0 -1
  916. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-e3626364434d521b.js +0 -1
  917. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-e3626364434d521b.js +0 -1
  918. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-e3626364434d521b.js +0 -1
  919. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-e3626364434d521b.js +0 -1
  920. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-e3626364434d521b.js +0 -1
  921. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-e3626364434d521b.js +0 -1
  922. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-e3626364434d521b.js +0 -1
  923. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-e3626364434d521b.js +0 -1
  924. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-e3626364434d521b.js +0 -1
  925. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-e3626364434d521b.js +0 -1
  926. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-e3626364434d521b.js +0 -1
  927. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-e3626364434d521b.js +0 -1
  928. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-e3626364434d521b.js +0 -1
  929. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-e3626364434d521b.js +0 -1
  930. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-e3626364434d521b.js +0 -1
  931. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-e3626364434d521b.js +0 -1
  932. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-e3626364434d521b.js +0 -1
  933. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-e3626364434d521b.js +0 -1
  934. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-e3626364434d521b.js +0 -1
  935. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-e3626364434d521b.js +0 -1
  936. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-e3626364434d521b.js +0 -1
  937. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-e3626364434d521b.js +0 -1
  938. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-e3626364434d521b.js +0 -1
  939. package/.next/static/chunks/app/api/worktrees/[id]/route-e3626364434d521b.js +0 -1
  940. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-e3626364434d521b.js +0 -1
  941. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-e3626364434d521b.js +0 -1
  942. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-e3626364434d521b.js +0 -1
  943. package/.next/static/chunks/app/api/worktrees/[id]/search/route-e3626364434d521b.js +0 -1
  944. package/.next/static/chunks/app/api/worktrees/[id]/send/route-e3626364434d521b.js +0 -1
  945. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-e3626364434d521b.js +0 -1
  946. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-e3626364434d521b.js +0 -1
  947. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-e3626364434d521b.js +0 -1
  948. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-e3626364434d521b.js +0 -1
  949. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-e3626364434d521b.js +0 -1
  950. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-e3626364434d521b.js +0 -1
  951. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-e3626364434d521b.js +0 -1
  952. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-e3626364434d521b.js +0 -1
  953. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-e3626364434d521b.js +0 -1
  954. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-e3626364434d521b.js +0 -1
  955. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-e3626364434d521b.js +0 -1
  956. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-e3626364434d521b.js +0 -1
  957. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-e3626364434d521b.js +0 -1
  958. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-e3626364434d521b.js +0 -1
  959. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-e3626364434d521b.js +0 -1
  960. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-e3626364434d521b.js +0 -1
  961. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-e3626364434d521b.js +0 -1
  962. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-e3626364434d521b.js +0 -1
  963. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-e3626364434d521b.js +0 -1
  964. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-e3626364434d521b.js +0 -1
  965. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-e3626364434d521b.js +0 -1
  966. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-e3626364434d521b.js +0 -1
  967. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-e3626364434d521b.js +0 -1
  968. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-e3626364434d521b.js +0 -1
  969. package/.next/static/chunks/app/api/worktrees/route-e3626364434d521b.js +0 -1
  970. package/.next/static/chunks/app/manifest.webmanifest/route-e3626364434d521b.js +0 -1
  971. package/.next/static/chunks/app/more/page-03867ab635d197c7.js +0 -1
  972. package/.next/static/chunks/app/proxy/[...path]/route-e3626364434d521b.js +0 -1
  973. package/.next/static/chunks/app/review/page-9a6d18ddcccbb63c.js +0 -1
  974. package/.next/static/chunks/app/sessions/page-4d5382b257077c14.js +0 -1
  975. package/.next/static/chunks/app/worktrees/[id]/layout-e3626364434d521b.js +0 -1
  976. package/.next/static/chunks/app/worktrees/[id]/page-817378dd7c580774.js +0 -1
  977. package/.next/static/chunks/app/worktrees/[id]/terminal/page-00ad5d9a62a71cab.js +0 -1
  978. package/.next/static/css/6266bde3bce465a2.css +0 -1
  979. /package/.next/static/{Dvfs4ZThl5vBhJGP-ZQuJ → 7K0XXFu_ty4wRSkl4X21E}/_ssgManifest.js +0 -0
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  /**
3
- * How a history row says it holds the agent's own words (Issue #2041).
3
+ * How a history row says it holds the agent's own words (Issue #2041, extended
4
+ * for Claude Code in Issue #2121).
4
5
  *
5
6
  * Every `chat_messages` row written before this Issue came off a terminal: the
6
7
  * poller captured a pane, cleaned the box drawing out of it and saved what was
@@ -38,28 +39,149 @@
38
39
  * @module types/agent-transcript
39
40
  */
40
41
  Object.defineProperty(exports, "__esModule", { value: true });
41
- exports.AGENT_MARKDOWN_REQUEST_ID_PREFIX = void 0;
42
+ exports.AGENT_MARKDOWN_REQUEST_ID_PREFIXES = exports.ANTIGRAVITY_PROMPT_REQUEST_ID_PREFIX = exports.ANTIGRAVITY_MARKDOWN_REQUEST_ID_PREFIX = exports.CODEX_PROMPT_REQUEST_ID_PREFIX = exports.CODEX_MARKDOWN_REQUEST_ID_PREFIX = exports.CLAUDE_PROMPT_REQUEST_ID_PREFIX = exports.CLAUDE_MARKDOWN_REQUEST_ID_PREFIX = exports.AGENT_MARKDOWN_REQUEST_ID_PREFIX = void 0;
42
43
  exports.isAgentAuthoredMarkdown = isAgentAuthoredMarkdown;
43
44
  exports.opencodeTurnRequestId = opencodeTurnRequestId;
45
+ exports.claudeTurnRequestId = claudeTurnRequestId;
46
+ exports.claudePromptRequestId = claudePromptRequestId;
47
+ exports.codexTurnRequestId = codexTurnRequestId;
48
+ exports.codexPromptRequestId = codexPromptRequestId;
49
+ exports.antigravityTurnRequestId = antigravityTurnRequestId;
50
+ exports.antigravityPromptRequestId = antigravityPromptRequestId;
44
51
  /**
45
- * Prefix on `chat_messages.request_id` for a row whose `content` is the agent's
52
+ * Prefix on `chat_messages.request_id` for a row whose `content` is opencode's
46
53
  * own Markdown rather than a scrape of its terminal.
47
54
  *
48
55
  * The `:` is load-bearing — it cannot appear in a claude request id, so
49
56
  * {@link isAgentAuthoredMarkdown} cannot answer true for a pre-existing row.
50
57
  */
51
58
  exports.AGENT_MARKDOWN_REQUEST_ID_PREFIX = 'oc-turn:';
59
+ /**
60
+ * The same, for a turn read out of Claude Code's transcript JSONL (Issue #2121).
61
+ *
62
+ * A prefix of its own rather than a second use of `oc-turn:` because the marker
63
+ * is also the idempotency key, and the two readers name their turns with ids
64
+ * from different namespaces — opencode's `msg_…` and Claude's record `uuid`.
65
+ * Sharing the prefix would make a collision between the two a silent "already
66
+ * saved", which is the one failure mode a key must not have.
67
+ *
68
+ * `claude-` and not `cc-`: the string is what an operator reads in the row when
69
+ * they ask why History shows Markdown, and the tool id is what they will search
70
+ * the codebase for.
71
+ */
72
+ exports.CLAUDE_MARKDOWN_REQUEST_ID_PREFIX = 'claude-turn:';
73
+ /**
74
+ * Prefix on `chat_messages.request_id` for a **user** row whose text was read
75
+ * out of Claude Code's transcript rather than written by `/send` (Issue #2196).
76
+ *
77
+ * Deliberately *not* one of {@link AGENT_MARKDOWN_REQUEST_ID_PREFIXES}. The two
78
+ * jobs the `request_id` column does are separable, and this constant only does
79
+ * the first:
80
+ *
81
+ * - **idempotency key** — the value is derived from the prompt record's `uuid`,
82
+ * so the poller reading the same finished turn twice writes one row. That is
83
+ * what this is for.
84
+ * - **"render me as Markdown"** — that is what the list above means, and a user
85
+ * row must not join it. The operator's own text has always been drawn
86
+ * verbatim (`whitespace-pre-wrap`), and a prompt that happens to contain
87
+ * `# ` or a `|` table row would change shape the moment it were rendered.
88
+ * `ConversationPairCard` is untouched by #2196 precisely because this prefix
89
+ * is absent from that list.
90
+ *
91
+ * `claude-prompt:` and not a second use of `claude-turn:`: the assistant row for
92
+ * the same turn is keyed on the *same* `uuid`, so sharing the prefix would make
93
+ * the two rows collide on `findMessageByRequestId` and the second writer would
94
+ * read "already saved" and stand down.
95
+ */
96
+ exports.CLAUDE_PROMPT_REQUEST_ID_PREFIX = 'claude-prompt:';
97
+ /**
98
+ * The same, for a turn read out of codex's rollout JSONL (Issue #2197).
99
+ *
100
+ * A third namespace for the third reader, for the reason
101
+ * {@link CLAUDE_MARKDOWN_REQUEST_ID_PREFIX} gives: the value is an idempotency
102
+ * key as well as a marker, and codex names its turns with a `turn_id` of its
103
+ * own minting. Sharing a prefix with claude would make a collision between two
104
+ * tools' ids read as "already saved", which is the one failure a key must not
105
+ * have.
106
+ */
107
+ exports.CODEX_MARKDOWN_REQUEST_ID_PREFIX = 'codex-turn:';
108
+ /**
109
+ * Prefix on a **user** row whose text was read out of codex's rollout JSONL
110
+ * (Issue #2197).
111
+ *
112
+ * Deliberately absent from {@link AGENT_MARKDOWN_REQUEST_ID_PREFIXES}, for the
113
+ * whole of the reason {@link CLAUDE_PROMPT_REQUEST_ID_PREFIX} states: the
114
+ * operator's own text is drawn verbatim and must not change shape because it
115
+ * happened to contain a `#` or a `|`.
116
+ *
117
+ * Unlike claude's, this one is **not** keyed on the same id as the turn's
118
+ * assistant row. codex folds a prompt sent while a turn is running into that
119
+ * same turn — measured on 23 of 326 turns in the corpus this Issue read — so a
120
+ * turn can carry more than one operator message, and keying the user row on the
121
+ * `turn_id` would collapse them into one row and then refuse the second as
122
+ * already recorded. The key is the **`UserMessage` item's own id** instead, so
123
+ * one prompt is one row however many share a turn. See {@link codexPromptRequestId}.
124
+ */
125
+ exports.CODEX_PROMPT_REQUEST_ID_PREFIX = 'codex-prompt:';
126
+ /**
127
+ * The same, for a turn read out of antigravity's transcript JSONL (Issue #2198).
128
+ *
129
+ * A fourth namespace for the fourth reader, for the reason
130
+ * {@link CLAUDE_MARKDOWN_REQUEST_ID_PREFIX} gives: the value is an idempotency
131
+ * key as well as a marker, and antigravity names its turns with a number —
132
+ * `step_index` — that is only unique *inside one conversation*. Sharing a prefix
133
+ * with another tool would make a collision between two tools' ids read as
134
+ * "already saved", which is the one failure a key must not have; and the id
135
+ * therefore has to carry the conversation as well as the step. See
136
+ * {@link antigravityTurnRequestId}.
137
+ */
138
+ exports.ANTIGRAVITY_MARKDOWN_REQUEST_ID_PREFIX = 'antigravity-turn:';
139
+ /**
140
+ * Prefix on a **user** row whose text was read out of antigravity's transcript
141
+ * JSONL (Issue #2198).
142
+ *
143
+ * Deliberately absent from {@link AGENT_MARKDOWN_REQUEST_ID_PREFIXES}, for the
144
+ * whole of the reason {@link CLAUDE_PROMPT_REQUEST_ID_PREFIX} states: the
145
+ * operator's own text is drawn verbatim and must not change shape because it
146
+ * happened to contain a `#` or a `|`.
147
+ *
148
+ * Keyed on the same `(conversationId, stepIndex)` pair as the turn's assistant
149
+ * row, which is claude's arrangement rather than codex's. It is the right one
150
+ * here because agy opens a turn with exactly one `USER_INPUT` record — 63 of 63
151
+ * in the corpus #2198 measured — so a turn never carries a second prompt the way
152
+ * a codex turn can.
153
+ */
154
+ exports.ANTIGRAVITY_PROMPT_REQUEST_ID_PREFIX = 'antigravity-prompt:';
155
+ /**
156
+ * Every prefix that means "this row holds source, not a rendering".
157
+ *
158
+ * One list rather than a chain of `startsWith` calls, so that adding the third
159
+ * tool is adding a constant here and nothing at the reader. The reader
160
+ * (`ConversationPairCard`) has never named a prefix and still does not — which
161
+ * is what let Issue #2121 put Claude's rows on the Markdown path without
162
+ * touching the component (#2121 受入条件).
163
+ */
164
+ exports.AGENT_MARKDOWN_REQUEST_ID_PREFIXES = [
165
+ exports.AGENT_MARKDOWN_REQUEST_ID_PREFIX,
166
+ exports.CLAUDE_MARKDOWN_REQUEST_ID_PREFIX,
167
+ exports.CODEX_MARKDOWN_REQUEST_ID_PREFIX,
168
+ exports.ANTIGRAVITY_MARKDOWN_REQUEST_ID_PREFIX,
169
+ ];
52
170
  /**
53
171
  * Whether this row's `content` may be rendered as Markdown.
54
172
  *
55
173
  * Conservative by construction: an absent or unrecognised `requestId` answers
56
174
  * false, which is the pre-#2041 rendering. Nothing is ever *upgraded* to
57
- * Markdown by guessing at its content.
175
+ * Markdown by guessing at its content — in particular the `requestId` the
176
+ * scraper has always written for Claude (`req_…`, from `parseClaudeOutput`)
177
+ * matches no prefix and keeps its verbatim rendering.
58
178
  *
59
179
  * @param requestId - `ChatMessage.requestId`, which is usually absent
60
180
  */
61
181
  function isAgentAuthoredMarkdown(requestId) {
62
- return typeof requestId === 'string' && requestId.startsWith(exports.AGENT_MARKDOWN_REQUEST_ID_PREFIX);
182
+ if (typeof requestId !== 'string')
183
+ return false;
184
+ return exports.AGENT_MARKDOWN_REQUEST_ID_PREFIXES.some((prefix) => requestId.startsWith(prefix));
63
185
  }
64
186
  /**
65
187
  * The row id for one opencode turn.
@@ -78,3 +200,117 @@ function isAgentAuthoredMarkdown(requestId) {
78
200
  function opencodeTurnRequestId(userMessageId) {
79
201
  return `${exports.AGENT_MARKDOWN_REQUEST_ID_PREFIX}${userMessageId}`;
80
202
  }
203
+ /**
204
+ * The row id for one Claude Code turn (Issue #2121).
205
+ *
206
+ * The turn is named by the **prompt record it answers** — the `uuid` of the
207
+ * `type: "user"` line the operator's own text arrived on. Deliberately not the
208
+ * assistant record's `uuid` and not its `requestId`, because neither is one per
209
+ * turn: a live transcript sampled while a single prompt was still being
210
+ * answered (2026-08-31) already held **55 assistant records across 23 distinct
211
+ * `requestId`s**, so keying on either would have split one reply into dozens of
212
+ * History rows. The Issue measured the finished shape: 98 assistant records
213
+ * against the single `chat_messages` row the poller wrote.
214
+ *
215
+ * @param promptUuid - `uuid` of the user record that opened the turn
216
+ */
217
+ function claudeTurnRequestId(promptUuid) {
218
+ return `${exports.CLAUDE_MARKDOWN_REQUEST_ID_PREFIX}${promptUuid}`;
219
+ }
220
+ /**
221
+ * The row id for the **prompt** that opened one Claude Code turn (Issue #2196).
222
+ *
223
+ * Same `uuid`, different prefix, and therefore a different row: the turn's
224
+ * assistant row is {@link claudeTurnRequestId} of this same value. One `uuid`
225
+ * names one turn, and a turn is a user row plus an assistant row, so keying both
226
+ * on the record that opened it is what makes the pair reconstructible from the
227
+ * transcript alone — including on a re-read, where both halves must resolve to
228
+ * "already there" independently.
229
+ *
230
+ * @param promptUuid - `uuid` of the user record the operator's text arrived on
231
+ */
232
+ function claudePromptRequestId(promptUuid) {
233
+ return `${exports.CLAUDE_PROMPT_REQUEST_ID_PREFIX}${promptUuid}`;
234
+ }
235
+ /**
236
+ * The row id for one codex turn (Issue #2197).
237
+ *
238
+ * The turn is named by codex's own **`turn_id`**, which it stamps on
239
+ * `task_started`, on every `item_completed`, on `turn_context` and on
240
+ * `task_complete` — one value for everything one prompt produced. That is a
241
+ * stronger key than claude's equivalent rather than an analogous one: claude
242
+ * has to infer the boundary from record order because nothing in its transcript
243
+ * links a reply to its prompt, while codex writes the boundary down.
244
+ *
245
+ * Measured on codex-cli 0.151.0 and on 326 turns of the archived corpus
246
+ * (`docs/design/codex-transcript-reader.md` §2): every turn carried exactly one
247
+ * `turn_id`, and every one of the 326 was closed by a `task_complete` bearing
248
+ * it.
249
+ *
250
+ * @param turnId - `turn_id`, as codex writes it
251
+ */
252
+ function codexTurnRequestId(turnId) {
253
+ return `${exports.CODEX_MARKDOWN_REQUEST_ID_PREFIX}${turnId}`;
254
+ }
255
+ /**
256
+ * The row id for one **prompt** inside a codex turn (Issue #2197).
257
+ *
258
+ * The `UserMessage` item's own id, not the `turn_id` — see
259
+ * {@link CODEX_PROMPT_REQUEST_ID_PREFIX} for the measurement that forces the
260
+ * distinction.
261
+ *
262
+ * @param promptItemId - `item.id` of the `UserMessage` the text arrived on
263
+ */
264
+ function codexPromptRequestId(promptItemId) {
265
+ return `${exports.CODEX_PROMPT_REQUEST_ID_PREFIX}${promptItemId}`;
266
+ }
267
+ /**
268
+ * The turn part of an antigravity row id (Issue #2198).
269
+ *
270
+ * `<conversationId>#<stepIndex>`, and both halves are load-bearing. antigravity
271
+ * has no `turn_id` of codex's kind and no per-record uuid of claude's; what it
272
+ * has is `step_index`, the primary key of the row in its own `steps` table. That
273
+ * is unique inside one conversation — measured with no duplicate across all 41
274
+ * transcripts and 1,024 records on the capture machine — and unique nowhere
275
+ * else, so a bare `12` would collide with the twelfth step of every other
276
+ * conversation the moment two agy instances shared a worktree.
277
+ *
278
+ * The `#` is a separator agy's own ids cannot contain: a conversation id is a
279
+ * uuid and a step index is a non-negative integer.
280
+ *
281
+ * @param conversationId - `conversationId`, as every agy hook payload carries it
282
+ * @param stepIndex - `step_index` of the `USER_INPUT` record that opened the turn
283
+ */
284
+ function antigravityTurnKey(conversationId, stepIndex) {
285
+ return `${conversationId}#${stepIndex}`;
286
+ }
287
+ /**
288
+ * The row id for one antigravity turn (Issue #2198).
289
+ *
290
+ * The turn is named by the **prompt record it answers** — the `step_index` of
291
+ * the `USER_EXPLICIT` / `USER_INPUT` line the operator's text arrived on. That
292
+ * is claude's arrangement (#2121) rather than codex's, because agy writes
293
+ * nothing that closes a turn and nothing that links a reply back to its prompt;
294
+ * what opens the turn is the only boundary in the file.
295
+ *
296
+ * @param conversationId - The conversation the turn was read from
297
+ * @param stepIndex - `step_index` of the record that opened the turn
298
+ */
299
+ function antigravityTurnRequestId(conversationId, stepIndex) {
300
+ return `${exports.ANTIGRAVITY_MARKDOWN_REQUEST_ID_PREFIX}${antigravityTurnKey(conversationId, stepIndex)}`;
301
+ }
302
+ /**
303
+ * The row id for the **prompt** that opened one antigravity turn (Issue #2198).
304
+ *
305
+ * Same pair, different prefix, and therefore a different row — exactly the
306
+ * relationship {@link claudePromptRequestId} has with {@link claudeTurnRequestId},
307
+ * and for the same reason: one prompt record names one turn, and a turn is a
308
+ * user row plus an assistant row, so keying both on the record that opened it is
309
+ * what makes the pair reconstructible from the transcript alone.
310
+ *
311
+ * @param conversationId - The conversation the turn was read from
312
+ * @param stepIndex - `step_index` of the record the operator's text arrived on
313
+ */
314
+ function antigravityPromptRequestId(conversationId, stepIndex) {
315
+ return `${exports.ANTIGRAVITY_PROMPT_REQUEST_ID_PREFIX}${antigravityTurnKey(conversationId, stepIndex)}`;
316
+ }
@@ -5,17 +5,29 @@
5
5
  * Types for sidebar components and branch status display
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.deriveCliStatus = void 0;
8
+ exports.EXITED_STATUS_REASON = exports.deriveCliStatus = void 0;
9
9
  exports.aggregateCliStatus = aggregateCliStatus;
10
10
  exports.formatCliStatusBreakdown = formatCliStatusBreakdown;
11
11
  exports.deriveWorktreeWaitingDetail = deriveWorktreeWaitingDetail;
12
12
  exports.calculateHasUnread = calculateHasUnread;
13
13
  exports.toBranchItem = toBranchItem;
14
14
  const types_1 = require("../lib/cli-tools/types");
15
- const selected_agents_validator_1 = require("../lib/selected-agents-validator");
15
+ const default_agents_1 = require("../config/default-agents");
16
16
  const status_mapping_1 = require("../lib/session/status-mapping");
17
17
  Object.defineProperty(exports, "deriveCliStatus", { enumerable: true, get: function () { return status_mapping_1.deriveCliStatus; } });
18
18
  const next_action_helper_1 = require("../lib/session/next-action-helper");
19
+ /**
20
+ * The `sessionStatusReason` token that means "the pane is there, the agent is
21
+ * not" (Issue #2070).
22
+ *
23
+ * Restated rather than imported from `@/lib/detection/status-reason` for the
24
+ * same reason {@link BranchWaitingKind} is declared structurally: every sidebar
25
+ * client component pulls this module in, and it must keep no edge — not even a
26
+ * type-only one — into the detector's module graph.
27
+ * `tests/unit/detection/tool-liveness-2070.test.ts` pins the two equal, so the
28
+ * restatement cannot drift.
29
+ */
30
+ exports.EXITED_STATUS_REASON = 'exited';
19
31
  /**
20
32
  * `BranchStatus` → `SessionStatus`, so the sidebar can reuse `getNextAction`
21
33
  * (Issue #1787) instead of growing a second next-action table.
@@ -74,13 +86,24 @@ function aggregateCliStatus(cliStatus) {
74
86
  * @param cliStatus - Per-instance status map, keyed by agent-instance id
75
87
  * @param labels - Optional instance-id → display-label map (Issue #878). When a
76
88
  * key is absent, falls back to the CLI tool display name for that id.
89
+ * @param exitedSuffix - Optional annotation for an instance whose session is
90
+ * still there and whose AGENT is not (Issue #2070). Returning a string
91
+ * appends it in parentheses — `Codex: idle (exited)` — and returning null
92
+ * leaves the row exactly as it was. A callback rather than a boolean map
93
+ * because the word is user-facing and therefore localized, and this module
94
+ * runs on the server where `t()` cannot be called (the same rule
95
+ * `NEXT_ACTION_KEYS` follows).
77
96
  * @returns Comma-separated "Label: status" string ('' when empty/absent)
78
97
  */
79
- function formatCliStatusBreakdown(cliStatus, labels) {
98
+ function formatCliStatusBreakdown(cliStatus, labels, exitedSuffix) {
80
99
  if (!cliStatus)
81
100
  return '';
82
101
  return Object.entries(cliStatus)
83
- .map(([instanceId, status]) => `${labels?.[instanceId] ?? (0, types_1.getCliToolDisplayNameSafe)(instanceId, instanceId)}: ${status ?? 'idle'}`)
102
+ .map(([instanceId, status]) => {
103
+ const label = labels?.[instanceId] ?? (0, types_1.getCliToolDisplayNameSafe)(instanceId, instanceId);
104
+ const suffix = exitedSuffix?.(instanceId);
105
+ return `${label}: ${status ?? 'idle'}${suffix ? ` (${suffix})` : ''}`;
106
+ })
84
107
  .join(', ');
85
108
  }
86
109
  /** Precedence for folding per-instance kinds: answerable-now wins (Issue #1786). */
@@ -176,25 +199,32 @@ function labelForUnknownInstance(instanceId) {
176
199
  function deriveSidebarCliStatus(worktree) {
177
200
  const cliStatus = {};
178
201
  const cliStatusLabels = {};
202
+ const exitedInstanceIds = [];
179
203
  const byInstance = worktree.sessionStatusByInstance;
180
204
  // Legacy fallback: no per-instance data → key by selectedAgents / CLI tool.
181
205
  if (!byInstance) {
182
- const agents = worktree.selectedAgents ?? selected_agents_validator_1.DEFAULT_SELECTED_AGENTS;
206
+ const agents = worktree.selectedAgents ?? (0, default_agents_1.getClientDefaultSelectedAgents)();
183
207
  for (const agent of agents) {
184
208
  cliStatus[agent] = (0, status_mapping_1.deriveCliStatus)(worktree.sessionStatusByCli?.[agent]);
185
209
  cliStatusLabels[agent] = (0, types_1.getCliToolDisplayName)(agent);
210
+ if (worktree.sessionStatusByCli?.[agent]?.sessionStatusReason === exports.EXITED_STATUS_REASON) {
211
+ exitedInstanceIds.push(agent);
212
+ }
186
213
  }
187
- return { cliStatus, cliStatusLabels };
214
+ return { cliStatus, cliStatusLabels, exitedInstanceIds };
188
215
  }
189
216
  // Configured roster: explicit agentInstances, else primaries per selectedAgents.
190
217
  const roster = worktree.agentInstances && worktree.agentInstances.length > 0
191
218
  ? worktree.agentInstances
192
- : (0, types_1.agentInstancesFromSelectedAgents)(worktree.selectedAgents ?? selected_agents_validator_1.DEFAULT_SELECTED_AGENTS);
219
+ : (0, types_1.agentInstancesFromSelectedAgents)(worktree.selectedAgents ?? (0, default_agents_1.getClientDefaultSelectedAgents)());
193
220
  const rosterIds = new Set();
194
221
  for (const instance of roster) {
195
222
  rosterIds.add(instance.id);
196
223
  cliStatus[instance.id] = (0, status_mapping_1.deriveCliStatus)(byInstance[instance.id]);
197
224
  cliStatusLabels[instance.id] = (0, types_1.getInstanceLabel)(instance);
225
+ if (byInstance[instance.id]?.sessionStatusReason === exports.EXITED_STATUS_REASON) {
226
+ exitedInstanceIds.push(instance.id);
227
+ }
198
228
  }
199
229
  // Surface any RUNNING instance missing from the roster (e.g. a `claude`
200
230
  // session started even though claude is not in selectedAgents) so the
@@ -208,7 +238,7 @@ function deriveSidebarCliStatus(worktree) {
208
238
  cliStatus[instanceId] = derived;
209
239
  cliStatusLabels[instanceId] = labelForUnknownInstance(instanceId);
210
240
  }
211
- return { cliStatus, cliStatusLabels };
241
+ return { cliStatus, cliStatusLabels, exitedInstanceIds };
212
242
  }
213
243
  /**
214
244
  * Convert Worktree to SidebarBranchItem for display
@@ -231,7 +261,7 @@ function toBranchItem(worktree) {
231
261
  // agentInstances) so instances outside selectedAgents and alias instances are
232
262
  // reflected. Falls back to the legacy selectedAgents path when no per-instance
233
263
  // data is present.
234
- const { cliStatus, cliStatusLabels } = deriveSidebarCliStatus(worktree);
264
+ const { cliStatus, cliStatusLabels, exitedInstanceIds } = deriveSidebarCliStatus(worktree);
235
265
  // Issue #1787: the row's emphasis and its "what do I do next" label both come
236
266
  // from the AGGREGATED status, matching the single dot the row renders.
237
267
  const aggregated = aggregateCliStatus(cliStatus);
@@ -246,6 +276,7 @@ function toBranchItem(worktree) {
246
276
  description: worktree.description,
247
277
  cliStatus,
248
278
  cliStatusLabels,
279
+ exitedInstanceIds,
249
280
  worktreePath: worktree.path,
250
281
  waitingKind,
251
282
  awaitingInstruction,
@@ -6,8 +6,31 @@
6
6
  * Based on Issue #13 UX Improvement design specification (Section 16)
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.initialErrorState = exports.initialLayoutState = exports.initialPromptState = void 0;
9
+ exports.initialErrorState = exports.initialLayoutState = exports.initialPromptState = exports.VALID_SURFACE_MODES = exports.DEFAULT_SURFACE_MODE = void 0;
10
+ exports.isSurfaceMode = isSurfaceMode;
10
11
  exports.createInitialUIState = createInitialUIState;
12
+ /**
13
+ * The mode a session opens in when nothing has been persisted and no `?view=`
14
+ * was given, and the value every invalid input falls back to.
15
+ */
16
+ exports.DEFAULT_SURFACE_MODE = 'terminal';
17
+ /** Set of valid {@link SurfaceMode} values for runtime validation. */
18
+ exports.VALID_SURFACE_MODES = new Set([
19
+ 'terminal',
20
+ 'chat',
21
+ ]);
22
+ /**
23
+ * Runtime type guard for {@link SurfaceMode}.
24
+ *
25
+ * The boundary for BOTH untrusted sources of a mode: the `?view=` query
26
+ * parameter and the localStorage value (which a user, an extension or an older
27
+ * build may have written). Accepts `unknown` so `searchParams.get()` /
28
+ * `localStorage.getItem()` — both `string | null` — can be handed over
29
+ * unnarrowed; a non-string is simply not a SurfaceMode.
30
+ */
31
+ function isSurfaceMode(value) {
32
+ return typeof value === 'string' && exports.VALID_SURFACE_MODES.has(value);
33
+ }
11
34
  /**
12
35
  * Initial prompt state
13
36
  */
@@ -280,4 +280,123 @@ export type GracefulExitVerdict = {
280
280
  readonly ok: false;
281
281
  readonly reason: GracefulExitFailureReason;
282
282
  };
283
+ /**
284
+ * How one tool's pane is read for the question "is the TOOL still there?".
285
+ *
286
+ * ## Why this is a declaration and not one function per tool
287
+ *
288
+ * A tmux session outliving the process it was created for is not an exotic
289
+ * state: codex's own "1. Update now" replaces itself with `npm install` and
290
+ * exits, `Ctrl+C` twice quits it, and a crash does the same thing more
291
+ * abruptly. In every case the pane falls back to the login shell and
292
+ * `has-session` keeps answering yes — so `isRunning` stays true, the sidebar
293
+ * keeps a green dot, and the next `send` times out in `waitForPrompt` with no
294
+ * recovery but a manual `kill-session`.
295
+ *
296
+ * CommandMate has always had a check for this, and it was **claude's alone** —
297
+ * `isSessionHealthy`, reached from exactly one `cliToolId === 'claude'` branch
298
+ * in `worktree-status-helper`. The rule inside it is not claude-specific,
299
+ * though; what is claude-specific are the two patterns it is written in terms
300
+ * of. So the rule became shared code and the patterns became this declaration,
301
+ * one per tool, which is the same §4 D4 shape {@link ComposerSpec} /
302
+ * {@link CaptureSpec} / {@link GracefulExitSpec} already take.
303
+ *
304
+ * ## The rule the fields spell out
305
+ *
306
+ * "The tool exited" is the conjunction of a negative and a positive:
307
+ *
308
+ * 1. **none of {@link alivePatterns} matches** the bottom of the frame — the
309
+ * tool's own composer, dialog chrome or working indicator is not there; and
310
+ * 2. **the last content row positively reads as a shell prompt** — either it
311
+ * matches one of {@link shellPromptPatterns}, or it is short enough to be a
312
+ * prompt ({@link maxShellPromptLength}) and ends with one of
313
+ * {@link shellPromptEndings}.
314
+ *
315
+ * Both halves are load-bearing, and (1) alone is not enough: a tool that is
316
+ * mid-launch, painting, or showing a screen nobody has measured also matches no
317
+ * alive pattern, and relaunching into a live pane would type the launch command
318
+ * into the agent's composer. A verdict is only ever reached on evidence that the
319
+ * SHELL is what is drawing the row.
320
+ *
321
+ * @see `resolveLivenessSpec` in `lib/cli-tools/liveness-spec` for the table.
322
+ */
323
+ export interface ToolLivenessSpec {
324
+ /**
325
+ * Rows of pane tail the liveness probe asks tmux for.
326
+ *
327
+ * Deliberately small. The probe is looking at the BOTTOM of the pane — what
328
+ * is on screen now — and a deep capture only drags more scrollback into
329
+ * range, which is the one thing {@link aliveTailLines} then has to undo.
330
+ */
331
+ readonly probeCaptureLines: number;
332
+ /**
333
+ * Patterns whose presence proves this tool's own TUI is drawing the pane:
334
+ * its prompt-ready rule, plus whatever else it draws while busy or while
335
+ * sitting on a dialog. Matching any one of them ends the probe with "alive".
336
+ */
337
+ readonly alivePatterns: readonly RegExp[];
338
+ /**
339
+ * How many content rows from the bottom {@link alivePatterns} may look at, or
340
+ * `null` for the whole frame.
341
+ *
342
+ * A window rather than the frame, because a tool's own chrome does not
343
+ * disappear when it quits — it scrolls up. Measured on codex 0.149.1: the
344
+ * pane of an exited session still holds `› 1. Yes, continue` from the trust
345
+ * dialog it was launched through, 1000 rows above the shell prompt. A
346
+ * whole-frame test therefore says "alive" forever, which is the same
347
+ * false-negative shape claude's own check has always had.
348
+ *
349
+ * `null` is claude's, and only claude's: `isSessionHealthy` has tested the
350
+ * whole frame since it was written, and Issue #2070's acceptance condition is
351
+ * that claude's verdicts do not move.
352
+ */
353
+ readonly aliveTailLines: number | null;
354
+ /**
355
+ * Whole-line patterns that positively identify a shell prompt, checked
356
+ * against the last content row BEFORE {@link maxShellPromptLength}.
357
+ *
358
+ * Empty for claude — its rule is the length gate and the endings alone, and
359
+ * that is what must not change. For every other tool this carries the
360
+ * `user@host … %` form, because the length gate alone is not enough: the
361
+ * zsh default prompt of the machine Issue #2070 was measured on renders as
362
+ * `maenokota@MAENOnoMac-Studio work-codex %` — exactly 40 characters, i.e.
363
+ * one character past claude's own cut-off.
364
+ */
365
+ readonly shellPromptPatterns: readonly RegExp[];
366
+ /** Trailing characters that make a short last row a shell prompt. */
367
+ readonly shellPromptEndings: readonly string[];
368
+ /**
369
+ * A last row this long or longer is never treated as a shell prompt by the
370
+ * endings rule. Guards TUI content that happens to end in `$` / `%` / `#`.
371
+ */
372
+ readonly maxShellPromptLength: number;
373
+ /** Literal strings in the frame's tail that condemn the session outright. */
374
+ readonly fatalPatterns: readonly string[];
375
+ /** Regexes in the frame's tail that condemn the session outright. */
376
+ readonly fatalRegexPatterns: readonly RegExp[];
377
+ /**
378
+ * Whether a frame nobody could read — an empty pane, or a capture that threw
379
+ * — counts as "the tool is gone".
380
+ *
381
+ * True for claude, which has judged both that way since it was written. False
382
+ * for every tool this Issue adds, and the asymmetry is deliberate: those two
383
+ * frames carry no evidence either way, and Issue #2070 puts a RELAUNCH behind
384
+ * this verdict. "No evidence" must not be able to fire it.
385
+ */
386
+ readonly unreadableIsExited: boolean;
387
+ }
388
+ /**
389
+ * What a liveness probe concluded (Issue #2070).
390
+ *
391
+ * `alive: true` carries no reason: there is nothing to say beyond "the tool is
392
+ * there". `alive: false` always carries one, and it is the string that reaches
393
+ * the operator — through `HealthCheckResult.reason`, the `exited` status reason
394
+ * the sidebar and `commandmate ls` publish, and the relaunch log line.
395
+ */
396
+ export type ToolLivenessVerdict = {
397
+ readonly alive: true;
398
+ } | {
399
+ readonly alive: false;
400
+ readonly reason: string;
401
+ };
283
402
  //# sourceMappingURL=cli-tool-contracts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-tool-contracts.d.ts","sourceRoot":"","sources":["../../src/types/cli-tool-contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-tool-contracts.d.ts","sourceRoot":"","sources":["../../src/types/cli-tool-contracts.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "commandmate",
3
- "version": "0.29.1",
3
+ "version": "0.30.0",
4
4
  "description": "A local control plane for agent CLIs — orchestration and visibility for Claude Code, Codex, Gemini CLI, and more across Git worktrees",
5
5
  "keywords": [
6
6
  "claude-code",
package/public/sw.js CHANGED
@@ -150,6 +150,11 @@ self.addEventListener('message', function (event) {
150
150
  // over, and this device may still be showing it. Close the stale cards carrying
151
151
  // that tag, then show ONE silent replacement in their place.
152
152
  //
153
+ // Issue #2155 widened the caller: EVERY tagged payload comes through here now,
154
+ // not only resolutions. The replacement is silent only for a resolution — a
155
+ // waiting card is still allowed to alert — but the close-then-show sequence
156
+ // below is identical for both, so nothing in this function had to change.
157
+ //
153
158
  // THE ORDER IS LOAD-BEARING AND MUST NOT BE INVERTED. Every subscription in
154
159
  // this app is created with `userVisibleOnly: true` — the only value browsers
155
160
  // accept from a web page — and each engine enforces it by looking at what is
@@ -173,6 +178,7 @@ function replaceStaleNotifications(title, options) {
173
178
  closing = Promise.resolve();
174
179
  } else {
175
180
  closing = registration
181
+ // Correct either way: whether an engine hands back every card carrying the tag or only the newest one, the loop closes exactly what it was handed (iOS is still unmeasured on this point — Issue #2155).
176
182
  .getNotifications({ tag: tag })
177
183
  .then(function (stale) {
178
184
  for (var i = 0; i < stale.length; i++) {
@@ -225,8 +231,16 @@ self.addEventListener('push', function (event) {
225
231
  // different, louder instruction.
226
232
  if (resolved) options.silent = true;
227
233
 
234
+ // --- Issue #2155 ---------------------------------------------------------
235
+ // Every TAGGED push takes the close-then-show path, not just resolutions.
236
+ // Safari/iOS does not collapse same-tag cards on a plain `showNotification`,
237
+ // so waiting notifications — and every escalation re-notification behind them
238
+ // — stacked up there while Chrome folded them into one (measured 2026-08-30,
239
+ // iPad iOS 18.7 / Safari 26.5.2 vs Android 10 / Chrome 151). Closing the
240
+ // stale cards explicitly is the part iOS does honour. An untagged push has
241
+ // nothing to replace and goes straight to `showNotification`.
228
242
  event.waitUntil(
229
- resolved
243
+ options.tag
230
244
  ? replaceStaleNotifications(title, options)
231
245
  : self.registration.showNotification(title, options)
232
246
  );
@@ -1 +0,0 @@
1
- "use strict";(()=>{var a={};a.id=9457,a.ids=[2839,5220,9457],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3421:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(71237),e=c(55088),f=c(17679);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12412:a=>{a.exports=require("assert")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{a.exports=require("process")},21820:a=>{a.exports=require("os")},27289:(a,b,c)=>{c.d(b,{t:()=>j,z:()=>i});var d=c(10641),e=c(88807),f=c(56791),g=c(95506),h=c(66007);function i(a){if(!a)return a;try{if(!(0,h.h6)(a))return a;let b=(0,e.getDbInstance)();return(0,g.l0)(b,a)??a}catch{return a}}function j(a){if(!(0,h.h6)(a))return d.NextResponse.json({error:"Invalid worktree ID format"},{status:400});let b=(0,e.getDbInstance)(),c=(0,f.getWorktreeById)(b,i(a));return c||d.NextResponse.json({error:"Worktree not found"},{status:404})}},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},34631:a=>{a.exports=require("tls")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},48478:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>I,patchFetch:()=>H,routeModule:()=>D,serverHooks:()=>G,workAsyncStorage:()=>E,workUnitAsyncStorage:()=>F});var d={};c.r(d),c.d(d,{POST:()=>C});var e=c(95736),f=c(9117),g=c(4044),h=c(39326),i=c(32324),j=c(261),k=c(54290),l=c(85328),m=c(38928),n=c(46595),o=c(3421),p=c(17679),q=c(41681),r=c(63446),s=c(86439),t=c(51356),u=c(10641),v=c(88807),w=c(56791),x=c(95220),y=c(15194),z=c(72626),A=c(27289);let B=(0,z.h)("api/start-polling");async function C(a,{params:b}){try{let{id:c}=await b,d=(0,A.z)(c),e=(0,v.getDbInstance)();if(!(0,w.getWorktreeById)(e,d))return u.NextResponse.json({error:`Worktree '${d}' not found`},{status:404});let f=await a.json();if(!f.cliToolId||!y.XH.includes(f.cliToolId))return u.NextResponse.json({error:`Invalid CLI tool ID. Must be one of: ${y.XH.join(", ")}`},{status:400});return B.info("manually-starting-polling-for"),(0,x.startPolling)(d,f.cliToolId),u.NextResponse.json({success:!0,message:`Started polling for ${f.cliToolId} session`})}catch(a){return B.error("error-starting-polling:",{error:a instanceof Error?a.message:String(a)}),u.NextResponse.json({error:"Failed to start polling"},{status:500})}}let D=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/worktrees/[id]/start-polling/route",pathname:"/api/worktrees/[id]/start-polling",filename:"route",bundlePath:"app/api/worktrees/[id]/start-polling/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/start-polling/route.ts",nextConfigOutput:"",userland:d}),{workAsyncStorage:E,workUnitAsyncStorage:F,serverHooks:G}=D;function H(){return(0,g.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:F})}async function I(a,b,c){var d;let e="/api/worktrees/[id]/start-polling/route";"/index"===e&&(e="/");let g=await D.prepare(a,b,{srcPage:e,multiZoneDraftMode:!1});if(!g)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:u,params:v,nextConfig:w,isDraftMode:x,prerenderManifest:y,routerServerContext:z,isOnDemandRevalidate:A,revalidateOnlyGenerated:B,resolvedPathname:C}=g,E=(0,j.normalizeAppPath)(e),F=!!(y.dynamicRoutes[E]||y.routes[C]);if(F&&!x){let a=!!y.routes[C],b=y.dynamicRoutes[E];if(b&&!1===b.fallback&&!a)throw new s.NoFallbackError}let G=null;!F||D.isDev||x||(G="/index"===(G=C)?"/":G);let H=!0===D.isDev||!F,I=F&&!H,J=a.method||"GET",K=(0,i.getTracer)(),L=K.getActiveScopeSpan(),M={params:v,prerenderManifest:y,renderOpts:{experimental:{cacheComponents:!!w.experimental.cacheComponents,authInterrupts:!!w.experimental.authInterrupts},supportsDynamicResponse:H,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:null==(d=w.experimental)?void 0:d.cacheLife,isRevalidate:I,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d)=>D.onRequestError(a,b,d,z)},sharedContext:{buildId:u}},N=new k.NodeNextRequest(a),O=new k.NodeNextResponse(b),P=l.NextRequestAdapter.fromNodeNextRequest(N,(0,l.signalFromNodeResponse)(b));try{let d=async c=>D.handle(P,M).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=K.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==m.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${J} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${J} ${a.url}`)}),g=async g=>{var i,j;let k=async({previousCacheEntry:f})=>{try{if(!(0,h.getRequestMeta)(a,"minimalMode")&&A&&B&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let e=await d(g);a.fetchMetrics=M.renderOpts.fetchMetrics;let i=M.renderOpts.pendingWaitUntil;i&&c.waitUntil&&(c.waitUntil(i),i=void 0);let j=M.renderOpts.collectedTags;if(!F)return await (0,o.I)(N,O,e,M.renderOpts.pendingWaitUntil),null;{let a=await e.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(e.headers);j&&(b[r.NEXT_CACHE_TAGS_HEADER]=j),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,d=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=r.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:t.CachedRouteKind.APP_ROUTE,status:e.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:d}}}}catch(b){throw(null==f?void 0:f.isStale)&&await D.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:A})},z),b}},l=await D.handleResponse({req:a,nextConfig:w,cacheKey:G,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:B,responseGenerator:k,waitUntil:c.waitUntil});if(!F)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==t.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(j=l.value)?void 0:j.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});(0,h.getRequestMeta)(a,"minimalMode")||b.setHeader("x-nextjs-cache",A?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),x&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,p.fromNodeOutgoingHttpHeaders)(l.value.headers);return(0,h.getRequestMeta)(a,"minimalMode")&&F||m.delete(r.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||b.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,q.getCacheControlHeader)(l.cacheControl)),await (0,o.I)(N,O,new Response(l.value.body,{headers:m,status:l.value.status||200})),null};L?await g(L):await K.withPropagatedContext(a.headers,()=>K.trace(m.BaseServerSpan.handleRequest,{spanName:`${J} ${a.url}`,kind:i.SpanKind.SERVER,attributes:{"http.method":J,"http.target":a.url}},g))}catch(b){if(b instanceof s.NoFallbackError||await D.onRequestError(a,b,{routerKind:"App Router",routePath:E,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:A})}),F)throw b;return await (0,o.I)(N,O,new Response(null,{status:500})),null}}},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},74075:a=>{a.exports=require("zlib")},79428:a=>{a.exports=require("buffer")},79551:a=>{a.exports=require("url")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},81630:a=>{a.exports=require("http")},83997:a=>{a.exports=require("tty")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")},95220:(a,b,c)=>{c.r(b),c.d(b,{accumulateTuiContent:()=>g.IZ,cleanClaudeResponse:()=>f.NN,cleanCopilotResponse:()=>f.LH,cleanGeminiResponse:()=>f.IS,cleanOpenCodeResponse:()=>f.aW,clearPromptHashCache:()=>h.iX,clearTuiAccumulator:()=>g.q1,extractCopilotContentLines:()=>g.o0,extractTuiContentLines:()=>g.K0,findOverlapIndex:()=>g.vQ,getAccumulatedContent:()=>g.Uz,getActivePollers:()=>d.KQ,initTuiAccumulator:()=>g.tb,isDuplicatePrompt:()=>h.gv,isOpenCodeComplete:()=>e.bE,migrateResponsePollerWorktreeIds:()=>d.sR,normalizeCopilotLine:()=>g.IW,normalizePromptForDedup:()=>h.zm,renamePromptHashCacheKey:()=>h.i2,resolveExtractionStartIndex:()=>e.QM,startPolling:()=>d.g8,stopAllPolling:()=>d.fq,stopPolling:()=>d.Et,truncateMessage:()=>f.Sj});var d=c(45146),e=c(60),f=c(82450),g=c(13033),h=c(72457)},95736:(a,b,c)=>{a.exports=c(44870)}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[1331,641,2366,1356,1503,1634,9067,9627,8807,406,5164,9798,1714,9130,4299,7905,1886,1719,1191,6337,2759,7824,7472,5017,1058,1601,221],()=>b(b.s=48478));module.exports=c})();