commandmate 0.43.0 → 0.44.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 (480) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +209 -209
  3. package/.next/app-path-routes-manifest.json +36 -36
  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.js.nft.json +1 -1
  9. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/versions/route.js.nft.json +1 -1
  11. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/update/route.js +2 -2
  14. package/.next/server/app/api/app/update/route.js.nft.json +1 -1
  15. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/app/update-check/route.js +1 -1
  17. package/.next/server/app/api/app/update-check/route.js.nft.json +1 -1
  18. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/capabilities/route.js +1 -1
  23. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  25. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  27. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
  29. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
  31. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
  33. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
  35. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
  37. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  39. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  40. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  42. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  43. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  45. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  46. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
  48. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/push/escalation/route.js +1 -1
  51. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  52. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  54. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/push/vapid/route.js +1 -1
  56. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  57. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  59. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  61. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  64. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  66. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  67. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/clone/route.js +1 -1
  69. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  70. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  72. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/repositories/restore/route.js +1 -1
  74. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  75. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/repositories/route.js +1 -1
  77. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  78. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/repositories/scan/route.js +1 -1
  80. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  81. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/repositories/sync/route.js +1 -1
  83. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  84. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
  86. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  88. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/settings/default-surface-mode/route.js.nft.json +1 -1
  90. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  92. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/skills/[id]/route.js +1 -1
  94. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  95. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/skills/installations/route.js +1 -1
  97. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  98. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/skills/operations/route.js +2 -2
  100. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
  101. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/skills/reindex/route.js +1 -1
  103. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
  104. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/skills/route.js +1 -1
  106. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  107. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  109. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  111. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
  113. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  115. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  117. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
  119. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
  121. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  124. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  126. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  129. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js.nft.json +1 -1
  131. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  133. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  135. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  138. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  141. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
  143. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  145. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  147. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  150. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  152. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  172. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  174. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  176. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  178. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  180. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  182. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  184. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  196. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js.nft.json +1 -1
  198. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  200. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  202. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  204. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  206. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  208. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +7 -7
  210. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  211. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  213. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  217. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
  219. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  221. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  223. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  226. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
  228. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  231. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  234. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  236. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  238. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  240. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  243. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  246. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
  248. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  249. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  252. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  255. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  258. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  261. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
  263. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
  264. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  266. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  267. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  269. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  270. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  272. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  275. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  277. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  278. package/.next/server/app/api/worktrees/[id]/terminal/route.js +103 -1
  279. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  280. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  281. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  282. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  283. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  284. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  285. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  286. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  287. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  289. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  290. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  291. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  293. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  294. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  295. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  296. package/.next/server/app/api/worktrees/[id]/verify/config/route.js.nft.json +1 -1
  297. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  298. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  299. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  300. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  301. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  302. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
  303. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  304. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
  305. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  306. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
  307. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  308. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  309. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  310. package/.next/server/app/api/worktrees/apply-default-agents/route.js.nft.json +1 -1
  311. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  312. package/.next/server/app/api/worktrees/route.js +1 -1
  313. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  314. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  315. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  316. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  317. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  318. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  319. package/.next/server/app/page_client-reference-manifest.js +1 -1
  320. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  321. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  322. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  323. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  324. package/.next/server/app/sessions/page.js +1 -1
  325. package/.next/server/app/sessions/page.js.nft.json +1 -1
  326. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  327. package/.next/server/app/skills/[skillId]/page.js +1 -1
  328. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  329. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  330. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  331. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  332. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
  333. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  334. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  335. package/.next/server/app/worktrees/[id]/page.js +3 -3
  336. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  337. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  338. package/.next/server/app/worktrees/[id]/terminal/page.js +1 -1
  339. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  340. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  341. package/.next/server/app-paths-manifest.json +36 -36
  342. package/.next/server/chunks/1501.js +3 -3
  343. package/.next/server/chunks/2119.js +1 -1
  344. package/.next/server/chunks/2283.js +15 -0
  345. package/.next/server/chunks/2328.js +1 -1
  346. package/.next/server/chunks/2445.js +1 -1
  347. package/.next/server/chunks/4207.js +1 -1
  348. package/.next/server/chunks/4802.js +1 -1
  349. package/.next/server/chunks/488.js +1 -0
  350. package/.next/server/chunks/5326.js +1 -1
  351. package/.next/server/chunks/5456.js +1 -1
  352. package/.next/server/chunks/611.js +1 -1
  353. package/.next/server/chunks/6130.js +1 -1
  354. package/.next/server/chunks/6401.js +1 -1
  355. package/.next/server/chunks/6474.js +14 -0
  356. package/.next/server/chunks/650.js +1 -0
  357. package/.next/server/chunks/6781.js +1 -1
  358. package/.next/server/chunks/{5742.js → 6927.js} +1 -1
  359. package/.next/server/chunks/7506.js +1 -1
  360. package/.next/server/chunks/7905.js +1 -1
  361. package/.next/server/chunks/8543.js +1 -1
  362. package/.next/server/chunks/8581.js +1 -1
  363. package/.next/server/chunks/8728.js +2 -2
  364. package/.next/server/chunks/8782.js +1 -0
  365. package/.next/server/chunks/8791.js +1 -1
  366. package/.next/server/chunks/8918.js +105 -3
  367. package/.next/server/chunks/9130.js +1 -1
  368. package/.next/server/chunks/9390.js +1 -1
  369. package/.next/server/chunks/967.js +1 -1
  370. package/.next/server/chunks/9731.js +3 -3
  371. package/.next/server/chunks/9882.js +2 -2
  372. package/.next/server/middleware-manifest.json +5 -5
  373. package/.next/server/pages/500.html +1 -1
  374. package/.next/server/pages-manifest.json +1 -1
  375. package/.next/server/server-reference-manifest.json +1 -1
  376. package/.next/server/src/middleware.js +2 -2
  377. package/.next/server/src/middleware.js.map +1 -1
  378. package/.next/static/chunks/{1642-767aed8e7c61ef7f.js → 1642-fb2e176aaadbd137.js} +1 -1
  379. package/.next/static/chunks/2053-85a974ddfe7498fe.js +1 -0
  380. package/.next/static/chunks/{2407-940df9b11fadafc6.js → 2407-340774f1a24f2b45.js} +1 -1
  381. package/.next/static/chunks/{2619-a305ad4810f1393a.js → 2619-04bc32f026a0d946.js} +1 -1
  382. package/.next/static/chunks/5521-c358c31f60e5e689.js +1 -0
  383. package/.next/static/chunks/591-0a45801e83f26f24.js +1 -0
  384. package/.next/static/chunks/{8165-3525fb42f1b4976e.js → 8165-3853772f6ae1299b.js} +1 -1
  385. package/.next/static/chunks/{8566-a6a7c70558927410.js → 8566-aeda747542072ace.js} +1 -1
  386. package/.next/static/chunks/8811-29eaa24237f48558.js +1 -0
  387. package/.next/static/chunks/{9619-22adf5367c4b7080.js → 9619-84aced0846cbe3ac.js} +1 -1
  388. package/.next/static/chunks/app/{layout-057c850cd0df978e.js → layout-0fc249fb7de75a27.js} +1 -1
  389. package/.next/static/chunks/app/sessions/page-55297155e7bf01b9.js +1 -0
  390. package/.next/static/chunks/app/skills/[skillId]/{page-74aac15286504ef4.js → page-9ee7a381636e60cb.js} +1 -1
  391. package/.next/static/chunks/app/worktrees/[id]/page-d2103e0c25be83c8.js +1 -0
  392. package/.next/static/chunks/app/worktrees/[id]/terminal/{page-c601f3b3ece6557e.js → page-373ea37b16d930c7.js} +1 -1
  393. package/.next/static/css/38070d879efa1371.css +1 -0
  394. package/.next/trace +13 -13
  395. package/README.md +58 -620
  396. package/dist/cli/commands/capture.d.ts.map +1 -1
  397. package/dist/cli/commands/capture.js +11 -1
  398. package/dist/cli/commands/docs.d.ts.map +1 -1
  399. package/dist/cli/commands/docs.js +5 -0
  400. package/dist/cli/commands/remote.d.ts +24 -1
  401. package/dist/cli/commands/remote.d.ts.map +1 -1
  402. package/dist/cli/commands/remote.js +155 -6
  403. package/dist/cli/commands/respond.d.ts.map +1 -1
  404. package/dist/cli/commands/respond.js +255 -112
  405. package/dist/cli/commands/stop.d.ts.map +1 -1
  406. package/dist/cli/commands/stop.js +53 -1
  407. package/dist/cli/commands/sync.js +3 -3
  408. package/dist/cli/docs/setup-guide.d.ts +14 -0
  409. package/dist/cli/docs/setup-guide.d.ts.map +1 -0
  410. package/dist/cli/docs/setup-guide.js +366 -0
  411. package/dist/cli/types/api-responses.d.ts +11 -0
  412. package/dist/cli/types/api-responses.d.ts.map +1 -1
  413. package/dist/cli/types/index.d.ts +2 -0
  414. package/dist/cli/types/index.d.ts.map +1 -1
  415. package/dist/cli/utils/daemon.d.ts +42 -2
  416. package/dist/cli/utils/daemon.d.ts.map +1 -1
  417. package/dist/cli/utils/daemon.js +222 -40
  418. package/dist/cli/utils/docs-reader.d.ts +6 -0
  419. package/dist/cli/utils/docs-reader.d.ts.map +1 -1
  420. package/dist/cli/utils/docs-reader.js +14 -13
  421. package/dist/cli/utils/npm-runner.d.ts +12 -0
  422. package/dist/cli/utils/npm-runner.d.ts.map +1 -1
  423. package/dist/cli/utils/npm-runner.js +36 -0
  424. package/dist/cli/utils/process-inspect.d.ts +55 -0
  425. package/dist/cli/utils/process-inspect.d.ts.map +1 -0
  426. package/dist/cli/utils/process-inspect.js +214 -0
  427. package/dist/cli/utils/remote-pairing.d.ts +68 -0
  428. package/dist/cli/utils/remote-pairing.d.ts.map +1 -0
  429. package/dist/cli/utils/remote-pairing.js +117 -0
  430. package/dist/cli/utils/server-identity.d.ts +50 -0
  431. package/dist/cli/utils/server-identity.d.ts.map +1 -0
  432. package/dist/cli/utils/server-identity.js +118 -0
  433. package/dist/cli/utils/server-ready.d.ts +13 -0
  434. package/dist/cli/utils/server-ready.d.ts.map +1 -1
  435. package/dist/cli/utils/server-ready.js +16 -0
  436. package/dist/lib/security/pairing-code.d.ts +2 -1
  437. package/dist/lib/security/pairing-code.d.ts.map +1 -1
  438. package/dist/server/locales/en/worktree.json +28 -6
  439. package/dist/server/locales/ja/worktree.json +28 -6
  440. package/dist/server/src/config/image-extensions.js +1 -0
  441. package/dist/server/src/lib/auto-yes-poller.js +22 -0
  442. package/dist/server/src/lib/cli-tools/command-code-plan-review.js +175 -0
  443. package/dist/server/src/lib/cli-tools/command-code.js +27 -2
  444. package/dist/server/src/lib/detection/cli-patterns.js +94 -1
  445. package/dist/server/src/lib/detection/tools/codex/detect.js +26 -0
  446. package/dist/server/src/lib/detection/tools/command-code/plan-review-state.js +75 -0
  447. package/dist/server/src/lib/hooks/sources/claude/transcript.js +33 -1
  448. package/dist/server/src/lib/session/claude-executor.js +2 -2
  449. package/dist/server/src/lib/session/claude-session.js +131 -15
  450. package/dist/server/src/lib/session/session-start-error.js +20 -0
  451. package/dist/server/src/lib/skills/agent-state-paths.js +39 -0
  452. package/dist/server/src/lib/skills/receipt-owned-paths.js +118 -0
  453. package/dist/server/src/lib/tmux/tmux.js +25 -0
  454. package/dist/server/src/lib/verification/env-clean-gate.js +195 -6
  455. package/dist/server/src/lib/verification/gate-runner.js +29 -2
  456. package/dist/server/src/lib/verification/scope-gate.js +58 -4
  457. package/docs/en/architecture.md +722 -0
  458. package/docs/en/user-guide/agents-guide.md +306 -0
  459. package/docs/en/user-guide/cli-setup-guide.md +676 -0
  460. package/docs/en/user-guide/cmate-schedules-guide.md +388 -0
  461. package/docs/en/user-guide/commands-guide.md +467 -0
  462. package/docs/en/user-guide/quick-start.md +231 -0
  463. package/docs/en/user-guide/webapp-guide.md +1020 -0
  464. package/docs/en/user-guide/workflow-examples.md +463 -0
  465. package/package.json +18 -7
  466. package/release-notes/0.44.0.json +82 -0
  467. package/.next/server/chunks/1990.js +0 -103
  468. package/.next/server/chunks/3707.js +0 -15
  469. package/.next/server/chunks/6491.js +0 -103
  470. package/.next/server/chunks/7004.js +0 -1
  471. package/.next/server/chunks/8673.js +0 -14
  472. package/.next/static/chunks/2039-117a361f795ddc4b.js +0 -1
  473. package/.next/static/chunks/2053-611dd27d42721b79.js +0 -1
  474. package/.next/static/chunks/3778-56f41fc2cecb8c43.js +0 -1
  475. package/.next/static/chunks/7705-1f58d4c03d991fcf.js +0 -1
  476. package/.next/static/chunks/app/sessions/page-1a8ba152bbcb9efb.js +0 -1
  477. package/.next/static/chunks/app/worktrees/[id]/page-eab0bf7564d3f9e2.js +0 -1
  478. package/.next/static/css/b3f433d52b8ed5c8.css +0 -1
  479. /package/.next/static/{BVkBYdceLRvMROqQIqeBx → wu7SUiHTirFcrpo5teyZ3}/_buildManifest.js +0 -0
  480. /package/.next/static/{BVkBYdceLRvMROqQIqeBx → wu7SUiHTirFcrpo5teyZ3}/_ssgManifest.js +0 -0
