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
@@ -6,8 +6,8 @@
6
6
  "/api/hooks/agent-event/route": "app/api/hooks/agent-event/route.js",
7
7
  "/api/hooks/claude-done/route": "app/api/hooks/claude-done/route.js",
8
8
  "/api/hooks/permission-request/route": "app/api/hooks/permission-request/route.js",
9
- "/api/ollama/models/route": "app/api/ollama/models/route.js",
10
9
  "/api/metrics/vibe/route": "app/api/metrics/vibe/route.js",
10
+ "/api/ollama/models/route": "app/api/ollama/models/route.js",
11
11
  "/api/relays/[relayId]/cancel/route": "app/api/relays/[relayId]/cancel/route.js",
12
12
  "/api/relays/route": "app/api/relays/route.js",
13
13
  "/api/repositories/[id]/route": "app/api/repositories/[id]/route.js",
@@ -22,17 +22,17 @@
22
22
  "/api/tasks/[taskId]/cancel/route": "app/api/tasks/[taskId]/cancel/route.js",
23
23
  "/api/tasks/[taskId]/route": "app/api/tasks/[taskId]/route.js",
24
24
  "/api/templates/[id]/route": "app/api/templates/[id]/route.js",
25
- "/api/templates/route": "app/api/templates/route.js",
26
25
  "/api/verification/runs/[runId]/route": "app/api/verification/runs/[runId]/route.js",
26
+ "/api/templates/route": "app/api/templates/route.js",
27
27
  "/api/verification/runs/route": "app/api/verification/runs/route.js",
28
+ "/api/worktrees/[id]/capture/route": "app/api/worktrees/[id]/capture/route.js",
28
29
  "/api/worktrees/[id]/auto-yes/route": "app/api/worktrees/[id]/auto-yes/route.js",
29
30
  "/api/worktrees/[id]/clear-composer/route": "app/api/worktrees/[id]/clear-composer/route.js",
30
- "/api/worktrees/[id]/capture/route": "app/api/worktrees/[id]/capture/route.js",
31
31
  "/api/worktrees/[id]/cli-reference/route": "app/api/worktrees/[id]/cli-reference/route.js",
32
32
  "/api/worktrees/[id]/cli-tool/route": "app/api/worktrees/[id]/cli-tool/route.js",
33
33
  "/api/worktrees/[id]/cmate/schedules/route": "app/api/worktrees/[id]/cmate/schedules/route.js",
34
- "/api/worktrees/[id]/current-output/route": "app/api/worktrees/[id]/current-output/route.js",
35
34
  "/api/worktrees/[id]/direct-input/route": "app/api/worktrees/[id]/direct-input/route.js",
35
+ "/api/worktrees/[id]/current-output/route": "app/api/worktrees/[id]/current-output/route.js",
36
36
  "/api/worktrees/[id]/env/route": "app/api/worktrees/[id]/env/route.js",
37
37
  "/api/worktrees/[id]/execution-logs/[logId]/route": "app/api/worktrees/[id]/execution-logs/[logId]/route.js",
38
38
  "/api/worktrees/[id]/execution-logs/route": "app/api/worktrees/[id]/execution-logs/route.js",
@@ -41,117 +41,117 @@
41
41
  "/api/worktrees/[id]/git/branch/delete/route": "app/api/worktrees/[id]/git/branch/delete/route.js",
42
42
  "/api/worktrees/[id]/git/branches/route": "app/api/worktrees/[id]/git/branches/route.js",
43
43
  "/api/worktrees/[id]/git/checkout/route": "app/api/worktrees/[id]/git/checkout/route.js",
44
- "/api/worktrees/[id]/git/commit/route": "app/api/worktrees/[id]/git/commit/route.js",
45
44
  "/api/worktrees/[id]/git/diff/route": "app/api/worktrees/[id]/git/diff/route.js",
45
+ "/api/worktrees/[id]/git/commit/route": "app/api/worktrees/[id]/git/commit/route.js",
46
46
  "/api/worktrees/[id]/git/fetch/route": "app/api/worktrees/[id]/git/fetch/route.js",
47
47
  "/api/worktrees/[id]/git/log/route": "app/api/worktrees/[id]/git/log/route.js",
48
- "/api/worktrees/[id]/git/push/route": "app/api/worktrees/[id]/git/push/route.js",
49
48
  "/api/worktrees/[id]/git/pull/route": "app/api/worktrees/[id]/git/pull/route.js",
49
+ "/api/worktrees/[id]/git/push/route": "app/api/worktrees/[id]/git/push/route.js",
50
50
  "/api/worktrees/[id]/git/reset/route": "app/api/worktrees/[id]/git/reset/route.js",
51
51
  "/api/worktrees/[id]/git/revert/route": "app/api/worktrees/[id]/git/revert/route.js",
52
52
  "/api/worktrees/[id]/git/show/[commitHash]/route": "app/api/worktrees/[id]/git/show/[commitHash]/route.js",
53
- "/api/worktrees/[id]/git/stage/route": "app/api/worktrees/[id]/git/stage/route.js",
54
53
  "/api/worktrees/[id]/git/staged/route": "app/api/worktrees/[id]/git/staged/route.js",
54
+ "/api/worktrees/[id]/git/stage/route": "app/api/worktrees/[id]/git/stage/route.js",
55
55
  "/api/worktrees/[id]/git/stash/[index]/route": "app/api/worktrees/[id]/git/stash/[index]/route.js",
56
56
  "/api/worktrees/[id]/git/stash/apply/route": "app/api/worktrees/[id]/git/stash/apply/route.js",
57
- "/api/worktrees/[id]/git/stash/pop/route": "app/api/worktrees/[id]/git/stash/pop/route.js",
58
57
  "/api/worktrees/[id]/git/stash/push/route": "app/api/worktrees/[id]/git/stash/push/route.js",
59
58
  "/api/worktrees/[id]/git/stash/route": "app/api/worktrees/[id]/git/stash/route.js",
59
+ "/api/worktrees/[id]/git/stash/pop/route": "app/api/worktrees/[id]/git/stash/pop/route.js",
60
+ "/api/worktrees/[id]/git/status/route": "app/api/worktrees/[id]/git/status/route.js",
60
61
  "/api/worktrees/[id]/git/unstage/route": "app/api/worktrees/[id]/git/unstage/route.js",
61
62
  "/api/worktrees/[id]/git/working-diff/route": "app/api/worktrees/[id]/git/working-diff/route.js",
62
- "/api/worktrees/[id]/git/status/route": "app/api/worktrees/[id]/git/status/route.js",
63
63
  "/api/worktrees/[id]/instances/notes/route": "app/api/worktrees/[id]/instances/notes/route.js",
64
64
  "/api/worktrees/[id]/instances/opencode/route": "app/api/worktrees/[id]/instances/opencode/route.js",
65
65
  "/api/worktrees/[id]/interrupt/route": "app/api/worktrees/[id]/interrupt/route.js",
66
66
  "/api/worktrees/[id]/kill-session/route": "app/api/worktrees/[id]/kill-session/route.js",
67
- "/api/worktrees/[id]/marp-render/route": "app/api/worktrees/[id]/marp-render/route.js",
68
67
  "/api/worktrees/[id]/memos/[memoId]/route": "app/api/worktrees/[id]/memos/[memoId]/route.js",
69
- "/api/worktrees/[id]/memos/route": "app/api/worktrees/[id]/memos/route.js",
68
+ "/api/worktrees/[id]/marp-render/route": "app/api/worktrees/[id]/marp-render/route.js",
70
69
  "/api/worktrees/[id]/messages/route": "app/api/worktrees/[id]/messages/route.js",
