commandmate 0.30.2 → 0.31.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 (440) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +160 -160
  3. package/.next/app-path-routes-manifest.json +27 -27
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/update-check/route.js +1 -1
  12. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  14. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  15. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  17. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  18. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/assistant/messages/route.js +1 -1
  20. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  21. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/assistant/session/route.js +1 -1
  23. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  24. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/assistant/start/route.js +3 -3
  26. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  27. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/assistant/terminal/route.js +4 -4
  29. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  30. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/assistant/tools/route.js +1 -1
  32. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  33. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/capabilities/route.js +1 -1
  38. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  47. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  48. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  50. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  51. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  53. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  54. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  65. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  66. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/repositories/clone/route.js +1 -1
  68. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  69. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/repositories/restore/route.js +1 -1
  72. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  73. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/repositories/route.js +1 -1
  75. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  76. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/repositories/scan/route.js +1 -1
  78. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  79. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/repositories/sync/route.js +1 -1
  81. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  82. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  85. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  86. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/skills/[id]/route.js +1 -1
  90. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/skills/route.js +1 -1
  95. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/slash-commands/route.js +1 -1
  97. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  107. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  110. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  113. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  119. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  150. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  153. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  156. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  168. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  172. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  175. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +4 -3
  177. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/schedules/route.js +4 -3
  180. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  184. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
  186. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  187. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  199. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/route.js +1 -1
  221. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  222. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/chat/page.js +2 -2
  224. package/.next/server/app/chat/page.js.nft.json +1 -1
  225. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  226. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  227. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/more/page.js +2 -2
  229. package/.next/server/app/more/page.js.nft.json +1 -1
  230. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  231. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  232. package/.next/server/app/page.js +1 -1
  233. package/.next/server/app/page.js.nft.json +1 -1
  234. package/.next/server/app/page_client-reference-manifest.js +1 -1
  235. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/repositories/page.js +2 -2
  237. package/.next/server/app/repositories/page.js.nft.json +1 -1
  238. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  239. package/.next/server/app/review/page.js +1 -1
  240. package/.next/server/app/review/page.js.nft.json +1 -1
  241. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  242. package/.next/server/app/sessions/page.js +1 -1
  243. package/.next/server/app/sessions/page.js.nft.json +1 -1
  244. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  245. package/.next/server/app/skills/[skillId]/page.js +2 -2
  246. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  247. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  248. package/.next/server/app/skills/installed/page.js +2 -2
  249. package/.next/server/app/skills/installed/page.js.nft.json +1 -1
  250. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  251. package/.next/server/app/skills/page.js +1 -1
  252. package/.next/server/app/skills/page.js.nft.json +1 -1
  253. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  254. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  255. package/.next/server/app/worktrees/[id]/page.js +10 -10
  256. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  257. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  258. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  259. package/.next/server/app-paths-manifest.json +27 -27
  260. package/.next/server/chunks/1058.js +1 -1
  261. package/.next/server/chunks/1068.js +1 -1
  262. package/.next/server/chunks/1262.js +1 -1
  263. package/.next/server/chunks/1886.js +3 -3
  264. package/.next/server/chunks/1990.js +103 -0
  265. package/.next/server/chunks/2119.js +1 -1
  266. package/.next/server/chunks/2328.js +1 -1
  267. package/.next/server/chunks/2404.js +1 -1
  268. package/.next/server/chunks/2445.js +1 -1
  269. package/.next/server/chunks/261.js +1 -1
  270. package/.next/server/chunks/3123.js +1 -1
  271. package/.next/server/chunks/3241.js +1 -1
  272. package/.next/server/chunks/3480.js +5 -4
  273. package/.next/server/chunks/4299.js +1 -1
  274. package/.next/server/chunks/4393.js +1 -1
  275. package/.next/server/chunks/4443.js +1 -5
  276. package/.next/server/chunks/5017.js +1 -1
  277. package/.next/server/chunks/5043.js +1 -1
  278. package/.next/server/chunks/5164.js +1 -1
  279. package/.next/server/chunks/552.js +2 -2
  280. package/.next/server/chunks/6072.js +1 -1
  281. package/.next/server/chunks/6130.js +1 -1
  282. package/.next/server/chunks/663.js +4 -3
  283. package/.next/server/chunks/6894.js +2 -2
  284. package/.next/server/chunks/7187.js +1 -0
  285. package/.next/server/chunks/7472.js +1 -1
  286. package/.next/server/chunks/{880.js → 7859.js} +6 -6
  287. package/.next/server/chunks/7905.js +1 -1
  288. package/.next/server/chunks/8800.js +2 -2
  289. package/.next/server/chunks/8918.js +7 -0
  290. package/.next/server/chunks/9123.js +2 -2
  291. package/.next/server/chunks/9130.js +4 -4
  292. package/.next/server/chunks/9627.js +1 -1
  293. package/.next/server/chunks/9696.js +1 -1
  294. package/.next/server/chunks/9798.js +1 -1
  295. package/.next/server/middleware-manifest.json +5 -5
  296. package/.next/server/pages/500.html +1 -1
  297. package/.next/server/pages-manifest.json +1 -1
  298. package/.next/server/server-reference-manifest.json +1 -1
  299. package/.next/static/chunks/1783-11c9b4d8a52ebd91.js +1 -0
  300. package/.next/static/chunks/4718-de1224c9e8a6e7fc.js +1 -0
  301. package/.next/static/chunks/6022-2fa0b5a82d4ce7b6.js +1 -0
  302. package/.next/static/chunks/{5229-6c89475b61bd2c8b.js → 6170-951b9f5fe6b4b3b5.js} +1 -1
  303. package/.next/static/chunks/app/chat/{page-9aa2011410895b0d.js → page-37d7615d17d7e2a0.js} +1 -1
  304. package/.next/static/chunks/app/layout-4c2f21e3f653ee4c.js +1 -0
  305. package/.next/static/chunks/app/more/{page-333bba1c8bbc9c11.js → page-353a3924e6d7968e.js} +1 -1
  306. package/.next/static/chunks/app/{page-214f7ffa13a0cf10.js → page-c2bf871d953a1d6f.js} +1 -1
  307. package/.next/static/chunks/app/repositories/{page-4951cac905e50224.js → page-7d0f26df0537254c.js} +1 -1
  308. package/.next/static/chunks/app/review/{page-a0899b2d285318c3.js → page-e3f141b2829973e9.js} +1 -1
  309. package/.next/static/chunks/app/sessions/{page-fb36145ec732092a.js → page-53f188ed9ca49e5f.js} +1 -1
  310. package/.next/static/chunks/app/skills/[skillId]/{page-9099e26b60442873.js → page-80569b720aea59cc.js} +1 -1
  311. package/.next/static/chunks/app/skills/installed/{page-182e32368696d824.js → page-dbd2690ad72da95b.js} +1 -1
  312. package/.next/static/chunks/app/skills/{page-d3fdc88239ebe0ab.js → page-dacd36f9c11aa7da.js} +1 -1
  313. package/.next/static/chunks/app/worktrees/[id]/page-97205088520255a5.js +1 -0
  314. package/.next/static/css/5c13ea243dfdcb66.css +1 -0
  315. package/.next/trace +13 -13
  316. package/README.md +37 -11
  317. package/dist/cli/commands/attach.d.ts +50 -0
  318. package/dist/cli/commands/attach.d.ts.map +1 -0
  319. package/dist/cli/commands/attach.js +204 -0
  320. package/dist/cli/commands/capture.d.ts.map +1 -1
  321. package/dist/cli/commands/capture.js +114 -0
  322. package/dist/cli/commands/instances.d.ts.map +1 -1
  323. package/dist/cli/commands/instances.js +23 -2
  324. package/dist/cli/commands/ls.d.ts.map +1 -1
  325. package/dist/cli/commands/ls.js +41 -1
  326. package/dist/cli/config/cli-dependencies.d.ts.map +1 -1
  327. package/dist/cli/config/cli-dependencies.js +34 -0
  328. package/dist/cli/program.d.ts.map +1 -1
  329. package/dist/cli/program.js +5 -0
  330. package/dist/cli/types/index.d.ts +36 -0
  331. package/dist/cli/types/index.d.ts.map +1 -1
  332. package/dist/config/tmux-pane-config.d.ts +153 -0
  333. package/dist/config/tmux-pane-config.d.ts.map +1 -0
  334. package/dist/config/tmux-pane-config.js +172 -0
  335. package/dist/lib/cli-tools/session-name.d.ts +44 -0
  336. package/dist/lib/cli-tools/session-name.d.ts.map +1 -0
  337. package/dist/lib/cli-tools/session-name.js +57 -0
  338. package/dist/lib/cli-tools/types.d.ts +1 -1
  339. package/dist/lib/cli-tools/types.d.ts.map +1 -1
  340. package/dist/lib/cli-tools/types.js +6 -1
  341. package/dist/lib/cli-tools/validation.d.ts +34 -0
  342. package/dist/lib/cli-tools/validation.d.ts.map +1 -0
  343. package/dist/lib/cli-tools/validation.js +41 -0
  344. package/dist/lib/detection/status-reason.d.ts +18 -0
  345. package/dist/lib/detection/status-reason.d.ts.map +1 -1
  346. package/dist/lib/detection/status-reason.js +18 -0
  347. package/dist/lib/detection/tools/verified-against.d.ts +57 -7
  348. package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
  349. package/dist/lib/detection/tools/verified-against.js +59 -8
  350. package/dist/lib/detection/version-probes.d.ts +26 -5
  351. package/dist/lib/detection/version-probes.d.ts.map +1 -1
  352. package/dist/lib/detection/version-probes.js +28 -6
  353. package/dist/lib/session/tmux-session-surface.d.ts +369 -0
  354. package/dist/lib/session/tmux-session-surface.d.ts.map +1 -0
  355. package/dist/lib/session/tmux-session-surface.js +525 -0
  356. package/dist/server/src/config/cli-tool-timing-config.js +12 -1
  357. package/dist/server/src/config/detection-evidence-config.js +5 -0
  358. package/dist/server/src/config/schedule-config.js +28 -1
  359. package/dist/server/src/lib/cli-tools/antigravity.js +2 -2
  360. package/dist/server/src/lib/cli-tools/base.js +13 -8
  361. package/dist/server/src/lib/cli-tools/claude.js +20 -0
  362. package/dist/server/src/lib/cli-tools/codex.js +205 -61
  363. package/dist/server/src/lib/cli-tools/command-code.js +349 -0
  364. package/dist/server/src/lib/cli-tools/composer-spec.js +6 -0
  365. package/dist/server/src/lib/cli-tools/copilot.js +2 -2
  366. package/dist/server/src/lib/cli-tools/gemini.js +2 -2
  367. package/dist/server/src/lib/cli-tools/graceful-exit.js +16 -1
  368. package/dist/server/src/lib/cli-tools/index.js +4 -1
  369. package/dist/server/src/lib/cli-tools/install-hints.js +131 -0
  370. package/dist/server/src/lib/cli-tools/liveness-spec.js +18 -0
  371. package/dist/server/src/lib/cli-tools/manager.js +2 -0
  372. package/dist/server/src/lib/cli-tools/opencode.js +2 -2
  373. package/dist/server/src/lib/cli-tools/start-availability.js +18 -11
  374. package/dist/server/src/lib/cli-tools/types.js +6 -1
  375. package/dist/server/src/lib/cli-tools/vibe-local.js +2 -2
  376. package/dist/server/src/lib/cmate-parser.js +6 -0
  377. package/dist/server/src/lib/detection/cli-patterns.js +441 -8
  378. package/dist/server/src/lib/detection/opencode-modal-overlay.js +66 -100
  379. package/dist/server/src/lib/detection/selection-shape.js +341 -0
  380. package/dist/server/src/lib/detection/sgr-background.js +210 -0
  381. package/dist/server/src/lib/detection/status-detector.js +6 -0
  382. package/dist/server/src/lib/detection/status-reason.js +18 -0
  383. package/dist/server/src/lib/detection/tools/antigravity/detect.js +38 -15
  384. package/dist/server/src/lib/detection/tools/codex/cli-patterns.js +392 -0
  385. package/dist/server/src/lib/detection/tools/codex/detect.js +83 -2
  386. package/dist/server/src/lib/detection/tools/command-code/detect.js +159 -0
  387. package/dist/server/src/lib/detection/tools/registry.js +6 -4
  388. package/dist/server/src/lib/detection/tools/verified-against.js +59 -8
  389. package/dist/server/src/lib/detection/version-probes.js +28 -6
  390. package/dist/server/src/lib/hooks/sources/antigravity/history.js +77 -16
  391. package/dist/server/src/lib/hooks/sources/claude/history.js +94 -18
  392. package/dist/server/src/lib/hooks/sources/codex/history.js +84 -15
  393. package/dist/server/src/lib/hooks/sources/codex/hooks-config.js +130 -17
  394. package/dist/server/src/lib/hooks/sources/codex/relay-install.js +145 -0
  395. package/dist/server/src/lib/hooks/sources/command-code/history.js +865 -0
  396. package/dist/server/src/lib/hooks/sources/command-code/hooks-config.js +390 -0
  397. package/dist/server/src/lib/hooks/sources/command-code/source.js +290 -0
  398. package/dist/server/src/lib/hooks/sources/command-code/tool-id.js +18 -0
  399. package/dist/server/src/lib/hooks/sources/command-code/transcript.js +604 -0
  400. package/dist/server/src/lib/hooks/sources/index.js +3 -1
  401. package/dist/server/src/lib/hooks/sources/opencode/history.js +57 -3
  402. package/dist/server/src/lib/hooks/sources/opencode/transcript.js +24 -28
  403. package/dist/server/src/lib/hooks/sources/registry.js +4 -0
  404. package/dist/server/src/lib/hooks/sources/turn-body.js +77 -19
  405. package/dist/server/src/lib/job-executor.js +12 -0
  406. package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +6 -0
  407. package/dist/server/src/lib/polling/response-checker.js +112 -7
  408. package/dist/server/src/lib/polling/structured-history-gate.js +15 -8
  409. package/dist/server/src/lib/realtime/types.js +15 -5
  410. package/dist/server/src/lib/response-cleaner.js +24 -1
  411. package/dist/server/src/lib/response-extractor.js +11 -0
  412. package/dist/server/src/lib/session/claude-executor.js +223 -4
  413. package/dist/server/src/lib/session/cli-session.js +52 -0
  414. package/dist/server/src/lib/session/tmux-session-surface.js +525 -0
  415. package/dist/server/src/lib/skills/compatibility-matrix.js +117 -1
  416. package/dist/server/src/lib/tmux/geometry-delegation.js +143 -0
  417. package/dist/server/src/lib/tmux/read-mode-pager.js +76 -10
  418. package/dist/server/src/lib/tmux/read-mode.js +44 -2
  419. package/dist/server/src/lib/tmux/session-hook-scripts.js +249 -0
  420. package/dist/server/src/lib/tmux/session-hooks.js +122 -0
  421. package/dist/server/src/lib/tmux/session-status-options.js +213 -0
  422. package/dist/server/src/lib/tmux/tmux.js +79 -2
  423. package/dist/server/src/lib/version-checker.js +110 -0
  424. package/dist/server/src/lib/ws-server.js +16 -10
  425. package/dist/server/src/types/agent-transcript.js +73 -1
  426. package/dist/server/src/types/terminal-keys.js +131 -3
  427. package/dist/types/terminal-keys.d.ts +100 -3
  428. package/dist/types/terminal-keys.d.ts.map +1 -1
  429. package/dist/types/terminal-keys.js +131 -3
  430. package/package.json +1 -1
  431. package/.next/server/chunks/3099.js +0 -5
  432. package/.next/server/chunks/7824.js +0 -1
  433. package/.next/static/chunks/3916-0e929d089282dc5d.js +0 -1
  434. package/.next/static/chunks/6022-7a7d1760fc9814c7.js +0 -1
  435. package/.next/static/chunks/6381-147dde2a967e9458.js +0 -1
  436. package/.next/static/chunks/app/layout-6a26ea22d5cf03dc.js +0 -1
  437. package/.next/static/chunks/app/worktrees/[id]/page-2f73d69187936627.js +0 -1
  438. package/.next/static/css/23f9c40ecc458c77.css +0 -1
  439. /package/.next/static/{QXxQbXWoo7ldUyOcv7PCZ → nXW4dPkpE_9xUf_9ySRff}/_buildManifest.js +0 -0
  440. /package/.next/static/{QXxQbXWoo7ldUyOcv7PCZ → nXW4dPkpE_9xUf_9ySRff}/_ssgManifest.js +0 -0
