commandmate 0.29.1 → 0.29.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (906) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +458 -414
  3. package/.next/app-path-routes-manifest.json +32 -26
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +15 -15
  6. package/.next/react-loadable-manifest.json +3 -3
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +17 -0
  9. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  10. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/update/route.js +2 -0
  12. package/.next/server/app/api/agents/update/route.js.nft.json +1 -0
  13. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -0
  14. package/.next/server/app/api/agents/versions/route.js +1 -0
  15. package/.next/server/app/api/agents/versions/route.js.nft.json +1 -0
  16. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -0
  17. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/app/update-check/route.js +1 -1
  19. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  21. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  22. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  24. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  25. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/assistant/messages/route.js +1 -1
  27. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  28. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/assistant/session/route.js +1 -1
  30. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  31. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/assistant/start/route.js +2 -2
  33. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  34. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/assistant/terminal/route.js +1 -1
  36. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  37. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/assistant/tools/route.js +1 -1
  39. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  40. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/capabilities/route.js +1 -1
  45. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/daily-summary/route.js +1 -1
  47. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  48. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  50. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  51. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
  53. package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
  54. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  56. package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
  57. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/external-apps/route.js +1 -1
  59. package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
  60. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/fs/browse/route.js +1 -7
  62. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
  63. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/fs/recent-paths/route.js +1 -7
  65. package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
  66. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  68. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  69. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  71. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  72. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  74. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  75. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/metrics/vibe/route.js +2 -2
  77. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
  78. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/push/escalation/route.js +7 -1
  81. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  82. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  84. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  85. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/push/vapid/route.js +7 -1
  87. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  88. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/repositories/[id]/route.js +1 -1
  91. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  92. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  94. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +1 -1
  95. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  97. package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +1 -1
  98. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  100. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  101. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/repositories/clone/route.js +1 -1
  103. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  104. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/repositories/excluded/route.js +1 -1
  106. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  107. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/repositories/restore/route.js +1 -1
  109. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  110. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/repositories/route.js +1 -1
  112. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  113. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/repositories/scan/route.js +1 -1
  115. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  116. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/repositories/sync/route.js +1 -1
  118. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  119. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/repositories/validate-path/route.js +1 -1
  121. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
  122. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/settings/default-agents/route.js +1 -0
  124. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -0
  125. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -0
  126. package/.next/server/app/api/sidebar/group-order/route.js +1 -7
  127. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  128. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/skills/[id]/route.js +1 -1
  130. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  131. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/skills/installations/route.js +2 -2
  133. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  134. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/skills/operations/route.js +2 -2
  136. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
  137. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/skills/reindex/route.js +1 -1
  139. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
  140. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/skills/route.js +1 -1
  142. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  143. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/slash-commands/route.js +1 -1
  145. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  146. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/tasks/[taskId]/cancel/route.js +1 -1
  148. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  149. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  151. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
  152. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/templates/[id]/route.js +2 -2
  154. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  155. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/templates/route.js +2 -2
  157. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  158. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/todos/route.js +1 -1
  160. package/.next/server/app/api/todos/route.js.nft.json +1 -1
  161. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  163. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
  164. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/verification/runs/route.js +1 -1
  166. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
  167. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  173. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  176. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +2 -2
  181. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  182. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -2
  184. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  185. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
  188. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  191. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  193. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  197. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  200. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  206. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  218. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  221. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  233. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  236. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  239. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  242. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  245. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  248. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  251. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  254. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  257. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  260. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  263. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  266. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  269. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  272. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  275. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  278. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  279. package/.next/server/app/api/worktrees/[id]/logs/route.js +2 -2
  280. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  281. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +3 -3
  283. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  284. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  286. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  287. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  289. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  290. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  291. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  293. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  294. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
  296. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  298. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  299. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  301. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  302. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  304. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  305. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  306. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  307. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
  308. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  309. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  310. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  311. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  312. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  313. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  314. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  315. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  316. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  317. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  318. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  319. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  320. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  321. package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
  322. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  323. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  324. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  325. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  326. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  327. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -7
  328. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  329. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  330. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
  331. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  332. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  333. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  334. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  335. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  336. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  337. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  338. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  339. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  340. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  341. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  342. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  343. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  344. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  345. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
  346. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
  347. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  348. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  349. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  350. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  351. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  352. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  353. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  354. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  355. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  356. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  357. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  358. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  359. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  360. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  361. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
  362. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  363. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  364. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  365. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  366. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  367. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  368. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  369. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  370. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  371. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  372. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  373. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  374. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  375. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  376. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  377. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  378. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  379. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  380. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  381. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  382. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  383. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  384. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  385. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  386. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  387. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  388. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  389. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  390. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +2 -0
  391. package/.next/server/app/api/worktrees/[id]/verify/config/route.js.nft.json +1 -0
  392. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -0
  393. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  394. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  395. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  396. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -0
  397. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -0
  398. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -0
  399. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  400. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
  401. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  402. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  403. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
  404. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  405. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  406. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  407. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  408. package/.next/server/app/api/worktrees/apply-default-agents/route.js +1 -0
  409. package/.next/server/app/api/worktrees/apply-default-agents/route.js.nft.json +1 -0
  410. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -0
  411. package/.next/server/app/api/worktrees/route.js +1 -1
  412. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  413. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  414. package/.next/server/app/chat/page.js +2 -2
  415. package/.next/server/app/chat/page.js.nft.json +1 -1
  416. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  417. package/.next/server/app/login/page.js +2 -2
  418. package/.next/server/app/login/page.js.nft.json +1 -1
  419. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  420. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  421. package/.next/server/app/more/page.js +2 -2
  422. package/.next/server/app/more/page.js.nft.json +1 -1
  423. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  424. package/.next/server/app/offline/page.js.nft.json +1 -1
  425. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  426. package/.next/server/app/page.js +1 -1
  427. package/.next/server/app/page.js.nft.json +1 -1
  428. package/.next/server/app/page_client-reference-manifest.js +1 -1
  429. package/.next/server/app/proxy/[...path]/route.js +1 -1
  430. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  431. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  432. package/.next/server/app/repositories/page.js +2 -2
  433. package/.next/server/app/repositories/page.js.nft.json +1 -1
  434. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  435. package/.next/server/app/review/page.js +1 -1
  436. package/.next/server/app/review/page.js.nft.json +1 -1
  437. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  438. package/.next/server/app/sessions/page.js +1 -1
  439. package/.next/server/app/sessions/page.js.nft.json +1 -1
  440. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  441. package/.next/server/app/skills/[skillId]/page.js +2 -2
  442. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  443. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  444. package/.next/server/app/skills/installed/page.js +2 -2
  445. package/.next/server/app/skills/installed/page.js.nft.json +1 -1
  446. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  447. package/.next/server/app/skills/page.js +2 -2
  448. package/.next/server/app/skills/page.js.nft.json +1 -1
  449. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  450. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
  451. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  452. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  453. package/.next/server/app/worktrees/[id]/page.js +12 -12
  454. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  455. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  456. package/.next/server/app/worktrees/[id]/terminal/page.js +3 -3
  457. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  458. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  459. package/.next/server/app-paths-manifest.json +32 -26
  460. package/.next/server/chunks/1058.js +1 -1
  461. package/.next/server/chunks/1068.js +1 -1
  462. package/.next/server/chunks/1341.js +1 -0
  463. package/.next/server/chunks/1501.js +5 -0
  464. package/.next/server/chunks/1886.js +3 -4
  465. package/.next/server/chunks/2119.js +1 -1
  466. package/.next/server/chunks/2198.js +1 -0
  467. package/.next/server/chunks/221.js +7 -1
  468. package/.next/server/chunks/2445.js +1 -1
  469. package/.next/server/chunks/2759.js +1 -1
  470. package/.next/server/chunks/3543.js +1 -1
  471. package/.next/server/chunks/3558.js +1 -1
  472. package/.next/server/chunks/3707.js +15 -0
  473. package/.next/server/chunks/3722.js +25 -1
  474. package/.next/server/chunks/3869.js +1 -0
  475. package/.next/server/chunks/3945.js +1 -1
  476. package/.next/server/chunks/4299.js +1 -1
  477. package/.next/server/chunks/4390.js +1 -0
  478. package/.next/server/chunks/4393.js +1 -1
  479. package/.next/server/chunks/5017.js +1 -1
  480. package/.next/server/chunks/5164.js +1 -1
  481. package/.next/server/chunks/5571.js +1 -1
  482. package/.next/server/chunks/6130.js +1 -1
  483. package/.next/server/chunks/6285.js +1 -1
  484. package/.next/server/chunks/6781.js +1 -1
  485. package/.next/server/chunks/7366.js +5 -0
  486. package/.next/server/chunks/7824.js +1 -1
  487. package/.next/server/chunks/7905.js +1 -1
  488. package/.next/server/chunks/8118.js +1 -0
  489. package/.next/server/chunks/848.js +1 -1
  490. package/.next/server/chunks/880.js +3 -3
  491. package/.next/server/chunks/8800.js +3 -0
  492. package/.next/server/chunks/9123.js +2 -2
  493. package/.next/server/chunks/9508.js +1 -1
  494. package/.next/server/chunks/9627.js +30 -24
  495. package/.next/server/middleware-build-manifest.js +1 -1
  496. package/.next/server/middleware-manifest.json +5 -5
  497. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  498. package/.next/server/pages/500.html +1 -1
  499. package/.next/server/server-reference-manifest.json +1 -1
  500. package/.next/static/0YoRrahue4Vchxg1z83IQ/_buildManifest.js +1 -0
  501. package/.next/static/chunks/1379-af7af9e08f47c979.js +1 -0
  502. package/.next/static/chunks/{2053-c0e931eb4391baa1.js → 2053-3f299a7a2c7d6767.js} +1 -1
  503. package/.next/static/chunks/3922.9c1ec01fff819c88.js +1 -0
  504. package/.next/static/chunks/{3968-8d8ca15657748bfb.js → 4882-388e94fe0a03c2ba.js} +1 -1
  505. package/.next/static/chunks/5229-b2a81bb8fb5c19e9.js +1 -0
  506. package/.next/static/chunks/6381-9ba5198c0a6ff197.js +1 -0
  507. package/.next/static/chunks/8019-f8e73c1fb5f6f0d3.js +1 -0
  508. package/.next/static/chunks/{1188-8567ee5ecfef02ee.js → 8593-fa0eb2802e0ce68a.js} +1 -1
  509. package/.next/static/chunks/app/api/agents/update/route-1c30fb8d4d6fa6ef.js +1 -0
  510. package/.next/static/chunks/app/api/agents/versions/route-1c30fb8d4d6fa6ef.js +1 -0
  511. package/.next/static/chunks/app/api/app/update/route-1c30fb8d4d6fa6ef.js +1 -0
  512. package/.next/static/chunks/app/api/app/update-check/route-1c30fb8d4d6fa6ef.js +1 -0
  513. package/.next/static/chunks/app/api/assistant/conversation/route-1c30fb8d4d6fa6ef.js +1 -0
  514. package/.next/static/chunks/app/api/assistant/current-output/route-1c30fb8d4d6fa6ef.js +1 -0
  515. package/.next/static/chunks/app/api/assistant/messages/route-1c30fb8d4d6fa6ef.js +1 -0
  516. package/.next/static/chunks/app/api/assistant/session/route-1c30fb8d4d6fa6ef.js +1 -0
  517. package/.next/static/chunks/app/api/assistant/start/route-1c30fb8d4d6fa6ef.js +1 -0
  518. package/.next/static/chunks/app/api/assistant/terminal/route-1c30fb8d4d6fa6ef.js +1 -0
  519. package/.next/static/chunks/app/api/assistant/tools/route-1c30fb8d4d6fa6ef.js +1 -0
  520. package/.next/static/chunks/app/api/auth/login/route-1c30fb8d4d6fa6ef.js +1 -0
  521. package/.next/static/chunks/app/api/auth/logout/route-1c30fb8d4d6fa6ef.js +1 -0
  522. package/.next/static/chunks/app/api/auth/status/route-1c30fb8d4d6fa6ef.js +1 -0
  523. package/.next/static/chunks/app/api/capabilities/route-1c30fb8d4d6fa6ef.js +1 -0
  524. package/.next/static/chunks/app/api/daily-summary/route-1c30fb8d4d6fa6ef.js +1 -0
  525. package/.next/static/chunks/app/api/daily-summary/status/route-1c30fb8d4d6fa6ef.js +1 -0
  526. package/.next/static/chunks/app/api/external-apps/[id]/health/route-1c30fb8d4d6fa6ef.js +1 -0
  527. package/.next/static/chunks/app/api/external-apps/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  528. package/.next/static/chunks/app/api/external-apps/route-1c30fb8d4d6fa6ef.js +1 -0
  529. package/.next/static/chunks/app/api/fs/browse/route-1c30fb8d4d6fa6ef.js +1 -0
  530. package/.next/static/chunks/app/api/fs/recent-paths/route-1c30fb8d4d6fa6ef.js +1 -0
  531. package/.next/static/chunks/app/api/hooks/agent-event/route-1c30fb8d4d6fa6ef.js +1 -0
  532. package/.next/static/chunks/app/api/hooks/claude-done/route-1c30fb8d4d6fa6ef.js +1 -0
  533. package/.next/static/chunks/app/api/hooks/permission-request/route-1c30fb8d4d6fa6ef.js +1 -0
  534. package/.next/static/chunks/app/api/metrics/vibe/route-1c30fb8d4d6fa6ef.js +1 -0
  535. package/.next/static/chunks/app/api/ollama/models/route-1c30fb8d4d6fa6ef.js +1 -0
  536. package/.next/static/chunks/app/api/push/escalation/route-1c30fb8d4d6fa6ef.js +1 -0
  537. package/.next/static/chunks/app/api/push/subscriptions/route-1c30fb8d4d6fa6ef.js +1 -0
  538. package/.next/static/chunks/app/api/push/vapid/route-1c30fb8d4d6fa6ef.js +1 -0
  539. package/.next/static/chunks/app/api/remote/pair/route-1c30fb8d4d6fa6ef.js +1 -0
  540. package/.next/static/chunks/app/api/repositories/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  541. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-1c30fb8d4d6fa6ef.js +1 -0
  542. package/.next/static/chunks/app/api/repositories/[id]/todos/route-1c30fb8d4d6fa6ef.js +1 -0
  543. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-1c30fb8d4d6fa6ef.js +1 -0
  544. package/.next/static/chunks/app/api/repositories/clone/route-1c30fb8d4d6fa6ef.js +1 -0
  545. package/.next/static/chunks/app/api/repositories/excluded/route-1c30fb8d4d6fa6ef.js +1 -0
  546. package/.next/static/chunks/app/api/repositories/restore/route-1c30fb8d4d6fa6ef.js +1 -0
  547. package/.next/static/chunks/app/api/repositories/route-1c30fb8d4d6fa6ef.js +1 -0
  548. package/.next/static/chunks/app/api/repositories/scan/route-1c30fb8d4d6fa6ef.js +1 -0
  549. package/.next/static/chunks/app/api/repositories/sync/route-1c30fb8d4d6fa6ef.js +1 -0
  550. package/.next/static/chunks/app/api/repositories/validate-path/route-1c30fb8d4d6fa6ef.js +1 -0
  551. package/.next/static/chunks/app/api/settings/default-agents/route-1c30fb8d4d6fa6ef.js +1 -0
  552. package/.next/static/chunks/app/api/sidebar/group-order/route-1c30fb8d4d6fa6ef.js +1 -0
  553. package/.next/static/chunks/app/api/skills/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  554. package/.next/static/chunks/app/api/skills/installations/route-1c30fb8d4d6fa6ef.js +1 -0
  555. package/.next/static/chunks/app/api/skills/operations/route-1c30fb8d4d6fa6ef.js +1 -0
  556. package/.next/static/chunks/app/api/skills/reindex/route-1c30fb8d4d6fa6ef.js +1 -0
  557. package/.next/static/chunks/app/api/skills/route-1c30fb8d4d6fa6ef.js +1 -0
  558. package/.next/static/chunks/app/api/slash-commands/route-1c30fb8d4d6fa6ef.js +1 -0
  559. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-1c30fb8d4d6fa6ef.js +1 -0
  560. package/.next/static/chunks/app/api/tasks/[taskId]/route-1c30fb8d4d6fa6ef.js +1 -0
  561. package/.next/static/chunks/app/api/templates/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  562. package/.next/static/chunks/app/api/templates/route-1c30fb8d4d6fa6ef.js +1 -0
  563. package/.next/static/chunks/app/api/todos/route-1c30fb8d4d6fa6ef.js +1 -0
  564. package/.next/static/chunks/app/api/verification/runs/[runId]/route-1c30fb8d4d6fa6ef.js +1 -0
  565. package/.next/static/chunks/app/api/verification/runs/route-1c30fb8d4d6fa6ef.js +1 -0
  566. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-1c30fb8d4d6fa6ef.js +1 -0
  567. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-1c30fb8d4d6fa6ef.js +1 -0
  568. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-1c30fb8d4d6fa6ef.js +1 -0
  569. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-1c30fb8d4d6fa6ef.js +1 -0
  570. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-1c30fb8d4d6fa6ef.js +1 -0
  571. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-1c30fb8d4d6fa6ef.js +1 -0
  572. package/.next/static/chunks/app/api/worktrees/[id]/env/route-1c30fb8d4d6fa6ef.js +1 -0
  573. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-1c30fb8d4d6fa6ef.js +1 -0
  574. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-1c30fb8d4d6fa6ef.js +1 -0
  575. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
  576. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-1c30fb8d4d6fa6ef.js +1 -0
  577. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-1c30fb8d4d6fa6ef.js +1 -0
  578. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-1c30fb8d4d6fa6ef.js +1 -0
  579. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-1c30fb8d4d6fa6ef.js +1 -0
  580. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-1c30fb8d4d6fa6ef.js +1 -0
  581. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-1c30fb8d4d6fa6ef.js +1 -0
  582. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-1c30fb8d4d6fa6ef.js +1 -0
  583. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-1c30fb8d4d6fa6ef.js +1 -0
  584. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-1c30fb8d4d6fa6ef.js +1 -0
  585. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-1c30fb8d4d6fa6ef.js +1 -0
  586. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-1c30fb8d4d6fa6ef.js +1 -0
  587. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-1c30fb8d4d6fa6ef.js +1 -0
  588. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-1c30fb8d4d6fa6ef.js +1 -0
  589. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-1c30fb8d4d6fa6ef.js +1 -0
  590. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-1c30fb8d4d6fa6ef.js +1 -0
  591. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-1c30fb8d4d6fa6ef.js +1 -0
  592. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-1c30fb8d4d6fa6ef.js +1 -0
  593. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-1c30fb8d4d6fa6ef.js +1 -0
  594. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-1c30fb8d4d6fa6ef.js +1 -0
  595. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-1c30fb8d4d6fa6ef.js +1 -0
  596. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-1c30fb8d4d6fa6ef.js +1 -0
  597. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-1c30fb8d4d6fa6ef.js +1 -0
  598. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-1c30fb8d4d6fa6ef.js +1 -0
  599. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-1c30fb8d4d6fa6ef.js +1 -0
  600. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-1c30fb8d4d6fa6ef.js +1 -0
  601. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-1c30fb8d4d6fa6ef.js +1 -0
  602. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-1c30fb8d4d6fa6ef.js +1 -0
  603. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-1c30fb8d4d6fa6ef.js +1 -0
  604. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-1c30fb8d4d6fa6ef.js +1 -0
  605. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-1c30fb8d4d6fa6ef.js +1 -0
  606. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-1c30fb8d4d6fa6ef.js +1 -0
  607. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-1c30fb8d4d6fa6ef.js +1 -0
  608. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-1c30fb8d4d6fa6ef.js +1 -0
  609. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-1c30fb8d4d6fa6ef.js +1 -0
  610. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-1c30fb8d4d6fa6ef.js +1 -0
  611. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-1c30fb8d4d6fa6ef.js +1 -0
  612. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-1c30fb8d4d6fa6ef.js +1 -0
  613. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-1c30fb8d4d6fa6ef.js +1 -0
  614. package/.next/static/chunks/app/api/worktrees/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  615. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-1c30fb8d4d6fa6ef.js +1 -0
  616. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-1c30fb8d4d6fa6ef.js +1 -0
  617. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-1c30fb8d4d6fa6ef.js +1 -0
  618. package/.next/static/chunks/app/api/worktrees/[id]/search/route-1c30fb8d4d6fa6ef.js +1 -0
  619. package/.next/static/chunks/app/api/worktrees/[id]/send/route-1c30fb8d4d6fa6ef.js +1 -0
  620. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-1c30fb8d4d6fa6ef.js +1 -0
  621. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-1c30fb8d4d6fa6ef.js +1 -0
  622. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-1c30fb8d4d6fa6ef.js +1 -0
  623. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-1c30fb8d4d6fa6ef.js +1 -0
  624. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-1c30fb8d4d6fa6ef.js +1 -0
  625. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-1c30fb8d4d6fa6ef.js +1 -0
  626. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-1c30fb8d4d6fa6ef.js +1 -0
  627. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-1c30fb8d4d6fa6ef.js +1 -0
  628. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-1c30fb8d4d6fa6ef.js +1 -0
  629. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-1c30fb8d4d6fa6ef.js +1 -0
  630. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-1c30fb8d4d6fa6ef.js +1 -0
  631. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-1c30fb8d4d6fa6ef.js +1 -0
  632. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-1c30fb8d4d6fa6ef.js +1 -0
  633. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-1c30fb8d4d6fa6ef.js +1 -0
  634. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-1c30fb8d4d6fa6ef.js +1 -0
  635. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-1c30fb8d4d6fa6ef.js +1 -0
  636. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-1c30fb8d4d6fa6ef.js +1 -0
  637. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
  638. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-1c30fb8d4d6fa6ef.js +1 -0
  639. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
  640. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-1c30fb8d4d6fa6ef.js +1 -0
  641. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-1c30fb8d4d6fa6ef.js +1 -0
  642. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-1c30fb8d4d6fa6ef.js +1 -0
  643. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-1c30fb8d4d6fa6ef.js +1 -0
  644. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-1c30fb8d4d6fa6ef.js +1 -0
  645. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-1c30fb8d4d6fa6ef.js +1 -0
  646. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-1c30fb8d4d6fa6ef.js +1 -0
  647. package/.next/static/chunks/app/api/worktrees/route-1c30fb8d4d6fa6ef.js +1 -0
  648. package/.next/static/chunks/app/chat/{page-231df45127e876c2.js → page-9aa2011410895b0d.js} +1 -1
  649. package/.next/static/chunks/app/login/{page-03659dded846ef1d.js → page-af7241bb4c4a8e59.js} +1 -1
  650. package/.next/static/chunks/app/manifest.webmanifest/route-1c30fb8d4d6fa6ef.js +1 -0
  651. package/.next/static/chunks/app/more/page-75d3783da0d49a25.js +1 -0
  652. package/.next/static/chunks/app/{page-0305431f43195431.js → page-214f7ffa13a0cf10.js} +1 -1
  653. package/.next/static/chunks/app/proxy/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
  654. package/.next/static/chunks/app/repositories/{page-ae8fa55749976f79.js → page-4951cac905e50224.js} +1 -1
  655. package/.next/static/chunks/app/review/page-a0899b2d285318c3.js +1 -0
  656. package/.next/static/chunks/app/sessions/page-fb36145ec732092a.js +1 -0
  657. package/.next/static/chunks/app/skills/[skillId]/{page-aaf0bcb1dfb558b9.js → page-9099e26b60442873.js} +1 -1
  658. package/.next/static/chunks/app/skills/installed/{page-dafc486410e839b7.js → page-182e32368696d824.js} +1 -1
  659. package/.next/static/chunks/app/skills/{page-9e3c91da31514893.js → page-d3fdc88239ebe0ab.js} +1 -1
  660. package/.next/static/chunks/app/worktrees/[id]/files/[...path]/{page-90f96977c741bbf8.js → page-f3361237420719b4.js} +1 -1
  661. package/.next/static/chunks/app/worktrees/[id]/layout-1c30fb8d4d6fa6ef.js +1 -0
  662. package/.next/static/chunks/app/worktrees/[id]/page-ce6279d581d1df95.js +1 -0
  663. package/.next/static/chunks/{webpack-7e79064bfce988d7.js → webpack-9f75198882fdaf08.js} +1 -1
  664. package/.next/static/css/b326c8a734e1928e.css +1 -0
  665. package/.next/trace +13 -13
  666. package/.next/types/app/api/agents/update/route.ts +347 -0
  667. package/.next/types/app/api/agents/versions/route.ts +347 -0
  668. package/.next/types/app/api/settings/default-agents/route.ts +347 -0
  669. package/.next/types/app/api/worktrees/[id]/verify/config/route.ts +347 -0
  670. package/.next/types/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.ts +347 -0
  671. package/.next/types/app/api/worktrees/apply-default-agents/route.ts +347 -0
  672. package/.next/types/routes.d.ts +7 -1
  673. package/.next/types/validator.ts +54 -0
  674. package/dist/cli/commands/agents.d.ts +35 -0
  675. package/dist/cli/commands/agents.d.ts.map +1 -0
  676. package/dist/cli/commands/agents.js +212 -0
  677. package/dist/cli/commands/ls.d.ts.map +1 -1
  678. package/dist/cli/commands/ls.js +18 -0
  679. package/dist/cli/commands/verify.d.ts.map +1 -1
  680. package/dist/cli/commands/verify.js +111 -0
  681. package/dist/cli/config/cli-dependencies.d.ts.map +1 -1
  682. package/dist/cli/config/cli-dependencies.js +11 -0
  683. package/dist/cli/docs/agent-operations.d.ts +1 -1
  684. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  685. package/dist/cli/docs/agent-operations.js +30 -0
  686. package/dist/cli/program.d.ts.map +1 -1
  687. package/dist/cli/program.js +6 -0
  688. package/dist/cli/types/api-responses.d.ts +58 -0
  689. package/dist/cli/types/api-responses.d.ts.map +1 -1
  690. package/dist/cli/types/index.d.ts +8 -0
  691. package/dist/cli/types/index.d.ts.map +1 -1
  692. package/dist/cli/utils/preflight.d.ts.map +1 -1
  693. package/dist/cli/utils/preflight.js +6 -0
  694. package/dist/config/system-directories.d.ts +101 -0
  695. package/dist/config/system-directories.d.ts.map +1 -0
  696. package/dist/config/system-directories.js +211 -0
  697. package/dist/lib/cli-tools/types.d.ts +15 -1
  698. package/dist/lib/cli-tools/types.d.ts.map +1 -1
  699. package/dist/lib/detection/status-reason.d.ts +92 -0
  700. package/dist/lib/detection/status-reason.d.ts.map +1 -0
  701. package/dist/lib/detection/status-reason.js +94 -0
  702. package/dist/lib/updates/agent-updater.d.ts +247 -0
  703. package/dist/lib/updates/agent-updater.d.ts.map +1 -0
  704. package/dist/lib/updates/agent-updater.js +373 -0
  705. package/dist/lib/updates/agent-versions.d.ts +77 -0
  706. package/dist/lib/updates/agent-versions.d.ts.map +1 -0
  707. package/dist/lib/updates/agent-versions.js +138 -0
  708. package/dist/lib/updates/codex-version.d.ts +184 -0
  709. package/dist/lib/updates/codex-version.d.ts.map +1 -0
  710. package/dist/lib/updates/codex-version.js +215 -0
  711. package/dist/lib/verification/verify-config.d.ts +202 -0
  712. package/dist/lib/verification/verify-config.d.ts.map +1 -0
  713. package/dist/lib/verification/verify-config.js +429 -0
  714. package/dist/lib/verification/verify-draft.d.ts +182 -0
  715. package/dist/lib/verification/verify-draft.d.ts.map +1 -0
  716. package/dist/lib/verification/verify-draft.js +570 -0
  717. package/dist/server/src/cli/types/api-responses.js +9 -0
  718. package/dist/server/src/config/cli-tool-timing-config.js +15 -1
  719. package/dist/server/src/config/codex-update-dialog-config.js +154 -0
  720. package/dist/server/src/config/default-agents.js +138 -0
  721. package/dist/server/src/lib/cli-tools/antigravity.js +36 -12
  722. package/dist/server/src/lib/cli-tools/base.js +131 -0
  723. package/dist/server/src/lib/cli-tools/codex.js +350 -100
  724. package/dist/server/src/lib/cli-tools/copilot.js +34 -10
  725. package/dist/server/src/lib/cli-tools/gemini.js +34 -10
  726. package/dist/server/src/lib/cli-tools/liveness-spec.js +214 -0
  727. package/dist/server/src/lib/cli-tools/opencode.js +72 -19
  728. package/dist/server/src/lib/cli-tools/session-liveness.js +64 -0
  729. package/dist/server/src/lib/cli-tools/vibe-local.js +30 -10
  730. package/dist/server/src/lib/db/app-settings-db.js +142 -0
  731. package/dist/server/src/lib/db/worktree-db.js +178 -3
  732. package/dist/server/src/lib/detection/status-reason.js +17 -0
  733. package/dist/server/src/lib/detection/tool-liveness.js +233 -0
  734. package/dist/server/src/lib/detection/version-probes.js +290 -0
  735. package/dist/server/src/lib/git/worktrees.js +10 -0
  736. package/dist/server/src/lib/repo-config/agents-config.js +298 -0
  737. package/dist/server/src/lib/selected-agents-validator.js +93 -23
  738. package/dist/server/src/lib/session/claude-session.js +39 -108
  739. package/dist/server/src/lib/tmux/tmux.js +29 -0
  740. package/dist/server/src/lib/updates/agent-updater.js +373 -0
  741. package/dist/server/src/lib/updates/agent-versions.js +138 -0
  742. package/dist/server/src/lib/updates/codex-version.js +215 -0
  743. package/dist/server/src/lib/updates/index.js +42 -0
  744. package/dist/server/src/lib/verification/gate-runner.js +298 -37
  745. package/dist/server/src/lib/verification/machine-lock.js +11 -0
  746. package/dist/server/src/lib/verification/run-verdict-vocabulary.js +151 -0
  747. package/dist/server/src/lib/verification/verify-config.js +33 -0
  748. package/dist/server/src/types/sidebar.js +40 -9
  749. package/dist/types/cli-tool-contracts.d.ts +119 -0
  750. package/dist/types/cli-tool-contracts.d.ts.map +1 -1
  751. package/package.json +1 -1
  752. package/.next/server/chunks/1601.js +0 -7
  753. package/.next/server/chunks/222.js +0 -1
  754. package/.next/server/chunks/2366.js +0 -1
  755. package/.next/server/chunks/4689.js +0 -25
  756. package/.next/server/chunks/5089.js +0 -1
  757. package/.next/server/chunks/6274.js +0 -14
  758. package/.next/server/chunks/9067.js +0 -1
  759. package/.next/server/chunks/9373.js +0 -9
  760. package/.next/static/Dvfs4ZThl5vBhJGP-ZQuJ/_buildManifest.js +0 -1
  761. package/.next/static/chunks/3361-aa1b6e7c1d7eeeb4.js +0 -1
  762. package/.next/static/chunks/3922.0d2e64daf9f187da.js +0 -1
  763. package/.next/static/chunks/5229-580b581fce5aeb52.js +0 -1
  764. package/.next/static/chunks/6381-9a929249196a0e77.js +0 -1
  765. package/.next/static/chunks/app/api/app/update/route-e3626364434d521b.js +0 -1
  766. package/.next/static/chunks/app/api/app/update-check/route-e3626364434d521b.js +0 -1
  767. package/.next/static/chunks/app/api/assistant/conversation/route-e3626364434d521b.js +0 -1
  768. package/.next/static/chunks/app/api/assistant/current-output/route-e3626364434d521b.js +0 -1
  769. package/.next/static/chunks/app/api/assistant/messages/route-e3626364434d521b.js +0 -1
  770. package/.next/static/chunks/app/api/assistant/session/route-e3626364434d521b.js +0 -1
  771. package/.next/static/chunks/app/api/assistant/start/route-e3626364434d521b.js +0 -1
  772. package/.next/static/chunks/app/api/assistant/terminal/route-e3626364434d521b.js +0 -1
  773. package/.next/static/chunks/app/api/assistant/tools/route-e3626364434d521b.js +0 -1
  774. package/.next/static/chunks/app/api/auth/login/route-e3626364434d521b.js +0 -1
  775. package/.next/static/chunks/app/api/auth/logout/route-e3626364434d521b.js +0 -1
  776. package/.next/static/chunks/app/api/auth/status/route-e3626364434d521b.js +0 -1
  777. package/.next/static/chunks/app/api/capabilities/route-e3626364434d521b.js +0 -1
  778. package/.next/static/chunks/app/api/daily-summary/route-e3626364434d521b.js +0 -1
  779. package/.next/static/chunks/app/api/daily-summary/status/route-e3626364434d521b.js +0 -1
  780. package/.next/static/chunks/app/api/external-apps/[id]/health/route-e3626364434d521b.js +0 -1
  781. package/.next/static/chunks/app/api/external-apps/[id]/route-e3626364434d521b.js +0 -1
  782. package/.next/static/chunks/app/api/external-apps/route-e3626364434d521b.js +0 -1
  783. package/.next/static/chunks/app/api/fs/browse/route-e3626364434d521b.js +0 -1
  784. package/.next/static/chunks/app/api/fs/recent-paths/route-e3626364434d521b.js +0 -1
  785. package/.next/static/chunks/app/api/hooks/agent-event/route-e3626364434d521b.js +0 -1
  786. package/.next/static/chunks/app/api/hooks/claude-done/route-e3626364434d521b.js +0 -1
  787. package/.next/static/chunks/app/api/hooks/permission-request/route-e3626364434d521b.js +0 -1
  788. package/.next/static/chunks/app/api/metrics/vibe/route-e3626364434d521b.js +0 -1
  789. package/.next/static/chunks/app/api/ollama/models/route-e3626364434d521b.js +0 -1
  790. package/.next/static/chunks/app/api/push/escalation/route-e3626364434d521b.js +0 -1
  791. package/.next/static/chunks/app/api/push/subscriptions/route-e3626364434d521b.js +0 -1
  792. package/.next/static/chunks/app/api/push/vapid/route-e3626364434d521b.js +0 -1
  793. package/.next/static/chunks/app/api/remote/pair/route-e3626364434d521b.js +0 -1
  794. package/.next/static/chunks/app/api/repositories/[id]/route-e3626364434d521b.js +0 -1
  795. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-e3626364434d521b.js +0 -1
  796. package/.next/static/chunks/app/api/repositories/[id]/todos/route-e3626364434d521b.js +0 -1
  797. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-e3626364434d521b.js +0 -1
  798. package/.next/static/chunks/app/api/repositories/clone/route-e3626364434d521b.js +0 -1
  799. package/.next/static/chunks/app/api/repositories/excluded/route-e3626364434d521b.js +0 -1
  800. package/.next/static/chunks/app/api/repositories/restore/route-e3626364434d521b.js +0 -1
  801. package/.next/static/chunks/app/api/repositories/route-e3626364434d521b.js +0 -1
  802. package/.next/static/chunks/app/api/repositories/scan/route-e3626364434d521b.js +0 -1
  803. package/.next/static/chunks/app/api/repositories/sync/route-e3626364434d521b.js +0 -1
  804. package/.next/static/chunks/app/api/repositories/validate-path/route-e3626364434d521b.js +0 -1
  805. package/.next/static/chunks/app/api/sidebar/group-order/route-e3626364434d521b.js +0 -1
  806. package/.next/static/chunks/app/api/skills/[id]/route-e3626364434d521b.js +0 -1
  807. package/.next/static/chunks/app/api/skills/installations/route-e3626364434d521b.js +0 -1
  808. package/.next/static/chunks/app/api/skills/operations/route-e3626364434d521b.js +0 -1
  809. package/.next/static/chunks/app/api/skills/reindex/route-e3626364434d521b.js +0 -1
  810. package/.next/static/chunks/app/api/skills/route-e3626364434d521b.js +0 -1
  811. package/.next/static/chunks/app/api/slash-commands/route-e3626364434d521b.js +0 -1
  812. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-e3626364434d521b.js +0 -1
  813. package/.next/static/chunks/app/api/tasks/[taskId]/route-e3626364434d521b.js +0 -1
  814. package/.next/static/chunks/app/api/templates/[id]/route-e3626364434d521b.js +0 -1
  815. package/.next/static/chunks/app/api/templates/route-e3626364434d521b.js +0 -1
  816. package/.next/static/chunks/app/api/todos/route-e3626364434d521b.js +0 -1
  817. package/.next/static/chunks/app/api/verification/runs/[runId]/route-e3626364434d521b.js +0 -1
  818. package/.next/static/chunks/app/api/verification/runs/route-e3626364434d521b.js +0 -1
  819. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-e3626364434d521b.js +0 -1
  820. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-e3626364434d521b.js +0 -1
  821. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-e3626364434d521b.js +0 -1
  822. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-e3626364434d521b.js +0 -1
  823. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-e3626364434d521b.js +0 -1
  824. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-e3626364434d521b.js +0 -1
  825. package/.next/static/chunks/app/api/worktrees/[id]/env/route-e3626364434d521b.js +0 -1
  826. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-e3626364434d521b.js +0 -1
  827. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-e3626364434d521b.js +0 -1
  828. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-e3626364434d521b.js +0 -1
  829. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-e3626364434d521b.js +0 -1
  830. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-e3626364434d521b.js +0 -1
  831. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-e3626364434d521b.js +0 -1
  832. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-e3626364434d521b.js +0 -1
  833. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-e3626364434d521b.js +0 -1
  834. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-e3626364434d521b.js +0 -1
  835. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-e3626364434d521b.js +0 -1
  836. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-e3626364434d521b.js +0 -1
  837. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-e3626364434d521b.js +0 -1
  838. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-e3626364434d521b.js +0 -1
  839. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-e3626364434d521b.js +0 -1
  840. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-e3626364434d521b.js +0 -1
  841. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-e3626364434d521b.js +0 -1
  842. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-e3626364434d521b.js +0 -1
  843. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-e3626364434d521b.js +0 -1
  844. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-e3626364434d521b.js +0 -1
  845. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-e3626364434d521b.js +0 -1
  846. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-e3626364434d521b.js +0 -1
  847. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-e3626364434d521b.js +0 -1
  848. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-e3626364434d521b.js +0 -1
  849. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-e3626364434d521b.js +0 -1
  850. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-e3626364434d521b.js +0 -1
  851. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-e3626364434d521b.js +0 -1
  852. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-e3626364434d521b.js +0 -1
  853. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-e3626364434d521b.js +0 -1
  854. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-e3626364434d521b.js +0 -1
  855. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-e3626364434d521b.js +0 -1
  856. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-e3626364434d521b.js +0 -1
  857. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-e3626364434d521b.js +0 -1
  858. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-e3626364434d521b.js +0 -1
  859. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-e3626364434d521b.js +0 -1
  860. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-e3626364434d521b.js +0 -1
  861. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-e3626364434d521b.js +0 -1
  862. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-e3626364434d521b.js +0 -1
  863. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-e3626364434d521b.js +0 -1
  864. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-e3626364434d521b.js +0 -1
  865. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-e3626364434d521b.js +0 -1
  866. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-e3626364434d521b.js +0 -1
  867. package/.next/static/chunks/app/api/worktrees/[id]/route-e3626364434d521b.js +0 -1
  868. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-e3626364434d521b.js +0 -1
  869. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-e3626364434d521b.js +0 -1
  870. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-e3626364434d521b.js +0 -1
  871. package/.next/static/chunks/app/api/worktrees/[id]/search/route-e3626364434d521b.js +0 -1
  872. package/.next/static/chunks/app/api/worktrees/[id]/send/route-e3626364434d521b.js +0 -1
  873. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-e3626364434d521b.js +0 -1
  874. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-e3626364434d521b.js +0 -1
  875. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-e3626364434d521b.js +0 -1
  876. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-e3626364434d521b.js +0 -1
  877. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-e3626364434d521b.js +0 -1
  878. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-e3626364434d521b.js +0 -1
  879. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-e3626364434d521b.js +0 -1
  880. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-e3626364434d521b.js +0 -1
  881. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-e3626364434d521b.js +0 -1
  882. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-e3626364434d521b.js +0 -1
  883. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-e3626364434d521b.js +0 -1
  884. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-e3626364434d521b.js +0 -1
  885. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-e3626364434d521b.js +0 -1
  886. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-e3626364434d521b.js +0 -1
  887. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-e3626364434d521b.js +0 -1
  888. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-e3626364434d521b.js +0 -1
  889. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-e3626364434d521b.js +0 -1
  890. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-e3626364434d521b.js +0 -1
  891. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-e3626364434d521b.js +0 -1
  892. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-e3626364434d521b.js +0 -1
  893. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-e3626364434d521b.js +0 -1
  894. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-e3626364434d521b.js +0 -1
  895. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-e3626364434d521b.js +0 -1
  896. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-e3626364434d521b.js +0 -1
  897. package/.next/static/chunks/app/api/worktrees/route-e3626364434d521b.js +0 -1
  898. package/.next/static/chunks/app/manifest.webmanifest/route-e3626364434d521b.js +0 -1
  899. package/.next/static/chunks/app/more/page-03867ab635d197c7.js +0 -1
  900. package/.next/static/chunks/app/proxy/[...path]/route-e3626364434d521b.js +0 -1
  901. package/.next/static/chunks/app/review/page-9a6d18ddcccbb63c.js +0 -1
  902. package/.next/static/chunks/app/sessions/page-4d5382b257077c14.js +0 -1
  903. package/.next/static/chunks/app/worktrees/[id]/layout-e3626364434d521b.js +0 -1
  904. package/.next/static/chunks/app/worktrees/[id]/page-817378dd7c580774.js +0 -1
  905. package/.next/static/css/6266bde3bce465a2.css +0 -1
  906. /package/.next/static/{Dvfs4ZThl5vBhJGP-ZQuJ → 0YoRrahue4Vchxg1z83IQ}/_ssgManifest.js +0 -0