70
+ "/api/worktrees/[id]/memos/route": "app/api/worktrees/[id]/memos/route.js",
71
71
  "/api/worktrees/[id]/opencode/diff/route": "app/api/worktrees/[id]/opencode/diff/route.js",
72
72
  "/api/worktrees/[id]/opencode/session/route": "app/api/worktrees/[id]/opencode/session/route.js",
73
- "/api/worktrees/[id]/opencode/share/route": "app/api/worktrees/[id]/opencode/share/route.js",
74
73
  "/api/worktrees/[id]/respond/route": "app/api/worktrees/[id]/respond/route.js",
75
74
  "/api/worktrees/[id]/prompt-response/route": "app/api/worktrees/[id]/prompt-response/route.js",
76
- "/api/worktrees/[id]/route": "app/api/worktrees/[id]/route.js",
75
+ "/api/worktrees/[id]/opencode/share/route": "app/api/worktrees/[id]/opencode/share/route.js",
77
76
  "/api/worktrees/[id]/schedules/[scheduleId]/route": "app/api/worktrees/[id]/schedules/[scheduleId]/route.js",
77
+ "/api/worktrees/[id]/route": "app/api/worktrees/[id]/route.js",
78
78
  "/api/worktrees/[id]/schedules/active/route": "app/api/worktrees/[id]/schedules/active/route.js",
79
79
  "/api/worktrees/[id]/schedules/route": "app/api/worktrees/[id]/schedules/route.js",
80
- "/api/worktrees/[id]/search/route": "app/api/worktrees/[id]/search/route.js",
81
80
  "/api/worktrees/[id]/send/route": "app/api/worktrees/[id]/send/route.js",
82
- "/api/worktrees/[id]/special-keys/route": "app/api/worktrees/[id]/special-keys/route.js",
81
+ "/api/worktrees/[id]/search/route": "app/api/worktrees/[id]/search/route.js",
83
82
  "/api/worktrees/[id]/slash-commands/route": "app/api/worktrees/[id]/slash-commands/route.js",
83
+ "/api/worktrees/[id]/special-keys/route": "app/api/worktrees/[id]/special-keys/route.js",
84
84
  "/api/worktrees/[id]/tasks/route": "app/api/worktrees/[id]/tasks/route.js",
85
85
  "/api/worktrees/[id]/terminal/route": "app/api/worktrees/[id]/terminal/route.js",
86
86
  "/api/worktrees/[id]/timers/history/route": "app/api/worktrees/[id]/timers/history/route.js",
87
- "/api/worktrees/[id]/timers/route": "app/api/worktrees/[id]/timers/route.js",
88
87
  "/api/worktrees/[id]/todos/[todoId]/route": "app/api/worktrees/[id]/todos/[todoId]/route.js",
89
88
  "/api/worktrees/[id]/todos/route": "app/api/worktrees/[id]/todos/route.js",
89
+ "/api/worktrees/[id]/timers/route": "app/api/worktrees/[id]/timers/route.js",
90
90
  "/api/worktrees/[id]/tree/[...path]/route": "app/api/worktrees/[id]/tree/[...path]/route.js",
91
91
  "/api/worktrees/[id]/tree/route": "app/api/worktrees/[id]/tree/route.js",
92
+ "/api/worktrees/[id]/upload/[...path]/route": "app/api/worktrees/[id]/upload/[...path]/route.js",
92
93
  "/api/worktrees/[id]/verify/config/route": "app/api/worktrees/[id]/verify/config/route.js",
93
94
  "/api/worktrees/[id]/verify/route": "app/api/worktrees/[id]/verify/route.js",
94
- "/api/worktrees/[id]/upload/[...path]/route": "app/api/worktrees/[id]/upload/[...path]/route.js",
95
95
  "/api/worktrees/[id]/verify/runs/[runId]/cancel/route": "app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js",
96
96
  "/api/worktrees/[id]/verify/runs/[runId]/route": "app/api/worktrees/[id]/verify/runs/[runId]/route.js",
97
- "/api/worktrees/[id]/verify/runs/route": "app/api/worktrees/[id]/verify/runs/route.js",
98
97
  "/api/worktrees/[id]/viewed/route": "app/api/worktrees/[id]/viewed/route.js",
98
+ "/api/worktrees/[id]/verify/runs/route": "app/api/worktrees/[id]/verify/runs/route.js",
99
99
  "/apple-icon.png/route": "app/apple-icon.png/route.js",
100
- "/icon.png/route": "app/icon.png/route.js",
101
100
  "/icon1.png/route": "app/icon1.png/route.js",
101
+ "/icon.png/route": "app/icon.png/route.js",
102
102
  "/manifest.webmanifest/route": "app/manifest.webmanifest/route.js",
103
103
  "/icon2.png/route": "app/icon2.png/route.js",
104
104
  "/api/agents/versions/route": "app/api/agents/versions/route.js",
105
105
  "/api/app/release-notes/route": "app/api/app/release-notes/route.js",
106
106
  "/api/app/update-check/route": "app/api/app/update-check/route.js",
107
- "/api/capabilities/route": "app/api/capabilities/route.js",
108
107
  "/api/auth/status/route": "app/api/auth/status/route.js",
109
- "/api/daily-summary/status/route": "app/api/daily-summary/status/route.js",
108
+ "/api/app/update/route": "app/api/app/update/route.js",
109
+ "/api/capabilities/route": "app/api/capabilities/route.js",
110
110
  "/api/agents/update/route": "app/api/agents/update/route.js",
111
111
  "/api/external-apps/[id]/health/route": "app/api/external-apps/[id]/health/route.js",
112
- "/api/app/update/route": "app/api/app/update/route.js",
112
+ "/api/daily-summary/status/route": "app/api/daily-summary/status/route.js",
113
113
  "/api/external-apps/route": "app/api/external-apps/route.js",
114
114
  "/api/fs/recent-paths/route": "app/api/fs/recent-paths/route.js",
115
- "/api/fs/browse/route": "app/api/fs/browse/route.js",
116
115
  "/api/external-apps/[id]/route": "app/api/external-apps/[id]/route.js",
116
+ "/api/fs/browse/route": "app/api/fs/browse/route.js",
117
117
  "/api/push/escalation/route": "app/api/push/escalation/route.js",
118
118
  "/api/push/vapid/route": "app/api/push/vapid/route.js",
119
119
  "/api/push/subscriptions/route": "app/api/push/subscriptions/route.js",
120
120
  "/api/remote/pair/route": "app/api/remote/pair/route.js",
121
+ "/api/settings/default-surface-mode/route": "app/api/settings/default-surface-mode/route.js",
121
122
  "/api/repositories/validate-path/route": "app/api/repositories/validate-path/route.js",
122
123
  "/api/settings/default-agents/route": "app/api/settings/default-agents/route.js",
123
- "/api/settings/default-surface-mode/route": "app/api/settings/default-surface-mode/route.js",
124
- "/api/sidebar/group-order/route": "app/api/sidebar/group-order/route.js",
125
124
  "/api/skills/[id]/route": "app/api/skills/[id]/route.js",
125
+ "/api/sidebar/group-order/route": "app/api/sidebar/group-order/route.js",
126
126
  "/api/skills/reindex/route": "app/api/skills/reindex/route.js",
127
127
  "/api/skills/installations/route": "app/api/skills/installations/route.js",
