commandmate 0.42.1 → 0.43.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 (435) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +144 -144
  3. package/.next/app-path-routes-manifest.json +23 -23
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/update-check/route.js +1 -1
  13. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/capabilities/route.js +1 -1
  18. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/daily-summary/route.js +1 -1
  20. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  21. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  23. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  24. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/hooks/agent-event/route.js +103 -1
  31. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  32. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  34. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  35. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  37. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  38. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  45. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  46. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/relays/route.js +1 -1
  48. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  49. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  53. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  54. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/repositories/clone/route.js +1 -1
  56. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  57. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/repositories/restore/route.js +1 -1
  60. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  61. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/repositories/route.js +1 -1
  63. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  64. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/scan/route.js +1 -1
  66. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  67. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/sync/route.js +1 -1
  69. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  70. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  73. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  74. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/skills/[id]/route.js +1 -1
  78. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/skills/route.js +1 -1
  83. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/slash-commands/route.js +1 -1
  85. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  93. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  94. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  96. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  97. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  99. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  100. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +3 -1
  104. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  105. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  108. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  111. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +3 -1
  116. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  117. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  145. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  148. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  151. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  161. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  164. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  167. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  171. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/route.js +1 -103
  173. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  174. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +3 -1
  176. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  177. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +3 -1
  179. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  180. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -1
  182. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  183. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -103
  186. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  187. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +104 -2
  189. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  190. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  200. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  208. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/route.js +1 -1
  229. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  232. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  234. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  235. package/.next/server/app/page_client-reference-manifest.js +1 -1
  236. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  238. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  239. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  240. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  241. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  242. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  243. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  244. package/.next/server/app/worktrees/[id]/page.js +9 -9
  245. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  246. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  247. package/.next/server/app-paths-manifest.json +23 -23
  248. package/.next/server/chunks/1068.js +1 -1
  249. package/.next/server/chunks/1210.js +1 -1
  250. package/.next/server/chunks/1501.js +4 -4
  251. package/.next/server/chunks/1990.js +1 -1
  252. package/.next/server/chunks/2119.js +1 -1
  253. package/.next/server/chunks/22.js +1 -1
  254. package/.next/server/chunks/2328.js +1 -1
  255. package/.next/server/chunks/2404.js +4 -3
  256. package/.next/server/chunks/2445.js +1 -1
  257. package/.next/server/chunks/252.js +1 -1
  258. package/.next/server/chunks/2816.js +1 -1
  259. package/.next/server/chunks/3543.js +1 -1
  260. package/.next/server/chunks/3730.js +1 -1
  261. package/.next/server/chunks/3945.js +1 -1
  262. package/.next/server/chunks/4207.js +3 -3
  263. package/.next/server/chunks/434.js +1 -1
  264. package/.next/server/chunks/5064.js +1 -1
  265. package/.next/server/chunks/5571.js +1 -1
  266. package/.next/server/chunks/5742.js +1 -1
  267. package/.next/server/chunks/5775.js +1 -1
  268. package/.next/server/chunks/611.js +1 -1
  269. package/.next/server/chunks/6130.js +1 -1
  270. package/.next/server/chunks/6285.js +1 -1
  271. package/.next/server/chunks/6491.js +103 -0
  272. package/.next/server/chunks/6661.js +1 -1
  273. package/.next/server/chunks/6781.js +1 -1
  274. package/.next/server/chunks/6793.js +1 -1
  275. package/.next/server/chunks/7491.js +3 -0
  276. package/.next/server/chunks/7685.js +1 -1
  277. package/.next/server/chunks/7905.js +1 -1
  278. package/.next/server/chunks/8581.js +2 -2
  279. package/.next/server/chunks/8583.js +1 -1
  280. package/.next/server/chunks/8673.js +6 -6
  281. package/.next/server/chunks/8728.js +2 -2
  282. package/.next/server/chunks/8791.js +1 -1
  283. package/.next/server/chunks/8800.js +4 -3
  284. package/.next/server/chunks/8918.js +5 -5
  285. package/.next/server/chunks/9130.js +3 -3
  286. package/.next/server/chunks/{8052.js → 9353.js} +4 -2
  287. package/.next/server/chunks/9390.js +3 -0
  288. package/.next/server/chunks/9627.js +4 -4
  289. package/.next/server/chunks/964.js +1 -1
  290. package/.next/server/chunks/967.js +1 -0
  291. package/.next/server/chunks/9731.js +3 -3
  292. package/.next/server/chunks/9882.js +3 -3
  293. package/.next/server/middleware-manifest.json +5 -5
  294. package/.next/server/pages/500.html +1 -1
  295. package/.next/server/server-reference-manifest.json +1 -1
  296. package/.next/static/chunks/{1642-fb2e176aaadbd137.js → 1642-767aed8e7c61ef7f.js} +1 -1
  297. package/.next/static/chunks/{2407-21fbf12d753b8d4d.js → 2407-940df9b11fadafc6.js} +1 -1
  298. package/.next/static/chunks/{2619-04bc32f026a0d946.js → 2619-a305ad4810f1393a.js} +1 -1
  299. package/.next/static/chunks/5449-6cb80bab2bd06b79.js +1 -0
  300. package/.next/static/chunks/7705-1f58d4c03d991fcf.js +1 -0
  301. package/.next/static/chunks/8165-3525fb42f1b4976e.js +1 -0
  302. package/.next/static/chunks/app/{layout-8ff4c7c08ef1f621.js → layout-057c850cd0df978e.js} +1 -1
  303. package/.next/static/chunks/app/review/page-ff9efae3f86eb840.js +1 -0
  304. package/.next/static/chunks/app/skills/[skillId]/page-74aac15286504ef4.js +1 -0
  305. package/.next/static/chunks/app/skills/page-182e16168b2fc098.js +1 -0
  306. package/.next/static/chunks/app/worktrees/[id]/page-eab0bf7564d3f9e2.js +1 -0
  307. package/.next/static/chunks/app/worktrees/[id]/terminal/{page-373ea37b16d930c7.js → page-c601f3b3ece6557e.js} +1 -1
  308. package/.next/trace +13 -13
  309. package/README.md +3 -3
  310. package/dist/cli/commands/ask.d.ts.map +1 -1
  311. package/dist/cli/commands/ask.js +23 -149
  312. package/dist/cli/commands/reply.d.ts +40 -0
  313. package/dist/cli/commands/reply.d.ts.map +1 -0
  314. package/dist/cli/commands/reply.js +133 -0
  315. package/dist/cli/commands/verify.d.ts.map +1 -1
  316. package/dist/cli/commands/verify.js +9 -0
  317. package/dist/cli/commands/wait.d.ts +5 -0
  318. package/dist/cli/commands/wait.d.ts.map +1 -1
  319. package/dist/cli/commands/wait.js +10 -1
  320. package/dist/cli/docs/agent-operations.d.ts +2 -2
  321. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  322. package/dist/cli/docs/agent-operations.js +13 -0
  323. package/dist/cli/program.d.ts.map +1 -1
  324. package/dist/cli/program.js +4 -0
  325. package/dist/cli/types/index.d.ts +2 -0
  326. package/dist/cli/types/index.d.ts.map +1 -1
  327. package/dist/cli/utils/reply-ledger.d.ts +95 -0
  328. package/dist/cli/utils/reply-ledger.d.ts.map +1 -0
  329. package/dist/cli/utils/reply-ledger.js +187 -0
  330. package/dist/lib/cli-tools/copilot-executable.d.ts +9 -0
  331. package/dist/lib/cli-tools/copilot-executable.d.ts.map +1 -1
  332. package/dist/lib/cli-tools/copilot-executable.js +21 -5
  333. package/dist/lib/cli-tools/opencode-executable.d.ts +103 -0
  334. package/dist/lib/cli-tools/opencode-executable.d.ts.map +1 -0
  335. package/dist/lib/cli-tools/opencode-executable.js +179 -0
  336. package/dist/lib/cli-tools/types.d.ts +1 -1
  337. package/dist/lib/cli-tools/types.d.ts.map +1 -1
  338. package/dist/lib/cli-tools/types.js +5 -1
  339. package/dist/lib/detection/tools/verified-against.d.ts +15 -0
  340. package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
  341. package/dist/lib/detection/tools/verified-against.js +17 -1
  342. package/dist/lib/detection/version-probes.d.ts.map +1 -1
  343. package/dist/lib/detection/version-probes.js +14 -1
  344. package/dist/lib/session/tmux-session-surface.d.ts.map +1 -1
  345. package/dist/lib/session/tmux-session-surface.js +1 -1
  346. package/dist/server/locales/en/worktree.json +44 -14
  347. package/dist/server/locales/ja/worktree.json +44 -14
  348. package/dist/server/server.js +23 -0
  349. package/dist/server/src/config/cli-tool-timing-config.js +19 -1
  350. package/dist/server/src/config/detection-evidence-config.js +3 -0
  351. package/dist/server/src/config/schedule-config.js +55 -1
  352. package/dist/server/src/lib/auto-yes-poller.js +47 -4
  353. package/dist/server/src/lib/cli-tools/agent-mode-spec.js +54 -2
  354. package/dist/server/src/lib/cli-tools/base.js +6 -2
  355. package/dist/server/src/lib/cli-tools/command-code.js +55 -1
  356. package/dist/server/src/lib/cli-tools/composer-spec.js +10 -0
  357. package/dist/server/src/lib/cli-tools/copilot-executable.js +21 -5
  358. package/dist/server/src/lib/cli-tools/graceful-exit.js +15 -1
  359. package/dist/server/src/lib/cli-tools/index.js +3 -1
  360. package/dist/server/src/lib/cli-tools/install-hints.js +9 -3
  361. package/dist/server/src/lib/cli-tools/liveness-spec.js +19 -0
  362. package/dist/server/src/lib/cli-tools/manager.js +2 -0
  363. package/dist/server/src/lib/cli-tools/opencode-executable.js +179 -0
  364. package/dist/server/src/lib/cli-tools/opencode-v2.js +369 -0
  365. package/dist/server/src/lib/cli-tools/opencode.js +29 -5
  366. package/dist/server/src/lib/cli-tools/types.js +5 -1
  367. package/dist/server/src/lib/cmate-cli-tool-parser.js +65 -7
  368. package/dist/server/src/lib/cmate-parser.js +12 -0
  369. package/dist/server/src/lib/cmate-validator.js +13 -1
  370. package/dist/server/src/lib/db/worktree-db.js +1 -1
  371. package/dist/server/src/lib/detection/cli-patterns.js +78 -2
  372. package/dist/server/src/lib/detection/model-info-extractor.js +79 -7
  373. package/dist/server/src/lib/detection/status-detector.js +10 -1
  374. package/dist/server/src/lib/detection/tools/codex/cli-patterns.js +2 -1
  375. package/dist/server/src/lib/detection/tools/opencode-v2/detect.js +253 -0
  376. package/dist/server/src/lib/detection/tools/opencode-v2/dialog-title.js +48 -0
  377. package/dist/server/src/lib/detection/tools/registry.js +2 -0
  378. package/dist/server/src/lib/detection/tools/run-detection.js +9 -0
  379. package/dist/server/src/lib/detection/tools/verified-against.js +17 -1
  380. package/dist/server/src/lib/detection/upstream-faults.js +8 -0
  381. package/dist/server/src/lib/detection/version-probes.js +14 -1
  382. package/dist/server/src/lib/hooks/agent-session-telemetry.js +36 -1
  383. package/dist/server/src/lib/hooks/sources/opencode/log-diagnosis.js +105 -0
  384. package/dist/server/src/lib/hooks/sources/opencode/source.js +7 -1
  385. package/dist/server/src/lib/hooks/sources/opencode-v2/client.js +422 -0
  386. package/dist/server/src/lib/hooks/sources/opencode-v2/decision-labels.js +24 -0
  387. package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +421 -0
  388. package/dist/server/src/lib/hooks/sources/opencode-v2/ingest.js +271 -0
  389. package/dist/server/src/lib/hooks/sources/opencode-v2/mappers.js +165 -0
  390. package/dist/server/src/lib/hooks/sources/opencode-v2/payloads.js +351 -0
  391. package/dist/server/src/lib/hooks/sources/opencode-v2/ports.js +230 -0
  392. package/dist/server/src/lib/hooks/sources/opencode-v2/reattach.js +149 -0
  393. package/dist/server/src/lib/hooks/sources/opencode-v2/runtime.js +180 -0
  394. package/dist/server/src/lib/hooks/sources/opencode-v2/secrets.js +182 -0
  395. package/dist/server/src/lib/hooks/sources/opencode-v2/source.js +295 -0
  396. package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +455 -0
  397. package/dist/server/src/lib/hooks/sources/opencode-v2/tool-id.js +18 -0
  398. package/dist/server/src/lib/hooks/sources/opencode-v2/usage.js +214 -0
  399. package/dist/server/src/lib/hooks/sources/registry.js +2 -0
  400. package/dist/server/src/lib/hooks/structured-decision-response.js +14 -5
  401. package/dist/server/src/lib/job-executor.js +2 -1
  402. package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +15 -1
  403. package/dist/server/src/lib/polling/structured-history-gate.js +19 -5
  404. package/dist/server/src/lib/relay/relay-delivery.js +4 -1
  405. package/dist/server/src/lib/session/agent-event-state.js +24 -0
  406. package/dist/server/src/lib/session/claude-executor.js +184 -10
  407. package/dist/server/src/lib/session/current-output-builder.js +27 -3
  408. package/dist/server/src/lib/session/send-user-message.js +4 -0
  409. package/dist/server/src/lib/session/structured-prompt.js +54 -0
  410. package/dist/server/src/lib/session/tmux-session-surface.js +1 -1
  411. package/dist/server/src/lib/skills/compatibility-matrix.js +65 -0
  412. package/dist/server/src/lib/tmux/tmux.js +48 -2
  413. package/dist/server/src/lib/verification/env-clean-gate.js +228 -9
  414. package/dist/server/src/lib/verification/env-snapshot.js +65 -1
  415. package/dist/server/src/types/cli-tool-contracts.js +10 -2
  416. package/dist/types/cli-tool-contracts.d.ts +16 -5
  417. package/dist/types/cli-tool-contracts.d.ts.map +1 -1
  418. package/dist/types/cli-tool-contracts.js +10 -2
  419. package/package.json +2 -1
  420. package/release-notes/0.42.2.json +20 -0
  421. package/release-notes/0.43.0.json +130 -0
  422. package/scripts/hooks/cmate-agent-event.sh +14 -0
  423. package/scripts/opencode-v2/launch.sh +226 -0
  424. package/.next/server/chunks/4443.js +0 -3
  425. package/.next/server/chunks/5164.js +0 -1
  426. package/.next/server/chunks/650.js +0 -1
  427. package/.next/static/chunks/5449-550bd273dccc3ae4.js +0 -1
  428. package/.next/static/chunks/7705-2a2936551b0cf9a3.js +0 -1
  429. package/.next/static/chunks/8165-934ee7ff3b4ddfd4.js +0 -1
  430. package/.next/static/chunks/app/review/page-30616daa1dc595c2.js +0 -1
  431. package/.next/static/chunks/app/skills/[skillId]/page-ab7e432b69fccb3b.js +0 -1
  432. package/.next/static/chunks/app/skills/page-56b4fa11223e0cbd.js +0 -1
  433. package/.next/static/chunks/app/worktrees/[id]/page-3c946bd2875391fd.js +0 -1
  434. /package/.next/static/{3M_S0B7dhEDdVE2XSJz1Y → BVkBYdceLRvMROqQIqeBx}/_buildManifest.js +0 -0
  435. /package/.next/static/{3M_S0B7dhEDdVE2XSJz1Y → BVkBYdceLRvMROqQIqeBx}/_ssgManifest.js +0 -0