@@ -0,0 +1,373 @@
1
+ "use strict";
2
+ /**
3
+ * Running an agent CLI's own updater, in a process that is not an agent pane
4
+ * (Issue #2069).
5
+ *
6
+ * ## The failure this replaces
7
+ *
8
+ * codex's "Update now" is not an in-place upgrade. Measured against upstream
9
+ * `codex-rs/cli/src/main.rs`: the codex process **exits**, its parent runs the
10
+ * install in the foreground, prints `Update ran successfully! Please restart
11
+ * Codex.` and stops. Nothing restarts codex. Run inside a CommandMate pane that
12
+ * means the pane's foreground program is gone and the pane falls back to a bare
13
+ * shell — the state #2070 taught the detector to recognise, and which the user
14
+ * then has to clean up by hand.
15
+ *
16
+ * So the update runs **here**: a child of the server (or of the CLI), with its
17
+ * own stdio, wholly outside tmux. A pane that is mid-turn keeps its session; the
18
+ * binary underneath it changes, and restarting that pane is a separate,
19
+ * explicit act (the restart button, or `kill-session`).
20
+ *
21
+ * `tests/unit/api/agents-update-2069.test.ts` holds that structurally: it fails
22
+ * the moment this route's module graph reaches tmux or a CLI tool's session
23
+ * API at all. "Not in the pane" is the Issue's central claim, so it is asserted
24
+ * rather than asserted-in-a-comment.
25
+ *
26
+ * ## The OTHER update path, and why it does not make this one redundant (#2068)
27
+ *
28
+ * codex's dialog can still appear inside a pane — a codex the user updated by
29
+ * hand, an `Update now` they pressed themselves — and #2068 owns what
30
+ * CommandMate answers there and how the pane is repaired afterwards (it re-sends
31
+ * the launch command to the same pane). The two are complements, not
32
+ * duplicates:
33
+ *
34
+ * - the pane path is **reactive**: it only exists because codex asked, and it
35
+ * costs the session (the pane drops to a shell and has to be restarted);
36
+ * - this path is **initiated by the user from CommandMate** and costs no
37
+ * session at all.
38
+ *
39
+ * The consequence for THIS module is the lock below: after #2068 there are
40
+ * three ways to reach one `npm install -g @openai/codex`, and only a lock that
41
+ * every one of them takes is a lock.
42
+ *
43
+ * ## Two strategies, and how the choice is made
44
+ *
45
+ * codex 0.149.0 added a `codex update` subcommand that works out how the binary
46
+ * was installed (npm, Homebrew, the standalone installer) and updates it the
47
+ * same way. That is strictly better than assuming npm, so it is preferred — but
48
+ * only when the installed build actually has it. A `codex update` typed at
49
+ * 0.148 is an unknown-subcommand error, so below
50
+ * {@link CODEX_NATIVE_UPDATE_MIN_VERSION} the plan falls back to
51
+ * `npm install -g @openai/codex@latest`, which is what codex's own pre-0.149
52
+ * updater ran.
53
+ *
54
+ * ### Why the fallback pins `@latest` and codex's own command does not
55
+ *
56
+ * codex spells it `npm install -g @openai/codex`. That resolves through npm's
57
+ * default dist-tag, which is `latest` **unless** the user has set one
58
+ * (`npm config set tag`, or a `tag=` line in `.npmrc`) — in which case the two
59
+ * spellings install different versions. The explicit `@latest` here is the
60
+ * fixed-argv rule applied to the version as well as to the words: what this
61
+ * module runs must not depend on a config value neither CommandMate nor the
62
+ * user is looking at while pressing the button. On a machine with no such
63
+ * setting — which is nearly all of them — the two commands are identical.
64
+ *
65
+ * ## The execution rules (this Issue's 実装内容 4, and DR4-010)
66
+ *
67
+ * - **`execFile` with an argv array, never a shell string.** There is no
68
+ * `sh -c`, no interpolation, and nothing derived from an HTTP request reaches
69
+ * the command: the tool id is validated against {@link UPDATABLE_AGENT_TOOLS}
70
+ * and then *discarded* — the argv is a literal in this file, selected by that
71
+ * id. Same shape as `/api/app/update`'s fixed argv (#1198 §5).
72
+ * - **The command is resolved to an absolute path first**, through
73
+ * {@link resolveAbsoluteExecutable}, and the plan fails rather than handing a
74
+ * relative or bare name to `execFile`. A repo-local `node_modules/.bin/codex`
75
+ * on `PATH` must not be able to decide what "update codex" runs.
76
+ *
77
+ * `findExecutableOnPath` alone is **not** enough for that, which is why this
78
+ * module wraps it: it joins each `PATH` entry with the name and returns the
79
+ * first hit, so a `PATH` carrying a RELATIVE entry (`PATH=.:/usr/bin`, a
80
+ * `node_modules/.bin` written without a leading slash) yields a relative
81
+ * command — `./codex` — and `execFile` would resolve that against the child's
82
+ * cwd. The `isAbsolute` check is the half that makes the sentence above true.
83
+ * - **`PATH` still comes from the shell that started the server**, because that
84
+ * is the PATH the user's codex is actually on; the environment is passed
85
+ * through {@link sanitizeEnvForChildProcess} so the updater cannot read
86
+ * CommandMate's auth token, DB path, or the launching agent's correlation
87
+ * variables (#1996).
88
+ *
89
+ * @module lib/updates/agent-updater
90
+ */
91
+ Object.defineProperty(exports, "__esModule", { value: true });
92
+ exports.AGENT_UPDATE_MAX_BUFFER_BYTES = exports.AGENT_UPDATE_TIMEOUT_MS = exports.CODEX_NATIVE_UPDATE_MIN_VERSION = exports.CODEX_NPM_PACKAGE = exports.UPDATABLE_AGENT_TOOLS = void 0;
93
+ exports.isUpdatableAgentTool = isUpdatableAgentTool;
94
+ exports.resolveAgentUpdatePlan = resolveAgentUpdatePlan;
95
+ exports.acquireAgentUpdateLock = acquireAgentUpdateLock;
96
+ exports.releaseAgentUpdateLock = releaseAgentUpdateLock;
97
+ exports.isAgentUpdateInProgress = isAgentUpdateInProgress;
98
+ exports.runAgentUpdate = runAgentUpdate;
99
+ const child_process_1 = require("child_process");
100
+ const path_1 = require("path");
101
+ const copilot_executable_1 = require("../cli-tools/copilot-executable");
102
+ const env_sanitizer_1 = require("../security/env-sanitizer");
103
+ const version_probes_1 = require("../detection/version-probes");
104
+ /**
105
+ * Tools this module can update.
106
+ *
107
+ * One entry today, and the array — rather than an `if (tool === 'codex')` — is
108
+ * the point: it is the allow-list the route validates against, so adding a tool
109
+ * is adding a row here plus its plan below, and never a new place where a
110
+ * request string reaches a command.
111
+ */
112
+ exports.UPDATABLE_AGENT_TOOLS = ['codex'];
113
+ /** Narrow arbitrary input — a request body, an argv operand — to a known tool. */
114
+ function isUpdatableAgentTool(value) {
115
+ return typeof value === 'string' && exports.UPDATABLE_AGENT_TOOLS.includes(value);
116
+ }
117
+ /** The package `npm install -g` would fetch when codex cannot update itself. */
118
+ exports.CODEX_NPM_PACKAGE = '@openai/codex';
119
+ /**
120
+ * First codex release with a `codex update` subcommand.
121
+ *
122
+ * Below this the subcommand does not exist and invoking it is an error, so the
123
+ * plan takes the npm route instead. Measured on 0.149.1, whose `codex update
124
+ * --help` reads "Update Codex to the latest version".
125
+ */
126
+ exports.CODEX_NATIVE_UPDATE_MIN_VERSION = '0.149.0';
127
+ /**
128
+ * How long one update may run.
129
+ *
130
+ * An install pulls a release over the network, so this is minutes rather than
131
+ * the five seconds a `--version` probe gets. It is a ceiling on a hang, not a
132
+ * budget: the ordinary run finishes far inside it.
133
+ */
134
+ exports.AGENT_UPDATE_TIMEOUT_MS = 10 * 60 * 1000;
135
+ /** Cap on captured output. npm is chatty; a runaway installer is not parsed. */
136
+ exports.AGENT_UPDATE_MAX_BUFFER_BYTES = 4 * 1024 * 1024;
137
+ /** Default probe: the same `codex --version` row the detector's table uses. */
138
+ async function probeCodexVersion() {
139
+ return (0, version_probes_1.runDetectorVersionProbe)({ kind: 'execFile', command: 'codex', args: ['--version'] });
140
+ }
141
+ /**
142
+ * Resolve `name` on `PATH` to an **absolute** path, or null.
143
+ *
144
+ * The `isAbsolute` half is not belt-and-braces. `findExecutableOnPath` splits
145
+ * `PATH` and returns `join(entry, name)` for the first entry that holds an
146
+ * executable file; a relative `PATH` entry therefore yields a relative command,
147
+ * which `execFile` resolves against the child's cwd rather than against
148
+ * anything this process decided. A `PATH` of `.:/usr/local/bin` in the shell
149
+ * that started the server would let whichever directory the child happens to
150
+ * run in supply the binary that "update codex" executes.
151
+ *
152
+ * Refusing is the right failure: the caller reports "there is nothing to update
153
+ * with" and nothing is spawned, which is the same answer a machine with no
154
+ * codex and no npm gets.
155
+ *
156
+ * @param name - Executable name to look up, e.g. `codex`.
157
+ * @param resolveExecutable - Injected lookup (tests); defaults to PATH.
158
+ * @returns An absolute path, or null when it is missing OR not absolute.
159
+ */
160
+ function resolveAbsoluteExecutable(name, resolveExecutable) {
161
+ const resolved = resolveExecutable(name);
162
+ if (!resolved)
163
+ return null;
164
+ return (0, path_1.isAbsolute)(resolved) ? resolved : null;
165
+ }
166
+ /**
167
+ * Decide what "update codex" runs on THIS machine, without running anything.
168
+ *
169
+ * Separated from {@link runAgentUpdate} so both the API route and the CLI can
170
+ * show the user the exact argv before it executes, and so a test can assert the
171
+ * strategy choice without a child process.
172
+ *
173
+ * @param tool - Tool id, validated here rather than trusted.
174
+ * @param deps - Injection seams; production defaults read the real machine.
175
+ */
176
+ async function resolveAgentUpdatePlan(tool, deps = {}) {
177
+ if (!isUpdatableAgentTool(tool)) {
178
+ return {
179
+ ok: false,
180
+ code: 'unsupported-tool',
181
+ message: `No update flow for '${String(tool)}'. Updatable tools: ${exports.UPDATABLE_AGENT_TOOLS.join(', ')}.`,
182
+ };
183
+ }
184
+ const resolveExecutable = deps.resolveExecutable ?? copilot_executable_1.findExecutableOnPath;
185
+ const probeVersion = deps.probeInstalledVersion ?? probeCodexVersion;
186
+ const codexPath = resolveAbsoluteExecutable('codex', resolveExecutable);
187
+ const installed = codexPath ? await probeVersion(tool) : null;
188
+ // The native subcommand needs both: an executable to run it, and a build old
189
+ // enough that `update` is not a typo to it.
190
+ if (codexPath &&
191
+ installed !== null &&
192
+ (0, version_probes_1.compareCliVersions)(installed, exports.CODEX_NATIVE_UPDATE_MIN_VERSION) >= 0) {
193
+ return {
194
+ ok: true,
195
+ plan: {
196
+ tool,
197
+ strategy: 'native',
198
+ command: codexPath,
199
+ args: ['update'],
200
+ display: 'codex update',
201
+ installed,
202
+ reason: 'native-subcommand',
203
+ },
204
+ };
205
+ }
206
+ const npmPath = resolveAbsoluteExecutable('npm', resolveExecutable);
207
+ if (!npmPath) {
208
+ return {
209
+ ok: false,
210
+ code: 'no-executable',
211
+ message: codexPath === null
212
+ ? 'Neither codex nor npm resolves to an absolute path on PATH, so there is nothing to update with.'
213
+ : 'This codex is too old for `codex update`, and npm does not resolve to an absolute path on PATH.',
214
+ };
215
+ }
216
+ return {
217
+ ok: true,
218
+ plan: {
219
+ tool,
220
+ strategy: 'npm',
221
+ command: npmPath,
222
+ args: ['install', '-g', `${exports.CODEX_NPM_PACKAGE}@latest`],
223
+ display: `npm install -g ${exports.CODEX_NPM_PACKAGE}@latest`,
224
+ installed,
225
+ reason: codexPath === null ? 'not-installed' : 'no-native-subcommand',
226
+ },
227
+ };
228
+ }
229
+ /**
230
+ * Tools whose update is running in THIS process.
231
+ *
232
+ * ## What it guards, now that there are three ways in
233
+ *
234
+ * After #2068 there are three routes to one `npm install -g @openai/codex` on
235
+ * one machine, and only the first two are this process's:
236
+ *
237
+ * 1. `POST /api/agents/update` — the More screen's and the agent pane's button;
238
+ * 2. `commandmate agents update <tool>` — the CLI, which may be a SECOND
239
+ * process (a terminal beside a running server);
240
+ * 3. codex's own in-pane `Update now`, which #2068 answers according to
241
+ * `CM_CODEX_UPDATE_DIALOG`.
242
+ *
243
+ * The lock is taken inside {@link runAgentUpdate} rather than by each caller,
244
+ * so (1) and (2) are covered by construction and a fourth caller is covered by
245
+ * calling the function. #2068 wires (3) by taking
246
+ * {@link acquireAgentUpdateLock} itself — which is why these three functions
247
+ * stay exported from `lib/updates` even though nothing inside this module needs
248
+ * them to be.
249
+ *
250
+ * ## Why in-process rather than a lock file
251
+ *
252
+ * Two npm installs of the same global package racing each other is a
253
+ * double-click, not a second machine, and (2) crossing process boundaries is a
254
+ * real gap this deliberately does not close: a cross-process lock would also
255
+ * have to be reconciled with the user running `codex update` in their own
256
+ * terminal, which is legitimate and must not be blocked, and there is no way to
257
+ * tell those two apart from the outside. npm's own global install is the last
258
+ * line either way.
259
+ */
260
+ const updatesInFlight = new Set();
261
+ /**
262
+ * Take the in-flight marker for `tool`, or report that one is already held.
263
+ *
264
+ * Callers that run the update do NOT need this — {@link runAgentUpdate} takes
265
+ * it. It is exported for the one caller that cannot go through that function:
266
+ * #2068's in-pane update path, where codex itself is the thing running the
267
+ * install and CommandMate only answers a dialog.
268
+ */
269
+ function acquireAgentUpdateLock(tool) {
270
+ if (updatesInFlight.has(tool))
271
+ return false;
272
+ updatesInFlight.add(tool);
273
+ return true;
274
+ }
275
+ /** Release the marker. Safe to call when none is held. */
276
+ function releaseAgentUpdateLock(tool) {
277
+ updatesInFlight.delete(tool);
278
+ }
279
+ /**
280
+ * Whether an update for `tool` is running in this process.
281
+ *
282
+ * A pre-check, never the control: the authoritative acquisition is inside
283
+ * {@link runAgentUpdate}. The route reads this to choose its status code
284
+ * BEFORE it starts streaming, because once a 200 and a stream have been
285
+ * returned there is no way to answer 409 any more.
286
+ */
287
+ function isAgentUpdateInProgress(tool) {
288
+ return updatesInFlight.has(tool);
289
+ }
290
+ /**
291
+ * Run a resolved plan, streaming its output.
292
+ *
293
+ * `execFile` — not `exec`, not `spawn` with `shell: true` — so the argv array is
294
+ * handed to the OS as an array. Its returned `ChildProcess` still exposes
295
+ * `stdout` / `stderr` as streams, which is what makes "argv array" and "stream
296
+ * the output" the same choice rather than a trade: the callback's buffered copy
297
+ * is ignored and the listeners below are the real output path.
298
+ *
299
+ * **Takes the in-flight lock itself**, synchronously, before it returns its
300
+ * promise — so every caller is serialised by calling this function rather than
301
+ * by remembering to. See {@link acquireAgentUpdateLock} for the three paths
302
+ * that reach one global install and why one of them cannot use this door.
303
+ *
304
+ * Never rejects. An updater that fails is a result to render, not an exception
305
+ * to unwind through a route handler; a refusal (`code: 'in_progress'`) is a
306
+ * result too, and spawns nothing.
307
+ *
308
+ * @param plan - From {@link resolveAgentUpdatePlan}. Its argv is used verbatim.
309
+ * @param options - Streaming callback and timeout.
310
+ */
311
+ function runAgentUpdate(plan, options = {}) {
312
+ const { onChunk } = options;
313
+ const timeout = options.timeoutMs ?? exports.AGENT_UPDATE_TIMEOUT_MS;
314
+ // Synchronous, and before the promise is constructed: a caller that checked
315
+ // `isAgentUpdateInProgress` and then called this has no interleaving point in
316
+ // between, so the pre-check and the acquisition cannot disagree.
317
+ if (!acquireAgentUpdateLock(plan.tool)) {
318
+ return Promise.resolve({
319
+ ok: false,
320
+ exitCode: null,
321
+ signal: null,
322
+ code: 'in_progress',
323
+ error: `An update for ${plan.tool} is already running.`,
324
+ });
325
+ }
326
+ return new Promise((resolve) => {
327
+ let settled = false;
328
+ const settle = (result) => {
329
+ if (settled)
330
+ return;
331
+ settled = true;
332
+ releaseAgentUpdateLock(plan.tool);
333
+ resolve(result);
334
+ };
335
+ let child;
336
+ try {
337
+ child = (0, child_process_1.execFile)(plan.command, [...plan.args], {
338
+ timeout,
339
+ maxBuffer: exports.AGENT_UPDATE_MAX_BUFFER_BYTES,
340
+ env: (0, env_sanitizer_1.sanitizeEnvForChildProcess)(),
341
+ }, (error) => {
342
+ if (!error) {
343
+ settle({ ok: true, exitCode: 0, signal: null });
344
+ return;
345
+ }
346
+ const failure = error;
347
+ settle({
348
+ ok: false,
349
+ exitCode: typeof failure.code === 'number' ? failure.code : null,
350
+ signal: failure.signal ?? null,
351
+ error: failure.message,
352
+ });
353
+ });
354
+ }
355
+ catch (error) {
356
+ // execFile throws synchronously only for a malformed invocation; a
357
+ // missing binary arrives through the callback as ENOENT.
358
+ settle({
359
+ ok: false,
360
+ exitCode: null,
361
+ signal: null,
362
+ error: error instanceof Error ? error.message : String(error),
363
+ });
364
+ return;
365
+ }
366
+ if (onChunk) {
367
+ child.stdout?.setEncoding('utf-8');
368
+ child.stderr?.setEncoding('utf-8');
369
+ child.stdout?.on('data', (text) => onChunk({ stream: 'stdout', text }));
370
+ child.stderr?.on('data', (text) => onChunk({ stream: 'stderr', text }));
371
+ }
372
+ });
373
+ }
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ /**
3
+ * "Which agent CLIs are installed, and is codex behind?" (Issue #2069)
4
+ *
5
+ * One row per tool for the two update surfaces — the More screen's card and the
6
+ * agent pane's — and the split in what a row carries is deliberate:
7
+ *
8
+ * - **every tool reports `installed` only.** That is this Issue's 実装内容 2:
9
+ * the probe table already exists, it answers without a network, and
10
+ * "installed 1.0.80" is the whole truth CommandMate has about a copilot.
11
+ * - **codex additionally reports `latestVersion` / `updateAvailable`**, because
12
+ * codex is the one tool that writes its own release check to disk. See
13
+ * `./codex-version`.
14
+ *
15
+ * Nothing here queries a registry. A row that says `updateAvailable: false` is
16
+ * saying "nothing on this machine claims otherwise", never "I checked online".
17
+ *
18
+ * ## Why not `getDetectorFreshness()`
19
+ *
20
+ * It answers a different question (are the *detector's rules* stale?) and — the
21
+ * reason that matters here — it caches for the life of the process. This module
22
+ * is read immediately after an update completes, so a permanent memo would show
23
+ * the old version forever and make the acceptance criterion 「完了後に
24
+ * `codex --version` が上がる」 unobservable from the UI. So the probes are run
25
+ * through the same `runDetectorVersionProbe` (same absolute-path resolution,
26
+ * same sanitized env, same timeout) behind a **TTL** instead, on the reasoning
27
+ * `config/installed-agents-cache` already wrote down: the user's loop is
28
+ * "install something, come back, look again".
29
+ *
30
+ * @module lib/updates/agent-versions
31
+ */
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.AGENT_VERSIONS_CACHE_TTL_MS = void 0;
34
+ exports.getAgentVersions = getAgentVersions;
35
+ exports.clearAgentVersionsCache = clearAgentVersionsCache;
36
+ const version_probes_1 = require("../detection/version-probes");
37
+ const codex_version_1 = require("./codex-version");
38
+ const agent_updater_1 = require("./agent-updater");
39
+ /**
40
+ * How long one fan-out of `--version` probes is reused.
41
+ *
42
+ * Same 30s as `config/installed-agents-cache`, and for the same reason: opening
43
+ * a screen twice in a row costs one fan-out, while a version that changed under
44
+ * the server shows up without a restart. An update finishing calls
45
+ * {@link clearAgentVersionsCache} rather than waiting this out.
46
+ */
47
+ exports.AGENT_VERSIONS_CACHE_TTL_MS = 30_000;
48
+ let cache = null;
49
+ let inFlight = null;
50
+ /** Probe one tool and build its row. codex gets the extra half. */
51
+ async function buildRow(tool) {
52
+ const installed = await (0, version_probes_1.runDetectorVersionProbe)(version_probes_1.DETECTOR_VERSION_PROBES[tool]);
53
+ const updatable = (0, agent_updater_1.isUpdatableAgentTool)(tool);
54
+ if (tool !== 'codex') {
55
+ return {
56
+ tool,
57
+ installed,
58
+ latestVersion: null,
59
+ dismissedVersion: null,
60
+ updateAvailable: false,
61
+ dismissedInCodex: false,
62
+ updatable,
63
+ source: null,
64
+ };
65
+ }
66
+ const status = (0, codex_version_1.evaluateCodexUpdate)(installed, (0, codex_version_1.readCodexVersionFile)());
67
+ return {
68
+ tool,
69
+ installed: status.installed,
70
+ latestVersion: status.latestVersion,
71
+ dismissedVersion: status.dismissedVersion,
72
+ updateAvailable: status.updateAvailable,
73
+ dismissedInCodex: status.dismissedInCodex,
74
+ updatable,
75
+ source: status.source,
76
+ };
77
+ }
78
+ async function computeRows() {
79
+ const tools = Object.keys(version_probes_1.DETECTOR_VERSION_PROBES).sort();
80
+ return Promise.all(tools.map(buildRow));
81
+ }
82
+ /**
83
+ * When a fan-out started at `startedAt` should stop being reused.
84
+ *
85
+ * Takes the caller's clock rather than reading `Date.now()` again, and that is
86
+ * the whole point of the helper: an injected `now` that is honoured on the READ
87
+ * side but ignored on the WRITE side makes every TTL assertion vacuous — the
88
+ * cache is stamped with a real epoch, a test's `now: 2_000` is smaller than it
89
+ * whatever the TTL is, and `AGENT_VERSIONS_CACHE_TTL_MS = 0` still passes.
90
+ */
91
+ function expiryFrom(startedAt) {
92
+ return startedAt + exports.AGENT_VERSIONS_CACHE_TTL_MS;
93
+ }
94
+ /**
95
+ * Every tool's version row, cached for {@link AGENT_VERSIONS_CACHE_TTL_MS}.
96
+ *
97
+ * Single-flight: two concurrent callers share one fan-out rather than doubling
98
+ * the child processes.
99
+ *
100
+ * @param options.force - Skip the cache and re-probe. What the UI passes right
101
+ * after an update, so the new version is visible without a 30s wait.
102
+ * @param options.now - Injectable clock, used for BOTH the expiry comparison
103
+ * and the expiry that is written. Honouring it on only one side would leave
104
+ * the TTL untestable — see {@link expiryFrom}.
105
+ */
106
+ async function getAgentVersions(options = {}) {
107
+ const now = options.now ?? Date.now();
108
+ if (options.force) {
109
+ cache = null;
110
+ }
111
+ else if (cache && cache.expiresAt > now) {
112
+ return cache.rows;
113
+ }
114
+ if (inFlight)
115
+ return inFlight;
116
+ inFlight = (async () => {
117
+ try {
118
+ const rows = await computeRows();
119
+ cache = { rows, expiresAt: expiryFrom(now) };
120
+ return rows;
121
+ }
122
+ catch {
123
+ // A probe fan-out that throws must not fail the surface that asked: the
124
+ // versions are an annotation, and an empty list renders as "unknown".
125
+ cache = { rows: [], expiresAt: expiryFrom(now) };
126
+ return [];
127
+ }
128
+ finally {
129
+ inFlight = null;
130
+ }
131
+ })();
132
+ return inFlight;
133
+ }
134
+ /** Drop the cached probe. Tests, and every surface that just ran an update. */
135
+ function clearAgentVersionsCache() {
136
+ cache = null;
137
+ inFlight = null;
138
+ }