commandmate 0.27.1 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (980) hide show
  1. package/.env.example +28 -0
  2. package/.next/BUILD_ID +1 -1
  3. package/.next/app-build-manifest.json +441 -404
  4. package/.next/app-path-routes-manifest.json +34 -29
  5. package/.next/build-manifest.json +5 -5
  6. package/.next/prerender-manifest.json +9 -9
  7. package/.next/react-loadable-manifest.json +0 -6
  8. package/.next/required-server-files.json +1 -1
  9. package/.next/routes-manifest.json +32 -0
  10. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/update/route.js +1 -1
  12. package/.next/server/app/api/app/update/route.js.nft.json +1 -1
  13. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/app/update-check/route.js +1 -1
  15. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  17. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  18. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  20. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  21. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/assistant/messages/route.js +1 -1
  23. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  24. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/assistant/session/route.js +1 -1
  26. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  27. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/assistant/start/route.js +32 -1
  29. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  30. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/assistant/terminal/route.js +34 -3
  32. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  33. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/assistant/tools/route.js +1 -1
  35. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  36. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/auth/login/route.js +1 -1
  38. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/auth/logout/route.js +1 -1
  40. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/auth/status/route.js +1 -1
  42. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/capabilities/route.js +1 -1
  44. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/daily-summary/route.js +1 -1
  46. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  47. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  49. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  50. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
  52. package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
  53. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  55. package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
  56. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/external-apps/route.js +1 -1
  58. package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
  59. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/fs/browse/route.js +1 -1
  61. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
  62. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/fs/recent-paths/route.js +1 -1
  64. package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
  65. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  67. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  68. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  70. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  71. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  73. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  74. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/metrics/vibe/route.js +1 -1
  76. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
  77. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/push/escalation/route.js +1 -1
  80. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  81. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/push/subscriptions/route.js +7 -1
  83. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  84. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/push/vapid/route.js +1 -1
  86. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  87. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/remote/pair/route.js +2 -0
  89. package/.next/server/app/api/remote/pair/route.js.nft.json +1 -0
  90. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -0
  91. package/.next/server/app/api/repositories/[id]/route.js +1 -1
  92. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  93. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  95. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +1 -1
  96. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  98. package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +1 -1
  99. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  101. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  102. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/repositories/clone/route.js +1 -1
  104. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  105. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/repositories/excluded/route.js +1 -1
  107. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  108. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/repositories/restore/route.js +1 -1
  110. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  111. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/repositories/route.js +1 -1
  113. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  114. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/repositories/scan/route.js +1 -1
  116. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  117. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/repositories/sync/route.js +1 -1
  119. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  120. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/repositories/validate-path/route.js +1 -1
  122. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
  123. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/sidebar/group-order/route.js +1 -1
  125. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  126. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  128. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/skills/installations/route.js +1 -1
  130. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  131. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/skills/operations/route.js +1 -1
  133. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
  134. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/skills/reindex/route.js +1 -1
  136. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
  137. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  139. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  141. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/tasks/[taskId]/cancel/route.js +1 -1
  143. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  144. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  146. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
  147. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/templates/[id]/route.js +2 -2
  149. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  150. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/templates/route.js +2 -2
  152. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  153. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/todos/route.js +1 -1
  155. package/.next/server/app/api/todos/route.js.nft.json +1 -1
  156. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  158. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
  159. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/verification/runs/route.js +1 -1
  161. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
  162. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  165. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  168. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  171. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  174. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +2 -2
  176. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  177. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/current-output/route.js +2 -2
  179. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  180. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
  183. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  186. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  188. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  189. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  192. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  195. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  201. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  204. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  210. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  213. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  216. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  219. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  222. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  225. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  228. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  231. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  234. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  237. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  240. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  243. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  246. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  249. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  252. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  255. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  258. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  261. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -0
  263. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -0
  264. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -0
  265. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  266. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  267. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  269. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  270. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  272. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  273. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/logs/route.js +2 -2
  275. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  276. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +4 -4
  278. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  279. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  280. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  281. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  282. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  283. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  284. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  285. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  286. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  287. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  288. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  289. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -0
  290. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -0
  291. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -0
  292. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -0
  293. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -0
  294. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -0
  295. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -0
  296. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -0
  297. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -0
  298. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  299. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  300. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  301. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  302. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
  303. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  304. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  305. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  306. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  307. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  308. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  309. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  310. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +5 -1
  311. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  312. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  313. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  314. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  315. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  316. package/.next/server/app/api/worktrees/[id]/schedules/route.js +6 -2
  317. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  318. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  319. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  320. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  321. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  322. package/.next/server/app/api/worktrees/[id]/send/route.js +7 -3
  323. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  324. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  325. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
  326. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  327. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  328. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  329. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  330. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  331. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  332. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  333. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  334. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  335. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  336. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  337. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  338. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  339. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  340. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
  341. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
  342. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  343. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  344. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  345. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  346. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  347. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  348. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  349. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  350. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  351. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  352. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  353. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  354. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  355. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  356. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
  357. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  358. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  359. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  360. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  361. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  362. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  363. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  364. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  365. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  366. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  367. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -3
  368. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  369. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  370. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  371. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  372. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  373. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  374. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  375. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  376. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  377. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  378. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  379. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  380. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  381. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  382. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  383. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  384. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  385. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  386. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  387. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  388. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  389. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
  390. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  391. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  392. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
  393. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  394. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  395. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  396. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  397. package/.next/server/app/api/worktrees/route.js +1 -1
  398. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  399. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  400. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  401. package/.next/server/app/login/page.js +2 -2
  402. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  403. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  404. package/.next/server/app/more/page.js +1 -1
  405. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  406. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  407. package/.next/server/app/page_client-reference-manifest.js +1 -1
  408. package/.next/server/app/proxy/[...path]/route.js +1 -1
  409. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  410. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  411. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  412. package/.next/server/app/review/page.js +1 -1
  413. package/.next/server/app/review/page.js.nft.json +1 -1
  414. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  415. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  416. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  417. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  418. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  419. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
  420. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  421. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  422. package/.next/server/app/worktrees/[id]/page.js +15 -10
  423. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  424. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  425. package/.next/server/app/worktrees/[id]/terminal/page.js +2 -2
  426. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  427. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  428. package/.next/server/app-paths-manifest.json +34 -29
  429. package/.next/server/chunks/1058.js +1 -0
  430. package/.next/server/chunks/1068.js +1 -3
  431. package/.next/server/chunks/1162.js +1 -1
  432. package/.next/server/chunks/1191.js +13 -0
  433. package/.next/server/chunks/1296.js +1 -1
  434. package/.next/server/chunks/1601.js +2 -2
  435. package/.next/server/chunks/1714.js +7 -0
  436. package/.next/server/chunks/1886.js +5 -0
  437. package/.next/server/chunks/1944.js +1 -0
  438. package/.next/server/chunks/2119.js +1 -1
  439. package/.next/server/chunks/221.js +19 -0
  440. package/.next/server/chunks/222.js +1 -0
  441. package/.next/server/chunks/2328.js +1 -1
  442. package/.next/server/chunks/2366.js +1 -0
  443. package/.next/server/chunks/2404.js +1 -1
  444. package/.next/server/chunks/243.js +1 -0
  445. package/.next/server/chunks/2445.js +1 -1
  446. package/.next/server/chunks/2759.js +1 -1
  447. package/.next/server/chunks/3346.js +1 -1
  448. package/.next/server/chunks/3440.js +1 -1
  449. package/.next/server/chunks/3480.js +17 -1
  450. package/.next/server/chunks/3543.js +1 -1
  451. package/.next/server/chunks/3558.js +1 -0
  452. package/.next/server/chunks/3945.js +1 -1
  453. package/.next/server/chunks/4299.js +1 -0
  454. package/.next/server/chunks/4393.js +1 -1
  455. package/.next/server/chunks/5017.js +1 -1
  456. package/.next/server/chunks/5089.js +1 -1
  457. package/.next/server/chunks/5354.js +1 -1
  458. package/.next/server/chunks/5571.js +1 -1
  459. package/.next/server/chunks/6130.js +1 -1
  460. package/.next/server/chunks/6274.js +11 -10
  461. package/.next/server/chunks/6285.js +1 -1
  462. package/.next/server/chunks/6337.js +1 -0
  463. package/.next/server/chunks/6401.js +1 -1
  464. package/.next/server/chunks/663.js +78 -0
  465. package/.next/server/chunks/7472.js +1 -1
  466. package/.next/server/chunks/7824.js +1 -0
  467. package/.next/server/chunks/7905.js +1 -0
  468. package/.next/server/chunks/880.js +6 -6
  469. package/.next/server/chunks/8807.js +84 -18
  470. package/.next/server/chunks/9123.js +2 -2
  471. package/.next/server/chunks/9130.js +5 -0
  472. package/.next/server/chunks/9328.js +1 -1
  473. package/.next/server/chunks/9358.js +1 -1
  474. package/.next/server/chunks/9508.js +1 -1
  475. package/.next/server/chunks/9584.js +1 -0
  476. package/.next/server/chunks/9627.js +274 -0
  477. package/.next/server/chunks/9798.js +2 -0
  478. package/.next/server/chunks/9938.js +1 -1
  479. package/.next/server/functions-config-manifest.json +3 -1
  480. package/.next/server/middleware-build-manifest.js +1 -1
  481. package/.next/server/middleware-manifest.json +5 -5
  482. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  483. package/.next/server/pages/500.html +1 -1
  484. package/.next/server/server-reference-manifest.json +1 -1
  485. package/.next/server/src/middleware.js +1 -1
  486. package/.next/server/src/middleware.js.map +1 -1
  487. package/.next/static/chunks/1188-8567ee5ecfef02ee.js +1 -0
  488. package/.next/static/chunks/3361-aa1b6e7c1d7eeeb4.js +1 -0
  489. package/.next/static/chunks/3968-8d8ca15657748bfb.js +1 -0
  490. package/.next/static/chunks/5229-580b581fce5aeb52.js +1 -0
  491. package/.next/static/chunks/6381-c8d93ec301dbc380.js +1 -0
  492. package/.next/static/chunks/app/api/app/update/route-e3626364434d521b.js +1 -0
  493. package/.next/static/chunks/app/api/app/update-check/route-e3626364434d521b.js +1 -0
  494. package/.next/static/chunks/app/api/assistant/conversation/route-e3626364434d521b.js +1 -0
  495. package/.next/static/chunks/app/api/assistant/current-output/route-e3626364434d521b.js +1 -0
  496. package/.next/static/chunks/app/api/assistant/messages/route-e3626364434d521b.js +1 -0
  497. package/.next/static/chunks/app/api/assistant/session/route-e3626364434d521b.js +1 -0
  498. package/.next/static/chunks/app/api/assistant/start/route-e3626364434d521b.js +1 -0
  499. package/.next/static/chunks/app/api/assistant/terminal/route-e3626364434d521b.js +1 -0
  500. package/.next/static/chunks/app/api/assistant/tools/route-e3626364434d521b.js +1 -0
  501. package/.next/static/chunks/app/api/auth/login/route-e3626364434d521b.js +1 -0
  502. package/.next/static/chunks/app/api/auth/logout/route-e3626364434d521b.js +1 -0
  503. package/.next/static/chunks/app/api/auth/status/route-e3626364434d521b.js +1 -0
  504. package/.next/static/chunks/app/api/capabilities/route-e3626364434d521b.js +1 -0
  505. package/.next/static/chunks/app/api/daily-summary/route-e3626364434d521b.js +1 -0
  506. package/.next/static/chunks/app/api/daily-summary/status/route-e3626364434d521b.js +1 -0
  507. package/.next/static/chunks/app/api/external-apps/[id]/health/route-e3626364434d521b.js +1 -0
  508. package/.next/static/chunks/app/api/external-apps/[id]/route-e3626364434d521b.js +1 -0
  509. package/.next/static/chunks/app/api/external-apps/route-e3626364434d521b.js +1 -0
  510. package/.next/static/chunks/app/api/fs/browse/route-e3626364434d521b.js +1 -0
  511. package/.next/static/chunks/app/api/fs/recent-paths/route-e3626364434d521b.js +1 -0
  512. package/.next/static/chunks/app/api/hooks/agent-event/route-e3626364434d521b.js +1 -0
  513. package/.next/static/chunks/app/api/hooks/claude-done/route-e3626364434d521b.js +1 -0
  514. package/.next/static/chunks/app/api/hooks/permission-request/route-e3626364434d521b.js +1 -0
  515. package/.next/static/chunks/app/api/metrics/vibe/route-e3626364434d521b.js +1 -0
  516. package/.next/static/chunks/app/api/ollama/models/route-e3626364434d521b.js +1 -0
  517. package/.next/static/chunks/app/api/push/escalation/route-e3626364434d521b.js +1 -0
  518. package/.next/static/chunks/app/api/push/subscriptions/route-e3626364434d521b.js +1 -0
  519. package/.next/static/chunks/app/api/push/vapid/route-e3626364434d521b.js +1 -0
  520. package/.next/static/chunks/app/api/remote/pair/route-e3626364434d521b.js +1 -0
  521. package/.next/static/chunks/app/api/repositories/[id]/route-e3626364434d521b.js +1 -0
  522. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-e3626364434d521b.js +1 -0
  523. package/.next/static/chunks/app/api/repositories/[id]/todos/route-e3626364434d521b.js +1 -0
  524. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-e3626364434d521b.js +1 -0
  525. package/.next/static/chunks/app/api/repositories/clone/route-e3626364434d521b.js +1 -0
  526. package/.next/static/chunks/app/api/repositories/excluded/route-e3626364434d521b.js +1 -0
  527. package/.next/static/chunks/app/api/repositories/restore/route-e3626364434d521b.js +1 -0
  528. package/.next/static/chunks/app/api/repositories/route-e3626364434d521b.js +1 -0
  529. package/.next/static/chunks/app/api/repositories/scan/route-e3626364434d521b.js +1 -0
  530. package/.next/static/chunks/app/api/repositories/sync/route-e3626364434d521b.js +1 -0
  531. package/.next/static/chunks/app/api/repositories/validate-path/route-e3626364434d521b.js +1 -0
  532. package/.next/static/chunks/app/api/sidebar/group-order/route-e3626364434d521b.js +1 -0
  533. package/.next/static/chunks/app/api/skills/[id]/route-e3626364434d521b.js +1 -0
  534. package/.next/static/chunks/app/api/skills/installations/route-e3626364434d521b.js +1 -0
  535. package/.next/static/chunks/app/api/skills/operations/route-e3626364434d521b.js +1 -0
  536. package/.next/static/chunks/app/api/skills/reindex/route-e3626364434d521b.js +1 -0
  537. package/.next/static/chunks/app/api/skills/route-e3626364434d521b.js +1 -0
  538. package/.next/static/chunks/app/api/slash-commands/route-e3626364434d521b.js +1 -0
  539. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-e3626364434d521b.js +1 -0
  540. package/.next/static/chunks/app/api/tasks/[taskId]/route-e3626364434d521b.js +1 -0
  541. package/.next/static/chunks/app/api/templates/[id]/route-e3626364434d521b.js +1 -0
  542. package/.next/static/chunks/app/api/templates/route-e3626364434d521b.js +1 -0
  543. package/.next/static/chunks/app/api/todos/route-e3626364434d521b.js +1 -0
  544. package/.next/static/chunks/app/api/verification/runs/[runId]/route-e3626364434d521b.js +1 -0
  545. package/.next/static/chunks/app/api/verification/runs/route-e3626364434d521b.js +1 -0
  546. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-e3626364434d521b.js +1 -0
  547. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-e3626364434d521b.js +1 -0
  548. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-e3626364434d521b.js +1 -0
  549. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-e3626364434d521b.js +1 -0
  550. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-e3626364434d521b.js +1 -0
  551. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-e3626364434d521b.js +1 -0
  552. package/.next/static/chunks/app/api/worktrees/[id]/env/route-e3626364434d521b.js +1 -0
  553. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-e3626364434d521b.js +1 -0
  554. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-e3626364434d521b.js +1 -0
  555. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-e3626364434d521b.js +1 -0
  556. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-e3626364434d521b.js +1 -0
  557. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-e3626364434d521b.js +1 -0
  558. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-e3626364434d521b.js +1 -0
  559. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-e3626364434d521b.js +1 -0
  560. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-e3626364434d521b.js +1 -0
  561. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-e3626364434d521b.js +1 -0
  562. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-e3626364434d521b.js +1 -0
  563. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-e3626364434d521b.js +1 -0
  564. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-e3626364434d521b.js +1 -0
  565. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-e3626364434d521b.js +1 -0
  566. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-e3626364434d521b.js +1 -0
  567. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-e3626364434d521b.js +1 -0
  568. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-e3626364434d521b.js +1 -0
  569. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-e3626364434d521b.js +1 -0
  570. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-e3626364434d521b.js +1 -0
  571. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-e3626364434d521b.js +1 -0
  572. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-e3626364434d521b.js +1 -0
  573. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-e3626364434d521b.js +1 -0
  574. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-e3626364434d521b.js +1 -0
  575. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-e3626364434d521b.js +1 -0
  576. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-e3626364434d521b.js +1 -0
  577. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-e3626364434d521b.js +1 -0
  578. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-e3626364434d521b.js +1 -0
  579. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-e3626364434d521b.js +1 -0
  580. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-e3626364434d521b.js +1 -0
  581. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-e3626364434d521b.js +1 -0
  582. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-e3626364434d521b.js +1 -0
  583. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-e3626364434d521b.js +1 -0
  584. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-e3626364434d521b.js +1 -0
  585. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-e3626364434d521b.js +1 -0
  586. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-e3626364434d521b.js +1 -0
  587. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-e3626364434d521b.js +1 -0
  588. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-e3626364434d521b.js +1 -0
  589. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-e3626364434d521b.js +1 -0
  590. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-e3626364434d521b.js +1 -0
  591. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-e3626364434d521b.js +1 -0
  592. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-e3626364434d521b.js +1 -0
  593. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-e3626364434d521b.js +1 -0
  594. package/.next/static/chunks/app/api/worktrees/[id]/route-e3626364434d521b.js +1 -0
  595. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-e3626364434d521b.js +1 -0
  596. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-e3626364434d521b.js +1 -0
  597. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-e3626364434d521b.js +1 -0
  598. package/.next/static/chunks/app/api/worktrees/[id]/search/route-e3626364434d521b.js +1 -0
  599. package/.next/static/chunks/app/api/worktrees/[id]/send/route-e3626364434d521b.js +1 -0
  600. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-e3626364434d521b.js +1 -0
  601. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-e3626364434d521b.js +1 -0
  602. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-e3626364434d521b.js +1 -0
  603. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-e3626364434d521b.js +1 -0
  604. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-e3626364434d521b.js +1 -0
  605. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-e3626364434d521b.js +1 -0
  606. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-e3626364434d521b.js +1 -0
  607. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-e3626364434d521b.js +1 -0
  608. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-e3626364434d521b.js +1 -0
  609. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-e3626364434d521b.js +1 -0
  610. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-e3626364434d521b.js +1 -0
  611. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-e3626364434d521b.js +1 -0
  612. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-e3626364434d521b.js +1 -0
  613. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-e3626364434d521b.js +1 -0
  614. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-e3626364434d521b.js +1 -0
  615. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-e3626364434d521b.js +1 -0
  616. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-e3626364434d521b.js +1 -0
  617. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-e3626364434d521b.js +1 -0
  618. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-e3626364434d521b.js +1 -0
  619. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-e3626364434d521b.js +1 -0
  620. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-e3626364434d521b.js +1 -0
  621. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-e3626364434d521b.js +1 -0
  622. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-e3626364434d521b.js +1 -0
  623. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-e3626364434d521b.js +1 -0
  624. package/.next/static/chunks/app/api/worktrees/route-e3626364434d521b.js +1 -0
  625. package/.next/static/chunks/app/login/page-03659dded846ef1d.js +1 -0
  626. package/.next/static/chunks/app/manifest.webmanifest/route-e3626364434d521b.js +1 -0
  627. package/.next/static/chunks/app/more/page-03867ab635d197c7.js +1 -0
  628. package/.next/static/chunks/app/proxy/[...path]/route-e3626364434d521b.js +1 -0
  629. package/.next/static/chunks/app/review/page-9a6d18ddcccbb63c.js +1 -0
  630. package/.next/static/chunks/app/worktrees/[id]/layout-e3626364434d521b.js +1 -0
  631. package/.next/static/chunks/app/worktrees/[id]/page-c07b23b6ca58091c.js +1 -0
  632. package/.next/static/chunks/app/worktrees/[id]/terminal/page-00ad5d9a62a71cab.js +1 -0
  633. package/.next/static/chunks/webpack-7e79064bfce988d7.js +1 -0
  634. package/.next/static/css/b6990f889f4f9515.css +1 -0
  635. package/.next/static/uulKcSOgyxChTo4SipUSF/_buildManifest.js +1 -0
  636. package/.next/trace +13 -13
  637. package/.next/types/app/api/remote/pair/route.ts +347 -0
  638. package/.next/types/app/api/worktrees/[id]/instances/opencode/route.ts +347 -0
  639. package/.next/types/app/api/worktrees/[id]/opencode/diff/route.ts +347 -0
  640. package/.next/types/app/api/worktrees/[id]/opencode/session/route.ts +347 -0
  641. package/.next/types/app/api/worktrees/[id]/opencode/share/route.ts +347 -0
  642. package/.next/types/routes.d.ts +6 -1
  643. package/.next/types/validator.ts +45 -0
  644. package/README.md +24 -4
  645. package/dist/cli/commands/init.d.ts.map +1 -1
  646. package/dist/cli/commands/init.js +66 -0
  647. package/dist/cli/commands/instances.d.ts.map +1 -1
  648. package/dist/cli/commands/instances.js +46 -1
  649. package/dist/cli/commands/interrupt.d.ts +25 -0
  650. package/dist/cli/commands/interrupt.d.ts.map +1 -0
  651. package/dist/cli/commands/interrupt.js +146 -0
  652. package/dist/cli/commands/remote.d.ts +248 -0
  653. package/dist/cli/commands/remote.d.ts.map +1 -0
  654. package/dist/cli/commands/remote.js +849 -0
  655. package/dist/cli/commands/report.d.ts.map +1 -1
  656. package/dist/cli/commands/report.js +11 -4
  657. package/dist/cli/commands/respond.d.ts.map +1 -1
  658. package/dist/cli/commands/respond.js +146 -1
  659. package/dist/cli/commands/status.d.ts.map +1 -1
  660. package/dist/cli/commands/status.js +104 -0
  661. package/dist/cli/commands/wait.d.ts.map +1 -1
  662. package/dist/cli/commands/wait.js +39 -1
  663. package/dist/cli/config/agent-target-options.d.ts +12 -0
  664. package/dist/cli/config/agent-target-options.d.ts.map +1 -1
  665. package/dist/cli/config/agent-target-options.js +15 -1
  666. package/dist/cli/config/security-messages.d.ts +25 -0
  667. package/dist/cli/config/security-messages.d.ts.map +1 -1
  668. package/dist/cli/config/security-messages.js +43 -1
  669. package/dist/cli/docs/agent-operations.d.ts +1 -1
  670. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  671. package/dist/cli/docs/agent-operations.js +34 -0
  672. package/dist/cli/program.d.ts.map +1 -1
  673. package/dist/cli/program.js +12 -0
  674. package/dist/cli/types/api-responses.d.ts +375 -0
  675. package/dist/cli/types/api-responses.d.ts.map +1 -1
  676. package/dist/cli/types/index.d.ts +83 -0
  677. package/dist/cli/types/index.d.ts.map +1 -1
  678. package/dist/cli/types/index.js +31 -1
  679. package/dist/cli/utils/daemon.d.ts.map +1 -1
  680. package/dist/cli/utils/daemon.js +3 -0
  681. package/dist/cli/utils/env-setup.d.ts +24 -0
  682. package/dist/cli/utils/env-setup.d.ts.map +1 -1
  683. package/dist/cli/utils/env-setup.js +70 -0
  684. package/dist/cli/utils/qr-terminal.d.ts +54 -0
  685. package/dist/cli/utils/qr-terminal.d.ts.map +1 -0
  686. package/dist/cli/utils/qr-terminal.js +181 -0
  687. package/dist/cli/utils/remote-state.d.ts +123 -0
  688. package/dist/cli/utils/remote-state.d.ts.map +1 -0
  689. package/dist/cli/utils/remote-state.js +193 -0
  690. package/dist/cli/utils/vapid-keygen.d.ts +74 -0
  691. package/dist/cli/utils/vapid-keygen.d.ts.map +1 -0
  692. package/dist/cli/utils/vapid-keygen.js +111 -0
  693. package/dist/config/auth-config.d.ts +1 -1
  694. package/dist/config/auth-config.d.ts.map +1 -1
  695. package/dist/config/auth-config.js +5 -0
  696. package/dist/lib/cli-tools/types.d.ts +11 -1
  697. package/dist/lib/cli-tools/types.d.ts.map +1 -1
  698. package/dist/lib/detection/tools/verified-against.d.ts +14 -3
  699. package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
  700. package/dist/lib/detection/tools/verified-against.js +14 -3
  701. package/dist/lib/push/vapid.d.ts +178 -0
  702. package/dist/lib/push/vapid.d.ts.map +1 -0
  703. package/dist/lib/push/vapid.js +293 -0
  704. package/dist/lib/remote/cloudflare.d.ts +285 -0
  705. package/dist/lib/remote/cloudflare.d.ts.map +1 -0
  706. package/dist/lib/remote/cloudflare.js +619 -0
  707. package/dist/lib/remote/index.d.ts +17 -0
  708. package/dist/lib/remote/index.d.ts.map +1 -0
  709. package/dist/lib/remote/index.js +64 -0
  710. package/dist/lib/remote/provider-registry.d.ts +29 -0
  711. package/dist/lib/remote/provider-registry.d.ts.map +1 -0
  712. package/dist/lib/remote/provider-registry.js +73 -0
  713. package/dist/lib/remote/tailscale.d.ts +268 -0
  714. package/dist/lib/remote/tailscale.d.ts.map +1 -0
  715. package/dist/lib/remote/tailscale.js +546 -0
  716. package/dist/lib/remote/types.d.ts +127 -0
  717. package/dist/lib/remote/types.d.ts.map +1 -0
  718. package/dist/lib/remote/types.js +53 -0
  719. package/dist/lib/security/pairing-code.d.ts +182 -0
  720. package/dist/lib/security/pairing-code.d.ts.map +1 -0
  721. package/dist/lib/security/pairing-code.js +265 -0
  722. package/dist/lib/server/localhost-self-check.d.ts +203 -0
  723. package/dist/lib/server/localhost-self-check.d.ts.map +1 -0
  724. package/dist/lib/server/localhost-self-check.js +333 -0
  725. package/dist/server/locales/en/notifications.json +23 -1
  726. package/dist/server/locales/ja/notifications.json +23 -1
  727. package/dist/server/server.js +103 -0
  728. package/dist/server/src/config/auth-config.js +5 -0
  729. package/dist/server/src/config/image-extensions.js +244 -0
  730. package/dist/server/src/config/opencode-constants.js +69 -0
  731. package/dist/server/src/config/tmux-pane-config.js +100 -1
  732. package/dist/server/src/lib/cli-tools/base.js +33 -48
  733. package/dist/server/src/lib/cli-tools/opencode-config.js +12 -0
  734. package/dist/server/src/lib/cli-tools/opencode.js +435 -7
  735. package/dist/server/src/lib/cli-tools/start-availability.js +160 -0
  736. package/dist/server/src/lib/cmate-cli-tool-parser.js +328 -7
  737. package/dist/server/src/lib/cmate-parser.js +12 -0
  738. package/dist/server/src/lib/db/agent-instances-db.js +129 -0
  739. package/dist/server/src/lib/db/agent-session-cost-db.js +204 -0
  740. package/dist/server/src/lib/db/agent-session-cost-sampler.js +194 -0
  741. package/dist/server/src/lib/db/chat-db.js +33 -0
  742. package/dist/server/src/lib/db/db-instance.js +11 -0
  743. package/dist/server/src/lib/db/db.js +8 -3
  744. package/dist/server/src/lib/db/migrations/index.js +6 -0
  745. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  746. package/dist/server/src/lib/db/migrations/v57-push-subscription-defaults-notice.js +54 -0
  747. package/dist/server/src/lib/db/migrations/v58-agent-session-costs.js +100 -0
  748. package/dist/server/src/lib/db/migrations/v59-opencode-instance-settings.js +71 -0
  749. package/dist/server/src/lib/db/push-subscriptions-db.js +56 -5
  750. package/dist/server/src/lib/detection/cli-patterns.js +17 -6
  751. package/dist/server/src/lib/detection/excerpt.js +48 -0
  752. package/dist/server/src/lib/detection/model-info-extractor.js +26 -3
  753. package/dist/server/src/lib/detection/opencode-modal-overlay.js +400 -0
  754. package/dist/server/src/lib/detection/opencode-pane-obstruction.js +181 -0
  755. package/dist/server/src/lib/detection/status-detector.js +7 -0
  756. package/dist/server/src/lib/detection/status-reason.js +20 -0
  757. package/dist/server/src/lib/detection/terminal-columns.js +94 -0
  758. package/dist/server/src/lib/detection/tools/opencode/detect.js +43 -0
  759. package/dist/server/src/lib/detection/tools/opencode/prompt.js +20 -0
  760. package/dist/server/src/lib/detection/tools/verified-against.js +14 -3
  761. package/dist/server/src/lib/detection/upstream-faults.js +7 -22
  762. package/dist/server/src/lib/hooks/agent-session-telemetry.js +324 -0
  763. package/dist/server/src/lib/hooks/pending-decision-kind.js +72 -0
  764. package/dist/server/src/lib/hooks/sources/define-source.js +88 -0
  765. package/dist/server/src/lib/hooks/sources/opencode/client.js +907 -2
  766. package/dist/server/src/lib/hooks/sources/opencode/diff.js +336 -0
  767. package/dist/server/src/lib/hooks/sources/opencode/history.js +480 -0
  768. package/dist/server/src/lib/hooks/sources/opencode/ingest.js +76 -7
  769. package/dist/server/src/lib/hooks/sources/opencode/launch-settings.js +222 -0
  770. package/dist/server/src/lib/hooks/sources/opencode/mappers.js +31 -0
  771. package/dist/server/src/lib/hooks/sources/opencode/payloads.js +45 -0
  772. package/dist/server/src/lib/hooks/sources/opencode/ports.js +16 -0
  773. package/dist/server/src/lib/hooks/sources/opencode/push.js +307 -0
  774. package/dist/server/src/lib/hooks/sources/opencode/reattach.js +284 -0
  775. package/dist/server/src/lib/hooks/sources/opencode/runtime.js +165 -2
  776. package/dist/server/src/lib/hooks/sources/opencode/source.js +46 -2
  777. package/dist/server/src/lib/hooks/sources/opencode/subscription.js +407 -4
  778. package/dist/server/src/lib/hooks/sources/opencode/transcript.js +383 -0
  779. package/dist/server/src/lib/hooks/structured-decision-response.js +460 -0
  780. package/dist/server/src/lib/job-executor.js +43 -20
  781. package/dist/server/src/lib/polling/response-checker.js +43 -16
  782. package/dist/server/src/lib/polling/structured-history-gate.js +75 -0
  783. package/dist/server/src/lib/prompt-answer-sender.js +153 -2
  784. package/dist/server/src/lib/push/delivery-health.js +237 -0
  785. package/dist/server/src/lib/push/failure-push-notifier.js +109 -7
  786. package/dist/server/src/lib/push/index.js +25 -1
  787. package/dist/server/src/lib/push/prompt-card-state.js +254 -14
  788. package/dist/server/src/lib/push/push-sender.js +63 -12
  789. package/dist/server/src/lib/push/resolution-push-notifier.js +15 -3
  790. package/dist/server/src/lib/push/vapid.js +264 -5
  791. package/dist/server/src/lib/push/waiting-push-notifier.js +7 -0
  792. package/dist/server/src/lib/server/localhost-self-check.js +333 -0
  793. package/dist/server/src/lib/session/agent-event-state.js +169 -4
  794. package/dist/server/src/lib/session/claude-executor.js +152 -15
  795. package/dist/server/src/lib/session/current-output-builder.js +182 -15
  796. package/dist/server/src/lib/session/opencode-session-api.js +214 -0
  797. package/dist/server/src/lib/session/opencode-session-recall.js +168 -0
  798. package/dist/server/src/lib/session/opencode-session-store.js +274 -0
  799. package/dist/server/src/lib/session/provisional-turn.js +54 -1
  800. package/dist/server/src/lib/session/send-user-message.js +6 -5
  801. package/dist/server/src/lib/session/structured-prompt.js +53 -2
  802. package/dist/server/src/lib/skills/compatibility-matrix.js +50 -1
  803. package/dist/server/src/lib/tmux/tmux.js +74 -4
  804. package/dist/server/src/lib/verification/gate-runner.js +71 -8
  805. package/dist/server/src/types/agent-session.js +63 -0
  806. package/dist/server/src/types/agent-transcript.js +80 -0
  807. package/dist/server/src/types/opencode-export.js +228 -0
  808. package/dist/server/src/types/opencode-instance-settings.js +140 -0
  809. package/dist/server/src/types/opencode-share.js +111 -0
  810. package/dist/server/src/types/terminal-keys.js +69 -1
  811. package/dist/types/cli-tool-contracts.d.ts +48 -0
  812. package/dist/types/cli-tool-contracts.d.ts.map +1 -1
  813. package/dist/types/terminal-keys.d.ts +89 -0
  814. package/dist/types/terminal-keys.d.ts.map +1 -0
  815. package/dist/types/terminal-keys.js +105 -0
  816. package/package.json +2 -1
  817. package/.next/server/chunks/1029.js +0 -1
  818. package/.next/server/chunks/1239.js +0 -1
  819. package/.next/server/chunks/1538.js +0 -7
  820. package/.next/server/chunks/2546.js +0 -1
  821. package/.next/server/chunks/2689.js +0 -13
  822. package/.next/server/chunks/3292.js +0 -1
  823. package/.next/server/chunks/3417.js +0 -1
  824. package/.next/server/chunks/3736.js +0 -1
  825. package/.next/server/chunks/4423.js +0 -1
  826. package/.next/server/chunks/4444.js +0 -32
  827. package/.next/server/chunks/4565.js +0 -3
  828. package/.next/server/chunks/467.js +0 -1
  829. package/.next/server/chunks/4905.js +0 -5
  830. package/.next/server/chunks/552.js +0 -19
  831. package/.next/server/chunks/5998.js +0 -74
  832. package/.next/server/chunks/6919.js +0 -1
  833. package/.next/server/chunks/7970.js +0 -229
  834. package/.next/server/chunks/8536.js +0 -1
  835. package/.next/server/chunks/9284.js +0 -1
  836. package/.next/static/9IXgWfBUtnEnRqnbmErTp/_buildManifest.js +0 -1
  837. package/.next/static/chunks/3361-5d6e93fba8a92bc1.js +0 -1
  838. package/.next/static/chunks/5229-1f5f19740a8d6c11.js +0 -1
  839. package/.next/static/chunks/6271.295ced91b6335f18.js +0 -1
  840. package/.next/static/chunks/6381-8cfe50a5ca5425b1.js +0 -1
  841. package/.next/static/chunks/8521-c43994fb58501d13.js +0 -1
  842. package/.next/static/chunks/app/api/app/update/route-6add0d88e2828c23.js +0 -1
  843. package/.next/static/chunks/app/api/app/update-check/route-6add0d88e2828c23.js +0 -1
  844. package/.next/static/chunks/app/api/assistant/conversation/route-6add0d88e2828c23.js +0 -1
  845. package/.next/static/chunks/app/api/assistant/current-output/route-6add0d88e2828c23.js +0 -1
  846. package/.next/static/chunks/app/api/assistant/messages/route-6add0d88e2828c23.js +0 -1
  847. package/.next/static/chunks/app/api/assistant/session/route-6add0d88e2828c23.js +0 -1
  848. package/.next/static/chunks/app/api/assistant/start/route-6add0d88e2828c23.js +0 -1
  849. package/.next/static/chunks/app/api/assistant/terminal/route-6add0d88e2828c23.js +0 -1
  850. package/.next/static/chunks/app/api/assistant/tools/route-6add0d88e2828c23.js +0 -1
  851. package/.next/static/chunks/app/api/auth/login/route-6add0d88e2828c23.js +0 -1
  852. package/.next/static/chunks/app/api/auth/logout/route-6add0d88e2828c23.js +0 -1
  853. package/.next/static/chunks/app/api/auth/status/route-6add0d88e2828c23.js +0 -1
  854. package/.next/static/chunks/app/api/capabilities/route-6add0d88e2828c23.js +0 -1
  855. package/.next/static/chunks/app/api/daily-summary/route-6add0d88e2828c23.js +0 -1
  856. package/.next/static/chunks/app/api/daily-summary/status/route-6add0d88e2828c23.js +0 -1
  857. package/.next/static/chunks/app/api/external-apps/[id]/health/route-6add0d88e2828c23.js +0 -1
  858. package/.next/static/chunks/app/api/external-apps/[id]/route-6add0d88e2828c23.js +0 -1
  859. package/.next/static/chunks/app/api/external-apps/route-6add0d88e2828c23.js +0 -1
  860. package/.next/static/chunks/app/api/fs/browse/route-6add0d88e2828c23.js +0 -1
  861. package/.next/static/chunks/app/api/fs/recent-paths/route-6add0d88e2828c23.js +0 -1
  862. package/.next/static/chunks/app/api/hooks/agent-event/route-6add0d88e2828c23.js +0 -1
  863. package/.next/static/chunks/app/api/hooks/claude-done/route-6add0d88e2828c23.js +0 -1
  864. package/.next/static/chunks/app/api/hooks/permission-request/route-6add0d88e2828c23.js +0 -1
  865. package/.next/static/chunks/app/api/metrics/vibe/route-6add0d88e2828c23.js +0 -1
  866. package/.next/static/chunks/app/api/ollama/models/route-6add0d88e2828c23.js +0 -1
  867. package/.next/static/chunks/app/api/push/escalation/route-6add0d88e2828c23.js +0 -1
  868. package/.next/static/chunks/app/api/push/subscriptions/route-6add0d88e2828c23.js +0 -1
  869. package/.next/static/chunks/app/api/push/vapid/route-6add0d88e2828c23.js +0 -1
  870. package/.next/static/chunks/app/api/repositories/[id]/route-6add0d88e2828c23.js +0 -1
  871. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-6add0d88e2828c23.js +0 -1
  872. package/.next/static/chunks/app/api/repositories/[id]/todos/route-6add0d88e2828c23.js +0 -1
  873. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-6add0d88e2828c23.js +0 -1
  874. package/.next/static/chunks/app/api/repositories/clone/route-6add0d88e2828c23.js +0 -1
  875. package/.next/static/chunks/app/api/repositories/excluded/route-6add0d88e2828c23.js +0 -1
  876. package/.next/static/chunks/app/api/repositories/restore/route-6add0d88e2828c23.js +0 -1
  877. package/.next/static/chunks/app/api/repositories/route-6add0d88e2828c23.js +0 -1
  878. package/.next/static/chunks/app/api/repositories/scan/route-6add0d88e2828c23.js +0 -1
  879. package/.next/static/chunks/app/api/repositories/sync/route-6add0d88e2828c23.js +0 -1
  880. package/.next/static/chunks/app/api/repositories/validate-path/route-6add0d88e2828c23.js +0 -1
  881. package/.next/static/chunks/app/api/sidebar/group-order/route-6add0d88e2828c23.js +0 -1
  882. package/.next/static/chunks/app/api/skills/[id]/route-6add0d88e2828c23.js +0 -1
  883. package/.next/static/chunks/app/api/skills/installations/route-6add0d88e2828c23.js +0 -1
  884. package/.next/static/chunks/app/api/skills/operations/route-6add0d88e2828c23.js +0 -1
  885. package/.next/static/chunks/app/api/skills/reindex/route-6add0d88e2828c23.js +0 -1
  886. package/.next/static/chunks/app/api/skills/route-6add0d88e2828c23.js +0 -1
  887. package/.next/static/chunks/app/api/slash-commands/route-6add0d88e2828c23.js +0 -1
  888. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-6add0d88e2828c23.js +0 -1
  889. package/.next/static/chunks/app/api/tasks/[taskId]/route-6add0d88e2828c23.js +0 -1
  890. package/.next/static/chunks/app/api/templates/[id]/route-6add0d88e2828c23.js +0 -1
  891. package/.next/static/chunks/app/api/templates/route-6add0d88e2828c23.js +0 -1
  892. package/.next/static/chunks/app/api/todos/route-6add0d88e2828c23.js +0 -1
  893. package/.next/static/chunks/app/api/verification/runs/[runId]/route-6add0d88e2828c23.js +0 -1
  894. package/.next/static/chunks/app/api/verification/runs/route-6add0d88e2828c23.js +0 -1
  895. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-6add0d88e2828c23.js +0 -1
  896. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-6add0d88e2828c23.js +0 -1
  897. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-6add0d88e2828c23.js +0 -1
  898. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-6add0d88e2828c23.js +0 -1
  899. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-6add0d88e2828c23.js +0 -1
  900. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-6add0d88e2828c23.js +0 -1
  901. package/.next/static/chunks/app/api/worktrees/[id]/env/route-6add0d88e2828c23.js +0 -1
  902. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-6add0d88e2828c23.js +0 -1
  903. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-6add0d88e2828c23.js +0 -1
  904. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-6add0d88e2828c23.js +0 -1
  905. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-6add0d88e2828c23.js +0 -1
  906. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-6add0d88e2828c23.js +0 -1
  907. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-6add0d88e2828c23.js +0 -1
  908. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-6add0d88e2828c23.js +0 -1
  909. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-6add0d88e2828c23.js +0 -1
  910. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-6add0d88e2828c23.js +0 -1
  911. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-6add0d88e2828c23.js +0 -1
  912. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-6add0d88e2828c23.js +0 -1
  913. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-6add0d88e2828c23.js +0 -1
  914. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-6add0d88e2828c23.js +0 -1
  915. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-6add0d88e2828c23.js +0 -1
  916. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-6add0d88e2828c23.js +0 -1
  917. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-6add0d88e2828c23.js +0 -1
  918. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-6add0d88e2828c23.js +0 -1
  919. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-6add0d88e2828c23.js +0 -1
  920. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-6add0d88e2828c23.js +0 -1
  921. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-6add0d88e2828c23.js +0 -1
  922. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-6add0d88e2828c23.js +0 -1
  923. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-6add0d88e2828c23.js +0 -1
  924. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-6add0d88e2828c23.js +0 -1
  925. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-6add0d88e2828c23.js +0 -1
  926. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-6add0d88e2828c23.js +0 -1
  927. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-6add0d88e2828c23.js +0 -1
  928. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-6add0d88e2828c23.js +0 -1
  929. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-6add0d88e2828c23.js +0 -1
  930. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-6add0d88e2828c23.js +0 -1
  931. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-6add0d88e2828c23.js +0 -1
  932. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-6add0d88e2828c23.js +0 -1
  933. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-6add0d88e2828c23.js +0 -1
  934. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-6add0d88e2828c23.js +0 -1
  935. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-6add0d88e2828c23.js +0 -1
  936. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-6add0d88e2828c23.js +0 -1
  937. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-6add0d88e2828c23.js +0 -1
  938. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-6add0d88e2828c23.js +0 -1
  939. package/.next/static/chunks/app/api/worktrees/[id]/route-6add0d88e2828c23.js +0 -1
  940. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-6add0d88e2828c23.js +0 -1
  941. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-6add0d88e2828c23.js +0 -1
  942. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-6add0d88e2828c23.js +0 -1
  943. package/.next/static/chunks/app/api/worktrees/[id]/search/route-6add0d88e2828c23.js +0 -1
  944. package/.next/static/chunks/app/api/worktrees/[id]/send/route-6add0d88e2828c23.js +0 -1
  945. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-6add0d88e2828c23.js +0 -1
  946. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-6add0d88e2828c23.js +0 -1
  947. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-6add0d88e2828c23.js +0 -1
  948. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-6add0d88e2828c23.js +0 -1
  949. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-6add0d88e2828c23.js +0 -1
  950. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-6add0d88e2828c23.js +0 -1
  951. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-6add0d88e2828c23.js +0 -1
  952. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-6add0d88e2828c23.js +0 -1
  953. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-6add0d88e2828c23.js +0 -1
  954. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-6add0d88e2828c23.js +0 -1
  955. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-6add0d88e2828c23.js +0 -1
  956. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-6add0d88e2828c23.js +0 -1
  957. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-6add0d88e2828c23.js +0 -1
  958. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-6add0d88e2828c23.js +0 -1
  959. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-6add0d88e2828c23.js +0 -1
  960. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-6add0d88e2828c23.js +0 -1
  961. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-6add0d88e2828c23.js +0 -1
  962. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-6add0d88e2828c23.js +0 -1
  963. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-6add0d88e2828c23.js +0 -1
  964. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-6add0d88e2828c23.js +0 -1
  965. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-6add0d88e2828c23.js +0 -1
  966. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-6add0d88e2828c23.js +0 -1
  967. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-6add0d88e2828c23.js +0 -1
  968. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-6add0d88e2828c23.js +0 -1
  969. package/.next/static/chunks/app/api/worktrees/route-6add0d88e2828c23.js +0 -1
  970. package/.next/static/chunks/app/login/page-adc51f0f7cbb7ac6.js +0 -1
  971. package/.next/static/chunks/app/manifest.webmanifest/route-6add0d88e2828c23.js +0 -1
  972. package/.next/static/chunks/app/more/page-3266dfa945972649.js +0 -1
  973. package/.next/static/chunks/app/proxy/[...path]/route-6add0d88e2828c23.js +0 -1
  974. package/.next/static/chunks/app/review/page-8f63aff862fee421.js +0 -1
  975. package/.next/static/chunks/app/worktrees/[id]/layout-6add0d88e2828c23.js +0 -1
  976. package/.next/static/chunks/app/worktrees/[id]/page-f7b3dfbe757dc6b8.js +0 -1
  977. package/.next/static/chunks/app/worktrees/[id]/terminal/page-a75fe180a7233b2b.js +0 -1
  978. package/.next/static/chunks/webpack-6a9668cf54a26eba.js +0 -1
  979. package/.next/static/css/928e5a8830fbf997.css +0 -1
  980. /package/.next/static/{9IXgWfBUtnEnRqnbmErTp → uulKcSOgyxChTo4SipUSF}/_ssgManifest.js +0 -0