128
128
  "/api/skills/route": "app/api/skills/route.js",
129
129
  "/api/skills/operations/route": "app/api/skills/operations/route.js",
130
- "/api/worktrees/[id]/logs/route": "app/api/worktrees/[id]/logs/route.js",
131
130
  "/api/worktrees/[id]/logs/[filename]/route": "app/api/worktrees/[id]/logs/[filename]/route.js",
131
+ "/api/worktrees/[id]/logs/route": "app/api/worktrees/[id]/logs/route.js",
132
132
  "/api/worktrees/[id]/resolve-target/route": "app/api/worktrees/[id]/resolve-target/route.js",
133
133
  "/api/worktrees/[id]/skills/[skillId]/git-workflow/route": "app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js",
134
- "/api/worktrees/[id]/skills/[skillId]/plan/route": "app/api/worktrees/[id]/skills/[skillId]/plan/route.js",
135
134
  "/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route": "app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js",
136
- "/api/worktrees/[id]/skills/[skillId]/update-plan/route": "app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js",
137
- "/api/worktrees/[id]/skills/[skillId]/install/route": "app/api/worktrees/[id]/skills/[skillId]/install/route.js",
135
+ "/api/worktrees/[id]/skills/[skillId]/plan/route": "app/api/worktrees/[id]/skills/[skillId]/plan/route.js",
138
136
  "/api/worktrees/[id]/skills/route": "app/api/worktrees/[id]/skills/route.js",
139
- "/api/worktrees/[id]/skills/[skillId]/uninstall/route": "app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js",
137
+ "/api/worktrees/[id]/skills/[skillId]/install/route": "app/api/worktrees/[id]/skills/[skillId]/install/route.js",
138
+ "/api/worktrees/[id]/skills/[skillId]/update-plan/route": "app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js",
140
139
  "/api/worktrees/apply-default-agents/route": "app/api/worktrees/apply-default-agents/route.js",
140
+ "/api/worktrees/[id]/skills/[skillId]/uninstall/route": "app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js",
141
141
  "/api/worktrees/route": "app/api/worktrees/route.js",
142
- "/proxy/[...path]/route": "app/proxy/[...path]/route.js",
143
142
  "/api/worktrees/[id]/skills/[skillId]/update/route": "app/api/worktrees/[id]/skills/[skillId]/update/route.js",
143
+ "/proxy/[...path]/route": "app/proxy/[...path]/route.js",
144
144
  "/login/page": "app/login/page.js",
145
145
  "/more/page": "app/more/page.js",
146
- "/page": "app/page.js",
147
146
  "/offline/page": "app/offline/page.js",
148
- "/repositories/page": "app/repositories/page.js",
147
+ "/page": "app/page.js",
148
+ "/sessions/page": "app/sessions/page.js",
149
149
  "/review/page": "app/review/page.js",
150
+ "/repositories/page": "app/repositories/page.js",
150
151
  "/skills/[skillId]/page": "app/skills/[skillId]/page.js",
151
- "/sessions/page": "app/sessions/page.js",
152
152
  "/skills/installed/page": "app/skills/installed/page.js",
153
153
  "/skills/page": "app/skills/page.js",
154
- "/worktrees/[id]/files/[...path]/page": "app/worktrees/[id]/files/[...path]/page.js",
154
+ "/worktrees/[id]/page": "app/worktrees/[id]/page.js",
155
155
  "/worktrees/[id]/terminal/page": "app/worktrees/[id]/terminal/page.js",
156
- "/worktrees/[id]/page": "app/worktrees/[id]/page.js"
156
+ "/worktrees/[id]/files/[...path]/page": "app/worktrees/[id]/files/[...path]/page.js"
157
157
  }
@@ -2,8 +2,8 @@
2
2
 
3
3
  ## タスク
4
4
  ${a.goal}`}},49987:(a,b,c)=>{c.d(b,{H:()=>l,Iq:()=>i,M:()=>k,xL:()=>o});var d=c(29021),e=c(21820),f=c(33873),g=c(55511);let h=(0,c(72626).h)("lib/verification/machine-lock"),i="locks",j="owner";function k(a,b){return(0,f.join)(b,`${a}.lock`)}function l(a=process.env){let b=a.CM_VERIFY_LOCK_ROOT;return b&&""!==b.trim()?b:(0,f.join)((0,e.homedir)(),".commandmate",i)}function m(a){try{let b=JSON.parse((0,d.readFileSync)((0,f.join)(a,j),"utf8"));if("number"!=typeof b.pid||"string"!=typeof b.token)return null;return{pid:b.pid,host:"string"==typeof b.host?b.host:"",token:b.token,acquiredAt:"number"==typeof b.acquiredAt?b.acquiredAt:0}}catch{return null}}function n(a){return a?`pid ${a.pid} on ${a.host||"unknown host"}`:null}async function o(a,b){let c=b.root??l(),i=b.pollIntervalMs??250,o=k(a,c),p=Date.now(),q=p+Math.max(0,b.timeoutMs),r=(0,g.randomUUID)();(0,d.mkdirSync)(c,{recursive:!0});let s=new Set;for(;;){if(b.shouldAbandon?.())return{acquired:!1,waitedMs:Date.now()-p,heldBy:n(m(o)),abandoned:!0};if(function(a,b){try{(0,d.mkdirSync)(a)}catch(a){if("EEXIST"===a.code)return!1;throw a}return(0,d.writeFileSync)((0,f.join)(a,j),JSON.stringify(b),{encoding:"utf8"}),!0}(o,{pid:process.pid,host:(0,e.hostname)(),token:r,acquiredAt:Date.now()}))return{acquired:!0,waitedMs:Date.now()-p,handle:{name:a,path:o,release:()=>{let a=m(o);if(!a||a.token===r)try{(0,d.rmSync)(o,{recursive:!0,force:!0})}catch(a){h.warn("machine-lock-release-failed",{lockPath:o,error:a instanceof Error?a.message:String(a)})}}}};let c=m(o);if(c&&!s.has(c.token)&&function(a){if(a.host!==(0,e.hostname)())return!1;try{return process.kill(a.pid,0),!1}catch(a){return"ESRCH"===a.code}}(c)){s.add(c.token);let a=m(o);if(a&&a.token===c.token)try{(0,d.rmSync)(o,{recursive:!0,force:!0}),h.warn("machine-lock-broken-stale",{lockPath:o,pid:c.pid})}catch{}continue}let g=Date.now();if(g>=q)return{acquired:!1,waitedMs:g-p,heldBy:n(c)};await function(a){return new Promise(b=>setTimeout(b,a))}(Math.min(i,q-g))}}},53604:(a,b,c)=>{c.d(b,{Cr:()=>k,L8:()=>i});var d=c(55511),e=c(29021),f=c(21820),g=c(33873);let h=(0,c(72626).h)("lib/verification/worktree-index"),i="worktree-index";function j(a,b){try{return(0,e.readFileSync)((0,g.join)(a,b),"utf8").trim()}catch{return null}}function k(a,b={}){let c=b.root??function(a=process.env){let b=a.CM_VERIFY_WORKTREE_INDEX_ROOT;return b&&""!==b.trim()?b:(0,g.join)((0,f.homedir)(),".commandmate",i)}();try{(0,e.mkdirSync)(c,{recursive:!0});let b=new Set;for(let d of(0,e.readdirSync)(c))if(/^\d+$/.test(d)){if(j(c,d)===a)return Number(d);b.add(Number(d))}for(let d=0;d<1024;d++)if(!b.has(d)&&function(a,b,c){try{return(0,e.writeFileSync)((0,g.join)(a,String(b)),`${c}