@@ -17,9 +17,13 @@
17
17
  * counted, and it is the single failure this gate must not reproduce.
18
18
  * 2. **Additions and removals are judged asymmetrically.** Everything that
19
19
  * existed at task start must still exist, whoever it belonged to — that is
20
- * the pkill (#1739) and `kill-server` (#1624) case — with one exception: a
21
- * tmux session the baseline recorded as *another CommandMate server's*
22
- * (#2627), which that server may close whenever it likes. New things are a
20
+ * the pkill (#1739) and `kill-server` (#1624) case — with three exceptions,
21
+ * each recorded in the baseline rather than guessed at verification: a
22
+ * tmux session of *another CommandMate server* (#2627) or of *this* server's
23
+ * worktree in *another repository* (#3043), which their owners close
24
+ * whenever they like, and a `.commandmate-demo-vitest-<pid>` directory
25
+ * whose pid was already dead (#3043), which the demo-video tests clean up
26
+ * by design. New things are a
23
27
  * violation *unless they are attributable to another worker*, because
24
28
  * parallel delegations legitimately start their own sessions and servers
25
29
  * inside each other's measurement windows — or unless they are the one
@@ -31,7 +35,7 @@
31
35
  * @module lib/verification/env-clean-gate
32
36
  */
33
37
  Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.ENV_CLEAN_GUIDANCE = exports.MAX_REPORTED_ENV_CHANGES = exports.readLivePidCwd = exports.REQUIRE_ENV_CLEAN_SOURCE_CONTRACT = exports.REQUIRE_ENV_CLEAN_SOURCE_CONFIG = void 0;
38
+ exports.ENV_CLEAN_GUIDANCE = exports.MAX_REPORTED_ENV_CHANGES = exports.isLivePid = exports.readLivePidCwd = exports.REQUIRE_ENV_CLEAN_SOURCE_CONTRACT = exports.REQUIRE_ENV_CLEAN_SOURCE_CONFIG = void 0;
35
39
  exports.resolveRequireEnvClean = resolveRequireEnvClean;
36
40
  exports.attributeSessionName = attributeSessionName;
37
41
  exports.attributeAnchor = attributeAnchor;
@@ -44,6 +48,10 @@ exports.currentSessionServer = currentSessionServer;
44
48
  exports.isOtherServerSession = isOtherServerSession;
45
49
  exports.recordOtherServerSessions = recordOtherServerSessions;
46
50
  exports.readOtherServerSessions = readOtherServerSessions;
51
+ exports.recordOtherRepositorySessions = recordOtherRepositorySessions;
52
+ exports.readOtherRepositorySessions = readOtherRepositorySessions;
53
+ exports.recordDeadDemoVitestEntries = recordDeadDemoVitestEntries;
54
+ exports.readDeadDemoVitestEntries = readDeadDemoVitestEntries;
47
55
  exports.diffEnvSnapshots = diffEnvSnapshots;
48
56
  exports.formatEnvCleanReport = formatEnvCleanReport;
49
57
  exports.envCleanNoBaseline = envCleanNoBaseline;
@@ -51,6 +59,8 @@ exports.evaluateEnvClean = evaluateEnvClean;
51
59
  const child_process_1 = require("child_process");
52
60
  const fs_1 = require("fs");
53
61
  const path_1 = require("path");
62
+ const db_instance_1 = require("../../lib/db/db-instance");
63
+ const worktree_db_1 = require("../../lib/db/worktree-db");
54
64
  const session_name_1 = require("../../lib/cli-tools/session-name");
55
65
  const types_1 = require("../../lib/cli-tools/types");
56
66
  const env_snapshot_1 = require("./env-snapshot");
@@ -189,6 +199,16 @@ exports.readLivePidCwd = readLivePidCwd;
189
199
  * entry whose owner can be established.
190
200
  */
191
201
  const DEMO_VITEST_HOME_ENTRY = /^\.commandmate-demo-vitest-([1-9]\d*)$/;
202
+ const isLivePid = (pid) => {
203
+ try {
204
+ process.kill(pid, 0);
205
+ return true;
206
+ }
207
+ catch (error) {
208
+ return error.code === 'EPERM';
209
+ }
210
+ };
211
+ exports.isLivePid = isLivePid;
192
212
  /** The pid a `.commandmate-demo-vitest-<pid>` name carries; null for any other name. */
193
213
  function demoVitestPid(name) {
194
214
  const match = DEMO_VITEST_HOME_ENTRY.exec(name);
@@ -252,11 +272,13 @@ function resolveTaskSessionName(task) {
252
272
  }
253
273
  }
254
274
  /** A freshly captured baseline, stamped with its task's own agent session. */
255
- function recordTaskSession(snapshot, task, server = currentSessionServer()) {
275
+ function recordTaskSession(snapshot, task, server = currentSessionServer(), isPidAlive = exports.isLivePid) {
256
276
  return {
257
277
  ...snapshot,
258
278
  taskSession: resolveTaskSessionName(task),
259
279
  otherServerSessions: recordOtherServerSessions(snapshot, server),
280
+ otherRepositorySessions: recordOtherRepositorySessions(snapshot, task.worktreeId, server),
281
+ deadDemoVitestEntries: recordDeadDemoVitestEntries(snapshot, isPidAlive),
260
282
  };
261
283
  }
262
284
  /**
@@ -292,6 +314,14 @@ function currentSessionServer() {
292
314
  return undefined;
293
315
  }
294
316
  },
317
+ repositoryOf: (worktreeId) => {
318
+ try {
319
+ return (0, worktree_db_1.getWorktreeById)((0, db_instance_1.getDbInstance)(), worktreeId)?.repositoryPath || null;
320
+ }
321
+ catch {
322
+ return null;
323
+ }
324
+ },
295
325
  };
296
326
  }
297
327
  /**
@@ -370,6 +400,131 @@ function readOtherServerSessions(baseline) {
370
400
  return new Set();
371
401
  return new Set(recorded.filter((name) => typeof name === 'string'));
372
402
  }
403
+ // =============================================================================
404
+ // This server's sessions of another repository (Issue #3043)
405
+ // =============================================================================
406
+ /**
407
+ * The repository a session of this server belongs to, or null when that
408
+ * cannot be pinned to exactly one.
409
+ *
410
+ * The worktree id and the instance suffix are not separable by name alone
411
+ * (`parseSessionName`), so every hyphen-boundary prefix of the tail is looked
412
+ * up; a prefix that is not a registered worktree answers null and is skipped.
413
+ * More than one repository among the answers is ambiguous and answers null —
414
+ * the strict direction, because null excuses nothing.
415
+ */
416
+ function sessionRepository(tail, server) {
417
+ const repositoryOf = server.repositoryOf;
418
+ if (!repositoryOf)
419
+ return null;
420
+ const repositories = new Set();
421
+ let end = tail.indexOf('-');
422
+ for (;;) {
423
+ const candidate = end === -1 ? tail : tail.slice(0, end);
424
+ const repository = repositoryOf(candidate);
425
+ if (repository)
426
+ repositories.add(repository);
427
+ if (end === -1)
428
+ break;
429
+ end = tail.indexOf('-', end + 1);
430
+ }
431
+ return repositories.size === 1 ? [...repositories][0] : null;
432
+ }
433
+ /**
434
+ * The baseline's `mcbd-*` sessions of *this* server whose worktree belongs to a
435
+ * repository other than the task's, at task creation.
436
+ *
437
+ * Why this is the second line removals are excused on — the design note for
438
+ * #3043, which extends the one for #2627 rather than contradicting it:
439
+ *
440
+ * - #1624, the case the removal rule exists for, was a worker killing a
441
+ * *sibling worktree of the same repository*. Those sessions stay guarded
442
+ * exactly as before: a same-repository removal is never excused, however
443
+ * plainly `other` its name is.
444
+ * - A worktree of another repository is driven by another orchestrate on the
445
+ * same server, which closes its workers' sessions when they finish (the
446
+ * 2026-09-29 and 2026-09-30 runs, `commandagent-issue-546/554` against
447
+ * `commandmate-issue-3023`). A delegation has no business in another
448
+ * repository, and the one it is judged for cannot tell that close from a
449
+ * kill any better than it could for another server's.
450
+ * - It uses the database the #2627 note rejected, but not for what that note
451
+ * rejected it for: there the other server's worktrees lived in a different
452
+ * database under colliding ids. Here the session carries *this* server's
453
+ * namespace, so *this* server's worktree table is the authority on it.
454
+ * - Recorded at task creation, like {@link recordOtherServerSessions}: the
455
+ * other orchestrate may remove its worktree — and with it the row — before
456
+ * this task is verified, and an unknown worktree excuses nothing.
457
+ *
458
+ * Still rejected: excusing every `other` removal (drops #1624), counting,
459
+ * timing and the worker's command log, for the reasons in the #2627 note; and
460
+ * a "needs review" verdict of its own, because the orchestrator's review of the
461
+ * same-repository case is exactly the one #1624 needs a hard failure for.
462
+ *
463
+ * @returns the names, or null when `server` has no namespace or cannot place
464
+ * the task's own worktree
465
+ */
466
+ function recordOtherRepositorySessions(snapshot, taskWorktreeId, server) {
467
+ if (server.namespace === null || !server.repositoryOf)
468
+ return null;
469
+ const ownRepository = server.repositoryOf(taskWorktreeId);
470
+ if (!ownRepository)
471
+ return null;
472
+ const sessions = snapshot.probes['tmux-sessions'];
473
+ if (!sessions || sessions.status !== 'ok')
474
+ return [];
475
+ return sessions.entries
476
+ .map((entry) => entry.key)
477
+ .filter((name) => {
478
+ if (attributeSessionName(name, taskWorktreeId) !== 'other')
479
+ return false;
480
+ if (isOtherServerSession(name, server))
481
+ return false;
482
+ const parsed = (0, session_name_1.parseSessionName)(name);
483
+ if (!parsed)
484
+ return false;
485
+ const repository = sessionRepository(parsed.rest, server);
486
+ return repository !== null && repository !== ownRepository;
487
+ });
488
+ }
489
+ /** The recorded other-repository sessions of a baseline; empty when none was recorded. */
490
+ function readOtherRepositorySessions(baseline) {
491
+ const recorded = baseline.otherRepositorySessions;
492
+ if (!Array.isArray(recorded))
493
+ return new Set();
494
+ return new Set(recorded.filter((name) => typeof name === 'string'));
495
+ }
496
+ // =============================================================================
497
+ // Stale demo-vitest directories (Issue #3043)
498
+ // =============================================================================
499
+ /**
500
+ * The baseline's `.commandmate-demo-vitest-<pid>` entries whose pid was already
501
+ * dead at task creation.
502
+ *
503
+ * Recorded then, because only then is it knowable: a removed directory's pid is
504
+ * always dead by verification, so the gate could not otherwise tell a leftover
505
+ * swept up by `env-scripts.test.ts` (#3025, run by any parallel worktree's unit
506
+ * gate) from a directory a live test run was still using. The latter — a pid
507
+ * alive at task start — stays a violation: a worker may have deleted a parallel
508
+ * test's working directory.
509
+ */
510
+ function recordDeadDemoVitestEntries(snapshot, isPidAlive = exports.isLivePid) {
511
+ const home = snapshot.probes['home-entries'];
512
+ if (!home || home.status !== 'ok')
513
+ return [];
514
+ return home.entries
515
+ .map((entry) => entry.key)
516
+ .filter((name) => {
517
+ const pid = demoVitestPid(name);
518
+ return pid !== null && !isPidAlive(pid);
519
+ });
520
+ }
521
+ /** The recorded dead-pid demo-vitest entries of a baseline; empty when none was recorded. */
522
+ function readDeadDemoVitestEntries(baseline) {
523
+ const recorded = baseline.deadDemoVitestEntries;
524
+ if (!Array.isArray(recorded))
525
+ return new Set();
526
+ return new Set(recorded.filter((name) => typeof name === 'string' && demoVitestPid(name) !== null));
527
+ }
373
528
  function toChange(entry, owner) {
374
529
  return { key: entry.key, detail: entry.detail, owner };
375
530
  }
@@ -384,6 +539,8 @@ function toChange(entry, owner) {
384
539
  function diffEnvSnapshots(baseline, final, context, options = {}) {
385
540
  const taskSession = readTaskSession(baseline);
386
541
  const otherServerSessions = readOtherServerSessions(baseline);
542
+ const otherRepositorySessions = readOtherRepositorySessions(baseline);
543
+ const deadDemoVitestEntries = readDeadDemoVitestEntries(baseline);
387
544
  const ignoredHomeEntries = new Set(options.ignoreHomeEntries ?? []);
388
545
  const resolvePidCwd = options.resolvePidCwd ?? exports.readLivePidCwd;
389
546
  const probes = env_snapshot_1.ENV_PROBE_IDS.map((probeId) => {
@@ -399,6 +556,8 @@ function diffEnvSnapshots(baseline, final, context, options = {}) {
399
556
  taskSessionAdded: [],
400
557
  removed: [],
401
558
  removedByOtherServer: [],
559
+ removedByOtherRepository: [],
560
+ removedStaleDemoVitest: [],
402
561
  ignoredByConfig: [],
403
562
  };
404
563
  }
@@ -412,6 +571,8 @@ function diffEnvSnapshots(baseline, final, context, options = {}) {
412
571
  taskSessionAdded: [],
413
572
  removed: [],
414
573
  removedByOtherServer: [],
574
+ removedByOtherRepository: [],
575
+ removedStaleDemoVitest: [],
415
576
  ignoredByConfig: [],
416
577
  };
417
578
  }
@@ -448,6 +609,8 @@ function diffEnvSnapshots(baseline, final, context, options = {}) {
448
609
  after.entries.some((entry) => beforeKeys.has(entry.key) || (taskSession !== null && entry.key === taskSession));
449
610
  const removed = [];
450
611
  const removedByOtherServer = [];
612
+ const removedByOtherRepository = [];
613
+ const removedStaleDemoVitest = [];
451
614
  for (const entry of before.entries) {
452
615
  if (afterKeys.has(entry.key))
453
616
  continue;
@@ -460,6 +623,14 @@ function diffEnvSnapshots(baseline, final, context, options = {}) {
460
623
  otherServerSessions.has(entry.key)) {
461
624
  removedByOtherServer.push(change);
462
625
  }
626
+ else if (tmuxServerSurvived &&
627
+ change.owner === 'other' &&
628
+ otherRepositorySessions.has(entry.key)) {
629
+ removedByOtherRepository.push(change);
630
+ }
631
+ else if (probeId === 'home-entries' && deadDemoVitestEntries.has(entry.key)) {
632
+ removedStaleDemoVitest.push(change);
633
+ }
463
634
  else {
464
635
  removed.push(change);
465
636
  }
@@ -473,6 +644,8 @@ function diffEnvSnapshots(baseline, final, context, options = {}) {
473
644
  taskSessionAdded,
474
645
  removed,
475
646
  removedByOtherServer,
647
+ removedByOtherRepository,
648
+ removedStaleDemoVitest,
476
649
  ignoredByConfig,
477
650
  };
478
651
  });
@@ -534,6 +707,14 @@ function formatTaskSessionChanges(changes) {
534
707
  function formatRemovedByOtherServer(changes) {
535
708
  return changes.map((change) => ` · - ${change.key} (ignored: another CommandMate server's session, recorded at task start)`);
536
709
  }
710
+ /** Removals excused as this server's sessions of another repository (#3043), one line each. */
711
+ function formatRemovedByOtherRepository(changes) {
712
+ return changes.map((change) => ` · - ${change.key} (ignored: a worktree of another repository on this server, recorded at task start)`);
713
+ }
714
+ /** Removals excused as leftover demo-vitest directories (#3043), one line each. */
715
+ function formatRemovedStaleDemoVitest(changes) {
716
+ return changes.map((change) => ` · - ${change.key} (ignored: its pid was already dead at task start — a leftover swept by the demo-video tests)`);
717
+ }
537
718
  function formatIgnoredByConfig(changes) {
538
719
  if (changes.length === 0)
539
720
  return [];
@@ -567,6 +748,8 @@ function formatEnvCleanReport(diff) {
567
748
  lines.push(` ${probe.probeId} clean (${label})${excused}`);
568
749
  lines.push(...formatTaskSessionChanges(probe.taskSessionAdded));
569
750
  lines.push(...formatRemovedByOtherServer(probe.removedByOtherServer));
751
+ lines.push(...formatRemovedByOtherRepository(probe.removedByOtherRepository));
752
+ lines.push(...formatRemovedStaleDemoVitest(probe.removedStaleDemoVitest));
570
753
  lines.push(...formatIgnoredByConfig(probe.ignoredByConfig));
571
754
  continue;
572
755
  }
@@ -575,6 +758,8 @@ function formatEnvCleanReport(diff) {
575
758
  lines.push(...formatChanges('-', probe.removed));
576
759
  lines.push(...formatTaskSessionChanges(probe.taskSessionAdded));
577
760
  lines.push(...formatRemovedByOtherServer(probe.removedByOtherServer));
761
+ lines.push(...formatRemovedByOtherRepository(probe.removedByOtherRepository));
762
+ lines.push(...formatRemovedStaleDemoVitest(probe.removedStaleDemoVitest));
578
763
  lines.push(...formatIgnoredByConfig(probe.ignoredByConfig));
579
764
  for (const excused of probe.ignoredAdded) {
580
765
  lines.push(` · ${excused.key} (ignored: belongs to another worktree)`);
@@ -599,7 +784,11 @@ function envCleanNoBaseline(taskId, sources) {
599
784
  return (`${verify_config_1.ENV_CLEAN_GATE_ID}: UNKNOWN — no baseline snapshot exists for ${who}, so nothing can be ` +
600
785
  'compared. This is NOT "the environment is unchanged": no measurement was taken. ' +
601
786
  'A baseline is recorded when the task is created (`send --contract`) and only while the ' +
602
- `gate is switched on (currently: ${how}). Switch it on, then re-send the task.`);
787
+ `gate is switched on (currently: ${how}). Switch it on, then re-send the task.` +
788
+ (taskId
789
+ ? ''
790
+ : ' To re-verify this worktree\'s contract task (this run is not attached to a task), run ' +
791
+ '`commandmate verify <worktree> --task <id>`.'));
603
792
  }
604
793
  /**
605
794
  * Judge the machine against the task's baseline.
@@ -50,6 +50,8 @@ const worktree_index_1 = require("./worktree-index");
50
50
  // exit-code table the pane prints, so the producer and the reader are one string.
51
51
  const run_verdict_vocabulary_1 = require("./run-verdict-vocabulary");
52
52
  const scope_gate_1 = require("./scope-gate");
53
+ const receipt_owned_paths_1 = require("../../lib/skills/receipt-owned-paths");
54
+ const agent_state_paths_1 = require("../../lib/skills/agent-state-paths");
53
55
  const verify_config_1 = require("./verify-config");
54
56
  Object.defineProperty(exports, "ENV_CLEAN_GATE_ID", { enumerable: true, get: function () { return verify_config_1.ENV_CLEAN_GATE_ID; } });
55
57
  Object.defineProperty(exports, "SCOPE_GATE_ID", { enumerable: true, get: function () { return verify_config_1.SCOPE_GATE_ID; } });
@@ -816,10 +818,35 @@ async function evaluateWorkEvidence(worktreePath, baseRef, requireCommit, agentE
816
818
  if (porcelain.code !== 0) {
817
819
  return done('error', "work-evidence: 'git status --porcelain' failed.", null);
818
820
  }
819
- const uncommittedCount = (0, scope_gate_1.parsePorcelainEntries)(porcelain.stdout).filter((paths) => paths.some((path) => !(0, scope_gate_1.isContractPath)(path))).length;
821
+ // Untracked files a recorded Skill install placed, untouched since, are
822
+ // CommandMate's and not the agent's (#3092): installing a Skill alone must
823
+ // still read as `not_started`. Anything the receipt does not vouch for —
824
+ // including a Skill file whose bytes changed — is counted as before.
825
+ const skillOwned = (0, receipt_owned_paths_1.collectSkillReceiptOwnedPaths)(worktreePath);
826
+ let skillInstalledCount = 0;
827
+ const agentStateExcluded = new Set();
828
+ const uncommittedCount = (0, scope_gate_1.parsePorcelainStatusEntries)(porcelain.stdout).filter((entry) => {
829
+ if (!entry.paths.some((path) => !(0, scope_gate_1.isContractPath)(path)))
830
+ return false;
831
+ if ((0, scope_gate_1.isSkillInstalledUntrackedEntry)(entry, skillOwned)) {
832
+ skillInstalledCount += 1;
833
+ return false;
834
+ }
835
+ if ((0, agent_state_paths_1.isAgentStateUntrackedEntry)(entry)) {
836
+ entry.paths.forEach((path) => agentStateExcluded.add(path));
837
+ return false;
838
+ }
839
+ return true;
840
+ }).length;
820
841
  const summary = `work-evidence: baseRef=${baseRef} commits=${commitCount} uncommitted=${uncommittedCount}` +
821
842
  (requireCommit.required ? ' requireCommit=true' : '') +
822
- ' (contract files excluded)';
843
+ ' (contract files excluded)' +
844
+ (skillInstalledCount > 0
845
+ ? ` (${skillInstalledCount} CommandMate-installed Skill file(s) excluded)`
846
+ : '') +
847
+ (agentStateExcluded.size > 0
848
+ ? ` (agent-managed state file(s) excluded: ${[...agentStateExcluded].sort().join(', ')})`
849
+ : '');
823
850
  if (!Number.isFinite(commitCount) || (commitCount === 0 && uncommittedCount === 0)) {
824
851
  // Issue #2043, and the ONLY place this gate's verdict differs from what it
825
852
  // was: git found nothing, so ask the agent. `null` — every tool but
@@ -33,10 +33,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
33
33
  exports.SCOPE_SKIP_NOT_REQUIRED = exports.SCOPE_SKIP_NO_CONTRACT = exports.ScopeMatcher = exports.CONTRACT_DIR_PREFIX = exports.SCOPE_EXEMPT_CONTRACT_PATH = exports.SCOPE_EXEMPT_ALWAYS_ALLOWED = exports.SCOPE_PATTERN_ARROW = exports.ALWAYS_ALLOWED_PREFIX = exports.SCOPE_ALLOW_GUIDANCE = exports.MAX_REPORTED_VIOLATIONS = void 0;
34
34
  exports.isContractPath = isContractPath;
35
35
  exports.parsePorcelainEntries = parsePorcelainEntries;
36
+ exports.parsePorcelainStatusEntries = parsePorcelainStatusEntries;
37
+ exports.isSkillInstalledUntrackedEntry = isSkillInstalledUntrackedEntry;
36
38
  exports.collectChangedPaths = collectChangedPaths;
37
39
  exports.scopeSkipDetachedContract = scopeSkipDetachedContract;
38
40
  exports.evaluateScope = evaluateScope;
39
41
  const child_process_1 = require("child_process");
42
+ const receipt_owned_paths_1 = require("../../lib/skills/receipt-owned-paths");
43
+ const agent_state_paths_1 = require("../../lib/skills/agent-state-paths");
40
44
  /**
41
45
  * Violations listed in `log_tail` before the rest are summarised as a count.
42
46
  *
@@ -311,6 +315,10 @@ function splitNul(output) {
311
315
  * as one change (#1580).
312
316
  */
313
317
  function parsePorcelainEntries(output) {
318
+ return parsePorcelainStatusEntries(output).map((entry) => entry.paths);
319
+ }
320
+ /** {@link parsePorcelainEntries}, keeping each record's status code (#3092). */
321
+ function parsePorcelainStatusEntries(output) {
314
322
  const fields = output.split('\0');
315
323
  const entries = [];
316
324
  let i = 0;
@@ -328,10 +336,22 @@ function parsePorcelainEntries(output) {
328
336
  if (original)
329
337
  paths.push(original);
330
338
  }
331
- entries.push(paths);
339
+ entries.push({ status: entry.slice(0, 2), paths });
332
340
  }
333
341
  return entries;
334
342
  }
343
+ /**
344
+ * Whether a status record is an untracked file a recorded Skill install placed
345
+ * there, untouched since (#3092).
346
+ *
347
+ * Untracked only: a tracked Skill file that changed is a change to what the
348
+ * branch carries, and stays counted. `owned` comes from
349
+ * `collectSkillReceiptOwnedPaths`, which already rejects files whose bytes no
350
+ * longer match the receipt.
351
+ */
352
+ function isSkillInstalledUntrackedEntry(entry, owned) {
353
+ return entry.status === '??' && entry.paths.every((path) => owned.has(path));
354
+ }
335
355
  /**
336
356
  * Every path this worktree changed relative to `baseRef`.
337
357
  *
@@ -368,10 +388,30 @@ async function collectChangedPaths(worktreePath, baseRef) {
368
388
  (status.stderr.trim() ? `\n${status.stderr.trim()}` : ''),
369
389
  };
370
390
  }
391
+ // Untracked files a recorded Skill install placed are CommandMate's, not the
392
+ // agent's (#3092). Dropped from the working-tree side only; a committed Skill
393
+ // file is still judged by the diff above.
394
+ const skillOwned = (0, receipt_owned_paths_1.collectSkillReceiptOwnedPaths)(worktreePath);
395
+ // Likewise the state files an agent CLI writes for itself (#3126), by an
396
+ // explicit declaration of paths; they are reported, not silently dropped.
397
+ const agentStateExcluded = new Set();
398
+ const workingTree = parsePorcelainStatusEntries(status.stdout).filter((entry) => {
399
+ if (isSkillInstalledUntrackedEntry(entry, skillOwned))
400
+ return false;
401
+ if ((0, agent_state_paths_1.isAgentStateUntrackedEntry)(entry)) {
402
+ entry.paths.forEach((path) => agentStateExcluded.add(path));
403
+ return false;
404
+ }
405
+ return true;
406
+ });
371
407
  // Both sides are filtered, not just the working tree: an orchestrator may
372
408
  // also have committed the contract as a setup commit (#1580).
373
- const paths = new Set([...splitNul(diff.stdout), ...parsePorcelainEntries(status.stdout).flat()].filter((path) => !isContractPath(path)));
374
- return { paths: [...paths].sort(), mergeBase: base };
409
+ const paths = new Set([...splitNul(diff.stdout), ...workingTree.flatMap((entry) => entry.paths)].filter((path) => !isContractPath(path)));
410
+ return {
411
+ paths: [...paths].sort(),
412
+ mergeBase: base,
413
+ agentStateExcluded: [...agentStateExcluded].sort(),
414
+ };
375
415
  }
376
416
  // =============================================================================
377
417
  // Gate evaluation
@@ -418,6 +458,18 @@ function formatAdmitted(admitted) {
418
458
  ...(remainder > 0 ? [` ... (+${remainder} more)`] : []),
419
459
  ];
420
460
  }
461
+ /** The `excluded:` section naming agent-managed state files left out (#3126). */
462
+ function formatAgentStateExcluded(excluded) {
463
+ if (excluded.length === 0)
464
+ return [];
465
+ const listed = excluded.slice(0, exports.MAX_REPORTED_VIOLATIONS);
466
+ const remainder = excluded.length - listed.length;
467
+ return [
468
+ 'excluded (agent-managed state files, not counted as change):',
469
+ ...listed.map((path) => ` ~ ${path}`),
470
+ ...(remainder > 0 ? [` ... (+${remainder} more)`] : []),
471
+ ];
472
+ }
421
473
  /**
422
474
  * Reasons the gate has nothing to judge, phrased for `log_tail`.
423
475
  *
@@ -440,7 +492,8 @@ exports.SCOPE_SKIP_NOT_REQUIRED = 'scope: the contract sets success.requireScope
440
492
  function scopeSkipDetachedContract(taskId, status) {
441
493
  return (`scope: task ${taskId} declares a scope for this worktree, but it is ${status} and ` +
442
494
  'this run was not attached to it, so its scope was NOT judged. ' +
443
- 'Name the task when starting the run (`wait --verify` does this automatically).');
495
+ '`wait --verify` attaches only to an in-flight task; to re-verify a finished task, run ' +
496
+ `\`commandmate verify <worktree> --task ${taskId}\`.`);
444
497
  }
445
498
  /**
446
499
  * Judge the worktree's changes against a contract's scope.
@@ -492,6 +545,7 @@ async function evaluateScope(worktreePath, scope, requireScopeClean, baseRef, co
492
545
  `allow: ${formatPatterns(scope.allow)}`,
493
546
  `deny: ${formatPatterns(scope.deny)}`,
494
547
  ...formatAdmitted(admitted),
548
+ ...formatAgentStateExcluded(changed.agentStateExcluded),
495
549
  ].join('\n');
496
550
  if (violations.length === 0) {
497
551
  // An empty change set passes: work-evidence is the gate that judges "nothing