commandmate 0.43.0 → 0.44.1

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 (531) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +357 -361
  3. package/.next/app-path-routes-manifest.json +33 -33
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/react-loadable-manifest.json +3 -3
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/update/route.js.nft.json +1 -1
  10. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/versions/route.js.nft.json +1 -1
  12. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/app/update/route.js +2 -2
  15. package/.next/server/app/api/app/update/route.js.nft.json +1 -1
  16. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/app/update-check/route.js +1 -1
  18. package/.next/server/app/api/app/update-check/route.js.nft.json +1 -1
  19. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/capabilities/route.js +1 -1
  24. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  26. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  28. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
  30. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
  32. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
  34. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
  36. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
  38. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  40. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  41. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  43. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  44. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  46. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  47. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
  49. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/push/escalation/route.js +1 -1
  52. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  53. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  55. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/push/vapid/route.js +1 -1
  57. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  58. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  60. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  61. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/relays/route.js +1 -1
  63. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  64. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/remote/pair/route.js +2 -2
  66. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  68. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  70. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  71. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/repositories/clone/route.js +1 -1
  73. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  74. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  76. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/repositories/restore/route.js +1 -1
  78. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  79. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/repositories/route.js +1 -1
  81. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  82. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/repositories/scan/route.js +1 -1
  84. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  85. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/repositories/sync/route.js +1 -1
  87. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  88. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
  90. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  92. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  93. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/settings/default-surface-mode/route.js.nft.json +1 -1
  95. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  97. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/skills/[id]/route.js +1 -1
  99. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  100. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/skills/installations/route.js +1 -1
  102. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  103. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/skills/operations/route.js +2 -2
  105. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
  106. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/skills/reindex/route.js +1 -1
  108. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
  109. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/skills/route.js +1 -1
  111. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  112. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  114. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  116. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
  118. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  120. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  122. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
  124. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
  126. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  129. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  132. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  135. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js.nft.json +1 -1
  137. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  139. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  141. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  144. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  147. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
  149. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  151. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  153. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  156. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  172. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  174. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  176. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  178. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  180. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  182. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  184. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  196. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  200. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  202. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js.nft.json +1 -1
  204. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  210. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  213. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  217. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +7 -7
  219. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  220. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  222. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  226. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
  228. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  232. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  235. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
  237. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  240. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  243. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  245. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  247. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  249. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  252. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  255. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +3 -3
  257. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  258. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  261. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  263. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  264. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  266. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  267. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  269. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  270. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
  272. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
  273. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  275. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  276. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  278. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  279. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  280. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  281. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  283. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  284. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  286. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  287. package/.next/server/app/api/worktrees/[id]/terminal/route.js +103 -1
  288. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  289. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  290. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  291. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  293. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  294. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  296. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  298. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  299. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  300. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  301. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  302. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  304. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  305. package/.next/server/app/api/worktrees/[id]/verify/config/route.js.nft.json +1 -1
  306. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  307. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  308. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  309. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  310. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  311. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
  312. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  313. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
  314. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  315. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
  316. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  317. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  318. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  319. package/.next/server/app/api/worktrees/apply-default-agents/route.js.nft.json +1 -1
  320. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  321. package/.next/server/app/api/worktrees/route.js +1 -1
  322. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  323. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  324. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  325. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  326. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  327. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  328. package/.next/server/app/page_client-reference-manifest.js +1 -1
  329. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  330. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  331. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  332. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  333. package/.next/server/app/sessions/page.js +1 -1
  334. package/.next/server/app/sessions/page.js.nft.json +1 -1
  335. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  336. package/.next/server/app/skills/[skillId]/page.js +1 -1
  337. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  338. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  339. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  340. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  341. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
  342. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  343. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  344. package/.next/server/app/worktrees/[id]/page.js +9 -9
  345. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  346. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  347. package/.next/server/app/worktrees/[id]/terminal/page.js +1 -1
  348. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  349. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  350. package/.next/server/app-paths-manifest.json +33 -33
  351. package/.next/server/chunks/1068.js +1 -1
  352. package/.next/server/chunks/1501.js +3 -3
  353. package/.next/server/chunks/2119.js +1 -1
  354. package/.next/server/chunks/2283.js +15 -0
  355. package/.next/server/chunks/2328.js +1 -1
  356. package/.next/server/chunks/2404.js +1 -1
  357. package/.next/server/chunks/2445.js +1 -1
  358. package/.next/server/chunks/2816.js +1 -1
  359. package/.next/server/chunks/4207.js +1 -1
  360. package/.next/server/chunks/4802.js +1 -1
  361. package/.next/server/chunks/488.js +1 -0
  362. package/.next/server/chunks/5326.js +1 -1
  363. package/.next/server/chunks/5456.js +1 -1
  364. package/.next/server/chunks/611.js +1 -1
  365. package/.next/server/chunks/6130.js +1 -1
  366. package/.next/server/chunks/6401.js +1 -1
  367. package/.next/server/chunks/6474.js +14 -0
  368. package/.next/server/chunks/650.js +1 -0
  369. package/.next/server/chunks/6781.js +1 -1
  370. package/.next/server/chunks/{5742.js → 6927.js} +1 -1
  371. package/.next/server/chunks/7506.js +1 -1
  372. package/.next/server/chunks/7685.js +1 -1
  373. package/.next/server/chunks/7905.js +1 -1
  374. package/.next/server/chunks/8543.js +1 -1
  375. package/.next/server/chunks/8581.js +2 -2
  376. package/.next/server/chunks/8728.js +2 -2
  377. package/.next/server/chunks/8782.js +1 -0
  378. package/.next/server/chunks/8791.js +1 -1
  379. package/.next/server/chunks/8918.js +105 -3
  380. package/.next/server/chunks/9130.js +1 -1
  381. package/.next/server/chunks/9390.js +1 -1
  382. package/.next/server/chunks/967.js +1 -1
  383. package/.next/server/chunks/9731.js +3 -3
  384. package/.next/server/chunks/9882.js +3 -3
  385. package/.next/server/middleware-build-manifest.js +1 -1
  386. package/.next/server/middleware-manifest.json +5 -5
  387. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  388. package/.next/server/pages/500.html +1 -1
  389. package/.next/server/server-reference-manifest.json +1 -1
  390. package/.next/server/src/middleware.js +2 -2
  391. package/.next/server/src/middleware.js.map +1 -1
  392. package/.next/static/chunks/{1642-767aed8e7c61ef7f.js → 1642-fb2e176aaadbd137.js} +1 -1
  393. package/.next/static/chunks/2053-85a974ddfe7498fe.js +1 -0
  394. package/.next/static/chunks/{2407-940df9b11fadafc6.js → 2407-f1f258d4a1d92620.js} +1 -1
  395. package/.next/static/chunks/{2619-a305ad4810f1393a.js → 2619-04bc32f026a0d946.js} +1 -1
  396. package/.next/static/chunks/344-e1cefd00787060e4.js +1 -0
  397. package/.next/static/chunks/3922.f45dcfc1e7da552a.js +1 -0
  398. package/.next/static/chunks/5521-c358c31f60e5e689.js +1 -0
  399. package/.next/static/chunks/591-308072f285c34787.js +1 -0
  400. package/.next/static/chunks/6654-ac431270fac1a283.js +1 -0
  401. package/.next/static/chunks/{8165-3525fb42f1b4976e.js → 8165-3853772f6ae1299b.js} +1 -1
  402. package/.next/static/chunks/{8566-a6a7c70558927410.js → 8566-aeda747542072ace.js} +1 -1
  403. package/.next/static/chunks/8811-29eaa24237f48558.js +1 -0
  404. package/.next/static/chunks/{9619-22adf5367c4b7080.js → 9619-6c17a271f7f98fbb.js} +1 -1
  405. package/.next/static/chunks/998-2eb5883186abd0bd.js +1 -0
  406. package/.next/static/chunks/app/layout-da66300cc20244ed.js +1 -0
  407. package/.next/static/chunks/app/more/{page-30057cf1e0762ad2.js → page-87c84987b2765213.js} +1 -1
  408. package/.next/static/chunks/app/{page-8483ba400af011f5.js → page-1b820c421db48c2c.js} +1 -1
  409. package/.next/static/chunks/app/review/page-95f749caae382f46.js +1 -0
  410. package/.next/static/chunks/app/sessions/page-049e06335187aa91.js +1 -0
  411. package/.next/static/chunks/app/skills/[skillId]/{page-74aac15286504ef4.js → page-9ee7a381636e60cb.js} +1 -1
  412. package/.next/static/chunks/app/worktrees/[id]/page-040c5f0f585e6812.js +1 -0
  413. package/.next/static/chunks/app/worktrees/[id]/terminal/{page-c601f3b3ece6557e.js → page-373ea37b16d930c7.js} +1 -1
  414. package/.next/static/chunks/{webpack-49ade0526854dd4e.js → webpack-021f0741f22dd16a.js} +1 -1
  415. package/.next/static/css/38070d879efa1371.css +1 -0
  416. package/.next/trace +13 -13
  417. package/README.md +90 -605
  418. package/dist/cli/commands/capture.d.ts.map +1 -1
  419. package/dist/cli/commands/capture.js +11 -1
  420. package/dist/cli/commands/docs.d.ts.map +1 -1
  421. package/dist/cli/commands/docs.js +5 -0
  422. package/dist/cli/commands/remote.d.ts +34 -1
  423. package/dist/cli/commands/remote.d.ts.map +1 -1
  424. package/dist/cli/commands/remote.js +171 -6
  425. package/dist/cli/commands/respond.d.ts.map +1 -1
  426. package/dist/cli/commands/respond.js +255 -112
  427. package/dist/cli/commands/stop.d.ts.map +1 -1
  428. package/dist/cli/commands/stop.js +53 -1
  429. package/dist/cli/commands/sync.js +3 -3
  430. package/dist/cli/commands/wait.d.ts.map +1 -1
  431. package/dist/cli/commands/wait.js +11 -0
  432. package/dist/cli/docs/setup-guide.d.ts +14 -0
  433. package/dist/cli/docs/setup-guide.d.ts.map +1 -0
  434. package/dist/cli/docs/setup-guide.js +368 -0
  435. package/dist/cli/types/api-responses.d.ts +21 -0
  436. package/dist/cli/types/api-responses.d.ts.map +1 -1
  437. package/dist/cli/types/index.d.ts +2 -0
  438. package/dist/cli/types/index.d.ts.map +1 -1
  439. package/dist/cli/utils/daemon.d.ts +42 -2
  440. package/dist/cli/utils/daemon.d.ts.map +1 -1
  441. package/dist/cli/utils/daemon.js +222 -40
  442. package/dist/cli/utils/docs-reader.d.ts +6 -0
  443. package/dist/cli/utils/docs-reader.d.ts.map +1 -1
  444. package/dist/cli/utils/docs-reader.js +14 -13
  445. package/dist/cli/utils/npm-runner.d.ts +12 -0
  446. package/dist/cli/utils/npm-runner.d.ts.map +1 -1
  447. package/dist/cli/utils/npm-runner.js +36 -0
  448. package/dist/cli/utils/process-inspect.d.ts +55 -0
  449. package/dist/cli/utils/process-inspect.d.ts.map +1 -0
  450. package/dist/cli/utils/process-inspect.js +214 -0
  451. package/dist/cli/utils/remote-pairing.d.ts +68 -0
  452. package/dist/cli/utils/remote-pairing.d.ts.map +1 -0
  453. package/dist/cli/utils/remote-pairing.js +117 -0
  454. package/dist/cli/utils/server-identity.d.ts +50 -0
  455. package/dist/cli/utils/server-identity.d.ts.map +1 -0
  456. package/dist/cli/utils/server-identity.js +118 -0
  457. package/dist/cli/utils/server-ready.d.ts +13 -0
  458. package/dist/cli/utils/server-ready.d.ts.map +1 -1
  459. package/dist/cli/utils/server-ready.js +16 -0
  460. package/dist/lib/detection/status-reason.d.ts +17 -0
  461. package/dist/lib/detection/status-reason.d.ts.map +1 -1
  462. package/dist/lib/detection/status-reason.js +17 -0
  463. package/dist/lib/security/pairing-code.d.ts +2 -1
  464. package/dist/lib/security/pairing-code.d.ts.map +1 -1
  465. package/dist/server/locales/en/worktree.json +41 -7
  466. package/dist/server/locales/ja/worktree.json +41 -7
  467. package/dist/server/src/config/image-extensions.js +1 -0
  468. package/dist/server/src/config/session-starting-config.js +75 -0
  469. package/dist/server/src/lib/auto-yes-poller.js +22 -0
  470. package/dist/server/src/lib/cli-tools/antigravity.js +2 -1
  471. package/dist/server/src/lib/cli-tools/base.js +15 -1
  472. package/dist/server/src/lib/cli-tools/codex.js +3 -2
  473. package/dist/server/src/lib/cli-tools/command-code-plan-review.js +175 -0
  474. package/dist/server/src/lib/cli-tools/command-code.js +30 -4
  475. package/dist/server/src/lib/cli-tools/copilot.js +2 -1
  476. package/dist/server/src/lib/cli-tools/gemini.js +2 -1
  477. package/dist/server/src/lib/cli-tools/liveness-spec.js +27 -9
  478. package/dist/server/src/lib/cli-tools/opencode-v2.js +2 -1
  479. package/dist/server/src/lib/cli-tools/opencode.js +2 -1
  480. package/dist/server/src/lib/cli-tools/vibe-local.js +2 -1
  481. package/dist/server/src/lib/detection/cli-patterns.js +94 -1
  482. package/dist/server/src/lib/detection/status-reason.js +17 -0
  483. package/dist/server/src/lib/detection/tool-liveness.js +3 -1
  484. package/dist/server/src/lib/detection/tools/codex/detect.js +26 -0
  485. package/dist/server/src/lib/detection/tools/command-code/plan-review-state.js +75 -0
  486. package/dist/server/src/lib/hooks/sources/claude/transcript.js +33 -1
  487. package/dist/server/src/lib/realtime/terminal-broadcast.js +5 -0
  488. package/dist/server/src/lib/session/agent-session-lifecycle.js +11 -0
  489. package/dist/server/src/lib/session/claude-executor.js +2 -2
  490. package/dist/server/src/lib/session/claude-session.js +138 -16
  491. package/dist/server/src/lib/session/current-output-builder.js +49 -21
  492. package/dist/server/src/lib/session/launch-screen.js +57 -0
  493. package/dist/server/src/lib/session/session-start-error.js +20 -0
  494. package/dist/server/src/lib/session/session-starting-state.js +236 -0
  495. package/dist/server/src/lib/skills/agent-state-paths.js +39 -0
  496. package/dist/server/src/lib/skills/receipt-owned-paths.js +118 -0
  497. package/dist/server/src/lib/tmux/tmux.js +25 -0
  498. package/dist/server/src/lib/verification/env-clean-gate.js +195 -6
  499. package/dist/server/src/lib/verification/gate-runner.js +29 -2
  500. package/dist/server/src/lib/verification/scope-gate.js +58 -4
  501. package/docs/en/architecture.md +722 -0
  502. package/docs/en/user-guide/agents-guide.md +306 -0
  503. package/docs/en/user-guide/cli-setup-guide.md +676 -0
  504. package/docs/en/user-guide/cmate-schedules-guide.md +388 -0
  505. package/docs/en/user-guide/commands-guide.md +467 -0
  506. package/docs/en/user-guide/quick-start.md +231 -0
  507. package/docs/en/user-guide/webapp-guide.md +1020 -0
  508. package/docs/en/user-guide/workflow-examples.md +463 -0
  509. package/package.json +18 -7
  510. package/release-notes/0.44.0.json +82 -0
  511. package/release-notes/0.44.1.json +54 -0
  512. package/.next/server/chunks/1990.js +0 -103
  513. package/.next/server/chunks/3707.js +0 -15
  514. package/.next/server/chunks/6491.js +0 -103
  515. package/.next/server/chunks/7004.js +0 -1
  516. package/.next/server/chunks/8673.js +0 -14
  517. package/.next/static/chunks/2039-117a361f795ddc4b.js +0 -1
  518. package/.next/static/chunks/2053-611dd27d42721b79.js +0 -1
  519. package/.next/static/chunks/344-6f9fc1f38f01a839.js +0 -1
  520. package/.next/static/chunks/3778-56f41fc2cecb8c43.js +0 -1
  521. package/.next/static/chunks/3922.8e79fc89f593280b.js +0 -1
  522. package/.next/static/chunks/5449-6cb80bab2bd06b79.js +0 -1
  523. package/.next/static/chunks/6966-bb854d1145783a64.js +0 -1
  524. package/.next/static/chunks/7705-1f58d4c03d991fcf.js +0 -1
  525. package/.next/static/chunks/app/layout-057c850cd0df978e.js +0 -1
  526. package/.next/static/chunks/app/review/page-ff9efae3f86eb840.js +0 -1
  527. package/.next/static/chunks/app/sessions/page-1a8ba152bbcb9efb.js +0 -1
  528. package/.next/static/chunks/app/worktrees/[id]/page-eab0bf7564d3f9e2.js +0 -1
  529. package/.next/static/css/b3f433d52b8ed5c8.css +0 -1
  530. /package/.next/static/{BVkBYdceLRvMROqQIqeBx → 57lOiz8zSEHdw97XIm0af}/_buildManifest.js +0 -0
  531. /package/.next/static/{BVkBYdceLRvMROqQIqeBx → 57lOiz8zSEHdw97XIm0af}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -11,662 +11,144 @@