@@ -433,8 +433,98 @@ app.prepare().then(() => {
433
433
  server.listen(port, hostname, async () => {
434
434
  console.log(`> Ready on ${protocol}://${hostname}:${port}`);
435
435
  console.log(`> WebSocket server ready`);
436
+ // Issue #2113: verify that the URL the documentation advertises
437
+ // (`http://localhost:<port>`) actually reaches THIS process. It does not when
438
+ // another process holds `::1:<port>`: `localhost` resolves ::1 before 127.0.0.1
439
+ // on macOS, and neither a 127.0.0.1 nor a 0.0.0.0 bind covers ::1. The user's
440
+ // browser then talks to the squatter while we keep printing "Ready".
441
+ //
442
+ // Deliberately NOT awaited and wrapped in its own catch: a diagnostic must never
443
+ // delay or block a successful `listen`. `runLocalhostSelfCheck` is fail-open in
444
+ // its own right (it resolves `null` rather than throwing) and warns only on the
445
+ // one actionable verdict — see src/lib/server/localhost-self-check.ts.
446
+ //
447
+ // Dynamic import for the same reason as every reconciler below: adding a module
448
+ // graph to server.ts's eval-time graph perturbs Next's AsyncLocalStorage bootstrap
449
+ // under `tsx server.ts` and kills the first request that compiles middleware. Do
450
+ // not hoist this.
451
+ void (async () => {
452
+ try {
453
+ const selfCheck = await Promise.resolve().then(() => __importStar(require('./src/lib/server/localhost-self-check')));
454
+ clearStartupSelfCheckState = () => selfCheck.clearLocalhostConflict(port);
455
+ await selfCheck.runLocalhostSelfCheck({
456
+ server,
457
+ port,
458
+ bind: hostname,
459
+ protocol: protocol === 'https' ? 'https' : 'http',
460
+ });
461
+ }
462
+ catch (error) {
463
+ console.error('Startup self-check failed:', error);
464
+ }
465
+ })();
466
+ // Issue #2123 / #2124: say, in one line, whether Web Push can work at all.
467
+ // Unconfigured VAPID keys disable push silently (correct fail-safe, wrong
468
+ // ergonomics: the reader observes only "no notifications ever arrive"), and
469
+ // a `CM_VAPID_SUBJECT` Apple will not accept silences iPhone/iPad while
470
+ // Android keeps working. ONE check reports both — see src/lib/push/vapid.ts.
471
+ //
472
+ // A healthy configuration prints NOTHING, which is what makes the presence
473
+ // of a line meaningful. Same contract as the localhost self-check above:
474
+ // fail-open, never blocks `listen`. `commandmate status` runs the same
475
+ // function over the env the daemon was started with, so the two surfaces
476
+ // cannot drift.
477
+ //
478
+ // Dynamic import for the same reason as every reconciler here: adding a
479
+ // module graph to server.ts's eval-time graph perturbs Next's
480
+ // AsyncLocalStorage bootstrap under `tsx server.ts`. Do not hoist this.
481
+ void (async () => {
482
+ try {
483
+ const { runVapidSelfCheck } = await Promise.resolve().then(() => __importStar(require('./src/lib/push/vapid')));
484
+ runVapidSelfCheck();
485
+ }
486
+ catch (error) {
487
+ console.error('VAPID self-check failed:', error);
488
+ }
489
+ })();
436
490
  // Initialize worktrees after server starts
437
491
  await initializeWorktrees();
492
+ // Issue #2108: re-open the event streams of opencode panes that outlived
493
+ // the last process. The port each one's server listens on is in
494
+ // `~/.commandmate/opencode-ports.json`, and until this call nothing read it
495
+ // at startup: the only chain that reached `recoverOpencodePort` was a
496
+ // *launch*, and a restart does not launch anything — `POST /send` skips
497
+ // `startSession` while the pane is running. The result was a server that
498
+ // was alive and reachable while every HTTP surface answered
499
+ // `409 NO_OPENCODE_PORT`, with the terminal view still working because the
500
+ // screen scraper never needed the port.
501
+ //
502
+ // Deliberately NOT awaited. The sweep's cost is a health probe per live
503
+ // pane, and a pane whose server has died pays a timeout for it; the
504
+ // managers below must not queue behind that. It is fail-open in its own
505
+ // right (it never rejects) and the `try`/`catch` below is belt-and-braces.
506
+ //
507
+ // Runs after `initializeWorktrees()` because the ingest path this
508
+ // re-subscribes reaches `@/lib/db` at event time and the migrations above
509
+ // are what make that table set current.
510
+ //
511
+ // Dynamic import for the same reason as every reconciler above: adding this
512
+ // module graph to server.ts's eval-time graph perturbs Next's
513
+ // AsyncLocalStorage bootstrap under `tsx server.ts` and the first request
514
+ // that compiles middleware then dies. Do not hoist this.
515
+ void (async () => {
516
+ try {
517
+ const { reattachOpencodeEventStreams } = await Promise.resolve().then(() => __importStar(require('./src/lib/hooks/sources/opencode/reattach')));
518
+ const report = await reattachOpencodeEventStreams();
519
+ if (report.candidates > 0) {
520
+ console.log(`opencode streams reattached: ${report.reattached}/${report.candidates} ` +
521
+ `live pane(s) (persisted=${report.persisted} skipped=${report.skipped})`);
522
+ }
523
+ }
524
+ catch (error) {
525
+ console.error('Error reattaching opencode event streams:', error);
526
+ }
527
+ })();
438
528
  // Issue #1623: reconcile the `prefix+g` reading-mode binding on the user's
439
529
  // tmux server. Fail-open in its own try/catch — a convenience key must never
440
530
  // be able to stop the server from serving.
@@ -462,6 +552,12 @@ app.prepare().then(() => {
462
552
  });
463
553
  // Graceful shutdown with timeout
464
554
  let isShuttingDown = false;
555
+ /**
556
+ * Issue #2113: drop this port's localhost-conflict record on the way out, so a
557
+ * resolved conflict cannot outlive the server that observed it. Assigned once the
558
+ * self-check module has loaded; null until then, and never awaited.
559
+ */
560
+ let clearStartupSelfCheckState = null;
465
561
  function gracefulShutdown(signal) {
466
562
  if (isShuttingDown) {
467
563
  console.log('Shutdown already in progress, forcing exit...');
@@ -469,6 +565,13 @@ app.prepare().then(() => {
469
565
  }
470
566
  isShuttingDown = true;
471
567
  console.log(`${signal} received: shutting down...`);
568
+ // Issue #2113: best-effort, never fatal.
569
+ try {
570
+ clearStartupSelfCheckState?.();
571
+ }
572
+ catch {
573
+ // A leftover record is harmless: `status` only reports one whose PID matches.
574
+ }
472
575
  // Stop polling first
473
576
  (0, response_poller_1.stopAllPolling)();
474
577
  // Issue #138: Stop all auto-yes pollers
@@ -35,6 +35,11 @@ exports.AUTH_EXCLUDED_PATHS = [
35
35
  '/api/auth/login',
36
36
  '/api/auth/logout',
37
37
  '/api/auth/status',
38
+ // Issue #1937 (R5): one-shot pairing-code exchange for `commandmate remote`.
39
+ // The pairing SCREEN is '/login' above, driven by a '#code=' fragment, so
40
+ // this is the only entry the remote feature adds. Handler:
41
+ // src/app/api/remote/pair/route.ts (it authenticates the code itself).
42
+ '/api/remote/pair',
38
43
  // Issue #1124 (PWA): non-sensitive resources that must stay reachable before
39
44
  // auth so the app is installable and the offline fallback can be precached.
40
45
  // All carry no user data (app metadata / public SW code / static fallback).
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ /**
3
+ * Image Extensions Configuration
4
+ * [SF-001] Configuration for image file extensions
5
+ * [Stage 3 SF-001] isImageExtension() function for extension validation
6
+ *
7
+ * This module defines which file extensions are recognized as images
8
+ * and provides security validation for image files.
9
+ *
10
+ * Security features:
11
+ * - Extension whitelist
12
+ * - Magic bytes validation for binary formats
13
+ * - SVG XSS prevention (script tags, event handlers, dangerous URIs, foreignObject)
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.ATTACHABLE_IMAGE_ACCEPT = exports.ATTACHABLE_IMAGE_EXTENSIONS = exports.IMAGE_EXTENSION_VALIDATORS = exports.IMAGE_MAX_SIZE_BYTES = exports.IMAGE_EXTENSIONS = void 0;
17
+ exports.normalizeExtension = normalizeExtension;
18
+ exports.getMimeTypeByExtension = getMimeTypeByExtension;
19
+ exports.isImageExtension = isImageExtension;
20
+ exports.validateImageMagicBytes = validateImageMagicBytes;
21
+ exports.validateWebPMagicBytes = validateWebPMagicBytes;
22
+ exports.validateSvgContent = validateSvgContent;
23
+ exports.validateImageContent = validateImageContent;
24
+ /**
25
+ * List of supported image file extensions
26
+ * All extensions must include the leading dot
27
+ */
28
+ exports.IMAGE_EXTENSIONS = [
29
+ '.png',
30
+ '.jpg',
31
+ '.jpeg',
32
+ '.gif',
33
+ '.webp',
34
+ '.svg',
35
+ ];
36
+ /**
37
+ * Maximum image file size in bytes (20MB)
38
+ * [SF-001] Named with _BYTES suffix for clarity, matching existing patterns
39
+ */
40
+ exports.IMAGE_MAX_SIZE_BYTES = 20 * 1024 * 1024;
41
+ /**
42
+ * Validators for each supported image extension
43
+ * Includes magic bytes for binary format verification
44
+ */
45
+ exports.IMAGE_EXTENSION_VALIDATORS = [
46
+ {
47
+ extension: '.png',
48
+ mimeType: 'image/png',
49
+ magicBytes: [0x89, 0x50, 0x4E, 0x47],
50
+ },
51
+ {
52
+ extension: '.jpg',
53
+ mimeType: 'image/jpeg',
54
+ magicBytes: [0xFF, 0xD8, 0xFF],
55
+ },
56
+ {
57
+ extension: '.jpeg',
58
+ mimeType: 'image/jpeg',
59
+ magicBytes: [0xFF, 0xD8, 0xFF],
60
+ },
61
+ {
62
+ extension: '.gif',
63
+ mimeType: 'image/gif',
64
+ magicBytes: [0x47, 0x49, 0x46, 0x38],
65
+ },
66
+ {
67
+ extension: '.webp',
68
+ mimeType: 'image/webp',
69
+ magicBytes: [0x52, 0x49, 0x46, 0x46],
70
+ },
71
+ {
72
+ extension: '.svg',
73
+ mimeType: 'image/svg+xml',
74
+ // SVG is text-based, no magic bytes
75
+ },
76
+ ];
77
+ /**
78
+ * [DRY] Normalize file extension to include leading dot and lowercase
79
+ * Extracted to avoid code duplication across validation functions
80
+ *
81
+ * @param ext - File extension with or without leading dot
82
+ * @returns Normalized extension with leading dot in lowercase (e.g., '.png')
83
+ */
84
+ function normalizeExtension(ext) {
85
+ if (!ext)
86
+ return '';
87
+ return ext.startsWith('.') ? ext.toLowerCase() : '.' + ext.toLowerCase();
88
+ }
89
+ /**
90
+ * [DRY] Get MIME type for an image extension
91
+ * Centralized MIME type lookup to avoid duplication
92
+ *
93
+ * @param ext - File extension with or without leading dot
94
+ * @returns MIME type string, or 'application/octet-stream' if not found
95
+ */
96
+ function getMimeTypeByExtension(ext) {
97
+ const normalizedExt = normalizeExtension(ext);
98
+ const validator = exports.IMAGE_EXTENSION_VALIDATORS.find(v => v.extension === normalizedExt);
99
+ return validator?.mimeType || 'application/octet-stream';
100
+ }
101
+ /**
102
+ * Check if a file extension is a supported image format
103
+ * [SF-003] Handles dot normalization for API compatibility
104
+ *
105
+ * @param ext - File extension with or without leading dot
106
+ * @returns True if the extension is a supported image format
107
+ */
108
+ function isImageExtension(ext) {
109
+ if (!ext)
110
+ return false;
111
+ const normalizedExt = normalizeExtension(ext);
112
+ return exports.IMAGE_EXTENSIONS.includes(normalizedExt);
113
+ }
114
+ /**
115
+ * Validate image file magic bytes
116
+ * [SF-003] Handles dot normalization
117
+ * [DRY] Uses normalizeExtension helper
118
+ *
119
+ * @param extension - File extension with or without leading dot
120
+ * @param buffer - File content buffer
121
+ * @returns True if magic bytes match the expected format
122
+ */
123
+ function validateImageMagicBytes(extension, buffer) {
124
+ const normalizedExt = normalizeExtension(extension);
125
+ const validator = exports.IMAGE_EXTENSION_VALIDATORS.find(v => v.extension === normalizedExt);
126
+ if (!validator?.magicBytes) {
127
+ // SVG is text-based, no magic bytes to validate
128
+ return normalizedExt === '.svg';
129
+ }
130
+ const offset = validator.magicBytesOffset || 0;
131
+ // Check if buffer is long enough
132
+ if (buffer.length < offset + validator.magicBytes.length) {
133
+ return false;
134
+ }
135
+ return validator.magicBytes.every((byte, index) => buffer[offset + index] === byte);
136
+ }
137
+ /**
138
+ * Validate WebP magic bytes completely
139
+ * [SEC-SF-004] Checks both RIFF header and WEBP signature
140
+ *
141
+ * @param buffer - File content buffer
142
+ * @returns True if both RIFF header and WEBP signature are present
143
+ */
144
+ function validateWebPMagicBytes(buffer) {
145
+ // RIFF header check (offset 0-3)
146
+ const riffHeader = [0x52, 0x49, 0x46, 0x46];
147
+ const hasRiff = riffHeader.every((byte, i) => buffer[i] === byte);
148
+ if (!hasRiff) {
149
+ return false;
150
+ }
151
+ // WEBP signature check (offset 8-11)
152
+ if (buffer.length < 12) {
153
+ return false;
154
+ }
155
+ const webpSignature = [0x57, 0x45, 0x42, 0x50];
156
+ return webpSignature.every((byte, i) => buffer[8 + i] === byte);
157
+ }
158
+ /**
159
+ * Validate SVG content for security
160
+ * [SEC-MF-001] Event handler detection
161
+ * [SEC-MF-002] Dangerous URI scheme detection
162
+ * [SEC-MF-003] foreignObject element detection
163
+ *
164
+ * This function serves two purposes:
165
+ * 1. SVG format validation: Ensures the content is valid SVG
166
+ * 2. Security validation: Detects XSS attack vectors
167
+ *
168
+ * @param content - SVG file content as string
169
+ * @returns Validation result with error message if invalid
170
+ */
171
+ function validateSvgContent(content) {
172
+ // [Format validation] Check for SVG tag or XML declaration
173
+ if (!content.includes('<svg') && !content.startsWith('<?xml')) {
174
+ return { valid: false, error: 'Invalid SVG format' };
175
+ }
176
+ // [Security 1] Script tag detection (XSS prevention)
177
+ if (/<script[\s>]/i.test(content)) {
178
+ return { valid: false, error: 'SVG contains script tags' };
179
+ }
180
+ // [Security 2] Event handler attribute detection (SEC-MF-001)
181
+ // Matches: onload, onclick, onmouseover, onerror, onfocus, etc.
182
+ // Example attack: <svg onload="alert('XSS')">
183
+ if (/\s+on\w+\s*=/i.test(content)) {
184
+ return { valid: false, error: 'SVG contains event handler attributes' };
185
+ }
186
+ // [Security 3] Dangerous URI scheme detection (SEC-MF-002)
187
+ // Matches: href="javascript:...", xlink:href="data:...", href="vbscript:..."
188
+ // Example attack: <a xlink:href="javascript:alert('XSS')">
189
+ if (/(?:xlink:)?href\s*=\s*["']?\s*(?:javascript|data|vbscript):/i.test(content)) {
190
+ return { valid: false, error: 'SVG contains dangerous URI scheme' };
191
+ }
192
+ // [Security 4] foreignObject element detection (SEC-MF-003)
193
+ // foreignObject can embed arbitrary HTML including scripts
194
+ // Example attack: <foreignObject><body><script>...</script></body></foreignObject>
195
+ if (/<foreignObject[\s>]/i.test(content)) {
196
+ return { valid: false, error: 'SVG contains foreignObject element' };
197
+ }
198
+ return { valid: true };
199
+ }
200
+ /**
201
+ * Attachable image extensions (SVG excluded for XSS prevention)
202
+ * Issue #474: Used for image attachment file selection dialog
203
+ * [S1-S3] DRY: Single source of truth for attachable image extensions
204
+ */
205
+ exports.ATTACHABLE_IMAGE_EXTENSIONS = exports.IMAGE_EXTENSIONS.filter((ext) => ext !== '.svg');
206
+ /**
207
+ * File selection dialog accept attribute value for image attachments
208
+ * Issue #474: Generated from ATTACHABLE_IMAGE_EXTENSIONS for DRY compliance
209
+ * [DRY] Uses getMimeTypeByExtension instead of direct validator lookup
210
+ * Format: comma-separated MIME types (e.g., 'image/png,image/jpeg,...')
211
+ */
212
+ exports.ATTACHABLE_IMAGE_ACCEPT = exports.ATTACHABLE_IMAGE_EXTENSIONS
213
+ .map((ext) => getMimeTypeByExtension(ext))
214
+ .filter((mime) => mime !== 'application/octet-stream')
215
+ .join(',');
216
+ /**
217
+ * Validate image content comprehensively
218
+ * [SF-002] Combines size, magic bytes, and SVG security validation
219
+ * [DRY] Uses normalizeExtension helper
220
+ *
221
+ * @param extension - File extension with or without leading dot
222
+ * @param buffer - File content buffer
223
+ * @returns Validation result with error message if invalid
224
+ */
225
+ function validateImageContent(extension, buffer) {
226
+ // File size validation
227
+ if (buffer.length > exports.IMAGE_MAX_SIZE_BYTES) {
228
+ return {
229
+ valid: false,
230
+ error: `File size exceeds ${exports.IMAGE_MAX_SIZE_BYTES / 1024 / 1024}MB limit`,
231
+ };
232
+ }
233
+ const normalizedExt = normalizeExtension(extension);
234
+ // SVG requires special validation (text-based, XSS concerns)
235
+ if (normalizedExt === '.svg') {
236
+ const content = buffer.toString('utf-8');
237
+ return validateSvgContent(content);
238
+ }
239
+ // Binary formats require magic bytes validation
240
+ if (!validateImageMagicBytes(extension, buffer)) {
241
+ return { valid: false, error: 'Invalid image magic bytes' };
242
+ }
243
+ return { valid: true };
244
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ /**
3
+ * opencode `run` option constants (Issue #2044)
4
+ *
5
+ * The CMATE.md CLI Tool column can now say more than `opencode --model x`:
6
+ * `--agent`, `--variant`, `--continue` and `--title` all reach `opencode run`.
7
+ * The values are user-authored text in a Markdown cell that becomes argv, so
8
+ * each one needs a bound before it is handed to `execFile`.
9
+ *
10
+ * ## Why a separate pattern from Copilot's
11
+ *
12
+ * `MODEL_NAME_PATTERN` (`copilot-constants.ts`) allows `/` and `:` because a
13
+ * model id is `provider/model` and can carry a tag (`ollama/qwen3:8b`). An
14
+ * `--agent` or `--variant` value is neither: measured against opencode 1.18.22,
15
+ * the built-in agents are `build` / `plan` and the documented variants are
16
+ * `high` / `max` / `minimal` — bare words. Reusing the model pattern would
17
+ * accept `plan/../../etc` and call it an agent name.
18
+ *
19
+ * The leading-alphanumeric requirement is the same rule and the same reason as
20
+ * DR4-001: a value starting with `-` would be read by the CLI as another option
21
+ * rather than as this one's argument.
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.OPENCODE_RUN_JSON_EVENT_TYPES = exports.MAX_OPENCODE_TITLE_LENGTH = exports.MAX_OPENCODE_RUN_NAME_LENGTH = exports.OPENCODE_RUN_NAME_PATTERN = void 0;
25
+ /**
26
+ * Allowed shape for `--agent` and `--variant` values.
27
+ *
28
+ * Leading alphanumeric (DR4-001), then word characters, `.`, `_` and `-`.
29
+ * Deliberately no `/` and no `:` — see the module comment.
30
+ */
31
+ exports.OPENCODE_RUN_NAME_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9\-._]*$/;
32
+ /**
33
+ * Longest `--agent` / `--variant` value accepted.
34
+ *
35
+ * Generous next to the measured vocabulary (`build`, `plan`, `high`, `max`,
36
+ * `minimal`) because opencode lets a project define its own agents in
37
+ * `opencode.json`, and this layer has no way to enumerate them.
38
+ */
39
+ exports.MAX_OPENCODE_RUN_NAME_LENGTH = 64;
40
+ /**
41
+ * Longest `--title` value accepted.
42
+ *
43
+ * 200 to match what `agent-session-telemetry.ts` keeps of a session title
44
+ * (`MAX_AGENT_SESSION_TITLE_LENGTH`), so a title CommandMate wrote survives the
45
+ * round trip back through `structuredEvents.session` without being reported as
46
+ * truncated. Not imported from there: that module is `lib/hooks` and this one is
47
+ * read by the client-safe CMATE.md parser.
48
+ */
49
+ exports.MAX_OPENCODE_TITLE_LENGTH = 200;
50
+ /**
51
+ * The event `type` values `opencode run --format json` emits on stdout.
52
+ *
53
+ * Measured on 1.18.22 in an isolated `HOME` (see
54
+ * `docs/design/opencode-server-live-verification.md` §15): a plain prompt gives
55
+ * `step_start` / `text` / `step_finish`; a prompt that uses a tool adds
56
+ * `tool_use`; a run that fails gives a single `error` frame **on stdout** with
57
+ * an empty stderr and exit 1.
58
+ *
59
+ * This list is documentation, not a filter — {@link extractOpencodeFinalText}
60
+ * matches on `text` and `error` and ignores everything else, so an event word
61
+ * added by a later opencode release cannot break extraction.
62
+ */
63
+ exports.OPENCODE_RUN_JSON_EVENT_TYPES = [
64
+ 'step_start',
65
+ 'text',
66
+ 'tool_use',
67
+ 'step_finish',
68
+ 'error',
69
+ ];
@@ -17,7 +17,8 @@
17
17
  * so `capture-pane` cost / render load stays reasonable.
18
18
  */
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.TMUX_HISTORY_LIMIT = exports.OPENCODE_PANE_HEIGHT = exports.TUI_PANE_WIDTH = exports.TUI_PANE_HEIGHT = void 0;
20
+ exports.OPENCODE_PANE_WIDTH_MAX = exports.OPENCODE_PANE_WIDTH_MIN = exports.OPENCODE_PANE_WIDTH_ENV = exports.OPENCODE_SIDEBAR_MIN_WIDTH = exports.OPENCODE_PANE_WIDTH = exports.TMUX_HISTORY_LIMIT = exports.OPENCODE_PANE_HEIGHT = exports.TUI_PANE_WIDTH = exports.TUI_PANE_HEIGHT = void 0;
21
+ exports.resolveOpencodePaneWidth = resolveOpencodePaneWidth;
21
22
  /** Fixed pane height (rows) for TUI sessions. Large enough to retain useful history. */
22
23
  exports.TUI_PANE_HEIGHT = 1000;
23
24
  /** Fixed pane width (columns) for TUI sessions. Matches the historical default. */
@@ -71,3 +72,101 @@ exports.OPENCODE_PANE_HEIGHT = 200;
71
72
  * 1977/2000 lines used, i.e. actively losing transcript).
72
73
  */
73
74
  exports.TMUX_HISTORY_LIMIT = 20000;
75
+ /**
76
+ * Default OpenCode tmux pane width (columns) — Issue #2047.
77
+ *
78
+ * ## Why 80 is a measurement and not a leftover
79
+ *
80
+ * `launchSession()` in `lib/cli-tools/opencode.ts` used to spell this `80`
81
+ * inline, twice, with the comment "hide sidebar for clean capture-pane output".
82
+ * #2047 measured what that comment is worth on opencode 1.18.22, and it is
83
+ * load-bearing: **opencode paints a right-hand sidebar at 121 columns and wider,
84
+ * and hides it at 120 and narrower.** The boundary was walked one column at a
85
+ * time on a live TUI and is reproducible in both directions (see
86
+ * `docs/design/opencode-server-live-verification.md` §21).
87
+ *
88
+ * The sidebar is not a separate region of the capture. It shares ROWS with the
89
+ * transcript, so at >=121 columns every captured line is
90
+ * `<transcript text> … <sidebar text>` and the detection layer reads both as one
91
+ * row. Measured consequences at 200 columns, on frames captured from the same
92
+ * session as their 80/120 counterparts:
93
+ *
94
+ * - `sliceOpenCodeTurn()` + `cleanOpenCodeResponse()` saved the sidebar as the
95
+ * assistant's reply (`8,501 tokens / $0.00 spent / LSP / LSPs are disabled`)
96
+ * for a turn whose real reply extracted to the empty string at 80 and 120.
97
+ * - `detectSessionStatus` flipped `ready`/`opencode_response_complete` to
98
+ * `running`/`unknown_frame` on an aborted turn, because the sidebar rows push
99
+ * the previous turn's `▣ … · 36.1s` out of branch D's content window.
100
+ * - `OPENCODE_IDLE_COMPOSER_PATTERN` false-matched, because the sidebar prints
101
+ * the session TITLE on a row that already carries the transcript gutter — so
102
+ * `^\s*┃\s*Ask anything\.\.\.` matches a title, not a composer.
103
+ *
104
+ * At 120 columns all 13 measured frames produced byte-identical verdicts to 80.
105
+ * **120 is therefore the measured safe ceiling, and the default stays 80** —
106
+ * #2047's acceptance condition was "raise the default only if 200 is green",
107
+ * and 200 is not.
108
+ *
109
+ * @see OPENCODE_SIDEBAR_MIN_WIDTH
110
+ * @see resolveOpencodePaneWidth
111
+ */
112
+ exports.OPENCODE_PANE_WIDTH = 80;
113
+ /**
114
+ * The narrowest pane width at which opencode 1.18.22 paints its right-hand
115
+ * sidebar (Issue #2047, measured — 120 hides it, 121 shows it, walked one column
116
+ * at a time and reproduced in both directions).
117
+ *
118
+ * Anything at or above this width interleaves sidebar text into transcript rows,
119
+ * which is what {@link OPENCODE_PANE_WIDTH}'s docblock lists the damage from.
120
+ * `lib/cli-tools/opencode.ts` warns when an operator's
121
+ * `CM_OPENCODE_PANE_WIDTH` lands here or above.
122
+ */
123
+ exports.OPENCODE_SIDEBAR_MIN_WIDTH = 121;
124
+ /** Environment variable that overrides {@link OPENCODE_PANE_WIDTH}. */
125
+ exports.OPENCODE_PANE_WIDTH_ENV = 'CM_OPENCODE_PANE_WIDTH';
126
+ /**
127
+ * Bounds accepted for {@link OPENCODE_PANE_WIDTH_ENV}.
128
+ *
129
+ * The floor is opencode's own layout: its input box plus gutter needs room, and
130
+ * below ~40 columns the footer rows the detector anchors on wrap into each
131
+ * other. The ceiling is a guard against a typo (`8000`) resizing a pane to
132
+ * something tmux will accept and every `capture-pane` will then pay for — a
133
+ * 200-row frame already grows from ~2.5 KB at 80 columns to ~40 KB at 200
134
+ * because of the sidebar's background painting (measured, #2047 §21).
135
+ */
136
+ exports.OPENCODE_PANE_WIDTH_MIN = 40;
137
+ /** @see OPENCODE_PANE_WIDTH_MIN */
138
+ exports.OPENCODE_PANE_WIDTH_MAX = 400;
139
+ /**
140
+ * Resolve the pane width a new or reconnected opencode session is sized to.
141
+ *
142
+ * Read at CALL time rather than at module load so a process can be started with
143
+ * the variable set without import-order deciding whether it is seen, and so
144
+ * tests can drive it without module-registry surgery.
145
+ *
146
+ * A value that is not a base-10 integer, or that falls outside
147
+ * [{@link OPENCODE_PANE_WIDTH_MIN}, {@link OPENCODE_PANE_WIDTH_MAX}], is ignored
148
+ * in favour of {@link OPENCODE_PANE_WIDTH}: a malformed override must never
149
+ * produce a pane no detector has ever been measured against. Callers that want
150
+ * to tell the operator their value was dropped compare the result against what
151
+ * they passed in.
152
+ *
153
+ * @param env - Environment to read. Defaults to `process.env` where there is one.
154
+ * @returns Pane width in columns.
155
+ */
156
+ function resolveOpencodePaneWidth(env = typeof process === 'undefined'
157
+ ? undefined
158
+ : process.env) {
159
+ const raw = env?.[exports.OPENCODE_PANE_WIDTH_ENV];
160
+ if (raw === undefined)
161
+ return exports.OPENCODE_PANE_WIDTH;
162
+ const trimmed = raw.trim();
163
+ // `Number()` accepts '0x50', '1e2' and '' — none of which an operator means by
164
+ // a column count, and all of which would silently resize a real pane.
165
+ if (!/^\d+$/.test(trimmed))
166
+ return exports.OPENCODE_PANE_WIDTH;
167
+ const parsed = Number.parseInt(trimmed, 10);
168
+ if (parsed < exports.OPENCODE_PANE_WIDTH_MIN || parsed > exports.OPENCODE_PANE_WIDTH_MAX) {
169
+ return exports.OPENCODE_PANE_WIDTH;
170
+ }
171
+ return parsed;
172
+ }