@@ -0,0 +1,369 @@
1
+ /**
2
+ * The tmux "surface" CommandMate publishes on its own sessions (Issue #2317).
3
+ *
4
+ * Everything here is a pure argument builder or a pure predicate — no
5
+ * `child_process`, no `@/` path alias, and one constants import. Three
6
+ * constraints put it here rather than under `lib/tmux/`, and all three are
7
+ * load-bearing:
8
+ *
9
+ * 1. **`tsconfig.cli.json` sets `"paths": {}`.** The CLI bundle resolves nothing
10
+ * through `@/…`, so a module the `attach` command needs may only reach the
11
+ * rest of `src/` through relative specifiers. `lib/tmux/tmux.ts` cannot be
12
+ * that module — it imports `@/lib/cli-tools/validation` and `@/lib/logger`.
13
+ * 2. **The Issue #1922 import guard.** `.eslintrc.json` forbids `src/cli/**`
14
+ * from importing anything matching `**‍/tmux/**`, and its allowlist is
15
+ * explicitly one-way ("may only shrink"). A pure argv builder is not the kind
16
+ * of tmux access that guard exists to stop — it issues no command and opens
17
+ * no session — but the rule is a path pattern, so the module lives on a path
18
+ * the CLI may read. Nothing here can reach tmux: the executors are in
19
+ * `lib/tmux/`, and those are what the guard still covers.
20
+ * 3. **One wire form, two callers.** The server writes `@cm_status` from the
21
+ * status poll and the CLI writes `@cm_delegated` from `attach --live`. If
22
+ * each spelled its own `set-option` argv, the two could disagree about the
23
+ * target form (`=name:` vs `name`), and a bare name prefix-matches — the
24
+ * Issue #1156 leak, in a new place. Tests assert the builders, so a change to
25
+ * the wire form is a change to exactly one line.
26
+ *
27
+ * ## What is deliberately NOT here
28
+ *
29
+ * Anything server-global. Every builder below takes a session name and produces
30
+ * a `-t <session>` form: `set-option -g`, `bind-key` and `set-hook -g` are
31
+ * absent on purpose (Issue #2317 決定事項 2 — the only global tmux mutation
32
+ * CommandMate makes is #1623's `bind-key`, and it stays where it is, in
33
+ * `lib/tmux/read-mode.ts`).
34
+ */
35
+ /**
36
+ * Session-name prefix every CommandMate tmux session carries.
37
+ *
38
+ * `lib/tmux/read-mode.ts` owns a constant of the same name for #1623's key
39
+ * binding; `tests/unit/tmux/session-surface-2317.test.ts` pins the two together
40
+ * so a rename breaks a test instead of silently turning a guard into a permanent
41
+ * "never fire". Not imported from `cli-tools/base.ts` because it is a template
42
+ * literal there, not a constant.
43
+ */
44
+ export declare const MCBD_SESSION_PREFIX = "mcbd-";
45
+ /**
46
+ * Exact-match tmux target for a session (Issue #1156's `=name:` form).
47
+ *
48
+ * The same string `exactTarget()` in `lib/tmux/tmux.ts` produces — that function
49
+ * stays the one the server-side module uses, and the test above pins the two to
50
+ * each other so this copy cannot drift. It exists at all because `tmux.ts` is
51
+ * unreachable from the CLI bundle (see the module docblock).
52
+ *
53
+ * @param sessionName - Exact tmux session name
54
+ * @returns `=<name>:` — exact session match, valid as both a session and a
55
+ * window/pane target
56
+ */
57
+ export declare function exactSessionTarget(sessionName: string): string;
58
+ /** True when `sessionName` looks like a session CommandMate created. */
59
+ export declare function isCommandMateSession(sessionName: string): boolean;
60
+ /** User option carrying the session's status word. */
61
+ export declare const CM_STATUS_OPTION = "@cm_status";
62
+ /** User option carrying the worktree id the session belongs to. */
63
+ export declare const CM_WORKTREE_OPTION = "@cm_worktree";
64
+ /** User option carrying the CLI tool id running in the session. */
65
+ export declare const CM_TOOL_OPTION = "@cm_tool";
66
+ /** User option carrying the agent instance id. */
67
+ export declare const CM_INSTANCE_OPTION = "@cm_instance";
68
+ /** User option carrying the ISO timestamp of the last status write. */
69
+ export declare const CM_UPDATED_OPTION = "@cm_updated";
70
+ /**
71
+ * User option set to `1` while a human client owns the session's geometry
72
+ * (Phase D). Read by the server so it can stand down from resizing and from
73
+ * saving a scraped reply off a terminal-sized frame.
74
+ */
75
+ export declare const CM_DELEGATED_OPTION = "@cm_delegated";
76
+ /**
77
+ * Every `@cm_*` option this feature writes, in the order they are removed.
78
+ *
79
+ * The opt-out path (`CM_TMUX_STATUS=off`) iterates this list rather than
80
+ * re-typing names, so an option added above cannot be left behind on a user's
81
+ * tmux server.
82
+ */
83
+ export declare const CM_SESSION_OPTIONS: readonly string[];
84
+ /**
85
+ * The session-scoped `status-right` CommandMate installs.
86
+ *
87
+ * A tmux FORMAT, not an interpolated string: the values come from the `@cm_*`
88
+ * options above, so the status line re-renders on every status write without a
89
+ * second write for the line itself. `window_width`x`window_height` is on it
90
+ * because the whole Issue is about a window whose size the reader cannot see —
91
+ * during Phase D delegation it is the fastest way to tell whether the geometry
92
+ * handover actually happened.
93
+ */
94
+ export declare const CM_STATUS_RIGHT_FORMAT = "[CommandMate #{@cm_tool}/#{@cm_instance} #{@cm_status}] #{window_width}x#{window_height}";
95
+ /** `tmux set-option -t <session> <name> <value>`. */
96
+ export declare function buildSetSessionOptionArgs(sessionName: string, option: string, value: string): string[];
97
+ /** `tmux set-option -u -t <session> <name>` — remove a session-scoped value. */
98
+ export declare function buildUnsetSessionOptionArgs(sessionName: string, option: string): string[];
99
+ /**
100
+ * `tmux show-options -t <session> <name>`.
101
+ *
102
+ * Deliberately WITHOUT `-v`: the empty-vs-set distinction is the whole point of
103
+ * the call at the `status-right` site. Measured on tmux 3.5a — a session that
104
+ * has never had `status-right` set answers with empty stdout and exit 0, and one
105
+ * that has answers `status-right "…"`. `-v` would print an empty line for the
106
+ * first case too, and "the user already customised this session" would become
107
+ * indistinguishable from "nobody has".
108
+ */
109
+ export declare function buildShowSessionOptionArgs(sessionName: string, option: string): string[];
110
+ /**
111
+ * `tmux show-options -v -t <session> <name>` — the VALUE alone.
112
+ *
113
+ * The right shape when only the value matters (`@cm_delegated` is `1` or it is
114
+ * nothing). {@link buildShowSessionOptionArgs} is the right shape when the
115
+ * distinction between "set to empty" and "never set" matters, which is the
116
+ * `status-right` case.
117
+ */
118
+ export declare function buildShowSessionOptionValueArgs(sessionName: string, option: string): string[];
119
+ /** `tmux set-option -t <session> status-right '<format>'`. */
120
+ export declare function buildSetStatusRightArgs(sessionName: string, format: string): string[];
121
+ /** `tmux set-option -u -t <session> status-right`. */
122
+ export declare function buildUnsetStatusRightArgs(sessionName: string): string[];
123
+ /** Environment variable that turns the Phase B surface off. */
124
+ export declare const TMUX_STATUS_ENV = "CM_TMUX_STATUS";
125
+ /**
126
+ * True unless the operator set `CM_TMUX_STATUS` to `off` / `0` / `false`.
127
+ *
128
+ * Read at CALL time from an injected environment rather than at module load, so
129
+ * a test can flip it without module-registry surgery and so a process started
130
+ * with the variable set is not at the mercy of import order.
131
+ */
132
+ export declare function isTmuxStatusEnabled(env?: Record<string, string | undefined>): boolean;
133
+ /**
134
+ * `tmux set-hook -t <session> <hook> <command>`.
135
+ *
136
+ * The command is passed as ONE argv element. Do not fold an `if-shell -F` into
137
+ * it: measured on tmux 3.5a (Issue #2317 技術検証), a hook body of the shape
138
+ * `if-shell -F '#{…}' 'display-popup …'` is accepted and then silently never
139
+ * fires. A `run-shell -b '<script> #{session_name} #{client_control_mode}'` that
140
+ * hands the formats to a script DOES fire, so every hook this feature installs
141
+ * has that shape and the branching happens in the script.
142
+ */
143
+ export declare function buildSetSessionHookArgs(sessionName: string, hook: string, command: string): string[];
144
+ /** `tmux set-hook -u -t <session> <hook>`. */
145
+ export declare function buildUnsetSessionHookArgs(sessionName: string, hook: string): string[];
146
+ /** `tmux show-hooks -t <session>` — session-scoped hooks only, never the global table. */
147
+ export declare function buildShowSessionHooksArgs(sessionName: string): string[];
148
+ /** `tmux set-window-option -t <session> window-size <mode>`. */
149
+ export declare function buildWindowSizeArgs(sessionName: string, mode: 'manual' | 'latest'): string[];
150
+ /** `tmux resize-window -t <session> -x <w> -y <h>`. */
151
+ export declare function buildResizeWindowArgs(sessionName: string, width: number, height: number): string[];
152
+ /**
153
+ * `tmux list-clients -t <session> -F '#{client_control_mode}'`.
154
+ *
155
+ * `client_control_mode` is `1` for a `tmux -C` client — which is what
156
+ * CommandMate's own control-mode transport attaches as — and `0` for a human
157
+ * terminal. Phase D hands the geometry back when the HUMAN count reaches zero,
158
+ * so a control client sitting on the session forever must not keep the
159
+ * delegation open (Issue #2317 受入条件 Phase D 4).
160
+ */
161
+ export declare function buildListClientsArgs(sessionName: string): string[];
162
+ /**
163
+ * Number of human (control-mode `0`) clients in `list-clients` output.
164
+ *
165
+ * Counts lines that are exactly `0`, NOT lines that are "anything but 1". The
166
+ * difference matters twice: `list-clients` exits 0 with EMPTY stdout on a
167
+ * detached session, and a line this function does not recognise is not evidence
168
+ * that a person is looking at the pane. Since the answer gates a resize, "I
169
+ * could not read this" has to mean "nobody is attached" — the reading that
170
+ * leaves `reconcileSessionGeometry` doing its normal job — rather than "somebody
171
+ * is", which would pin a window open on an unparsed byte.
172
+ *
173
+ * `#{client_control_mode}` is `1` for a `tmux -C` client and `0` for a terminal;
174
+ * measured on tmux 3.5a, a human client attached to a CommandMate session
175
+ * reports exactly `0`.
176
+ *
177
+ * @param stdout - Raw stdout of {@link buildListClientsArgs}
178
+ * @returns How many attached clients are humans
179
+ */
180
+ export declare function countHumanClients(stdout: string): number;
181
+ /** `tmux attach-session -t '=<session>:'`, with `-r` when read-only. */
182
+ export declare function buildAttachArgs(sessionName: string, readOnly: boolean): string[];
183
+ /** `tmux switch-client -t '=<session>:'` — the in-tmux equivalent of attaching. */
184
+ export declare function buildSwitchClientArgs(sessionName: string): string[];
185
+ /**
186
+ * CLI tools `attach --live` will hand the pane geometry to (Issue #2317 決定事項 3).
187
+ *
188
+ * claude alone, and the list is a measurement rather than a starting point:
189
+ * claude's reply is written from its own transcript JSONL, so a terminal-sized
190
+ * frame during delegation cannot lose History. Every other tool either reads its
191
+ * reply off the pane (copilot / gemini / vibe-local), or has detection rules
192
+ * that were only ever measured at 200x1000 (codex / antigravity / command-code),
193
+ * or cannot survive a width change at all (opencode paints a sidebar at >=121
194
+ * columns). Widening this set is out of scope for #2317 and requires
195
+ * re-measuring the tool it adds.
196
+ */
197
+ export declare const LIVE_ATTACH_TOOLS: readonly string[];
198
+ /** Whether `attach --live` is allowed for a CLI tool. */
199
+ export declare function isLiveAttachSupported(cliToolId: string): boolean;
200
+ /**
201
+ * Whether a tmux session's NAME says it runs a tool `--live` supports.
202
+ *
203
+ * The session name is `mcbd-<tool>-<worktree>` and no supported tool id is a
204
+ * prefix of another, so this is exact rather than a guess. It exists because
205
+ * the two callers that need the answer — the attach hook script's installer and
206
+ * the response poller — hold a session name and nothing else: a hook fires with
207
+ * tmux formats, and the poller must not pay a tmux round-trip to ask about a
208
+ * session that could never be delegated in the first place.
209
+ *
210
+ * @param sessionName - tmux session name
211
+ */
212
+ export declare function isLiveAttachEligibleSession(sessionName: string): boolean;
213
+ /**
214
+ * CLI tools that paint their transcript in the terminal's alternate screen.
215
+ *
216
+ * The reason a bare `tmux attach` looks EMPTY for them: the TUI draws the
217
+ * transcript at the top of a 1000-row canvas and its composer at the bottom, and
218
+ * tmux follows the cursor, so a 44-row client sees the composer and nothing
219
+ * else. `attach` prints its hint for exactly these.
220
+ *
221
+ * Deliberately a local list rather than an import of `usesAlternateScreen()`:
222
+ * this module must stay free of `lib/cli-tools`, whose graph the CLI bundle
223
+ * cannot afford (see the module docblock). The two are pinned to each other by
224
+ * `tests/unit/tmux/session-surface-2317.test.ts`, so a tool moving in or out of
225
+ * the alternate screen breaks a test rather than silently dropping the hint.
226
+ */
227
+ export declare const ALT_SCREEN_TOOLS: readonly string[];
228
+ /** Whether `attach` should warn that a bare attach shows no transcript. */
229
+ export declare function usesAltScreen(cliToolId: string): boolean;
230
+ /**
231
+ * ## The safety net is a poll, NOT a `client-detached` hook — measured
232
+ *
233
+ * Issue #2317's 技術検証 says a session-scoped `client-detached` hook fires.
234
+ * Re-measured on tmux 3.5a against a private socket before this was written, it
235
+ * does not, and two further facts make the shape unusable:
236
+ *
237
+ * | probe (tmux 3.5a, `tmux -L`) | result |
238
+ * |-----------------------------------------------------|--------|
239
+ * | `set-hook -t <s> client-attached`, human attaches | fires; `#{session_name}` is the session, `#{client_control_mode}` is `0` |
240
+ * | same, control-mode client attaches | does NOT fire |
241
+ * | `set-hook -t <s> client-detached`, human detaches | **never fires** |
242
+ * | `set-hook -g client-detached`, human detaches | fires — but `#{session_name}` is the CLIENT's other session and `#{client_control_mode}` is EMPTY |
243
+ *
244
+ * So the detach edge is unreachable session-scoped, and reaching it globally
245
+ * would both break 決定事項 2 (no global tmux mutation) and arrive without the
246
+ * session identity the restore needs. The restore therefore runs from the status
247
+ * poll instead — `reconcileDelegatedGeometry()` in `lib/tmux/session-hooks.ts` —
248
+ * which sees every session every couple of seconds, needs no tmux state of its
249
+ * own, and covers cases a hook could not anyway: the CLI being killed, the
250
+ * terminal window being closed, and a detach from some other client.
251
+ *
252
+ * The `client-attached` edge DOES work session-scoped, and that is the one the
253
+ * opt-in hooks below are installed on.
254
+ *
255
+ * Both opt-in features hang off that same edge, and a tmux hook name without an
256
+ * index IS `[0]`: installing two of them unindexed would mean the second
257
+ * silently replaced the first. Measured on tmux 3.5a — `client-attached[0]` and
258
+ * `client-attached[1]` both fire, and `set-hook -u` removes one without
259
+ * disturbing the other.
260
+ */
261
+ export declare const DELEGATE_HOOK = "client-attached[0]";
262
+ /** @see DELEGATE_HOOK */
263
+ export declare const AUTO_POPUP_HOOK = "client-attached[1]";
264
+ /**
265
+ * Environment variable that also installs the geometry hand-over for a session
266
+ * the user attached to BY HAND (`tmux attach`), not through
267
+ * `commandmate attach --live`.
268
+ *
269
+ * Opt-in, because installing it unasked would mean a hand-rolled `tmux attach`
270
+ * silently changes a session's geometry — the one thing Issue #2317 決定事項 1
271
+ * says must not happen by default.
272
+ */
273
+ export declare const LIVE_ATTACH_HOOK_ENV = "CM_LIVE_ATTACH_HOOK";
274
+ /**
275
+ * Environment variable that opens the following read popup on attach (Phase C).
276
+ * Default off; see `AUTO_POPUP_SCRIPT` for why.
277
+ */
278
+ export declare const AUTO_POPUP_ENV = "CM_READ_MODE_AUTO_POPUP";
279
+ /** True when the operator opted into the attach-time geometry hand-over. */
280
+ export declare function isLiveAttachHookEnabled(env?: Record<string, string | undefined>): boolean;
281
+ /** True when the operator opted into the automatic read popup. */
282
+ export declare function isAutoPopupEnabled(env?: Record<string, string | undefined>): boolean;
283
+ /**
284
+ * Quote a path for the `sh` command a tmux hook runs.
285
+ *
286
+ * Double quotes rather than single, because the whole shell-command is already
287
+ * inside tmux's own single quotes and tmux's lexer does not process escapes
288
+ * inside those — a `'\''` would end the tmux string, not the shell one.
289
+ *
290
+ * Returns undefined for a path carrying any character that would change the
291
+ * meaning of a double-quoted word (`"`, `$`, a backtick, a backslash) or that
292
+ * cannot appear on a command line at all (newline / carriage return). Callers
293
+ * treat that as "install no hook": a home directory nobody can quote safely is a
294
+ * reason to fall back to the CLI's own hand-over, not a reason to run a command
295
+ * whose parse is a guess.
296
+ *
297
+ * @param path - Absolute script path
298
+ * @returns The double-quoted word, or undefined when it cannot be represented
299
+ */
300
+ export declare function quoteScriptPathForHook(path: string): string | undefined;
301
+ /**
302
+ * The `run-shell` body of a session-scoped hook.
303
+ *
304
+ * `-b` because a hook that blocks the tmux server for the length of a shell
305
+ * script is a hook that makes tmux feel broken.
306
+ *
307
+ * The formats are passed as separate words and consumed as `$1`, `$2`, `$3` by
308
+ * the script, which is why none of them is quoted here — a tmux format that
309
+ * expanded to something with a space would be split, and all three of these
310
+ * (`session_name`, `client_control_mode`, `client_name`) are single words by
311
+ * construction.
312
+ *
313
+ * @param quotedScriptPath - Result of {@link quoteScriptPathForHook}
314
+ * @param formats - tmux formats to hand the script
315
+ * @param extraArgs - Literal words appended after the formats
316
+ * @returns The command string to hand to `set-hook`
317
+ */
318
+ export declare function buildHookRunShellBody(quotedScriptPath: string, formats: readonly string[], extraArgs?: readonly string[]): string;
319
+ /**
320
+ * Formats every attach hook hands to its script.
321
+ *
322
+ * `#{client_name}` is included for both because the auto-popup needs it
323
+ * (`display-popup -c <client>`) and the delegate script ignores extra arguments
324
+ * — one format list is one thing to keep right.
325
+ */
326
+ export declare const ATTACH_HOOK_FORMATS: readonly ["#{session_name}", "#{client_control_mode}", "#{client_name}"];
327
+ /**
328
+ * `set-hook -t <session> client-attached[0] 'run-shell -b …'`, or undefined when
329
+ * the script path cannot be quoted safely.
330
+ *
331
+ * @param sessionName - Target session
332
+ * @param scriptPath - Absolute path of the materialized delegate script
333
+ */
334
+ export declare function buildInstallDelegateHookArgs(sessionName: string, scriptPath: string): string[] | undefined;
335
+ /** `set-hook -u -t <session> client-attached[0]`. */
336
+ export declare function buildRemoveDelegateHookArgs(sessionName: string): string[];
337
+ /**
338
+ * `set-hook -t <session> client-attached[1] 'run-shell -b …'`, or undefined when
339
+ * the script path cannot be quoted safely.
340
+ */
341
+ export declare function buildInstallAutoPopupHookArgs(sessionName: string, scriptPath: string): string[] | undefined;
342
+ /** `set-hook -u -t <session> client-attached[1]`. */
343
+ export declare function buildRemoveAutoPopupHookArgs(sessionName: string): string[];
344
+ /**
345
+ * The tmux commands that hand a session's geometry to the attaching terminal.
346
+ *
347
+ * Ordered: the flag is raised BEFORE `window-size latest`, so a status poll that
348
+ * lands between the two sees "delegated, still 200x1000" — which suppresses the
349
+ * scraped save one poll early — rather than "not delegated, 44 rows", which
350
+ * would save a truncated reply. The cheap failure is the safe one.
351
+ *
352
+ * @param sessionName - Target session
353
+ * @returns Argument vectors, to run in order
354
+ */
355
+ export declare function buildDelegateGeometryCommands(sessionName: string): string[][];
356
+ /**
357
+ * The tmux commands that take a session's geometry back.
358
+ *
359
+ * The mirror image of {@link buildDelegateGeometryCommands}, and ordered the
360
+ * other way for the same reason: the canvas is restored first and the flag is
361
+ * dropped last, so no poll can ever see "not delegated" while the pane is still
362
+ * the size of somebody's terminal.
363
+ *
364
+ * @param sessionName - Target session
365
+ * @param width - Canvas width (defaults to the pinned {@link TUI_PANE_WIDTH})
366
+ * @param height - Canvas height (defaults to the pinned {@link TUI_PANE_HEIGHT})
367
+ */
368
+ export declare function buildRestoreGeometryCommands(sessionName: string, width?: number, height?: number): string[][];
369
+ //# sourceMappingURL=tmux-session-surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmux-session-surface.d.ts","sourceRoot":"","sources":["../../../src/lib/session/tmux-session-surface.ts"],"names":[],"mappings":"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"}