@@ -26,7 +26,7 @@
26
26
  * instead of importing it.
27
27
  */
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.DETECTOR_VERIFIED_AGAINST = exports.UNMEASURED_VERIFIED_AGAINST = exports.COMMAND_CODE_VERIFIED_AGAINST = exports.ANTIGRAVITY_VERIFIED_AGAINST = exports.OPENCODE_VERIFIED_AGAINST = exports.COPILOT_VERIFIED_AGAINST = exports.CODEX_VERIFIED_AGAINST = exports.CLAUDE_VERIFIED_AGAINST = void 0;
29
+ exports.DETECTOR_VERIFIED_AGAINST = exports.UNMEASURED_VERIFIED_AGAINST = exports.OPENCODE_V2_VERIFIED_AGAINST = exports.COMMAND_CODE_VERIFIED_AGAINST = exports.ANTIGRAVITY_VERIFIED_AGAINST = exports.OPENCODE_VERIFIED_AGAINST = exports.COPILOT_VERIFIED_AGAINST = exports.CODEX_VERIFIED_AGAINST = exports.CLAUDE_VERIFIED_AGAINST = void 0;
30
30
  /** claude these rules were read off (#1708 / #1927 fixtures). */
31
31
  exports.CLAUDE_VERIFIED_AGAINST = {
32
32
  version: '2.1.240',
@@ -224,6 +224,21 @@ exports.COMMAND_CODE_VERIFIED_AGAINST = {
224
224
  capturedAt: '2026-09-20',
225
225
  paneGeometry: '200x1000',
226
226
  };
227
+ /**
228
+ * OpenCode V2 (`opencode2`, npm `@opencode/cli`) — Issue #2934, Epic #2370
229
+ * Phase 1.
230
+ *
231
+ * 2.0.18 is the build Phase 0 and Phase 1 were measured on (2026-09-28, pane
232
+ * 80x200): the SSE vocabulary the state is read from, and the composer / footer
233
+ * rows the send path and the fallback reader match. OpenCode V2 shipped 18
234
+ * releases in its first two weeks, so this stamp is expected to go `stale`
235
+ * quickly — which is the freshness probe doing its job, not a defect.
236
+ */
237
+ exports.OPENCODE_V2_VERIFIED_AGAINST = {
238
+ version: '2.0.18',
239
+ capturedAt: '2026-09-28',
240
+ paneGeometry: '80x200',
241
+ };
227
242
  /**
228
243
  * The stamp for a tool whose frames nobody has captured yet.
229
244
  *
@@ -251,6 +266,7 @@ exports.DETECTOR_VERIFIED_AGAINST = {
251
266
  opencode: exports.OPENCODE_VERIFIED_AGAINST,
252
267
  antigravity: exports.ANTIGRAVITY_VERIFIED_AGAINST,
253
268
  'command-code': exports.COMMAND_CODE_VERIFIED_AGAINST,
269
+ 'opencode-v2': exports.OPENCODE_V2_VERIFIED_AGAINST,
254
270
  gemini: exports.UNMEASURED_VERIFIED_AGAINST,
255
271
  'vibe-local': exports.UNMEASURED_VERIFIED_AGAINST,
256
272
  };
@@ -46,6 +46,14 @@ const excerpt_1 = require("./excerpt");
46
46
  exports.UPSTREAM_FAULTS = [
47
47
  { id: 'overloaded', pattern: /\b5\d{2}\s+Overloaded\b/i, selfRetrying: true },
48
48
  { id: 'retrying', pattern: /Retrying in \d+s\s*[·•]\s*attempt \d+\/\d+/i, selfRetrying: true },
49
+ {
50
+ // The conversation outgrew the model's window (Issue #3011). Command Code
51
+ // prints `400 This model's maximum context length is N tokens. However, you
52
+ // requested M tokens`; retrying the same session cannot succeed.
53
+ id: 'context-limit',
54
+ pattern: /\bmaximum context length is \d+ tokens\b/i,
55
+ selfRetrying: false,
56
+ },
49
57
  { id: 'limit-reached', pattern: /\blimit reached\b/i, selfRetrying: false },
50
58
  { id: 'api-error', pattern: /\bAPI Error(?::|\s+\d{3})/i, selfRetrying: false },
51
59
  ];
@@ -104,6 +104,7 @@ exports.getDetectorStalenessSnapshot = getDetectorStalenessSnapshot;
104
104
  exports.clearDetectorVersionProbeCache = clearDetectorVersionProbeCache;
105
105
  const child_process_1 = require("child_process");
106
106
  const copilot_executable_1 = require("../cli-tools/copilot-executable");
107
+ const opencode_executable_1 = require("../cli-tools/opencode-executable");
107
108
  const env_sanitizer_1 = require("../security/env-sanitizer");
108
109
  const verified_against_1 = require("./tools/verified-against");
109
110
  /** Budget for one `<cli> --version`. Matches the catalog probe and copilot-executable. */
@@ -202,7 +203,19 @@ exports.DETECTOR_VERSION_PROBES = {
202
203
  codex: { kind: 'execFile', command: 'codex', args: ['--version'] },
203
204
  antigravity: { kind: 'execFile', command: 'agy', args: ['--version'] },
204
205
  'command-code': { kind: 'execFile', command: 'commandcode', args: ['--version'] },
205
- opencode: { kind: 'execFile', command: 'opencode', args: ['--version'] },
206
+ // Issue #2939: both OpenCodes are delegated, like copilot. `opencode` may be
207
+ // OpenCode V2 (npm `@opencode/cli` registers it next to `opencode2`), so the
208
+ // row reads the version of the binary each tool would launch — the same
209
+ // resolution `isInstalled()` and the launch line use, never `opencode v2.x`
210
+ // filed as OpenCode 1.x's version.
211
+ opencode: {
212
+ kind: 'delegated',
213
+ probe: async () => (await (0, opencode_executable_1.resolveOpencodeV1Executable)()).executable?.version ?? null,
214
+ },
215
+ 'opencode-v2': {
216
+ kind: 'delegated',
217
+ probe: async () => (await (0, opencode_executable_1.resolveOpencodeV2Executable)()).executable?.version ?? null,
218
+ },
206
219
  gemini: { kind: 'execFile', command: 'gemini', args: ['--version'] },
207
220
  copilot: {
208
221
  kind: 'delegated',
@@ -61,6 +61,17 @@
61
61
  * its own — see {@link AgentSessionContextUsage} and
62
62
  * `docs/design/opencode-server-live-verification.md` §14.
63
63
  *
64
+ * ## OpenCode V2 (Issue #2981)
65
+ *
66
+ * `opencode-v2` fills both records too, with the same meanings — measured on
67
+ * 2.0.18 (`tests/fixtures/opencode-v2-usage-2981`): `GET /api/session/{id}`
68
+ * carries the session's cumulative `cost` / `tokens` (the running total
69
+ * `session.usage.updated` announces), while the TUI's `6.3K (1%)` is the last
70
+ * assistant message's footprint. The writer is
71
+ * `./sources/opencode-v2/usage`, which asks its own server with its own port
72
+ * and password; {@link ensureAgentSessionContextUsage} leaves those instances
73
+ * alone.
74
+ *
64
75
  * @module lib/hooks/agent-session-telemetry
65
76
  */
66
77
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -70,6 +81,7 @@ exports.getAgentSessionTelemetry = getAgentSessionTelemetry;
70
81
  exports.forgetAgentSessionTelemetry = forgetAgentSessionTelemetry;
71
82
  exports.resetAgentSessionTelemetry = resetAgentSessionTelemetry;
72
83
  exports.readOpencodeSessionFrame = readOpencodeSessionFrame;
84
+ exports.readOpencodeSessionInfo = readOpencodeSessionInfo;
73
85
  exports.agentSessionContextPercent = agentSessionContextPercent;
74
86
  exports.getAgentSessionContextUsage = getAgentSessionContextUsage;
75
87
  exports.recordAgentSessionContextUsage = recordAgentSessionContextUsage;
@@ -190,7 +202,25 @@ function readOpencodeSessionFrame(frame, at) {
190
202
  const properties = isPlainObject(frame.properties) ? frame.properties : null;
191
203
  if (!properties)
192
204
  return null;
193
- const info = isPlainObject(properties.info) ? properties.info : null;
205
+ return readOpencodeSessionInfo(properties.info, at);
206
+ }
207
+ /**
208
+ * Read one `Session` object, or answer null (Issue #2981).
209
+ *
210
+ * Split out of {@link readOpencodeSessionFrame} because OpenCode V2 serves the
211
+ * same fields — `Session.Info` in 2.0.18's `GET /openapi.json` declares `id`,
212
+ * `parentID`, `title`, `agent`, `model: { id, providerID, variant? }`, `cost`
213
+ * and `tokens: { input, output, reasoning, cache: { read, write } }` — from
214
+ * `GET /api/session/{id}` instead of on a frame. One reader keeps the two
215
+ * versions from disagreeing about what "verbatim" means, and the sub-agent
216
+ * refusal above applies to both.
217
+ *
218
+ * @param value - The `Session` object, unvalidated
219
+ * @param at - Epoch ms it was received
220
+ * @returns The record to store, or null when this is not one to store
221
+ */
222
+ function readOpencodeSessionInfo(value, at) {
223
+ const info = isPlainObject(value) ? value : null;
194
224
  if (!info)
195
225
  return null;
196
226
  if (typeof info.parentID === 'string' && info.parentID.length > 0)
@@ -276,6 +306,11 @@ function ensureAgentSessionContextUsage(target, record) {
276
306
  // close is what retires it, the same lifetime the record itself has.
277
307
  if (!record || !record.id)
278
308
  return cached;
309
+ // Issue #2981: OpenCode V2 measures its own context in the same refresh that
310
+ // writes the record (`./sources/opencode-v2/usage`), with its own port and
311
+ // password. The v1 fetch below would dial v1's port map for a v2 instance.
312
+ if (target.cliToolId === 'opencode-v2')
313
+ return cached;
279
314
  if (cached && cached.sessionAt === record.at)
280
315
  return cached;
281
316
  if (contextRefreshes.has(key))
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ /**
3
+ * Why an OpenCode 1.x launch never started its server, when opencode's own log
4
+ * says (Issue #2939, D2).
5
+ *
6
+ * OpenCode 1.x and OpenCode V2 share `~/.local/share/opencode/opencode.db`. V2
7
+ * rebuilt the `workspace` table without the `project_id` column 1.x still
8
+ * writes, and a 1.x launch that reached that code died with
9
+ * `SQLiteError: no such column: project_id` (measured 2026-09-28, 17 lines in
10
+ * opencode's log). CommandMate only saw `opencode-server-not-reachable`, and
11
+ * the operator was left with a pane that never came up and no reason.
12
+ *
13
+ * This reads the log opencode writes — `<XDG_DATA_HOME or ~/.local/share>/
14
+ * opencode/log/opencode.log`, one `timestamp=<ISO> level=… ` record per line —
15
+ * and reports a `no such column` error from a line stamped at or after the
16
+ * launch. Read-only, bounded to the last {@link OPENCODE_LOG_TAIL_BYTES} of the
17
+ * file, and every failure (no file, unreadable, nothing matching) is null,
18
+ * which leaves the launch reported exactly as before.
19
+ *
20
+ * CommandMate cannot repair the database: two incompatible opencode releases
21
+ * sharing one data directory is opencode's problem. What it can do is name it.
22
+ *
23
+ * @module lib/hooks/sources/opencode/log-diagnosis
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.OPENCODE_LOG_TAIL_BYTES = void 0;
27
+ exports.resolveOpencodeLogPath = resolveOpencodeLogPath;
28
+ exports.findOpencodeSharedDataConflict = findOpencodeSharedDataConflict;
29
+ exports.buildOpencodeSharedDataConflictMessage = buildOpencodeSharedDataConflictMessage;
30
+ const promises_1 = require("fs/promises");
31
+ const os_1 = require("os");
32
+ const path_1 = require("path");
33
+ /** How much of the end of the log is read. The file is multi-megabyte. */
34
+ exports.OPENCODE_LOG_TAIL_BYTES = 256 * 1024;
35
+ /**
36
+ * Lines stamped this long before the launch still count. The TUI writes its
37
+ * first line within milliseconds of the keystroke; the slack only absorbs the
38
+ * gap between `Date.now()` here and the pane's process starting.
39
+ */
40
+ const LAUNCH_CLOCK_SLACK_MS = 1000;
41
+ const TIMESTAMP_FIELD = /^timestamp=(\S+)/;
42
+ const NO_SUCH_COLUMN = /no such column: ?[A-Za-z0-9_.]*/;
43
+ /** Where opencode writes its log, honouring `XDG_DATA_HOME` as opencode does. */
44
+ function resolveOpencodeLogPath() {
45
+ const dataHome = process.env.XDG_DATA_HOME || (0, path_1.join)((0, os_1.homedir)(), '.local', 'share');
46
+ return (0, path_1.join)(dataHome, 'opencode', 'log', 'opencode.log');
47
+ }
48
+ /** The last `maxBytes` of `path`, or null when it cannot be read. */
49
+ async function readTail(path, maxBytes) {
50
+ let handle;
51
+ try {
52
+ handle = await (0, promises_1.open)(path, 'r');
53
+ const { size } = await handle.stat();
54
+ const length = Math.min(size, maxBytes);
55
+ const start = size - length;
56
+ const buffer = Buffer.alloc(length);
57
+ await handle.read(buffer, 0, length, start);
58
+ let text = buffer.toString('utf8');
59
+ // A read that starts mid-file starts mid-line; that fragment has no stamp.
60
+ if (start > 0)
61
+ text = text.slice(text.indexOf('\n') + 1);
62
+ return text;
63
+ }
64
+ catch {
65
+ return null;
66
+ }
67
+ finally {
68
+ await handle?.close().catch(() => { });
69
+ }
70
+ }
71
+ /**
72
+ * The `no such column` error opencode logged since `since`, or null.
73
+ *
74
+ * @param since - Epoch ms the launch keystroke was sent
75
+ * @param logPath - Defaults to {@link resolveOpencodeLogPath}
76
+ * @returns The matched fragment, e.g. `no such column: project_id`
77
+ */
78
+ async function findOpencodeSharedDataConflict(since, logPath = resolveOpencodeLogPath()) {
79
+ const text = await readTail(logPath, exports.OPENCODE_LOG_TAIL_BYTES);
80
+ if (text === null)
81
+ return null;
82
+ const threshold = since - LAUNCH_CLOCK_SLACK_MS;
83
+ for (const line of text.split('\n')) {
84
+ const stamp = TIMESTAMP_FIELD.exec(line);
85
+ if (!stamp)
86
+ continue;
87
+ const at = Date.parse(stamp[1]);
88
+ if (Number.isNaN(at) || at < threshold)
89
+ continue;
90
+ const match = NO_SUCH_COLUMN.exec(line);
91
+ if (match)
92
+ return match[0];
93
+ }
94
+ return null;
95
+ }
96
+ /**
97
+ * The start error an operator sees for {@link findOpencodeSharedDataConflict}'s
98
+ * finding.
99
+ */
100
+ function buildOpencodeSharedDataConflictMessage(finding) {
101
+ return (`OpenCode 1.x could not open its data (opencode log: "${finding}"). ` +
102
+ 'OpenCode 1.x and OpenCode V2 share ~/.local/share/opencode/opencode.db, and V2 ' +
103
+ 'has changed tables 1.x still uses. Use only OpenCode V2, or give OpenCode 1.x a ' +
104
+ 'data directory of its own (docs/user-guide/cli-setup-guide.md, "OpenCode (1.x) and OpenCode V2").');
105
+ }
@@ -266,7 +266,13 @@ function prepareOpencodeLaunch({ target, executablePath, }) {
266
266
  // `env` is empty for every branch: opencode is the one source that needs no
267
267
  // correlation variable at all, because CommandMate holds the connection and
268
268
  // therefore already knows which instance the frames belong to (#1846).
269
- const bare = { command: executablePath, settingsPath: null, env: {} };
269
+ // Issue #2939: `executablePath` is now the absolute path that answered as
270
+ // OpenCode 1.x, so it is quoted when it needs to be. A plain word keeps the
271
+ // pre-#2939 bytes.
272
+ const bareCommand = /^[A-Za-z0-9_./-]+$/.test(executablePath)
273
+ ? executablePath
274
+ : (0, hook_settings_generator_1.shellQuote)(executablePath);
275
+ const bare = { command: bareCommand, settingsPath: null, env: {} };
270
276
  if (!(0, hook_settings_generator_1.isHookInjectionEnabled)())
271
277
  return bare;
272
278
  const port = (0, ports_1.getAssignedOpencodePort)(target);