5
- `,{encoding:"utf8",flag:"wx"}),!0}catch(d){if("EEXIST"!==d.code)throw d;return j(a,String(b))===c}}(c,d,a))return d;h.warn("worktree-index-exhausted",{worktreeId:a,root:c})}catch(b){h.warn("worktree-index-unavailable",{worktreeId:a,root:c,error:b instanceof Error?b.message:String(b)})}return Number.parseInt((0,d.createHash)("sha256").update(a).digest("hex").slice(0,8),16)%1024}},74985:(a,b,c)=>{c.d(b,{Uq:()=>l,uT:()=>w,vQ:()=>q});var d=c(79646),e=c(29021),f=c(33873),g=c(40964),h=c(15194),i=c(77142),j=c(90384);let k=`options.requireEnvClean (${j.aT})`;function l(a,b){let c=[];return b?.options.requireEnvClean&&c.push(k),a&&!0===a.success.requireEnvClean&&c.push("success.requireEnvClean (task contract)"),{required:c.length>0,sources:c}}function m(a,b){if(!a)return"unattributed";let c=(0,f.resolve)(b),d=(0,f.resolve)(a);if(d===c||d.startsWith(c+f.sep))return"self";let e=(0,f.dirname)(c);return d!==e&&d.startsWith(e+f.sep)?"other":"unattributed"}let n=a=>{try{process.kill(a,0)}catch(a){if("EPERM"!==a.code)return null}if("linux"===process.platform)try{return(0,e.readlinkSync)(`/proc/${a}/cwd`)}catch{return null}try{let b=(0,d.execFileSync)("lsof",["-a","-d","cwd","-p",String(a),"-F","n"],{encoding:"utf8",timeout:5e3,stdio:["ignore","pipe","ignore"]}).split("\n").find(a=>a.startsWith("n"));return b?b.slice(1):null}catch{return null}},o=/^\.commandmate-demo-vitest-([1-9]\d*)$/;function p(a,b,c,d){switch(a){case"tmux-sessions":return function(a,b){let c=(0,g.NN)(a);if(!c)return"unattributed";let d=c.rest;return d===b||d.startsWith(`${b}-`)?"self":"other"}(b.key,c.worktreeId);case"listeners":return m(b.anchor,c.worktreePath);case"home-entries":return function(a,b,c=n){let d=function(a){let b=o.exec(a);if(!b)return null;let c=Number(b[1]);return Number.isSafeInteger(c)?c:null}(a);return null===d?"unattributed":"other"===m(c(d),b)?"other":"unattributed"}(b.key,c.worktreePath,d);default:return"unattributed"}}function q(a,b,c={namespace:(0,g.s4)(),legacyAliasOf:a=>{let b=(0,g.NN)(a);if(b)try{let c=(0,g.mf)(b.cliToolId,b.rest);return c!==a?c:void 0}catch{return}}}){return{...a,taskSession:function(a){if(!(0,h.hR)(a.cliToolId))return null;try{return(0,g.mf)(a.cliToolId,a.worktreeId,a.instanceId??void 0)}catch{return null}}(b),otherServerSessions:function(a,b){if(null===b.namespace)return null;let c=a.probes["tmux-sessions"];return c&&"ok"===c.status?c.entries.map(a=>a.key).filter(a=>(function(a,b){let c;if(null===b.namespace)return!1;let d=(0,g.NN)(a);if(!d)return!1;if(null!==d.namespace)return d.namespace!==b.namespace;try{c=(0,g.Ze)(b.namespace,d.cliToolId,d.rest)}catch{return!0}return b.legacyAliasOf(c)!==a})(a,b)):[]}(a,c)}}function r(a,b){return{key:a.key,detail:a.detail,owner:b}}function s(a,b){let c=b.slice(0,25),d=b.length-c.length,e=c.map(b=>{let c=b.detail?` ${b.detail}`:"";return` ${a} ${b.key}${c} [${b.owner}]`});return d>0&&e.push(` ... and ${d} more`),e}function t(a){return a.map(a=>{let b=a.detail?` ${a.detail}`:"";return` + ${a.key}${b} [task session, excused]`})}function u(a){return a.map(a=>` \xb7 - ${a.key} (ignored: another CommandMate server's session, recorded at task start)`)}function v(a){if(0===a.length)return[];let b=a.map(a=>a.key).join(", ");return[` ignored (options.envCleanIgnoreHomeEntries): ${b}`]}async function w(a){var b;let c,d=Date.now(),e=(a,b,c)=>({status:a,exitCode:c,startedAt:d,durationMs:Date.now()-d,logTail:b});if(!a.baseline)return e("error",function(a,b){let c=a?`task ${a}`:"this run",d=b.length>0?b.join(" and "):"nothing";return`${j.Q5}: UNKNOWN — no baseline snapshot exists for ${c}, so nothing can be compared. This is NOT "the environment is unchanged": no measurement was taken. A baseline is recorded when the task is created (\`send --contract\`) and only while the gate is switched on (currently: ${d}). Switch it on, then re-send the task.`}(a.taskId,a.sources),null);let f=a.capture??(()=>(0,i._8)({worktreeId:a.worktreeId}));try{c=await f()}catch(a){return e("error",`${j.Q5}: UNKNOWN — the current snapshot could not be taken: ${a instanceof Error?a.message:String(a)}`,null)}let g=function(a,b,c,d={}){let e=function(a){if(!("taskSession"in a))return;let b=a.taskSession;return"string"==typeof b&&""!==b?b:null}(a),f=function(a){let b=a.otherServerSessions;return Array.isArray(b)?new Set(b.filter(a=>"string"==typeof a)):new Set}(a),g=new Set(d.ignoreHomeEntries??[]),h=d.resolvePidCwd??n,j=i.I1.map(d=>{let i=a.probes[d],j=b.probes[d];if(!i||"ok"!==i.status)return{probeId:d,status:"unknown",reason:`baseline probe unavailable: ${i?.reason??"not recorded"}`,added:[],ignoredAdded:[],taskSessionAdded:[],removed:[],removedByOtherServer:[],ignoredByConfig:[]};if(!j||"ok"!==j.status)return{probeId:d,status:"unknown",reason:`current probe unavailable: ${j?.reason??"not recorded"}`,added:[],ignoredAdded:[],taskSessionAdded:[],removed:[],removedByOtherServer:[],ignoredByConfig:[]};let k=new Set(i.entries.map(a=>a.key)),l=new Set(j.entries.map(a=>a.key)),m=a=>"home-entries"===d&&g.has(a.key),n=[],o=[],q=[],s=[];for(let a of j.entries){if(k.has(a.key))continue;let b=p(d,a,c,h);if(m(a)){s.push(r(a,b));continue}if("tmux-sessions"===d&&e&&a.key===e){q.push(r(a,b));continue}("other"===b?o:n).push(r(a,b))}let t="tmux-sessions"===d&&j.entries.some(a=>k.has(a.key)||null!==e&&a.key===e),u=[],v=[];for(let a of i.entries){if(l.has(a.key))continue;let b=r(a,p(d,a,c,h));m(a)?s.push(b):t&&"self"!==b.owner&&f.has(a.key)?v.push(b):u.push(b)}return{probeId:d,status:n.length+u.length>0?"violated":"clean",reason:null,added:n,ignoredAdded:o,taskSessionAdded:q,removed:u,removedByOtherServer:v,ignoredByConfig:s}});return{status:j.some(a=>"violated"===a.status)?"violated":j.some(a=>"unknown"===a.status)?"unknown":"clean",taskSession:e,probes:j}}(a.baseline,c,a,{ignoreHomeEntries:a.ignoreHomeEntries,resolvePidCwd:a.resolvePidCwd}),h=`${j.Q5}: baseline=${new Date(a.baseline.capturedAt).toISOString()} status=${g.status} task-session=${void 0===(b=g.taskSession)?"unrecorded (baseline predates #2472; nothing excused)":null===b?"unresolved (nothing excused)":b}`,k=`${h}
6
- ${function(a){let b=[];for(let c of a.probes){let a=i.J6[c.probeId];if("unknown"===c.status){b.push(` ${c.probeId} UNKNOWN (${a}): ${c.reason??"no reason recorded"}`);continue}if("clean"===c.status){let d=c.ignoredAdded.length>0?` (${c.ignoredAdded.length} addition(s) attributed to another worktree)`:"";b.push(` ${c.probeId} clean (${a})${d}`),b.push(...t(c.taskSessionAdded)),b.push(...u(c.removedByOtherServer)),b.push(...v(c.ignoredByConfig));continue}for(let d of(b.push(` ${c.probeId} VIOLATED (${a}): +${c.added.length} -${c.removed.length}`),b.push(...s("+",c.added)),b.push(...s("-",c.removed)),b.push(...t(c.taskSessionAdded)),b.push(...u(c.removedByOtherServer)),b.push(...v(c.ignoredByConfig)),c.ignoredAdded))b.push(` \xb7 ${d.key} (ignored: belongs to another worktree)`)}return b.join("\n")}(g)}`;return"clean"===g.status?e("passed",k,0):"unknown"===g.status?e("error",`${k}
7
- UNKNOWN is not a pass: at least one probe could not be compared, so the environment was not measured.`,null):e("failed",`${k}
5
+ `,{encoding:"utf8",flag:"wx"}),!0}catch(d){if("EEXIST"!==d.code)throw d;return j(a,String(b))===c}}(c,d,a))return d;h.warn("worktree-index-exhausted",{worktreeId:a,root:c})}catch(b){h.warn("worktree-index-unavailable",{worktreeId:a,root:c,error:b instanceof Error?b.message:String(b)})}return Number.parseInt((0,d.createHash)("sha256").update(a).digest("hex").slice(0,8),16)%1024}},74985:(a,b,c)=>{c.d(b,{Uq:()=>n,uT:()=>E,vQ:()=>v});var d=c(79646),e=c(29021),f=c(33873),g=c(88807),h=c(73753),i=c(40964),j=c(15194),k=c(77142),l=c(90384);let m=`options.requireEnvClean (${l.aT})`;function n(a,b){let c=[];return b?.options.requireEnvClean&&c.push(m),a&&!0===a.success.requireEnvClean&&c.push("success.requireEnvClean (task contract)"),{required:c.length>0,sources:c}}function o(a,b){let c=(0,i.NN)(a);if(!c)return"unattributed";let d=c.rest;return d===b||d.startsWith(`${b}-`)?"self":"other"}function p(a,b){if(!a)return"unattributed";let c=(0,f.resolve)(b),d=(0,f.resolve)(a);if(d===c||d.startsWith(c+f.sep))return"self";let e=(0,f.dirname)(c);return d!==e&&d.startsWith(e+f.sep)?"other":"unattributed"}let q=a=>{try{process.kill(a,0)}catch(a){if("EPERM"!==a.code)return null}if("linux"===process.platform)try{return(0,e.readlinkSync)(`/proc/${a}/cwd`)}catch{return null}try{let b=(0,d.execFileSync)("lsof",["-a","-d","cwd","-p",String(a),"-F","n"],{encoding:"utf8",timeout:5e3,stdio:["ignore","pipe","ignore"]}).split("\n").find(a=>a.startsWith("n"));return b?b.slice(1):null}catch{return null}},r=/^\.commandmate-demo-vitest-([1-9]\d*)$/,s=a=>{try{return process.kill(a,0),!0}catch(a){return"EPERM"===a.code}};function t(a){let b=r.exec(a);if(!b)return null;let c=Number(b[1]);return Number.isSafeInteger(c)?c:null}function u(a,b,c,d){switch(a){case"tmux-sessions":return o(b.key,c.worktreeId);case"listeners":return p(b.anchor,c.worktreePath);case"home-entries":return function(a,b,c=q){let d=t(a);return null===d?"unattributed":"other"===p(c(d),b)?"other":"unattributed"}(b.key,c.worktreePath,d);default:return"unattributed"}}function v(a,b,c={namespace:(0,i.s4)(),legacyAliasOf:a=>{let b=(0,i.NN)(a);if(b)try{let c=(0,i.mf)(b.cliToolId,b.rest);return c!==a?c:void 0}catch{return}},repositoryOf:a=>{try{return(0,h.getWorktreeById)((0,g.getDbInstance)(),a)?.repositoryPath||null}catch{return null}}},d=s){return{...a,taskSession:function(a){if(!(0,j.hR)(a.cliToolId))return null;try{return(0,i.mf)(a.cliToolId,a.worktreeId,a.instanceId??void 0)}catch{return null}}(b),otherServerSessions:function(a,b){if(null===b.namespace)return null;let c=a.probes["tmux-sessions"];return c&&"ok"===c.status?c.entries.map(a=>a.key).filter(a=>w(a,b)):[]}(a,c),otherRepositorySessions:function(a,b,c){if(null===c.namespace||!c.repositoryOf)return null;let d=c.repositoryOf(b);if(!d)return null;let e=a.probes["tmux-sessions"];return e&&"ok"===e.status?e.entries.map(a=>a.key).filter(a=>{if("other"!==o(a,b)||w(a,c))return!1;let e=(0,i.NN)(a);if(!e)return!1;let f=function(a,b){let c=b.repositoryOf;if(!c)return null;let d=new Set,e=a.indexOf("-");for(;;){let b=c(-1===e?a:a.slice(0,e));if(b&&d.add(b),-1===e)break;e=a.indexOf("-",e+1)}return 1===d.size?[...d][0]:null}(e.rest,c);return null!==f&&f!==d}):[]}(a,b.worktreeId,c),deadDemoVitestEntries:function(a,b=s){let c=a.probes["home-entries"];return c&&"ok"===c.status?c.entries.map(a=>a.key).filter(a=>{let c=t(a);return null!==c&&!b(c)}):[]}(a,d)}}function w(a,b){let c;if(null===b.namespace)return!1;let d=(0,i.NN)(a);if(!d)return!1;if(null!==d.namespace)return d.namespace!==b.namespace;try{c=(0,i.Ze)(b.namespace,d.cliToolId,d.rest)}catch{return!0}return b.legacyAliasOf(c)!==a}function x(a,b){return{key:a.key,detail:a.detail,owner:b}}function y(a,b){let c=b.slice(0,25),d=b.length-c.length,e=c.map(b=>{let c=b.detail?` ${b.detail}`:"";return` ${a} ${b.key}${c} [${b.owner}]`});return d>0&&e.push(` ... and ${d} more`),e}function z(a){return a.map(a=>{let b=a.detail?` ${a.detail}`:"";return` + ${a.key}${b} [task session, excused]`})}function A(a){return a.map(a=>` \xb7 - ${a.key} (ignored: another CommandMate server's session, recorded at task start)`)}function B(a){return a.map(a=>` \xb7 - ${a.key} (ignored: a worktree of another repository on this server, recorded at task start)`)}function C(a){return a.map(a=>` \xb7 - ${a.key} (ignored: its pid was already dead at task start — a leftover swept by the demo-video tests)`)}function D(a){if(0===a.length)return[];let b=a.map(a=>a.key).join(", ");return[` ignored (options.envCleanIgnoreHomeEntries): ${b}`]}async function E(a){var b;let c,d=Date.now(),e=(a,b,c)=>({status:a,exitCode:c,startedAt:d,durationMs:Date.now()-d,logTail:b});if(!a.baseline)return e("error",function(a,b){let c=a?`task ${a}`:"this run",d=b.length>0?b.join(" and "):"nothing";return`${l.Q5}: UNKNOWN — no baseline snapshot exists for ${c}, so nothing can be compared. This is NOT "the environment is unchanged": no measurement was taken. A baseline is recorded when the task is created (\`send --contract\`) and only while the gate is switched on (currently: ${d}). Switch it on, then re-send the task.`+(a?"":" To re-verify this worktree's contract task (this run is not attached to a task), run `commandmate verify <worktree> --task <id>`.")}(a.taskId,a.sources),null);let f=a.capture??(()=>(0,k._8)({worktreeId:a.worktreeId}));try{c=await f()}catch(a){return e("error",`${l.Q5}: UNKNOWN — the current snapshot could not be taken: ${a instanceof Error?a.message:String(a)}`,null)}let g=function(a,b,c,d={}){let e=function(a){if(!("taskSession"in a))return;let b=a.taskSession;return"string"==typeof b&&""!==b?b:null}(a),f=function(a){let b=a.otherServerSessions;return Array.isArray(b)?new Set(b.filter(a=>"string"==typeof a)):new Set}(a),g=function(a){let b=a.otherRepositorySessions;return Array.isArray(b)?new Set(b.filter(a=>"string"==typeof a)):new Set}(a),h=function(a){let b=a.deadDemoVitestEntries;return Array.isArray(b)?new Set(b.filter(a=>"string"==typeof a&&null!==t(a))):new Set}(a),i=new Set(d.ignoreHomeEntries??[]),j=d.resolvePidCwd??q,l=k.I1.map(d=>{let k=a.probes[d],l=b.probes[d];if(!k||"ok"!==k.status)return{probeId:d,status:"unknown",reason:`baseline probe unavailable: ${k?.reason??"not recorded"}`,added:[],ignoredAdded:[],taskSessionAdded:[],removed:[],removedByOtherServer:[],removedByOtherRepository:[],removedStaleDemoVitest:[],ignoredByConfig:[]};if(!l||"ok"!==l.status)return{probeId:d,status:"unknown",reason:`current probe unavailable: ${l?.reason??"not recorded"}`,added:[],ignoredAdded:[],taskSessionAdded:[],removed:[],removedByOtherServer:[],removedByOtherRepository:[],removedStaleDemoVitest:[],ignoredByConfig:[]};let m=new Set(k.entries.map(a=>a.key)),n=new Set(l.entries.map(a=>a.key)),o=a=>"home-entries"===d&&i.has(a.key),p=[],q=[],r=[],s=[];for(let a of l.entries){if(m.has(a.key))continue;let b=u(d,a,c,j);if(o(a)){s.push(x(a,b));continue}if("tmux-sessions"===d&&e&&a.key===e){r.push(x(a,b));continue}("other"===b?q:p).push(x(a,b))}let t="tmux-sessions"===d&&l.entries.some(a=>m.has(a.key)||null!==e&&a.key===e),v=[],w=[],y=[],z=[];for(let a of k.entries){if(n.has(a.key))continue;let b=x(a,u(d,a,c,j));o(a)?s.push(b):t&&"self"!==b.owner&&f.has(a.key)?w.push(b):t&&"other"===b.owner&&g.has(a.key)?y.push(b):"home-entries"===d&&h.has(a.key)?z.push(b):v.push(b)}return{probeId:d,status:p.length+v.length>0?"violated":"clean",reason:null,added:p,ignoredAdded:q,taskSessionAdded:r,removed:v,removedByOtherServer:w,removedByOtherRepository:y,removedStaleDemoVitest:z,ignoredByConfig:s}});return{status:l.some(a=>"violated"===a.status)?"violated":l.some(a=>"unknown"===a.status)?"unknown":"clean",taskSession:e,probes:l}}(a.baseline,c,a,{ignoreHomeEntries:a.ignoreHomeEntries,resolvePidCwd:a.resolvePidCwd}),h=`${l.Q5}: baseline=${new Date(a.baseline.capturedAt).toISOString()} status=${g.status} task-session=${void 0===(b=g.taskSession)?"unrecorded (baseline predates #2472; nothing excused)":null===b?"unresolved (nothing excused)":b}`,i=`${h}
6
+ ${function(a){let b=[];for(let c of a.probes){let a=k.J6[c.probeId];if("unknown"===c.status){b.push(` ${c.probeId} UNKNOWN (${a}): ${c.reason??"no reason recorded"}`);continue}if("clean"===c.status){let d=c.ignoredAdded.length>0?` (${c.ignoredAdded.length} addition(s) attributed to another worktree)`:"";b.push(` ${c.probeId} clean (${a})${d}`),b.push(...z(c.taskSessionAdded)),b.push(...A(c.removedByOtherServer)),b.push(...B(c.removedByOtherRepository)),b.push(...C(c.removedStaleDemoVitest)),b.push(...D(c.ignoredByConfig));continue}for(let d of(b.push(` ${c.probeId} VIOLATED (${a}): +${c.added.length} -${c.removed.length}`),b.push(...y("+",c.added)),b.push(...y("-",c.removed)),b.push(...z(c.taskSessionAdded)),b.push(...A(c.removedByOtherServer)),b.push(...B(c.removedByOtherRepository)),b.push(...C(c.removedStaleDemoVitest)),b.push(...D(c.ignoredByConfig)),c.ignoredAdded))b.push(` \xb7 ${d.key} (ignored: belongs to another worktree)`)}return b.join("\n")}(g)}`;return"clean"===g.status?e("passed",i,0):"unknown"===g.status?e("error",`${i}
7
+ UNKNOWN is not a pass: at least one probe could not be compared, so the environment was not measured.`,null):e("failed",`${i}
8
8
  Anything listed under "+" was started or created during this task and left behind — stop it by PID and remove it. The one exception is a "+" line marked "task session, excused": that is the agent session this delegation itself started, it is not counted, and it must be left running. Anything under "-" existed when the task started and is now gone — it was killed or deleted; restart or restore it. Never stop a process by pattern (\`pkill -f\`): it takes every process whose command line matches, which is how the production server was stopped in #1739.`,1)}},77142:(a,b,c)=>{c.d(b,{I1:()=>m,J6:()=>n,_8:()=>B,dV:()=>F,g9:()=>G});var d=c(79646),e=c(29021),f=c(21820),g=c(33873),h=c(87447),i=c(72626),j=c(49987),k=c(53604);let l=(0,i.h)("lib/verification/env-snapshot"),m=["listeners","tmux-sessions","home-entries","commandmate-entries"],n={listeners:"CommandMate TCP listeners","tmux-sessions":"mcbd-* tmux sessions","home-entries":"$HOME entries","commandmate-entries":"~/.commandmate entries"},o={run:function(a,b){return new Promise(c=>{(0,d.execFile)(a,b,{timeout:5e3,maxBuffer:4194304,encoding:"utf8"},(b,d,e)=>b?"number"!=typeof b.code||b.killed?void c({code:null,stdout:d,stderr:e,failure:b.killed?`${a} exceeded 5000ms and was terminated`:`${a} could not be run: ${b.message}`}):void c({code:b.code,stdout:d,stderr:e,failure:null}):void c({code:0,stdout:d,stderr:e,failure:null}))})},readDir:a=>(0,e.readdirSync)(a),homeDir:()=>(0,f.homedir)()},p=/commandmate|dist\/server\/server\.js|next-server|next (dev|start)|server\.ts/i,q=new Set(["node","nodejs","bun","tsx","ts-node","npx","next"]),r=/^(commandmate(\.js)?|next-server)$/i;function s(a){let b=[],c=null;for(let d of a.split("\n")){if(""===d)continue;let a=d[0],e=d.slice(1);if("p"===a){let a=Number(e);if(!Number.isInteger(a)){c=null;continue}c={pid:a,fields:new Map},b.push(c);continue}if(!c)continue;let f=c.fields.get(a);f?f.push(e):c.fields.set(a,[e])}return b}function t(a){return{status:"unavailable",entries:[],reason:a}}function u(a){let b=new Map;for(let c of a)b.has(c.key)||b.set(c.key,c);return{status:"ok",entries:[...b.values()].sort((a,b)=>a.key<b.key?-1:+(a.key>b.key)),reason:null}}async function v(a){let b=await a.run("lsof",["-nP","-iTCP","-sTCP:LISTEN","-F","pcn"]);if(null!==b.failure)return t(b.failure);if(0!==b.code&&1!==b.code)return t(`lsof exited ${b.code}: ${b.stderr.trim()||"no diagnostic output"}`);let c=s(b.stdout);if(0===c.length)return u([]);let d=await a.run("ps",["-A","-o","pid=,command="]);if(null!==d.failure||0!==d.code)return t(d.failure??`ps exited ${d.code}: ${d.stderr.trim()||"no diagnostic output"}`);let e=function(a){let b=new Map;for(let c of a.split("\n")){let a=/^\s*(\d+)\s+(.*)$/.exec(c);a&&b.set(Number(a[1]),a[2].trim())}return b}(d.stdout),f=c.filter(a=>{let b=e.get(a.pid);return void 0!==b&&function(a){if(!p.test(a))return!1;let[b,...c]=a.trim().split(/\s+/);if(!b)return!1;let d=(0,g.basename)(b);if(r.test(d))return!0;if(!q.has(d.toLowerCase()))return!1;let e=[d,...c.filter(a=>!a.startsWith("-"))];return e.some((a,b)=>!!(b>0&&function(a){let b=(0,g.basename)(a);return/(^|\/)dist\/server\/server\.js$/.test(a)||"server.ts"===b||/^commandmate(\.js)?$/i.test(b)}(a))||"next"===(0,g.basename)(a)&&/^(dev|start)$/.test(e[b+1]??""))}(b)});if(0===f.length)return u([]);let h=new Map,i=f.map(a=>String(a.pid)),j=await a.run("lsof",["-a","-d","cwd","-p",i.join(","),"-F","pn"]);if(null===j.failure&&(0===j.code||1===j.code))for(let a of s(j.stdout)){let[b]=a.fields.get("n")??[];b&&h.set(a.pid,b)}let k=[];for(let a of f){let b=a.fields.get("c")?.[0]??"unknown";for(let c of a.fields.get("n")??[]){let d=function(a){let b=a.lastIndexOf(":");if(b<0)return null;let c=a.slice(b+1);return/^\d+$/.test(c)?c:null}(c);d&&k.push({key:`tcp/${d}`,detail:`${b} pid=${a.pid}`,anchor:h.get(a.pid)??null})}}return u(k)}async function w(a){let b=await a.run("tmux",["list-sessions","-F","#{session_name}"]);return null!==b.failure?t(b.failure):0!==b.code?/no server running|error connecting to|no sessions/i.test(b.stderr)?u([]):t(`tmux list-sessions exited ${b.code}: ${b.stderr.trim()||"no diagnostic output"}`):u(b.stdout.split("\n").map(a=>a.trim()).filter(a=>a.startsWith("mcbd-")).map(a=>({key:a,detail:null,anchor:null})))}let x=[/-wal$/,/-shm$/,/-journal$/,/^\.DS_Store$/],y="env-snapshots",z=[j.Iq,k.L8];function A(a,b,{missingIsEmpty:c,alsoIgnored:d=[]}){let e;try{e=a.readDir(b)}catch(d){let a=d.code;if(c&&"ENOENT"===a)return u([]);return t(`could not list ${b}: ${d.message}`)}return u(e.filter(a=>!(a===y||x.some(b=>b.test(a)))&&!d.includes(a)).map(a=>({key:a,detail:null,anchor:null})))}async function B(a){let b=a.deps??o,[c,d]=await Promise.all([v(b).catch(a=>t(`listeners probe threw: ${a.message}`)),w(b).catch(a=>t(`tmux probe threw: ${a.message}`))]);return{version:1,capturedAt:a.now??Date.now(),worktreeId:a.worktreeId,probes:{listeners:c,"tmux-sessions":d,"home-entries":A(b,b.homeDir(),{missingIsEmpty:!1}),"commandmate-entries":A(b,(0,g.join)(b.homeDir(),".commandmate"),{missingIsEmpty:!0,alsoIgnored:z})}}}function C(){return(0,g.join)((0,g.dirname)((0,h._$)().CM_DB_PATH),y)}let D=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function E(a,b){return D.test(b)?(0,g.join)(a,`${b}.json`):null}function F(a,b,c=C()){let d=E(c,a);if(!d)return l.warn("env-snapshot-rejected-task-id",{taskId:a}),!1;try{return(0,e.mkdirSync)(c,{recursive:!0,mode:448}),(0,e.writeFileSync)(d,JSON.stringify(b),{encoding:"utf8",mode:384}),!function(a,b){let c;try{c=(0,e.readdirSync)(a)}catch{return}for(let d of c){if(!d.endsWith(".json"))continue;let c=(0,g.join)(a,d);try{b-(0,e.statSync)(c).mtimeMs>2592e6&&(0,e.rmSync)(c,{force:!0})}catch{}}}(c,b.capturedAt),!0}catch(b){return l.warn("env-snapshot-write-failed",{taskId:a,error:b instanceof Error?b.message:String(b)}),!1}}function G(a,b=C()){let c=E(b,a);if(!c)return null;try{let a=JSON.parse((0,e.readFileSync)(c,"utf8"));if(!function(a){if("object"!=typeof a||null===a||1!==a.version||"number"!=typeof a.capturedAt)return!1;let b=a.probes;return"object"==typeof b&&null!==b&&m.every(a=>{var c;return"object"==typeof(c=b[a])&&null!==c&&("ok"===c.status||"unavailable"===c.status)&&Array.isArray(c.entries)})}(a))return null;return a}catch{return null}}},90384:(a,b,c)=>{c.d(b,{D:()=>n,Q5:()=>i,Tc:()=>l,UL:()=>y,Yp:()=>s,aT:()=>k,iE:()=>j,le:()=>h,sN:()=>m,uz:()=>g,yR:()=>z});var d=c(29021),e=c(33873),f=c(4689);let g="work-evidence",h="scope",i="env-clean",j=[g,h,i],k=".commandmate/verify.yaml";function l(a,b=[]){return[g,h,...a.options.requireEnvClean?[i]:[],...a.gates.map(a=>a.id),...b.map(a=>a.id)]}let m=600,n=/^[a-z0-9][a-z0-9-]{0,31}$/,o=/^[A-Za-z0-9_.-]+$/,p=["version","gates","options"],q=["id","command","timeoutSec","mutex","retryOnFail","flakyIsPass"],r=["baseRef","skipInPrimaryCheckout","maxLogTailBytes","requireCommit","requireEnvClean","envCleanIgnoreHomeEntries"];class s extends Error{constructor(a){super(`invalid verify config:
9
9
  ${a.map(a=>` - ${a}`).join("\n")}`),this.name="VerifyConfigError",this.issues=a}}function t(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function u(a){return"number"==typeof a?Number.isInteger(a)?a:null:"string"==typeof a&&/^-?\d+$/.test(a)?Number(a):null}function v(a){return"boolean"==typeof a?a:"true"===a||"false"!==a&&null}function w(a){return void 0===a?"nothing":null===a?"null":"string"==typeof a?JSON.stringify(a):Array.isArray(a)?"a list":"object"==typeof a?"a mapping":String(a)}function x(a,b,c,d){for(let e of Object.keys(a))b.includes(e)||d.push(`${c}: unknown key "${e}" (v1 is a closed set)`)}function y(a,b,c){if(!Array.isArray(a))return c.push(`${b}: must be a list (got ${w(a)})`),[];let d=[],e=new Set;return a.forEach((a,f)=>{!function(a,b,c,d,e){let f,g,h,i=e.length;if(!t(a))return e.push(`${b}: must be a mapping (got ${w(a)})`);x(a,q,b,e),"string"!=typeof a.id||""===a.id?e.push(`${b}.id: required, must be a non-empty string (got ${w(a.id)})`):n.test(a.id)?j.includes(a.id)?e.push(`${b}.id: "${a.id}" is reserved for a built-in gate`):c.has(a.id)?e.push(`${b}.id: duplicate gate id "${a.id}"`):c.add(a.id):e.push(`${b}.id: "${a.id}" must match ${n.source}`),("string"!=typeof a.command||""===a.command.trim())&&e.push(`${b}.command: required, must be a non-empty string (got ${w(a.command)})`);let k=m;if(void 0!==a.timeoutSec){let c=u(a.timeoutSec);null===c?e.push(`${b}.timeoutSec: must be an integer (got ${w(a.timeoutSec)})`):c<1||c>7200?e.push(`${b}.timeoutSec: must be 1..7200 (got ${c})`):k=c}if(void 0!==a.mutex&&("string"!=typeof a.mutex||""===a.mutex?e.push(`${b}.mutex: must be a non-empty string (got ${w(a.mutex)})`):a.mutex.length>64?e.push(`${b}.mutex: must be at most 64 characters (got ${a.mutex.length})`):o.test(a.mutex)?f=a.mutex:e.push(`${b}.mutex: "${a.mutex}" must match ${o.source}`)),void 0!==a.retryOnFail){let c=u(a.retryOnFail);null===c?e.push(`${b}.retryOnFail: must be an integer (got ${w(a.retryOnFail)})`):c<0||c>1?e.push(`${b}.retryOnFail: must be 0 or 1 (got ${c})`):g=c}if(void 0!==a.flakyIsPass){let c=v(a.flakyIsPass);null===c?e.push(`${b}.flakyIsPass: must be true or false (got ${w(a.flakyIsPass)})`):c&&1!==g?e.push(`${b}.flakyIsPass: true requires retryOnFail: 1 (without a retry a gate can never be FLAKY)`):h=c}if(e.length===i){let b={id:a.id,command:a.command,timeoutSec:k};void 0!==f&&(b.mutex=f),void 0!==g&&(b.retryOnFail=g),void 0!==h&&(b.flakyIsPass=h),d.push(b)}}(a,`${b}[${f}]`,e,d,c)}),d}function z(a){let b,c=(0,e.join)(a,k);try{b=(0,d.readFileSync)(c,"utf8")}catch(a){if("ENOENT"===a.code)return null;throw new s([`${c}: ${a.message}`])}return function(a,b){var c;let d;try{d=(0,f.qg)(a)}catch(a){throw new s([`${b}: YAML parse error: ${a.message}`])}if(!t(d))throw new s([`${b}: expected a YAML mapping at the top level (got ${w(d)})`]);let e=[];x(d,p,"top level",e),"version"in d?1!==u(d.version)&&e.push(`version: must be 1 (got ${w(d.version)})`):e.push('version: required, v1 configs must declare "version: 1"');let g=(c=d.gates,null==c?(e.push("gates: required, at least one gate must be defined"),[]):Array.isArray(c)&&0===c.length?(e.push("gates: at least one gate must be defined"),[]):y(c,"gates",e)),h=function(a,b){let c={baseRef:null,skipInPrimaryCheckout:!0,maxLogTailBytes:8192,requireCommit:!1,requireEnvClean:!1,envCleanIgnoreHomeEntries:[]};if(null==a)return c;if(!t(a))return b.push(`options: must be a mapping (got ${w(a)})`),c;if(x(a,r,"options",b),void 0!==a.baseRef&&("string"!=typeof a.baseRef||""===a.baseRef.trim()?b.push(`options.baseRef: must be a non-empty string (got ${w(a.baseRef)})`):c.baseRef=a.baseRef),void 0!==a.skipInPrimaryCheckout){let d=v(a.skipInPrimaryCheckout);null===d?b.push(`options.skipInPrimaryCheckout: must be true or false (got ${w(a.skipInPrimaryCheckout)})`):c.skipInPrimaryCheckout=d}if(void 0!==a.requireCommit){let d=v(a.requireCommit);null===d?b.push(`options.requireCommit: must be true or false (got ${w(a.requireCommit)})`):c.requireCommit=d}if(void 0!==a.requireEnvClean){let d=v(a.requireEnvClean);null===d?b.push(`options.requireEnvClean: must be true or false (got ${w(a.requireEnvClean)})`):c.requireEnvClean=d}if(void 0!==a.envCleanIgnoreHomeEntries){let d=function(a,b){let c="options.envCleanIgnoreHomeEntries";if(!Array.isArray(a))return b.push(`${c}: must be a list of $HOME entry names (got ${w(a)})`),null;let d=b.length;a.length>32&&b.push(`${c}: at most 32 entries (got ${a.length})`);let e=[];return a.forEach((a,d)=>{let f=`${c}[${d}]`;"string"!=typeof a?b.push(`${f}: must be a string (got ${w(a)})`):""===a?b.push(`${f}: must not be empty`):"."===a||".."===a?b.push(`${f}: must be an entry name, not ${JSON.stringify(a)}`):a.includes("/")||a.includes("\0")?b.push(`${f}: must be a single $HOME entry name without "/" or NUL (got ${w(a)})`):e.push(a)}),b.length===d?e:null}(a.envCleanIgnoreHomeEntries,b);d&&(c.envCleanIgnoreHomeEntries=d)}if(void 0!==a.maxLogTailBytes){let d=u(a.maxLogTailBytes);null===d?b.push(`options.maxLogTailBytes: must be an integer (got ${w(a.maxLogTailBytes)})`):d<0||d>1048576?b.push(`options.maxLogTailBytes: must be 0..1048576 (got ${d})`):c.maxLogTailBytes=d}return c}(d.options,e);if(e.length>0)throw new s(e);return{version:1,gates:g,options:h}}(b,c)}}};