11
11
 
12
12
  **[commandmate website →](https://kewton.github.io/CommandMate/)**
13
13
 
14
- <p align="center">
15
- <img src="./docs/images/demo-hero.en.gif" width="560" alt="A list of four open issues, one message typed into the lead session, four worktree sessions in the sidebar, a worker writing a test file, and a final report with a phase-by-phase table" />
16
- </p>
17
-
18
- > **One agent leads. Gates decide what's done.**
19
-
20
- CommandMate gives your lead agent the machinery to run the others: one Git worktree and one contract per task, gates that decide what is done, and a record of every run. Claude Code, Codex, Antigravity, Command Code, OpenCode, Gemini CLI, Copilot and local models. You approve; you don't relay.
21
-
22
- Open source (MIT) · runs on your machine · macOS / Linux / Windows (WSL2) · no app to install
23
-
24
- ```bash
25
- npx commandmate@latest
26
- ```
27
-
28
- **From install to your first session in 60 seconds.** macOS / Linux / Windows (WSL2) · Node.js v22+ · npm · git · tmux
29
-
30
- ---
31
-
32
- ## More agents, same you
33
-
34
- - The agents are parallel. You are still single-threaded.
35
- - From the outside, an idle agent and one waiting on you look the same.
36
- - The agent's summary of what it did is not evidence of what it did.
37
- - Nobody can safely merge a PR that nobody understands.
38
-
39
- CommandMate puts the machinery around the CLIs you already run: a lead that hands out contracts, session state read from the agents' own hooks, gates after the work, and the record in between.
14
+ > **Run multiple coding agents in parallel — even away from your desk.**
40
15
 
41
- ---
42
-
43
- ## One agent leads
44
-
45
- One message to your lead session. It plans the issues — dependencies, file conflicts, waves — and hands each one to a worker in its own worktree under a contract. Gates decide which work comes back. Only what passed becomes a PR, gets merged, and goes through acceptance. Nothing mutates without an explicit approve, and a failed gate stops the run.
46
-
47
- ```yaml
48
- # .commandmate/tasks/issue-21.yaml
49
- version: 1
50
- title: "Issue #21: pick(obj, keys)"
51
- goal: |
52
- Implement pick(obj, keys) in src/util/pick.js with node:test cases in tests/pick.test.mjs.
53
- Run npm test, then commit.
54
- scope:
55
- allow:
56
- - "src/util/pick.js"
57
- - "tests/pick.test.mjs"
58
- verify:
59
- gates: [unit]
60
- ```
16
+ CommandMate puts the coding agents you already use in one place on your own machine, so you can run them side by side, hand them work one issue at a time, and let your own checks decide when the work is done.
61
17
 
62
- > The scope gate and the work-evidence gate are built in and run on every contract; you declare only the gates that need your project's commands.
18
+ | Level | What CommandMate does | Your role |
19
+ |-------|-----------------------|-----------|
20
+ | 1 — Parallel | Runs several coding agents side by side, from one place | Operator: you answer each agent |
21
+ | 2 — Delegate | Takes work one issue at a time, and decides it is done by your own checks (lint, tests), not by what the agent says | Product / tech lead: you write the task and accept the result |
22
+ | 3 — Manage | A PM agent plans, assigns and checks the work; you talk to the PM and approve | Owner: you set the direction and approve |
23
+ | Next — Learn | Not built yet. The direction: use the record of past work to improve how the work is done | — |
63
24
 
64
- ### Measured
25
+ **Anywhere:** at every level you can answer and approve from your phone's browser, so the work does not stop when you leave the desk.
65
26
 
66
- | Run | Lead | Workers | Result |
67
- |---|---|---|---|
68
- | 4 issues, one message | Claude Code | 4 × Claude Code | 4/4 gates passed, 2 waves, PRs merged, UAT go, 8 min 39 s |
69
- | 4 issues, one message | Command Code | 4 × Command Code | 4/4 gates passed, 7 min 46 s; then a human pulled develop: 47/47 tests |
70
- | 1 issue, with a review step | Command Code | Codex builds, Claude Code tests, Antigravity reviews | Review REJECT → fix → APPROVE, RESULT passed |
27
+ Most people need only Level 2. Stop at the level that fits you; nothing here asks you to climb.
71
28
 
72
- as observed
73
-
74
- The lead is a session like any other: today it has been measured with Claude Code and Command Code. Any of the eight agents can take the work. It is a run, not a resident agent: it starts on your message and ends with a report.
75
-
76
- ---
29
+ One recorded run (PM → dev lead → workers):
77
30
 
78
- ## Verified, not vibe-checked
31
+ - 4 issues, 4 workers (Command Code), PM and dev lead on Claude Code
32
+ - 2 messages and 3 taps from a phone-width web UI
33
+ - 4/4 checks passed, PRs merged with CI green, UAT 4/4 GO
34
+ - 9 min 48 s from request to report
79
35
 
80
- Gates you declared decide whether the work is done, and the exit code is the verdict: `0` passed, `20` failed, `21` no evidence of work. The agent's summary of what it did is not the evidence. The run is, and `verify history` keeps it.
36
+ As observed: one run, recorded on 2026-10-02. Not a benchmark.
81
37
 
82
38
  <p align="center">
83
- <img src="./docs/images/demo-contract-verify.gif" width="600" alt="A task contract is sent, the verification gates run, and the exit code returns RESULT passed" />
84
- </p>
85
-
86
- If this is the kind of AI development workflow you want, [give the repo a star](https://github.com/Kewton/CommandMate).
87
-
88
- ---
89
-
90
- ## Review by another agent
91
-
92
- A session can hand its work to another session for review — `commandmate ask`, or the `cmate-delegate` Skill — and the answer comes back to the lead. In the measured run, Command Code led, Codex built, Claude Code wrote the tests, and Antigravity rejected the first version before approving the fix. This is a step you add; the orchestrate runner does not run a cross-model review for you.
93
-
94
- ---
95
-
96
- ## Know which one needs you
97
-
98
- Waiting is a state read from the agent's hooks, not a guess from the screen. The waiting session shows up as a badge, a toast, the tab title, a PWA badge and a push notification, and you answer from your phone — no app to install.
99
-
100
- <p align="center">
101
- <img src="./docs/images/demo-sessions.gif" width="560" alt="A sidebar of four sessions with one amber row marked Approve / Reject and a RESULT Passed chip in the header; the waiting session's Create File confirmation is answered with 1. Yes and the list comes back all green" />
102
- </p>
103
-
104
- Works on desktop and mobile — monitor and steer sessions from any browser, including your phone.
105
-
106
- <p align="center">
107
- <img src="./docs/images/demo-ux.en.gif" width="600" alt="Switch repos from the tab bar, delegate to another agent from the chat, open the file it names, and do the same from a phone" />
39
+ <img src="./docs/images/demo-hero.en.gif" width="560" alt="A list of four open issues, one message typed into the lead session, four worktree sessions in the sidebar, a worker writing a test file, and a final report with a phase-by-phase table" />
108
40
  </p>
109
41
 
110
- ---
111
-
112
- ## What it gives you
113
-
114
- ### One agent leads
115
-
116
- | Feature | What it does | Why it matters |
117
- |---------|-------------|----------------|
118
- | **cmate-orchestrate Skill** | Plans several issues at once and hands each one out with its own contract: `plan` → `dispatch` → `merge` → `uat` | Nothing mutates without `--approve`, and a failed gate stops the run |
119
- | **Delegation between sessions** | `commandmate ask` puts a question to another session and brings the answer back; `ask --async` with `commandmate relays` when you would rather not wait, `commandmate peers` to see who is reachable, and the `cmate-delegate` Skill for the pattern | One session can hand work to another, and it works across agent CLIs |
120
- | **Git Worktree Sessions** | One session per worktree, parallel execution | Multiple issues progress simultaneously without interference |
121
- | **Multi-Agent Support** | Choose Claude Code, Codex, Gemini CLI, Copilot, OpenCode (1.x and V2), Antigravity, Command Code or local models per worktree | Pick the right agent for each task |
122
- | **Auto Yes Mode** | Agent runs without stopping for confirmations | Optional unattended mode for trusted workflows — review the Security section before enabling |
123
-
124
- ### Verified, not vibe-checked
125
-
126
- | Feature | What it does | Why it matters |
127
- |---------|-------------|----------------|
128
- | **Task Contract** | Declare the goal, the changeable scope and the gates before the work starts, then `send --contract` hands them to the agent | The agent works to a written definition of done instead of guessing at one |
129
- | **Verification Gates** | Gates declared in `.commandmate/verify.yaml` run through `verify` / `wait --verify` and return exit `0` / `20` / `21` | "Done" is what a verification run returned, not what the agent said |
130
- | **Evidence & Metrics** | The built-in work-evidence and scope gates, plus `verify history`, `task show` and `report metrics` | Commits, gate logs and numbers are left behind for the next decision |
131
-
132
- ### Know which one needs you
133
-
134
- | Feature | What it does | Why it matters |
135
- |---------|-------------|----------------|
136
- | **Never miss a waiting agent** | A waiting agent shows up as a badge, a toast, the tab title, the PWA app badge and a push notification | You find out the moment an agent needs you, even away from the desk |
137
- | **Web UI (Desktop & Mobile)** | Full session control from any browser | Monitor and steer from your desk or your phone |
138
- | **Conversation view** | Switch a session's output between the raw terminal and a chat transcript — replies render in full, tool runs and approvals fold into chips, and a TUI dialog is answerable from the chat surface | Follow the run and answer it — from your desk or your phone — without reading the TUI |
139
-
140
- ### Method as a system
141
-
142
- | Feature | What it does | Why it matters |
143
- |---------|-------------|----------------|
144
- | **Skills Catalog** | Install and update official Skills per worktree, from the web UI or `commandmate skill` | The method is installed for the agent to read, not kept in someone's head |
145
- | **Scheduled Execution** | Cron-based auto-run via CMATE.md | Daily reviews, nightly tests — agents work on a schedule |
146
-
147
- ### Also
148
-
149
- | Feature | What it does | Why it matters |
150
- |---------|-------------|----------------|
151
- | **File Viewer & Markdown Editor** | Browse and edit worktree files in the browser | Review changes and update AI instructions without opening an IDE |
152
- | **Screenshot Instructions** | Attach images to your prompts | Snap a bug → "Fix this" — the agent sees the screenshot |
153
- | **Token Authentication** | SHA-256 hashed token + HTTPS + rate limiting | Secure remote access — no credentials leaked, brute-force protected |
154
-
155
- ---
156
-
157
- ## Supported agents
158
-
159
- All eight are first-class. Each one gets the same treatment inside CommandMate — its own launch path, its own hook source and its own status detection — so the worktree session, the task contract, the verification gates and the evidence trail behave the same way whichever agent you pick.
160
-
161
- - **Claude Code**, **Codex**, **Gemini CLI**, **Copilot**, **Antigravity** — choose per worktree, per task.
162
- - **OpenCode (1.x and V2)** — the open-source terminal agent, driven through the same contract-and-gate path as the rest. OpenCode V2 (`opencode2`) is counted with 1.x as one agent and can run next to it; see the [OpenCode V2 guide](./docs/en/user-guide/opencode-v2.md).
163
- - **Command Code** — driven the same way, its hooks and its transcript included.
164
- - **Local models** (`vibe-local`) — the same worktree session, contract and gates, against a model you host yourself.
165
-
166
- ---
167
-
168
- ## What it does not do
169
-
170
- - It is a run, not a resident agent. Nothing loops forever, and nothing mutates without an explicit approve.
171
- - It does not read the code for you. Gates catch what your tests and checks catch.
172
- - Review by another agent is a step you add, not something the runner does for you.
173
- - Approvals still come to a person. Auto Yes is opt-in, time-boxed, and stops on the patterns you set.
174
- - It does not replace tmux, Git worktrees, your terminal, or your agent CLI. An OS reboot ends the processes; what survives is the record.
42
+ Open source (MIT) · runs on your machine · macOS / Linux / Windows (WSL2) · no app to install
175
43
 
176
44
  ---
177
45
 
178
- ## Use cases
46
+ ## The problem
179
47
 
180
- | Scenario | How CommandMate helps |
181
- |----------|----------------------|
182
- | **Several issues, one message** | The lead plans waves, hands out contracts, and merges only what the gates passed. You read one report. |
183
- | **Too many sessions to watch** | One list, one state per session, read from hooks. The waiting one floats up. |
184
- | **Away from the desk** | The waiting agent reaches your phone. Approve or reject there. |
185
- | **Review by a different agent** | Hand the diff to another session and get the verdict back in the lead's chat. |
186
- | **Overnight execution** | Scheduled runs with contracts and gates; read the record in the morning. |
48
+ - The agents can work for hours. You can't sit at the desk for hours to answer them.
49
+ - From the outside, an idle agent and one waiting on you look the same.
50
+ - The agent's summary of what it did is not evidence of what it did.
187
51
 
188
52
  ---
189
53
 
190
- ## From vibe coding to Vibe Engineering.
54
+ ## The levels
191
55
 
192
- Vibe Engineering — the AI does the building; the system, not your expertise, guarantees the engineering.
56
+ ### Level 1 — Parallel
193
57
 
194
- We do not make the AI smarter. We make the software-engineering ability its user needed into a system.
195
- The contract says what done means before the work starts, the gates decide it afterwards, and the
196
- method that produced both is installed as Skills rather than remembered by whoever happened to run it.
58
+ Run Claude Code, Codex, Gemini CLI, Copilot, OpenCode (1.x and V2), Antigravity, Command Code or local models side by side. Each task gets its own session in its own Git worktree — a separate working copy of your repository — so two agents never edit the same files. CommandMate tells you which agent is waiting on you, as a badge or a push notification, and you answer it like a chat.
197
59
 
198
- [Concept](./docs/en/concept.md) is the canonical text: the Vision, the Mission, and how each
199
- implementation item maps to a feature.
200
-
201
- > The term "vibe engineering" was coined by Simon Willison (2025) —
202
- > <https://simonwillison.net/2025/Oct/7/vibe-engineering/>.
203
-
204
- ---
60
+ Your role: the operator. You read each agent's question and answer it.
205
61
 
206
- ## Security
62
+ ### Level 2 — Delegate
207
63
 
208
- CommandMate runs on your machine. It sends no telemetry, needs no account, and needs no external server to run. What goes over the network depends on what you use: your agent CLI's own API calls; a check for a newer release on GitHub, from the web UI; the official Skills Catalog on GitHub, when you list or install Skills; your browser's push service, once you turn on Web Push; and Tailscale or cloudflared, while `commandmate remote` is running.
64
+ Hand over an issue, not a chat message. Each issue goes out as a task contract: a short file in your repository that says the goal, which files the agent may change, and which checks must pass. When the agent stops, CommandMate runs your own checks — lint, type check, tests — and their result, not the agent's summary, says whether the work passed.
209
65
 
210
- - Fully open-source ([MIT License](./LICENSE))
211
- - Local database, local sessions
212
- - For remote access, use a tunneling service ([Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/), [ngrok](https://ngrok.com/), [Pinggy](https://pinggy.io/)), a VPN, or an authenticated reverse proxy
66
+ ```text
67
+ Issues → Task contracts → Worktrees → Agents × N → Checks → PR
68
+ ```
213
69
 
214
- See the [Security Guide](./docs/security-guide.md) and [Trust & Safety](./docs/en/TRUST_AND_SAFETY.md) for details.
70
+ Your role: the product or tech lead. You decide what to build and accept what passed. You can also send a session's work to another agent for review. How a result is reported is in the [CLI Operations Guide](./docs/en/user-guide/cli-operations-guide.md#commandmate-verify).
215
71
 
216
- ---
72
+ ### Level 3 — Manage
217
73
 
218
- ## Install as an App (PWA)
74
+ Talk to one PM agent instead of to every agent. Send it one message: it plans the issues, hands each one to an agent as in Level 2, and only work that passed the checks becomes a PR. Every step that changes something waits for your approval, and the PM can also start at the times you set while you are away.[^author]
219
75
 
220
- CommandMate is a Progressive Web App. On a mobile browser, use **Add to Home Screen** to launch it full-screen (standalone), which is ideal for monitoring agents on the go. A Service Worker precaches static assets and shows an offline fallback screen; API responses, the login page, and WebSocket traffic are never cached.
76
+ Your role: the owner. You set the direction, answer the PM, and approve.
221
77
 
222
- > **HTTPS is required for installation.** Browsers only register a Service Worker (and offer install) on `https://` or `http://localhost`. When accessing a self-hosted instance over plain HTTP on the LAN (e.g. `http://192.168.x.x:3000`), install and offline support are disabled by the browser — use a tunnel or an HTTPS reverse proxy (see Security above) to enable them. The app itself remains fully usable without the PWA layer.
78
+ ### Next — Learn
223
79
 
224
- ### Phone notifications (Web Push)
80
+ Not built yet, and only a direction: use the record each piece of work leaves behind to improve how the next one is done.
225
81
 
226
- Once installed, CommandMate can push a notification to your phone **while the app is closed** — an agent waiting for you, a verification gate that failed, a session that could not start.
82
+ More on each level on the [website](https://kewton.github.io/CommandMate/), and the long form in [How CommandMate works](./docs/en/user-guide/how-it-works.md).
227
83
 
228
- **It is off until you generate a VAPID key pair.** `commandmate init` generates one and writes `CM_VAPID_PUBLIC_KEY` / `CM_VAPID_PRIVATE_KEY` / `CM_VAPID_SUBJECT` into `.env`; when they are missing, the startup log and `commandmate status` say so in one line. iOS/iPadOS additionally require the Home Screen install above — a Safari tab cannot subscribe. Full setup, including the HTTPS requirement and what to do when nothing arrives: [Web App Guide -> Phone Notifications](docs/user-guide/webapp-guide.md#phone-notifications-web-push).
84
+ [^author]: The author runs a daily round of automatic fixes built from these parts and a scheduled start. That is the author's own setup, not a switch in the product.
229
85
 
230
86
  ---
231
87
 
232
- ## Browser Support
233
-
234
- The web UI is built with Tailwind CSS 4, which targets modern browsers and relies on
235
- `@property` and `color-mix()` for its color and theming layer. The minimum supported
236
- versions are:
88
+ ## Set up with your agent
237
89
 
238
- | Browser | Minimum version |
239
- |---------|-----------------|
240
- | Safari (macOS / iOS) | 16.4+ |
241
- | Chrome / Edge | 111+ |
242
- | Firefox | 128+ |
243
-
244
- Older browsers will load the app but render it with degraded colors and spacing.
245
- CommandMate is a local developer tool, so this matches the browsers a current
246
- development machine or phone will already have.
247
-
248
- ---
90
+ Paste this into the agent CLI you already use (Claude Code, Codex, …):
249
91
 
250
- ## How it works
251
-
252
- ```mermaid
253
- flowchart LR
254
- A["Browser / Phone"] -->|HTTP| B["CommandMate Server"]
255
- L["Lead session\n(any agent)"] -->|"send --contract / ask / wait --verify"| B
256
- B --> C["Session Manager"]
257
- G["Task Contract\n.commandmate/tasks/*.yaml"] --> C
258
- C -->|"spawn / attach"| D["tmux sessions\n(per worktree)"]
259
- D --> E["Agent CLI"]
260
- C <-->|"read / write"| F[("Local DB\n& State")]
261
- E --> H["Verification Gates\n.commandmate/verify.yaml"]
262
- H -->|"exit 0 / 20 / 21"| B
92
+ ```text
93
+ Read https://kewton.github.io/CommandMate/setup.md and help me set up CommandMate on this machine. Explain each step before you run it, and ask me before you install anything or open access from the internet.
263
94
  ```
264
95
 
265
- Each Git worktree gets its own tmux session, so multiple tasks run in parallel without interference.
266
- The contract goes in before the session starts; the gates run after it stops, and their exit code is the verdict.
96
+ ### Or by hand
267
97
 
268
- ---
269
-
270
- <details>
271
- <summary><strong>Quick Start (detailed)</strong></summary>
98
+ Requires macOS / Linux / Windows (WSL2), Node.js v22+, npm, git and tmux.
272
99
 
273
100
  ```bash
274
- # Try it in one command (guided setup)
275
- npx commandmate@latest
276
-
277
- # Or install globally — recommended if you plan to keep the server running
278
101
  npm install -g commandmate
279
102
  commandmate init
280
103
  commandmate start --daemon
281
104
  ```
282
105
 
283
- Always write `npx commandmate@latest`, not bare `npx commandmate`. If CommandMate is already
284
- installed globally, bare `npx commandmate` runs that existing binary without ever checking the
285
- registry, so you silently keep running an old version. `@latest` forces npx to resolve the newest
286
- release. This only affects `npx` — `npm install -g commandmate` always resolves from the registry.
287
-
288
- For anything beyond a first look, prefer the global install. `npx` unpacks CommandMate into the npm
289
- cache, and `commandmate start --daemon` runs the background server out of that cache directory — a
290
- later `npx` run or a cache clean can delete it out from under the running server.
291
-
292
- Running `commandmate` with no arguments walks you through the whole first run: it checks
293
- your dependencies, asks a few setup questions on first use, starts the server in the
294
- background, waits for it to come up, and opens the UI in your browser.
295
-
296
- Run it again later and it skips straight to opening the UI (or tells you the server is
297
- already running). Requires Node.js 22 or later.
298
-
299
- - Already have a `.env`? The setup questions are skipped.
300
- - Don't want the browser to open? Use `commandmate --no-open` (also skipped automatically
301
- on CI and headless sessions).
302
- - Otherwise, open http://127.0.0.1:3000 in your browser. CommandMate binds `127.0.0.1`
303
- by default, and `localhost` can resolve to `::1` (IPv6) first — an address CommandMate
304
- does not listen on, and another process may.
305
-
306
- See the [CLI Setup Guide](./docs/en/user-guide/cli-setup-guide.md) for details.
307
- For Windows users, see the [WSL2 Setup Guide](./docs/en/user-guide/wsl2-setup.md) — CommandMate depends on tmux, so it runs on Windows via WSL2 (native Windows is not supported).
308
-
309
- </details>
310
-
311
- <details>
312
- <summary><strong>CLI Commands</strong></summary>
313
-
314
- ### Basic
315
-
316
- | Command | Description |
317
- |---------|-------------|
318
- | `commandmate init` | Initial setup (interactive) |
319
- | `commandmate init --defaults` | Initial setup (default values) |
320
- | `commandmate init --force` | Overwrite existing configuration |
321
- | `commandmate start` | Start the server (foreground) |
322
- | `commandmate start --daemon` | Start in background |
323
- | `commandmate start --dev` | Start in development mode |
324
- | `commandmate start -p 3001` | Start on a specific port |
325
- | `commandmate stop` | Stop the server |
326
- | `commandmate stop --force` | Force stop (SIGKILL) |
327
- | `commandmate status` | Check status |
328
- | `commandmate update` | Update to the latest version |
329
-
330
- ### Worktree Parallel Development
331
-
332
- Run separate servers per Issue/worktree with automatic port allocation.
333
-
334
- | Command | Description |
335
- |---------|-------------|
336
- | `commandmate start --issue 123` | Start server for Issue #123 worktree |
337
- | `commandmate start --issue 123 --auto-port` | Start with automatic port allocation |
338
- | `commandmate start --issue 123 -p 3123` | Start on a specific port |
339
- | `commandmate stop --issue 123` | Stop server for Issue #123 |
340
- | `commandmate status --issue 123` | Check status for Issue #123 |
341
- | `commandmate status --all` | Check status for all servers |
342
-
343
- ### Agent Operations
344
-
345
- Operate agent sessions from the CLI. See the [CLI Operations Guide](./docs/en/user-guide/cli-operations-guide.md) for details.
346
-
347
- | Command | Description |
348
- |---------|-------------|
349
- | `commandmate ls` | List worktrees with status (idle/ready/running/waiting) |
350
- | `commandmate ls --json` | JSON output (for agent consumption) |
351
- | `commandmate ls --quiet` | IDs only, one per line (for piping) |
352
- | `commandmate ls --branch feature/` | Filter by branch name prefix |
353
- | `commandmate ls --id <prefix>` | Filter by worktree ID prefix |
354
- | `commandmate send <id> "message"` | Send a message to an agent |
355
- | `commandmate send <id> "msg" --auto-yes` | Send with auto-yes enabled |
356
- | `commandmate send <id> "msg" --instance codex` | Send to a specific agent instance |
357
- | `commandmate wait <id> --timeout 300` | Wait for agent completion (exit 0) or prompt (exit 10) |
358
- | `commandmate wait <id> --instance codex` | Wait on a specific agent instance |
359
- | `commandmate wait <id> --on-prompt human` | Wait, let human respond to prompts via browser UI |
360
- | `commandmate respond <id> "yes"` | Respond to an agent's prompt |
361
- | `commandmate capture <id>` | Get current terminal output |
362
- | `commandmate capture <id> --json` | Get output with status info as JSON |
363
- | `commandmate auto-yes <id> --enable` | Enable auto-yes (default 1h) |
364
- | `commandmate auto-yes <id> --disable` | Disable auto-yes |
365
-
366
- > **Name the target with `--instance`, on every command.** It is the only target
367
- > flag `wait` accepts — `wait --agent` fails with `unknown option`. Naming the
368
- > agent only on `send` leaves `wait` watching the worktree's *default* agent, so
369
- > a worktree cut for Codex silently waits for Claude Code. `--agent` still works
370
- > on `send`/`respond`/`capture`/`auto-yes` as the supplement for instances the
371
- > roster does not know (it is what `--register` needs). See the
372
- > [CLI Operations Guide](./docs/en/user-guide/cli-operations-guide.md).
373
-
374
- **Typical workflow:**
375
-
376
- ```bash
377
- WT=$(commandmate ls --branch feature/101 --quiet)
378
- commandmate send "$WT" "Implement Issue #101" --auto-yes
379
- commandmate wait "$WT" --timeout 600
380
- commandmate capture "$WT"
381
- ```
382
-
383
- **For coding agents (Claude Code, Codex, etc.):** Have your agent run these commands to get the full guide and workflow samples:
384
-
385
- ```bash
386
- commandmate docs --section agent-operations # Full guide
387
- commandmate docs --section agent-operations-samples # Workflow samples
388
- ```
389
-
390
- ### GitHub Issue Management
391
-
392
- Requires [gh CLI](https://cli.github.com/) to be installed.
393
-
394
- | Command | Description |
395
- |---------|-------------|
396
- | `commandmate issue create` | Create a new issue |
397
- | `commandmate issue create --bug` | Create with bug report template |
398
- | `commandmate issue create --feature` | Create with feature request template |
399
- | `commandmate issue create --question` | Create with question template |
400
- | `commandmate issue create --title <title>` | Specify issue title |
401
- | `commandmate issue create --body <body>` | Specify issue body |
402
- | `commandmate issue create --labels <labels>` | Add labels (comma-separated) |
403
- | `commandmate issue search <query>` | Search issues |
404
- | `commandmate issue list` | List issues |
405
-
406
- ### Documentation
407
-
408
- | Command | Description |
409
- |---------|-------------|
410
- | `commandmate docs` | Show documentation |
411
- | `commandmate docs -s <section>` | Show a specific section |
412
- | `commandmate docs -q <query>` | Search documentation |
413
- | `commandmate docs --all` | List all available sections |
414
-
415
- See `commandmate --help` for all options.
416
-
417
- </details>
418
-
419
- <details>
420
- <summary><strong>Update</strong></summary>
421
-
422
- If you installed globally (`npm install -g commandmate`), one command does everything —
423
- it stops the server, installs the latest version, restarts it, and checks that it came back up.
424
-
425
- ```bash
426
- # See whether an update is available (changes nothing)
427
- commandmate update --check
428
-
429
- # Update (asks for confirmation)
430
- commandmate update
431
-
432
- # Non-interactive environments (CI, scripts) require --yes
433
- commandmate update --yes
434
- ```
435
-
436
- **Your data is safe.** Database migrations run automatically the next time the server starts,
437
- so your worktrees, sessions, and settings carry over. There is no manual migration step.
438
-
439
- **Manual update (fallback)** — if `commandmate update` is unavailable:
440
-
441
- ```bash
442
- commandmate stop
443
- npm install -g commandmate@latest
444
- commandmate start --daemon
445
- ```
446
-
447
- Notes:
448
-
449
- - After updating, the server restarts using only your `.env`. If you had started it with flags
450
- such as `--auth` / `--cert` / `--key` / `--allowed-ips` / `--trust-proxy` / `--port`, start it
451
- again manually with those flags (`--auth` generates a new token on each start).
452
- - Worktree servers (`--issue`) are not stopped automatically. Stop them with
453
- `commandmate stop --issue <number>` **before** updating.
454
- - On permission errors (EACCES), don't re-run with `sudo` — fix your npm global directory
455
- permissions using the [CLI Setup Guide](./docs/en/user-guide/cli-setup-guide.md).
456
-
457
- See the [Deployment Guide](./docs/en/DEPLOYMENT.md) for exit codes and details.
458
-
459
- </details>
460
-
461
- <details>
462
- <summary><strong>Troubleshooting & FAQ</strong></summary>
463
-
464
- ### Claude CLI not found / path changed?
465
-
466
- If you switch between npm and standalone versions of Claude CLI, the path may change. CommandMate auto-detects the new path on the next session start. To set a custom path, add `CLAUDE_PATH=/path/to/claude` to `.env`.
467
-
468
- ### Port conflict?
469
-
470
- ```bash
471
- commandmate start -p 3001
472
- ```
473
-
474
- ### Session stuck or not responding?
475
-
476
- Look at the session with CommandMate's own commands — they resolve the tmux session name for you:
477
-
478
- ```bash
479
- # What every worktree's agent is doing, and the tmux session it runs in
480
- commandmate ls
481
- commandmate ls --json | jq -r '.[] | "\(.id)\t\(.tmuxSession)"'
482
-
483
- # Read the transcript WITHOUT attaching
484
- commandmate capture <worktree-id> --pane --tail 60
485
- commandmate capture <worktree-id> --pane --follow # follow a reply as it is generated
486
-
487
- # Attach this terminal (detach with Ctrl+b then d)
488
- commandmate attach <worktree-id>
489
- commandmate attach <worktree-id> --live # re-lay out to your terminal (claude only)
490
- ```
491
-
492
- **Why a bare `tmux attach` looks empty.** A CommandMate session is pinned to a 200x1000 canvas so
493
- `capture-pane` keeps enough history for status detection. Alternate-screen agents (claude / opencode /
494
- copilot) draw their transcript at the top of that canvas and their composer at the bottom, and tmux
495
- follows the cursor — so a normal-sized terminal sees the composer, blank rows, and not one line of the
496
- conversation. Nothing is broken. Read it with `capture --pane` above, with `prefix + g` while
497
- attached, or hand the window to your terminal with `attach --live`.
498
-
499
- From tmux itself, without attaching at all:
500
-
501
- ```bash
502
- tmux ls -F '#{session_name} #{@cm_status} #{@cm_tool}/#{@cm_instance}'
503
-
504
- # Kill a broken session (`=name:` is an exact match; quote it — zsh eats a bare `=`)
505
- tmux kill-session -t '=mcbd-claude-feature-123:'
506
- ```
507
-
508
- > **Note:** When attached, avoid typing directly into the session — this can interfere with CommandMate's session management. Use `Ctrl+b` then `d` to detach and operate through the CommandMate UI instead.
509
-
510
- ### Sessions fail when launching from within Claude Code?
511
-
512
- Claude Code sets `CLAUDECODE=1` to prevent nesting. CommandMate removes this automatically, but if it persists, run: `tmux set-environment -g -u CLAUDECODE`
513
-
514
- ### FAQ
515
-
516
- **Q: How do I use CommandMate from my phone?**
517
- A: Run `commandmate remote`. One command starts the server with authentication enabled, opens a tunnel, and prints a QR code in your terminal — scan it with your phone's camera and you are signed in. The pairing code inside that QR works **once** and expires after 10 minutes by default.
518
-
519
- ```bash
520
- commandmate remote # start + publish + pair (QR)
521
- commandmate remote status # provider, URL, expiry, pairing state
522
- commandmate remote stop # close the outside door (the server keeps running)
523
- ```
524
-
525
- It needs [`cloudflared`](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/) installed. Because a Cloudflare Quick Tunnel puts a `https://<random>.trycloudflare.com` address on the public internet, `commandmate remote` warns you and asks before creating it; in a non-interactive shell it refuses instead of assuming yes, so pass `--yes` when you mean it. If no provider is usable it stops with a dependency error rather than falling back to something more exposed. Your `CM_BIND` setting is left alone — the server stays bound to `127.0.0.1`, and `remote` only adds a door in front of it.
526
-
527
- **If you would rather not install `cloudflared`**, you can stay inside your LAN: run `commandmate init` and enable external access — this sets `CM_BIND=0.0.0.0` — then open `http://<your-PC-IP>:3000` from a phone on the same Wi-Fi. **Be aware of what that does: it serves CommandMate with no authentication and no encryption.** Anyone on that network can open the URL and drive your repositories, terminals and agents without being asked for anything. Use it only on a network you trust, never on shared or guest Wi-Fi, and set `CM_BIND` back to `127.0.0.1` when you are done.
106
+ - Open http://127.0.0.1:3000 — `127.0.0.1`, not `localhost`. The [CLI Setup Guide](./docs/en/user-guide/cli-setup-guide.md#accessing-via-browser) explains why.
107
+ - To try it without installing, run `npx commandmate@latest` (always with `@latest`). The [CLI Setup Guide](./docs/en/user-guide/cli-setup-guide.md) covers why, plus WSL2, updating and building from source.
108
+ - Phone notifications are set up by `commandmate init`. If they do not arrive, see [Web App Guide → Phone Notifications](./docs/en/user-guide/webapp-guide.md#phone-notifications-web-push).
109
+ - To reach it from your phone, run `commandmate remote`: it publishes the server through Tailscale or Cloudflare (asking before anything goes on the public internet) and prints a QR code to pair with.
528
110
 
529
- **Q: Can I access it from outside my home network?**
530
- A: Yes — `commandmate remote` (above) is the built-in way: the tunnel it creates is reachable from anywhere, and CommandMate answers it with token authentication on. The URL itself is public, so treat the pairing code, not the URL, as the thing that keeps other people out.
111
+ ### First commands
531
112
 
532
- If you would rather run the tunnel yourself, any of these work:
113
+ For you or for your agent, by level.
533
114
 
534
- - [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/) — free, requires Cloudflare account
535
- - [ngrok](https://ngrok.com/) — free tier available, easy setup
536
- - [Pinggy](https://pinggy.io/) — no sign-up required, simple SSH-based tunnel
115
+ **Level 1 — Parallel**
537
116
 
538
- Alternatively, a VPN or an authenticated reverse proxy (Basic Auth, OIDC, etc.) also works. **Do not** expose the server directly to the internet without authentication. See the [Security Guide](./docs/security-guide.md) for details.
117
+ | Command | What it does |
118
+ |---------|--------------|
119
+ | `commandmate status` | Is the server up, and is push configured |
120
+ | `commandmate remote` | Pair your phone with a QR code |
121
+ | `commandmate ls` | Every worktree and the state of its session |
122
+ | `commandmate send <id> "Implement Issue #101" --instance codex` | Send a message to one agent's session |
123
+ | `commandmate capture <id>` | Read the session's current output |
124
+ | `commandmate respond <id> "yes"` | Answer the prompt the agent is waiting on |
125
+ | `commandmate update` | Update a global install and restart the server |
539
126
 
540
- **Q: Does it work on iPhone / Android?**
541
- A: Yes. CommandMate's Web UI is responsive and works on any modern mobile browser (Safari, Chrome, etc.). No app install required.
127
+ **Level 2 — Delegate**
542
128
 
543
- **Q: Is tmux required?**
544
- A: CommandMate uses tmux internally to manage CLI sessions. You don't need to operate tmux directly — CommandMate handles it for you.
129
+ | Command | What it does |
130
+ |---------|--------------|
131
+ | `commandmate send <id> --contract .commandmate/tasks/issue-101.yaml --instance codex` | Hand over a task contract |
132
+ | `commandmate wait <id> --instance codex --verify` | Wait for the agent, then run your checks and report pass or fail |
545
133
 
546
- **Q: What about Claude Code's permissions?**
547
- A: Claude Code's own permission settings apply as-is. CommandMate does not expand permissions. See [Trust & Safety](./docs/en/TRUST_AND_SAFETY.md) for details.
134
+ **Level 3 — Manage**
548
135
 
549
- **Q: Can multiple people use it?**
550
- A: Currently designed for individual use. Simultaneous multi-user access is not supported.
136
+ | Command | What it does |
137
+ |---------|--------------|
138
+ | `commandmate skill list` | The official Catalog Skills you can install per worktree, including the one a PM agent runs on |
139
+ | `commandmate docs --section agent-operations` | The full command guide, for your agent to read |
551
140
 
552
- </details>
553
-
554
- <details>
555
- <summary><strong>Developer Setup</strong></summary>
556
-
557
- For contributors or those building a development environment:
558
-
559
- ```bash
560
- git clone https://github.com/Kewton/CommandMate.git
561
- cd CommandMate
562
- ./scripts/setup.sh # Auto-runs dependency check, env setup, build, and launch
563
- ```
564
-
565
- ### Manual Setup (for customization)
566
-
567
- ```bash
568
- git clone https://github.com/Kewton/CommandMate.git
569
- cd CommandMate
570
- ./scripts/preflight-check.sh # Dependency check
571
- npm install
572
- ./scripts/setup-env.sh # Interactive .env generation
573
- npm run db:init
574
- npm run build
575
- npm start
576
- ```
577
-
578
- > **Note**: `./scripts/*` scripts are only available in the development environment. For global installs (`npm install -g`), use the `commandmate` CLI.
579
-
580
- </details>
581
-
582
- ---
583
-
584
- <details>
585
- <summary><strong>With / Without CommandMate</strong></summary>
586
-
587
- The comparison that matters is not against other products; it is against the way of working.
588
-
589
- | Dimension | Vibe coding | Vibe Engineering with CommandMate |
590
- |---|---|---|
591
- | What "done" means | The agent says it's done | A verification run says so — exit 0 / 20 / 21 |
592
- | Scope of change | Whatever the agent touched | Declared in the contract, enforced by the scope gate |
593
- | Method | In someone's head | Installed as Skills from the Catalog (`cmate-task-contract`, `cmate-verify`, …) |
594
- | Evidence | A chat transcript | Commits, gate logs, `verify history`, `report metrics` |
595
- | Parallel work | Terminal tabs | One worktree and one contract per task |
596
- | When it stops | You notice, eventually | Waiting is surfaced: badge, toast, tab title, push |
597
- | Which agent | Locked to one | Claude Code, Codex, Gemini CLI, Copilot, OpenCode (1.x and V2), Antigravity, Command Code, local models |
598
-
599
- </details>
141
+ Every command and flag is in the [CLI Operations Guide](./docs/en/user-guide/cli-operations-guide.md); `commandmate --help` lists the options.
600
142
 
601
143
  ---
602
144
 
603
- ## Vibe Engineering workflow
604
-
605
- <a id="issue-driven-development"></a>
606
-
607
- The system is three things you can hand to any agent: the method, as installed Skills; the contract,
608
- declared before the work; the gates, which decide afterwards whether the work is done.
609
-
610
- ```
611
- Requirement → Contract → Agent runs (any CLI, per worktree) → Verified result
612
- ```
613
-
614
- ### 1. Install the method as Skills
615
-
616
- Skills come from the official Catalog
617
- ([Kewton/commandmate-skills](https://github.com/Kewton/commandmate-skills)) and install into the
618
- worktree you choose — from the web UI (`/skills`, or the Skills pane of a worktree) or from the CLI.
619
-
620
- ```bash
621
- commandmate skill list
622
- commandmate skill install cmate-task-contract --worktree <worktree-id> --version <version> --yes
623
- ```
624
-
625
- | Skill | What it covers |
626
- |-------|----------------|
627
- | `cmate-issue-authoring` | Turns a feature description into a set of implementable issues |
628
- | `cmate-issue-refinement` | Refines a vague issue into an implementable specification, read-only |
629
- | `cmate-task-contract` | Drafts `.commandmate/tasks/<name>.yaml` from an issue: goal, scope, gates |
630
- | `cmate-verify` | Declares the gates in `.commandmate/verify.yaml` and runs them for a real exit code |
631
- | `cmate-verify-advisor` | Proposes gate improvements from the verification history |
632
- | `cmate-worker-development` | The six steps a worker follows: read, investigate, plan, implement, verify, evidence |
633
- | `cmate-acceptance-test` | Checks the issue's acceptance criteria and returns Go / Conditional Go / No-Go |
634
- | `cmate-orchestrate` | Plans several issues in parallel, dispatches them with contracts, judges by exit code |
635
-
636
- The Catalog also publishes `cmate-repository-analysis`, `cmate-orchestrate-monitor`,
637
- `cmate-worktree-setup` and `cmate-worktree-cleanup`. See the
638
- [Skills guide](./docs/user-guide/skills.md) for the support matrix, the install roots, and the
639
- rollback story.
640
-
641
- ### 2. Declare the contract, then let the gates judge
642
-
643
- ```bash
644
- # .commandmate/tasks/issue-123.yaml declares goal, scope.allow / scope.deny and the gates to run
645
- commandmate send <worktree-id> --contract .commandmate/tasks/issue-123.yaml
646
- commandmate wait <worktree-id> --verify
647
- ```
648
-
649
- `--contract` supplies the message, so you do not pass one yourself. `wait --verify` runs the gates
650
- once the agent stops and returns the verdict as its exit code: **0** everything passed, **20** a gate
651
- failed, **21** the work-evidence gate found neither a commit nor an uncommitted change.
652
-
653
- The contract format is specified in [Task Contract](./docs/design/task-contract.md), the gate format
654
- in [Verification gates](./docs/design/verification-config.md) — both specifications are written in
655
- Japanese, but the YAML they specify is the same on either side.
656
-
657
- ### Read next
658
-
659
- | Document | What it gives you |
660
- |----------|-------------------|
661
- | [Concept](./docs/en/concept.md) | The Vision, the Mission, and how each implementation item maps to a feature |
662
- | [Tutorial](./docs/en/user-guide/tutorial.md) | Fork a sample repository and run one task through contract and verification in about fifteen minutes |
663
- | [Product Highlights](./docs/en/features/product-highlights.md) | A feature-by-feature tour of the product |
664
- | [CLI Operations Guide](./docs/en/user-guide/cli-operations-guide.md) | Every agent-facing command, in depth |
145
+ ## What it does not do
665
146
 
666
- > **Developing CommandMate itself?** The `/work-plan`, `/pm-auto-dev` and other slash commands under
667
- > `.claude/commands` belong to **this repository only** — they are not installed into yours, and the
668
- > portable equivalents are the Catalog Skills above. See the
669
- > [Commands guide](./docs/en/user-guide/commands-guide.md).
147
+ - It does not keep running in the background on its own. Each piece of work starts and ends, and nothing in your repository changes until you approve it.
148
+ - It does not read the code for you. Your checks catch what your tests and linters catch, and nothing more.
149
+ - Review by another agent is a step you add, not something CommandMate does for you.
150
+ - Approvals still come to a person. Auto Yes is opt-in, time-boxed, and stops on the patterns you set.
151
+ - It does not replace tmux, Git worktrees, your terminal, or your agent CLI. An OS reboot ends the processes; what survives is the record.
670
152
 
671
153
  ---
672
154
 
@@ -674,19 +156,22 @@ Japanese, but the YAML they specify is the same on either side.
674
156
 
675
157
  | Document | Description |
676
158
  |----------|-------------|
677
- | [CLI Setup Guide](./docs/en/user-guide/cli-setup-guide.md) | Installation and initial setup |
678
- | [Tutorial](./docs/en/user-guide/tutorial.md) | Fork a sample repository and go from contract to verified result in about fifteen minutes |
679
- | [Web App Guide](./docs/en/user-guide/webapp-guide.md) | Basic web app operations |
680
- | [Quick Start](./docs/en/user-guide/quick-start.md) | Using Claude Code commands |
681
- | [CLI Operations Guide](./docs/en/user-guide/cli-operations-guide.md) | Driving sessions from the CLI: execution contracts, verification gates, Skills, agent instances |
682
- | [Concept](./docs/en/concept.md) | The canonical Vision, Mission and core principle, and how each implementation item maps to a feature |
683
- | [Product Highlights](./docs/en/features/product-highlights.md) | A feature-by-feature tour of the product |
159
+ | [How CommandMate works](./docs/en/user-guide/how-it-works.md) | The long form, level by level: Parallel, Delegate (contracts, gates, Skills), Manage, Next; then Anywhere, supported agents, security, measured runs |
160
+ | [Tutorial](./docs/en/user-guide/tutorial.md) | Fork a sample repository and go from a task contract to a result that passed its checks in about fifteen minutes |
161
+ | [Quick Start](./docs/en/user-guide/quick-start.md) | The smallest hand-over-and-check flow on any agent, then a five-minute development flow |
162
+ | [CLI Setup Guide](./docs/en/user-guide/cli-setup-guide.md) | Installation, `npx`, initial setup, updating, building from source |
163
+ | [CLI Operations Guide](./docs/en/user-guide/cli-operations-guide.md) | Driving sessions from the CLI: task contracts, checks (verification gates), Skills, agent instances |
164
+ | [Web App Guide](./docs/en/user-guide/webapp-guide.md) | The web UI, phone access, app install (PWA), push notifications, supported browsers |
165
+ | [Troubleshooting & FAQ](./docs/en/user-guide/troubleshooting.md) | Stuck sessions, an empty-looking `tmux attach`, port conflicts, phone and remote access |
684
166
  | [Skills Guide](./docs/en/user-guide/skills.md) | Installing official Catalog Skills into a worktree |
167
+ | [OpenCode V2 guide](./docs/en/user-guide/opencode-v2.md) | Running OpenCode V2 next to OpenCode 1.x |
685
168
  | [Agent Event Hooks](./docs/en/user-guide/agent-event-hooks.md) | Structured agent events instead of terminal scraping |
169
+ | [Concept](./docs/en/concept.md) | The canonical Vision, Mission and core principle, and how each implementation item maps to a feature |
170
+ | [Product Highlights](./docs/en/features/product-highlights.md) | A feature-by-feature tour of the product |
171
+ | [Security Guide](./docs/en/security-guide.md) | No telemetry, no account; authentication and remote access |
172
+ | [Trust & Safety](./docs/en/TRUST_AND_SAFETY.md) | Security and permissions |
686
173
  | [Architecture](./docs/en/architecture.md) | System design |
687
174
  | [Deployment Guide](./docs/en/DEPLOYMENT.md) | Production environment setup |
688
- | [UI/UX Guide](./docs/en/UI_UX_GUIDE.md) | UI implementation details |
689
- | [Trust & Safety](./docs/en/TRUST_AND_SAFETY.md) | Security and permissions |
690
175
 
691
176
  ## Contributing
692
177