commandmate 0.31.3 → 0.32.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (816) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +498 -484
  3. package/.next/app-path-routes-manifest.json +44 -42
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/react-loadable-manifest.json +2 -2
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +8 -0
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/update-check/route.js +1 -1
  14. package/.next/server/app/api/app/update-check/route.js.nft.json +1 -1
  15. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  17. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  18. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  20. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  21. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/assistant/messages/route.js +1 -1
  23. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  24. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/assistant/session/route.js +1 -1
  26. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  27. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/assistant/start/route.js +1 -32
  29. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  30. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/assistant/terminal/route.js +2 -33
  32. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  33. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/assistant/tools/route.js +1 -1
  35. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  36. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/capabilities/route.js +1 -1
  41. package/.next/server/app/api/capabilities/route.js.nft.json +1 -1
  42. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  51. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  52. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  54. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  55. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  57. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  58. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/push/escalation/route.js +1 -1
  62. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  64. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/push/vapid/route.js +1 -1
  66. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -0
  68. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -0
  69. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -0
  70. package/.next/server/app/api/relays/route.js +1 -0
  71. package/.next/server/app/api/relays/route.js.nft.json +1 -0
  72. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -0
  73. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  76. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  78. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  80. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  81. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/repositories/clone/route.js +1 -1
  83. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  84. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/repositories/restore/route.js +1 -1
  87. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  88. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/repositories/route.js +1 -1
  90. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  91. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/repositories/scan/route.js +1 -1
  93. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  94. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/repositories/sync/route.js +1 -1
  96. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  97. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  100. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  101. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/skills/[id]/route.js +1 -1
  105. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  106. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/skills/installations/route.js +1 -1
  108. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  109. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/skills/route.js +1 -1
  113. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  114. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  116. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  119. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/todos/route.js +1 -1
  123. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  125. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/verification/runs/route.js +1 -1
  127. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  130. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  133. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  136. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  145. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  201. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  204. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +2 -1
  223. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +2 -1
  226. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  235. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  238. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  248. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +103 -1
  250. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  251. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  261. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  263. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  266. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  269. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  272. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  274. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  275. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  278. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  279. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  280. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  281. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  283. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  284. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  286. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  287. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  289. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  290. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  291. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  293. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  294. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  296. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  298. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  299. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/api/worktrees/route.js +1 -1
  301. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  302. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/chat/page.js +2 -2
  304. package/.next/server/app/chat/page.js.nft.json +1 -1
  305. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  306. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  307. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  308. package/.next/server/app/more/page.js +2 -2
  309. package/.next/server/app/more/page.js.nft.json +1 -1
  310. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  311. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  312. package/.next/server/app/page.js +1 -1
  313. package/.next/server/app/page.js.nft.json +1 -1
  314. package/.next/server/app/page_client-reference-manifest.js +1 -1
  315. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  316. package/.next/server/app/repositories/page.js +2 -2
  317. package/.next/server/app/repositories/page.js.nft.json +1 -1
  318. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  319. package/.next/server/app/review/page.js +1 -1
  320. package/.next/server/app/review/page.js.nft.json +1 -1
  321. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  322. package/.next/server/app/sessions/page.js +1 -1
  323. package/.next/server/app/sessions/page.js.nft.json +1 -1
  324. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  325. package/.next/server/app/skills/[skillId]/page.js +2 -2
  326. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  327. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  328. package/.next/server/app/skills/installed/page.js +2 -2
  329. package/.next/server/app/skills/installed/page.js.nft.json +1 -1
  330. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  331. package/.next/server/app/skills/page.js +1 -1
  332. package/.next/server/app/skills/page.js.nft.json +1 -1
  333. package/.next/server/app/skills/page_client-reference-manifest.js +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 +11 -11
  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_client-reference-manifest.js +1 -1
  339. package/.next/server/app-paths-manifest.json +44 -42
  340. package/.next/server/chunks/1210.js +1 -0
  341. package/.next/server/chunks/153.js +1 -0
  342. package/.next/server/chunks/1886.js +1 -1
  343. package/.next/server/chunks/21.js +1 -0
  344. package/.next/server/chunks/2119.js +1 -1
  345. package/.next/server/chunks/2445.js +1 -1
  346. package/.next/server/chunks/3077.js +67 -0
  347. package/.next/server/chunks/3086.js +1 -0
  348. package/.next/server/chunks/3241.js +1 -1
  349. package/.next/server/chunks/3270.js +1 -0
  350. package/.next/server/chunks/3543.js +1 -1
  351. package/.next/server/chunks/3730.js +1 -0
  352. package/.next/server/chunks/3925.js +1 -0
  353. package/.next/server/chunks/3945.js +1 -1
  354. package/.next/server/chunks/4443.js +2 -1
  355. package/.next/server/chunks/5043.js +1 -1
  356. package/.next/server/chunks/5164.js +1 -1
  357. package/.next/server/chunks/5220.js +1 -1
  358. package/.next/server/chunks/5354.js +1 -1
  359. package/.next/server/chunks/595.js +3 -3
  360. package/.next/server/chunks/6286.js +48 -0
  361. package/.next/server/chunks/6306.js +1 -0
  362. package/.next/server/chunks/6363.js +1 -0
  363. package/.next/server/chunks/6401.js +1 -1
  364. package/.next/server/chunks/6491.js +103 -0
  365. package/.next/server/chunks/{9798.js → 6661.js} +1 -2
  366. package/.next/server/chunks/6838.js +1 -0
  367. package/.next/server/chunks/7875.js +25 -0
  368. package/.next/server/chunks/7890.js +1 -0
  369. package/.next/server/chunks/8063.js +32 -0
  370. package/.next/server/chunks/8118.js +1 -1
  371. package/.next/server/chunks/{7587.js → 8554.js} +1 -1
  372. package/.next/server/chunks/8687.js +1 -0
  373. package/.next/server/chunks/8807.js +37 -3
  374. package/.next/server/chunks/8918.js +6 -4
  375. package/.next/server/chunks/9123.js +2 -2
  376. package/.next/server/chunks/9130.js +1 -1
  377. package/.next/server/chunks/9584.js +1 -1
  378. package/.next/server/chunks/9627.js +21 -5
  379. package/.next/server/middleware-build-manifest.js +1 -1
  380. package/.next/server/middleware-manifest.json +5 -5
  381. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  382. package/.next/server/pages/500.html +1 -1
  383. package/.next/server/server-reference-manifest.json +1 -1
  384. package/.next/static/Lno4w_zWXdGdlfXg06Vp8/_buildManifest.js +1 -0
  385. package/.next/static/chunks/{5694.dda65070757534df.js → 3313.53f7ff985c0c8852.js} +1 -1
  386. package/.next/static/chunks/4718-9d63107c612a065d.js +1 -0
  387. package/.next/static/chunks/{4974-35592ec312322124.js → 5694-498765336d0b8c2b.js} +1 -1
  388. package/.next/static/chunks/{7485.442b21101fca7257.js → 7485.52361bc061cc663a.js} +1 -1
  389. package/.next/static/chunks/8019-cbf130d0e6334d2d.js +1 -0
  390. package/.next/static/chunks/8361-9bb887203c456edb.js +1 -0
  391. package/.next/static/chunks/8772-9be53a530950d804.js +1 -0
  392. package/.next/static/chunks/998-ac0ded6d5eeb4dc0.js +1 -0
  393. package/.next/static/chunks/app/api/agents/update/route-8bc5b680c5f3eae4.js +1 -0
  394. package/.next/static/chunks/app/api/agents/versions/route-8bc5b680c5f3eae4.js +1 -0
  395. package/.next/static/chunks/app/api/app/update/route-8bc5b680c5f3eae4.js +1 -0
  396. package/.next/static/chunks/app/api/app/update-check/route-8bc5b680c5f3eae4.js +1 -0
  397. package/.next/static/chunks/app/api/assistant/conversation/route-8bc5b680c5f3eae4.js +1 -0
  398. package/.next/static/chunks/app/api/assistant/current-output/route-8bc5b680c5f3eae4.js +1 -0
  399. package/.next/static/chunks/app/api/assistant/messages/route-8bc5b680c5f3eae4.js +1 -0
  400. package/.next/static/chunks/app/api/assistant/session/route-8bc5b680c5f3eae4.js +1 -0
  401. package/.next/static/chunks/app/api/assistant/start/route-8bc5b680c5f3eae4.js +1 -0
  402. package/.next/static/chunks/app/api/assistant/terminal/route-8bc5b680c5f3eae4.js +1 -0
  403. package/.next/static/chunks/app/api/assistant/tools/route-8bc5b680c5f3eae4.js +1 -0
  404. package/.next/static/chunks/app/api/auth/login/route-8bc5b680c5f3eae4.js +1 -0
  405. package/.next/static/chunks/app/api/auth/logout/route-8bc5b680c5f3eae4.js +1 -0
  406. package/.next/static/chunks/app/api/auth/status/route-8bc5b680c5f3eae4.js +1 -0
  407. package/.next/static/chunks/app/api/capabilities/route-8bc5b680c5f3eae4.js +1 -0
  408. package/.next/static/chunks/app/api/daily-summary/route-8bc5b680c5f3eae4.js +1 -0
  409. package/.next/static/chunks/app/api/daily-summary/status/route-8bc5b680c5f3eae4.js +1 -0
  410. package/.next/static/chunks/app/api/external-apps/[id]/health/route-8bc5b680c5f3eae4.js +1 -0
  411. package/.next/static/chunks/app/api/external-apps/[id]/route-8bc5b680c5f3eae4.js +1 -0
  412. package/.next/static/chunks/app/api/external-apps/route-8bc5b680c5f3eae4.js +1 -0
  413. package/.next/static/chunks/app/api/fs/browse/route-8bc5b680c5f3eae4.js +1 -0
  414. package/.next/static/chunks/app/api/fs/recent-paths/route-8bc5b680c5f3eae4.js +1 -0
  415. package/.next/static/chunks/app/api/hooks/agent-event/route-8bc5b680c5f3eae4.js +1 -0
  416. package/.next/static/chunks/app/api/hooks/claude-done/route-8bc5b680c5f3eae4.js +1 -0
  417. package/.next/static/chunks/app/api/hooks/permission-request/route-8bc5b680c5f3eae4.js +1 -0
  418. package/.next/static/chunks/app/api/metrics/vibe/route-8bc5b680c5f3eae4.js +1 -0
  419. package/.next/static/chunks/app/api/ollama/models/route-8bc5b680c5f3eae4.js +1 -0
  420. package/.next/static/chunks/app/api/push/escalation/route-8bc5b680c5f3eae4.js +1 -0
  421. package/.next/static/chunks/app/api/push/subscriptions/route-8bc5b680c5f3eae4.js +1 -0
  422. package/.next/static/chunks/app/api/push/vapid/route-8bc5b680c5f3eae4.js +1 -0
  423. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
  424. package/.next/static/chunks/app/api/relays/route-8bc5b680c5f3eae4.js +1 -0
  425. package/.next/static/chunks/app/api/remote/pair/route-8bc5b680c5f3eae4.js +1 -0
  426. package/.next/static/chunks/app/api/repositories/[id]/route-8bc5b680c5f3eae4.js +1 -0
  427. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8bc5b680c5f3eae4.js +1 -0
  428. package/.next/static/chunks/app/api/repositories/[id]/todos/route-8bc5b680c5f3eae4.js +1 -0
  429. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8bc5b680c5f3eae4.js +1 -0
  430. package/.next/static/chunks/app/api/repositories/clone/route-8bc5b680c5f3eae4.js +1 -0
  431. package/.next/static/chunks/app/api/repositories/excluded/route-8bc5b680c5f3eae4.js +1 -0
  432. package/.next/static/chunks/app/api/repositories/restore/route-8bc5b680c5f3eae4.js +1 -0
  433. package/.next/static/chunks/app/api/repositories/route-8bc5b680c5f3eae4.js +1 -0
  434. package/.next/static/chunks/app/api/repositories/scan/route-8bc5b680c5f3eae4.js +1 -0
  435. package/.next/static/chunks/app/api/repositories/sync/route-8bc5b680c5f3eae4.js +1 -0
  436. package/.next/static/chunks/app/api/repositories/validate-path/route-8bc5b680c5f3eae4.js +1 -0
  437. package/.next/static/chunks/app/api/settings/default-agents/route-8bc5b680c5f3eae4.js +1 -0
  438. package/.next/static/chunks/app/api/settings/default-surface-mode/route-8bc5b680c5f3eae4.js +1 -0
  439. package/.next/static/chunks/app/api/sidebar/group-order/route-8bc5b680c5f3eae4.js +1 -0
  440. package/.next/static/chunks/app/api/skills/[id]/route-8bc5b680c5f3eae4.js +1 -0
  441. package/.next/static/chunks/app/api/skills/installations/route-8bc5b680c5f3eae4.js +1 -0
  442. package/.next/static/chunks/app/api/skills/operations/route-8bc5b680c5f3eae4.js +1 -0
  443. package/.next/static/chunks/app/api/skills/reindex/route-8bc5b680c5f3eae4.js +1 -0
  444. package/.next/static/chunks/app/api/skills/route-8bc5b680c5f3eae4.js +1 -0
  445. package/.next/static/chunks/app/api/slash-commands/route-8bc5b680c5f3eae4.js +1 -0
  446. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
  447. package/.next/static/chunks/app/api/tasks/[taskId]/route-8bc5b680c5f3eae4.js +1 -0
  448. package/.next/static/chunks/app/api/templates/[id]/route-8bc5b680c5f3eae4.js +1 -0
  449. package/.next/static/chunks/app/api/templates/route-8bc5b680c5f3eae4.js +1 -0
  450. package/.next/static/chunks/app/api/todos/route-8bc5b680c5f3eae4.js +1 -0
  451. package/.next/static/chunks/app/api/verification/runs/[runId]/route-8bc5b680c5f3eae4.js +1 -0
  452. package/.next/static/chunks/app/api/verification/runs/route-8bc5b680c5f3eae4.js +1 -0
  453. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8bc5b680c5f3eae4.js +1 -0
  454. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8bc5b680c5f3eae4.js +1 -0
  455. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-8bc5b680c5f3eae4.js +1 -0
  456. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-8bc5b680c5f3eae4.js +1 -0
  457. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8bc5b680c5f3eae4.js +1 -0
  458. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8bc5b680c5f3eae4.js +1 -0
  459. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8bc5b680c5f3eae4.js +1 -0
  460. package/.next/static/chunks/app/api/worktrees/[id]/env/route-8bc5b680c5f3eae4.js +1 -0
  461. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8bc5b680c5f3eae4.js +1 -0
  462. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8bc5b680c5f3eae4.js +1 -0
  463. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  464. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8bc5b680c5f3eae4.js +1 -0
  465. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8bc5b680c5f3eae4.js +1 -0
  466. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8bc5b680c5f3eae4.js +1 -0
  467. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8bc5b680c5f3eae4.js +1 -0
  468. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8bc5b680c5f3eae4.js +1 -0
  469. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8bc5b680c5f3eae4.js +1 -0
  470. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8bc5b680c5f3eae4.js +1 -0
  471. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8bc5b680c5f3eae4.js +1 -0
  472. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8bc5b680c5f3eae4.js +1 -0
  473. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8bc5b680c5f3eae4.js +1 -0
  474. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8bc5b680c5f3eae4.js +1 -0
  475. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8bc5b680c5f3eae4.js +1 -0
  476. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8bc5b680c5f3eae4.js +1 -0
  477. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8bc5b680c5f3eae4.js +1 -0
  478. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8bc5b680c5f3eae4.js +1 -0
  479. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8bc5b680c5f3eae4.js +1 -0
  480. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8bc5b680c5f3eae4.js +1 -0
  481. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8bc5b680c5f3eae4.js +1 -0
  482. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8bc5b680c5f3eae4.js +1 -0
  483. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8bc5b680c5f3eae4.js +1 -0
  484. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8bc5b680c5f3eae4.js +1 -0
  485. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8bc5b680c5f3eae4.js +1 -0
  486. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8bc5b680c5f3eae4.js +1 -0
  487. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-8bc5b680c5f3eae4.js +1 -0
  488. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8bc5b680c5f3eae4.js +1 -0
  489. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8bc5b680c5f3eae4.js +1 -0
  490. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8bc5b680c5f3eae4.js +1 -0
  491. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8bc5b680c5f3eae4.js +1 -0
  492. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8bc5b680c5f3eae4.js +1 -0
  493. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8bc5b680c5f3eae4.js +1 -0
  494. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8bc5b680c5f3eae4.js +1 -0
  495. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8bc5b680c5f3eae4.js +1 -0
  496. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-8bc5b680c5f3eae4.js +1 -0
  497. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-8bc5b680c5f3eae4.js +1 -0
  498. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-8bc5b680c5f3eae4.js +1 -0
  499. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8bc5b680c5f3eae4.js +1 -0
  500. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-8bc5b680c5f3eae4.js +1 -0
  501. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8bc5b680c5f3eae4.js +1 -0
  502. package/.next/static/chunks/app/api/worktrees/[id]/route-8bc5b680c5f3eae4.js +1 -0
  503. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8bc5b680c5f3eae4.js +1 -0
  504. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8bc5b680c5f3eae4.js +1 -0
  505. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8bc5b680c5f3eae4.js +1 -0
  506. package/.next/static/chunks/app/api/worktrees/[id]/search/route-8bc5b680c5f3eae4.js +1 -0
  507. package/.next/static/chunks/app/api/worktrees/[id]/send/route-8bc5b680c5f3eae4.js +1 -0
  508. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-8bc5b680c5f3eae4.js +1 -0
  509. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8bc5b680c5f3eae4.js +1 -0
  510. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8bc5b680c5f3eae4.js +1 -0
  511. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8bc5b680c5f3eae4.js +1 -0
  512. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8bc5b680c5f3eae4.js +1 -0
  513. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-8bc5b680c5f3eae4.js +1 -0
  514. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-8bc5b680c5f3eae4.js +1 -0
  515. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8bc5b680c5f3eae4.js +1 -0
  516. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8bc5b680c5f3eae4.js +1 -0
  517. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8bc5b680c5f3eae4.js +1 -0
  518. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-8bc5b680c5f3eae4.js +1 -0
  519. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8bc5b680c5f3eae4.js +1 -0
  520. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8bc5b680c5f3eae4.js +1 -0
  521. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8bc5b680c5f3eae4.js +1 -0
  522. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8bc5b680c5f3eae4.js +1 -0
  523. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8bc5b680c5f3eae4.js +1 -0
  524. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  525. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8bc5b680c5f3eae4.js +1 -0
  526. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  527. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-8bc5b680c5f3eae4.js +1 -0
  528. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-8bc5b680c5f3eae4.js +1 -0
  529. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-8bc5b680c5f3eae4.js +1 -0
  530. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-8bc5b680c5f3eae4.js +1 -0
  531. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-8bc5b680c5f3eae4.js +1 -0
  532. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8bc5b680c5f3eae4.js +1 -0
  533. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-8bc5b680c5f3eae4.js +1 -0
  534. package/.next/static/chunks/app/api/worktrees/route-8bc5b680c5f3eae4.js +1 -0
  535. package/.next/static/chunks/app/chat/{page-37d7615d17d7e2a0.js → page-e60d07c4c79602f0.js} +1 -1
  536. package/.next/static/chunks/app/manifest.webmanifest/route-8bc5b680c5f3eae4.js +1 -0
  537. package/.next/static/chunks/app/more/{page-353a3924e6d7968e.js → page-fc94f86aa881489e.js} +1 -1
  538. package/.next/static/chunks/app/{page-c2bf871d953a1d6f.js → page-6871cca022b24807.js} +1 -1
  539. package/.next/static/chunks/app/proxy/[...path]/route-8bc5b680c5f3eae4.js +1 -0
  540. package/.next/static/chunks/app/repositories/{page-7d0f26df0537254c.js → page-788ded1b72963d94.js} +1 -1
  541. package/.next/static/chunks/app/review/{page-e3f141b2829973e9.js → page-35b99baaf3c93b38.js} +1 -1
  542. package/.next/static/chunks/app/sessions/{page-53f188ed9ca49e5f.js → page-fa2d62f3e8436c69.js} +1 -1
  543. package/.next/static/chunks/app/skills/[skillId]/{page-80569b720aea59cc.js → page-06799157652e8fa9.js} +1 -1
  544. package/.next/static/chunks/app/skills/installed/{page-dbd2690ad72da95b.js → page-2f3987e3a131c8d0.js} +1 -1
  545. package/.next/static/chunks/app/skills/{page-dacd36f9c11aa7da.js → page-e70bfcf5ed4e4865.js} +1 -1
  546. package/.next/static/chunks/app/worktrees/[id]/layout-8bc5b680c5f3eae4.js +1 -0
  547. package/.next/static/chunks/app/worktrees/[id]/page-3d82a9355d5612d9.js +1 -0
  548. package/.next/static/chunks/webpack-1dc9eb5ebb4fa5ff.js +1 -0
  549. package/.next/static/css/96d94a4ba771efc3.css +1 -0
  550. package/.next/trace +13 -13
  551. package/.next/types/app/api/relays/[relayId]/cancel/route.ts +347 -0
  552. package/.next/types/app/api/relays/route.ts +347 -0
  553. package/.next/types/routes.d.ts +3 -1
  554. package/.next/types/validator.ts +18 -0
  555. package/README.md +6 -2
  556. package/dist/cli/commands/ask.d.ts +34 -0
  557. package/dist/cli/commands/ask.d.ts.map +1 -0
  558. package/dist/cli/commands/ask.js +494 -0
  559. package/dist/cli/commands/capture.d.ts +20 -0
  560. package/dist/cli/commands/capture.d.ts.map +1 -1
  561. package/dist/cli/commands/capture.js +80 -30
  562. package/dist/cli/commands/docs.d.ts.map +1 -1
  563. package/dist/cli/commands/docs.js +47 -4
  564. package/dist/cli/commands/instances.d.ts +67 -0
  565. package/dist/cli/commands/instances.d.ts.map +1 -1
  566. package/dist/cli/commands/instances.js +147 -22
  567. package/dist/cli/commands/peers.d.ts +64 -0
  568. package/dist/cli/commands/peers.d.ts.map +1 -0
  569. package/dist/cli/commands/peers.js +208 -0
  570. package/dist/cli/commands/relays.d.ts +92 -0
  571. package/dist/cli/commands/relays.d.ts.map +1 -0
  572. package/dist/cli/commands/relays.js +293 -0
  573. package/dist/cli/commands/report.d.ts +3 -0
  574. package/dist/cli/commands/report.d.ts.map +1 -1
  575. package/dist/cli/commands/report.js +29 -1
  576. package/dist/cli/commands/respond.d.ts.map +1 -1
  577. package/dist/cli/commands/respond.js +13 -10
  578. package/dist/cli/commands/send.d.ts.map +1 -1
  579. package/dist/cli/commands/send.js +66 -20
  580. package/dist/cli/commands/task.d.ts.map +1 -1
  581. package/dist/cli/commands/task.js +30 -0
  582. package/dist/cli/commands/wait.d.ts +20 -0
  583. package/dist/cli/commands/wait.d.ts.map +1 -1
  584. package/dist/cli/commands/wait.js +55 -6
  585. package/dist/cli/commands/whoami.d.ts +176 -0
  586. package/dist/cli/commands/whoami.d.ts.map +1 -0
  587. package/dist/cli/commands/whoami.js +377 -0
  588. package/dist/cli/docs/agent-operations.d.ts +25 -1
  589. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  590. package/dist/cli/docs/agent-operations.js +184 -1
  591. package/dist/cli/index.d.ts +13 -0
  592. package/dist/cli/index.d.ts.map +1 -1
  593. package/dist/cli/index.js +25 -1
  594. package/dist/cli/types/api-responses.d.ts +93 -0
  595. package/dist/cli/types/api-responses.d.ts.map +1 -1
  596. package/dist/cli/types/index.d.ts +16 -0
  597. package/dist/cli/types/index.d.ts.map +1 -1
  598. package/dist/cli/utils/api-client.d.ts +30 -1
  599. package/dist/cli/utils/api-client.d.ts.map +1 -1
  600. package/dist/cli/utils/api-client.js +28 -5
  601. package/dist/lib/cli/command-reference.d.ts +179 -0
  602. package/dist/lib/cli/command-reference.d.ts.map +1 -0
  603. package/dist/lib/cli/command-reference.js +210 -0
  604. package/dist/lib/detection/ansi.d.ts +14 -1
  605. package/dist/lib/detection/ansi.d.ts.map +1 -1
  606. package/dist/lib/detection/ansi.js +40 -3
  607. package/dist/lib/detection/status-reason.d.ts +28 -0
  608. package/dist/lib/detection/status-reason.d.ts.map +1 -1
  609. package/dist/lib/detection/status-reason.js +28 -0
  610. package/dist/server/locales/en/worktree.json +23 -0
  611. package/dist/server/locales/ja/worktree.json +23 -0
  612. package/dist/server/src/lib/auto-yes-poller.js +26 -11
  613. package/dist/server/src/lib/db/chat-db.js +161 -7
  614. package/dist/server/src/lib/db/migrations/index.js +2 -0
  615. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  616. package/dist/server/src/lib/db/migrations/v60-session-relays.js +110 -0
  617. package/dist/server/src/lib/db/relay-db.js +343 -0
  618. package/dist/server/src/lib/detection/ansi.js +40 -3
  619. package/dist/server/src/lib/detection/cli-patterns.js +206 -2
  620. package/dist/server/src/lib/detection/selection-shape.js +72 -1
  621. package/dist/server/src/lib/detection/status-reason.js +28 -0
  622. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +13 -7
  623. package/dist/server/src/lib/detection/tools/command-code/detect.js +33 -0
  624. package/dist/server/src/lib/history/user-turn-recorder.js +79 -16
  625. package/dist/server/src/lib/hooks/agent-event-service.js +27 -5
  626. package/dist/server/src/lib/hooks/sources/codex/history.js +63 -3
  627. package/dist/server/src/lib/hooks/sources/codex/transcript.js +53 -1
  628. package/dist/server/src/lib/hooks/sources/launch-command.js +112 -15
  629. package/dist/server/src/lib/hooks/stop-history-capture.js +252 -50
  630. package/dist/server/src/lib/polling/response-checker.js +174 -13
  631. package/dist/server/src/lib/polling/response-dedup.js +136 -0
  632. package/dist/server/src/lib/polling/structured-history-gate.js +14 -1
  633. package/dist/server/src/lib/realtime/terminal-broadcast.js +5 -0
  634. package/dist/server/src/lib/realtime/waiting-broadcast.js +12 -0
  635. package/dist/server/src/lib/relay/relay-delivery.js +554 -0
  636. package/dist/server/src/lib/relay/relay-messages.js +144 -0
  637. package/dist/server/src/lib/relay/relay-policy.js +127 -0
  638. package/dist/server/src/lib/relay/relay-readiness.js +63 -0
  639. package/dist/server/src/lib/relay/relay-session-ref.js +72 -0
  640. package/dist/server/src/lib/relay/relay-system-line.js +79 -0
  641. package/dist/server/src/lib/relay/relay-triggers.js +177 -0
  642. package/dist/server/src/lib/relay/types.js +25 -0
  643. package/dist/server/src/lib/session/current-output-builder.js +18 -0
  644. package/dist/server/src/lib/session/send-user-message.js +1 -0
  645. package/package.json +1 -1
  646. package/.next/server/chunks/1058.js +0 -1
  647. package/.next/server/chunks/1068.js +0 -1
  648. package/.next/server/chunks/1990.js +0 -103
  649. package/.next/server/chunks/261.js +0 -1
  650. package/.next/server/chunks/2739.js +0 -1
  651. package/.next/server/chunks/2839.js +0 -1
  652. package/.next/server/chunks/3484.js +0 -1
  653. package/.next/server/chunks/358.js +0 -1
  654. package/.next/server/chunks/3869.js +0 -1
  655. package/.next/server/chunks/4325.js +0 -1
  656. package/.next/server/chunks/4393.js +0 -1
  657. package/.next/server/chunks/5017.js +0 -1
  658. package/.next/server/chunks/5120.js +0 -1
  659. package/.next/server/chunks/552.js +0 -25
  660. package/.next/server/chunks/6130.js +0 -1
  661. package/.next/server/chunks/7836.js +0 -1
  662. package/.next/server/chunks/7859.js +0 -21
  663. package/.next/server/chunks/9696.js +0 -3
  664. package/.next/static/0hTIackGXw6v7diXJS6yN/_buildManifest.js +0 -1
  665. package/.next/static/chunks/2813-de885de8a4b11910.js +0 -1
  666. package/.next/static/chunks/4718-07ec4e10186928db.js +0 -1
  667. package/.next/static/chunks/6170-951b9f5fe6b4b3b5.js +0 -1
  668. package/.next/static/chunks/8019-f8e73c1fb5f6f0d3.js +0 -1
  669. package/.next/static/chunks/8593-fa0eb2802e0ce68a.js +0 -1
  670. package/.next/static/chunks/app/api/agents/update/route-ee11f7b8a34cba8c.js +0 -1
  671. package/.next/static/chunks/app/api/agents/versions/route-ee11f7b8a34cba8c.js +0 -1
  672. package/.next/static/chunks/app/api/app/update/route-ee11f7b8a34cba8c.js +0 -1
  673. package/.next/static/chunks/app/api/app/update-check/route-ee11f7b8a34cba8c.js +0 -1
  674. package/.next/static/chunks/app/api/assistant/conversation/route-ee11f7b8a34cba8c.js +0 -1
  675. package/.next/static/chunks/app/api/assistant/current-output/route-ee11f7b8a34cba8c.js +0 -1
  676. package/.next/static/chunks/app/api/assistant/messages/route-ee11f7b8a34cba8c.js +0 -1
  677. package/.next/static/chunks/app/api/assistant/session/route-ee11f7b8a34cba8c.js +0 -1
  678. package/.next/static/chunks/app/api/assistant/start/route-ee11f7b8a34cba8c.js +0 -1
  679. package/.next/static/chunks/app/api/assistant/terminal/route-ee11f7b8a34cba8c.js +0 -1
  680. package/.next/static/chunks/app/api/assistant/tools/route-ee11f7b8a34cba8c.js +0 -1
  681. package/.next/static/chunks/app/api/auth/login/route-ee11f7b8a34cba8c.js +0 -1
  682. package/.next/static/chunks/app/api/auth/logout/route-ee11f7b8a34cba8c.js +0 -1
  683. package/.next/static/chunks/app/api/auth/status/route-ee11f7b8a34cba8c.js +0 -1
  684. package/.next/static/chunks/app/api/capabilities/route-ee11f7b8a34cba8c.js +0 -1
  685. package/.next/static/chunks/app/api/daily-summary/route-ee11f7b8a34cba8c.js +0 -1
  686. package/.next/static/chunks/app/api/daily-summary/status/route-ee11f7b8a34cba8c.js +0 -1
  687. package/.next/static/chunks/app/api/external-apps/[id]/health/route-ee11f7b8a34cba8c.js +0 -1
  688. package/.next/static/chunks/app/api/external-apps/[id]/route-ee11f7b8a34cba8c.js +0 -1
  689. package/.next/static/chunks/app/api/external-apps/route-ee11f7b8a34cba8c.js +0 -1
  690. package/.next/static/chunks/app/api/fs/browse/route-ee11f7b8a34cba8c.js +0 -1
  691. package/.next/static/chunks/app/api/fs/recent-paths/route-ee11f7b8a34cba8c.js +0 -1
  692. package/.next/static/chunks/app/api/hooks/agent-event/route-ee11f7b8a34cba8c.js +0 -1
  693. package/.next/static/chunks/app/api/hooks/claude-done/route-ee11f7b8a34cba8c.js +0 -1
  694. package/.next/static/chunks/app/api/hooks/permission-request/route-ee11f7b8a34cba8c.js +0 -1
  695. package/.next/static/chunks/app/api/metrics/vibe/route-ee11f7b8a34cba8c.js +0 -1
  696. package/.next/static/chunks/app/api/ollama/models/route-ee11f7b8a34cba8c.js +0 -1
  697. package/.next/static/chunks/app/api/push/escalation/route-ee11f7b8a34cba8c.js +0 -1
  698. package/.next/static/chunks/app/api/push/subscriptions/route-ee11f7b8a34cba8c.js +0 -1
  699. package/.next/static/chunks/app/api/push/vapid/route-ee11f7b8a34cba8c.js +0 -1
  700. package/.next/static/chunks/app/api/remote/pair/route-ee11f7b8a34cba8c.js +0 -1
  701. package/.next/static/chunks/app/api/repositories/[id]/route-ee11f7b8a34cba8c.js +0 -1
  702. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +0 -1
  703. package/.next/static/chunks/app/api/repositories/[id]/todos/route-ee11f7b8a34cba8c.js +0 -1
  704. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-ee11f7b8a34cba8c.js +0 -1
  705. package/.next/static/chunks/app/api/repositories/clone/route-ee11f7b8a34cba8c.js +0 -1
  706. package/.next/static/chunks/app/api/repositories/excluded/route-ee11f7b8a34cba8c.js +0 -1
  707. package/.next/static/chunks/app/api/repositories/restore/route-ee11f7b8a34cba8c.js +0 -1
  708. package/.next/static/chunks/app/api/repositories/route-ee11f7b8a34cba8c.js +0 -1
  709. package/.next/static/chunks/app/api/repositories/scan/route-ee11f7b8a34cba8c.js +0 -1
  710. package/.next/static/chunks/app/api/repositories/sync/route-ee11f7b8a34cba8c.js +0 -1
  711. package/.next/static/chunks/app/api/repositories/validate-path/route-ee11f7b8a34cba8c.js +0 -1
  712. package/.next/static/chunks/app/api/settings/default-agents/route-ee11f7b8a34cba8c.js +0 -1
  713. package/.next/static/chunks/app/api/settings/default-surface-mode/route-ee11f7b8a34cba8c.js +0 -1
  714. package/.next/static/chunks/app/api/sidebar/group-order/route-ee11f7b8a34cba8c.js +0 -1
  715. package/.next/static/chunks/app/api/skills/[id]/route-ee11f7b8a34cba8c.js +0 -1
  716. package/.next/static/chunks/app/api/skills/installations/route-ee11f7b8a34cba8c.js +0 -1
  717. package/.next/static/chunks/app/api/skills/operations/route-ee11f7b8a34cba8c.js +0 -1
  718. package/.next/static/chunks/app/api/skills/reindex/route-ee11f7b8a34cba8c.js +0 -1
  719. package/.next/static/chunks/app/api/skills/route-ee11f7b8a34cba8c.js +0 -1
  720. package/.next/static/chunks/app/api/slash-commands/route-ee11f7b8a34cba8c.js +0 -1
  721. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-ee11f7b8a34cba8c.js +0 -1
  722. package/.next/static/chunks/app/api/tasks/[taskId]/route-ee11f7b8a34cba8c.js +0 -1
  723. package/.next/static/chunks/app/api/templates/[id]/route-ee11f7b8a34cba8c.js +0 -1
  724. package/.next/static/chunks/app/api/templates/route-ee11f7b8a34cba8c.js +0 -1
  725. package/.next/static/chunks/app/api/todos/route-ee11f7b8a34cba8c.js +0 -1
  726. package/.next/static/chunks/app/api/verification/runs/[runId]/route-ee11f7b8a34cba8c.js +0 -1
  727. package/.next/static/chunks/app/api/verification/runs/route-ee11f7b8a34cba8c.js +0 -1
  728. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-ee11f7b8a34cba8c.js +0 -1
  729. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-ee11f7b8a34cba8c.js +0 -1
  730. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-ee11f7b8a34cba8c.js +0 -1
  731. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-ee11f7b8a34cba8c.js +0 -1
  732. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-ee11f7b8a34cba8c.js +0 -1
  733. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-ee11f7b8a34cba8c.js +0 -1
  734. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-ee11f7b8a34cba8c.js +0 -1
  735. package/.next/static/chunks/app/api/worktrees/[id]/env/route-ee11f7b8a34cba8c.js +0 -1
  736. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-ee11f7b8a34cba8c.js +0 -1
  737. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-ee11f7b8a34cba8c.js +0 -1
  738. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  739. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-ee11f7b8a34cba8c.js +0 -1
  740. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-ee11f7b8a34cba8c.js +0 -1
  741. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-ee11f7b8a34cba8c.js +0 -1
  742. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-ee11f7b8a34cba8c.js +0 -1
  743. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-ee11f7b8a34cba8c.js +0 -1
  744. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-ee11f7b8a34cba8c.js +0 -1
  745. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-ee11f7b8a34cba8c.js +0 -1
  746. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-ee11f7b8a34cba8c.js +0 -1
  747. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-ee11f7b8a34cba8c.js +0 -1
  748. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-ee11f7b8a34cba8c.js +0 -1
  749. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-ee11f7b8a34cba8c.js +0 -1
  750. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-ee11f7b8a34cba8c.js +0 -1
  751. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-ee11f7b8a34cba8c.js +0 -1
  752. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-ee11f7b8a34cba8c.js +0 -1
  753. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-ee11f7b8a34cba8c.js +0 -1
  754. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-ee11f7b8a34cba8c.js +0 -1
  755. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-ee11f7b8a34cba8c.js +0 -1
  756. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-ee11f7b8a34cba8c.js +0 -1
  757. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-ee11f7b8a34cba8c.js +0 -1
  758. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-ee11f7b8a34cba8c.js +0 -1
  759. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-ee11f7b8a34cba8c.js +0 -1
  760. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-ee11f7b8a34cba8c.js +0 -1
  761. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-ee11f7b8a34cba8c.js +0 -1
  762. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-ee11f7b8a34cba8c.js +0 -1
  763. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-ee11f7b8a34cba8c.js +0 -1
  764. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-ee11f7b8a34cba8c.js +0 -1
  765. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-ee11f7b8a34cba8c.js +0 -1
  766. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-ee11f7b8a34cba8c.js +0 -1
  767. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-ee11f7b8a34cba8c.js +0 -1
  768. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-ee11f7b8a34cba8c.js +0 -1
  769. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-ee11f7b8a34cba8c.js +0 -1
  770. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-ee11f7b8a34cba8c.js +0 -1
  771. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-ee11f7b8a34cba8c.js +0 -1
  772. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-ee11f7b8a34cba8c.js +0 -1
  773. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-ee11f7b8a34cba8c.js +0 -1
  774. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-ee11f7b8a34cba8c.js +0 -1
  775. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-ee11f7b8a34cba8c.js +0 -1
  776. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-ee11f7b8a34cba8c.js +0 -1
  777. package/.next/static/chunks/app/api/worktrees/[id]/route-ee11f7b8a34cba8c.js +0 -1
  778. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-ee11f7b8a34cba8c.js +0 -1
  779. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-ee11f7b8a34cba8c.js +0 -1
  780. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-ee11f7b8a34cba8c.js +0 -1
  781. package/.next/static/chunks/app/api/worktrees/[id]/search/route-ee11f7b8a34cba8c.js +0 -1
  782. package/.next/static/chunks/app/api/worktrees/[id]/send/route-ee11f7b8a34cba8c.js +0 -1
  783. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-ee11f7b8a34cba8c.js +0 -1
  784. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-ee11f7b8a34cba8c.js +0 -1
  785. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-ee11f7b8a34cba8c.js +0 -1
  786. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-ee11f7b8a34cba8c.js +0 -1
  787. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-ee11f7b8a34cba8c.js +0 -1
  788. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-ee11f7b8a34cba8c.js +0 -1
  789. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-ee11f7b8a34cba8c.js +0 -1
  790. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-ee11f7b8a34cba8c.js +0 -1
  791. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-ee11f7b8a34cba8c.js +0 -1
  792. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-ee11f7b8a34cba8c.js +0 -1
  793. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-ee11f7b8a34cba8c.js +0 -1
  794. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-ee11f7b8a34cba8c.js +0 -1
  795. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-ee11f7b8a34cba8c.js +0 -1
  796. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-ee11f7b8a34cba8c.js +0 -1
  797. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +0 -1
  798. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-ee11f7b8a34cba8c.js +0 -1
  799. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  800. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-ee11f7b8a34cba8c.js +0 -1
  801. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  802. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-ee11f7b8a34cba8c.js +0 -1
  803. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-ee11f7b8a34cba8c.js +0 -1
  804. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-ee11f7b8a34cba8c.js +0 -1
  805. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-ee11f7b8a34cba8c.js +0 -1
  806. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-ee11f7b8a34cba8c.js +0 -1
  807. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-ee11f7b8a34cba8c.js +0 -1
  808. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-ee11f7b8a34cba8c.js +0 -1
  809. package/.next/static/chunks/app/api/worktrees/route-ee11f7b8a34cba8c.js +0 -1
  810. package/.next/static/chunks/app/manifest.webmanifest/route-ee11f7b8a34cba8c.js +0 -1
  811. package/.next/static/chunks/app/proxy/[...path]/route-ee11f7b8a34cba8c.js +0 -1
  812. package/.next/static/chunks/app/worktrees/[id]/layout-ee11f7b8a34cba8c.js +0 -1
  813. package/.next/static/chunks/app/worktrees/[id]/page-91b639c90795baa9.js +0 -1
  814. package/.next/static/chunks/webpack-9f75198882fdaf08.js +0 -1
  815. package/.next/static/css/acc4b9c3feb04287.css +0 -1
  816. /package/.next/static/{0hTIackGXw6v7diXJS6yN → Lno4w_zWXdGdlfXg06Vp8}/_ssgManifest.js +0 -0
@@ -1,8 +1,8 @@
1
- exports.id=595,exports.ids=[595],exports.modules={3453:(a,b,c)=>{"use strict";c.d(b,{Rh:()=>r,T1:()=>o,Z2:()=>m,c$:()=>n,nu:()=>q});var d=c(72626),e=c(80438);let f=(0,d.h)("ip-restriction"),g="::ffff:",h=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/,i=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/(\d{1,2})$/,j=process.env.CM_ALLOWED_IPS?.trim()||"",k=process.env.CM_TRUST_PROXY?.trim()||"";""!==k&&"true"!==k&&"false"!==k&&(0,e.h)(f,"trust-proxy-unexpected",{value:k});let l="true"===k;function m(a){return a?a.toLowerCase().startsWith(g)?a.substring(g.length):a:""}function n(a,b){if(0===b.length)return!1;let c=function(a){let b=a.match(h);if(!b)return null;let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)];for(let a of c)if(a<0||a>255)return null;return(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0}(m(a));if(null===c)return!1;for(let a of b)if((c&a.mask)>>>0===a.network)return!0;return!1}function o(a){if(l){let b=a.get("x-forwarded-for");if(b){let a=b.split(",")[0].trim();if(a)return a}}return a.get("x-real-ip")||null}let p=j.length>0?function(a){let b=a.trim();if(0===b.length)return[];let c=b.split(",").map(a=>a.trim()).filter(a=>a.length>0);if(c.length>256)throw Error(`CM_ALLOWED_IPS: too many entries (${c.length}). Maximum is 256.`);let d=[];for(let a of c){if(a.length>18)throw Error(`CM_ALLOWED_IPS: entry "${a}" exceeds maximum length of 18 characters.`);let b=a.match(i);if(b){let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)],e=parseInt(b[5],10);for(let b of c)if(b<0||b>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);if(e<0||e>32)throw Error(`CM_ALLOWED_IPS: invalid prefix length in "${a}". Must be 0-32.`);let f=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0,g=0===e?0:0xffffffff<<32-e>>>0;d.push({network:(f&g)>>>0,mask:g});continue}let c=a.match(h);if(c){let b=[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10),parseInt(c[4],10)];for(let c of b)if(c<0||c>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);let e=(b[0]<<24|b[1]<<16|b[2]<<8|b[3])>>>0;d.push({network:e,mask:0xffffffff});continue}throw Error(`CM_ALLOWED_IPS: invalid entry "${a}". Expected IPv4 address or CIDR notation.`)}return d}(j):[];function q(){return p}function r(){return j.length>0}},7015:(a,b,c)=>{"use strict";c.d(b,{Ds:()=>g});var d=c(81719);class e{constructor(a,b=3e4){this.cache=new Map,this.allAppsCache=null,this.lastRefresh=0,this.db=a,this.ttl=b}getTTL(){return this.ttl}isStale(){return Date.now()-this.lastRefresh>this.ttl}async refresh(){let a=(0,d.$i)(this.db);for(let b of(this.cache.clear(),a))this.cache.set(b.pathPrefix,b);this.allAppsCache=a,this.lastRefresh=Date.now()}async getByPathPrefix(a){return this.isStale()&&await this.refresh(),this.cache.get(a)??null}async getAll(){return this.isStale()&&await this.refresh(),this.allAppsCache??[]}invalidate(){this.cache.clear(),this.allAppsCache=null,this.lastRefresh=0}invalidateByIssueNo(a){this.invalidate()}}let f=null;function g(a){if(!f){if(!a)throw Error("Database instance required to initialize cache");f=new e(a)}return f}},26838:(a,b,c)=>{"use strict";c.d(b,{E2:()=>o,Mj:()=>m,Sw:()=>l,lX:()=>p});var d=c(29021),e=c(33873),f=c(54325),g=c(90164);let h=/^v?\d+\.\d+\.\d+$/,i=/^[a-zA-Z0-9.\-\s_v]+$/,j=[".next","required-server-files.json"],k=globalThis.__versionCheckCache??(globalThis.__versionCheckCache={result:null,fetchedAt:0,rateLimitResetAt:null});function l(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.31.3"}function m(){return l()}let n=null;function o(a){let b=n??=function(){{let a=function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),...j),"utf-8"),b=JSON.parse(a),c=b.config?.env?.NEXT_PUBLIC_APP_VERSION;if("string"==typeof c&&c.length>0)return c;return null}catch{return null}}();if(a)return a}return"0.31.3"}();return(0,f.LE)(b,a)?{serverVersion:b,clientVersion:a}:null}async function p(){try{var a,b,c;if(null!==k.result&&Date.now()-k.fetchedAt<36e5||k.rateLimitResetAt&&(!(Date.now()>=k.rateLimitResetAt)||(k.rateLimitResetAt=null,0)))return k.result;let d=await fetch("https://api.github.com/repos/Kewton/CommandMate/releases/latest",{headers:{Accept:"application/vnd.github+json","User-Agent":`CommandMate/${m()}`},cache:"no-store",signal:AbortSignal.timeout(5e3)});if(403===d.status)return function(a){let b=a.headers.get("X-RateLimit-Reset");b?k.rateLimitResetAt=1e3*parseInt(b,10):k.rateLimitResetAt=Date.now()+36e5}(d),k.result;if(!d.ok)return k.result;let e=await d.json(),f=m(),j=e.tag_name.replace(/^v/,""),l={hasUpdate:function(a,b){if(!h.test(a)||!h.test(b))return!1;let c=a=>a.replace(/^v/,"").split(".").map(Number),[d,e,f]=c(a),[g,i,j]=c(b);return g!==d?g>d:i!==e?i>e:j>f}(f,e.tag_name),currentVersion:f,latestVersion:j,releaseUrl:(a=e.html_url).startsWith(g.Dk)?a:null,releaseName:(b=e.name,c=e.tag_name,i.test(b)&&b.length<=128?b:c),publishedAt:e.published_at};return k.result=l,k.fetchedAt=Date.now(),l}catch{return k.result}}},39727:()=>{},47990:()=>{},49640:(a,b,c)=>{"use strict";c.r(b),c.d(b,{WORKTREE_RENAMED_EVENT_TYPE:()=>ai,__internal:()=>ao,broadcast:()=>af,broadcastMessage:()=>ah,cleanupRooms:()=>al,closeWebSocket:()=>an,handleProxyUpgrade:()=>S,hasRoomSubscribers:()=>ag,migrateWorktreeRooms:()=>aj,setupWebSocket:()=>T});var d=c(81503),e=c(91645),f=c(88081),g=c(3453),h=c(15194),i=c(40964),j=c(88807),k=c(56791);let l={capturePaneCalls:0,activeControlSessions:0,subscriberCount:0,cleanupCount:0,firstOutputLatencyCount:0,firstOutputLatencyTotalMs:0,firstOutputLatencyLastMs:null,firstOutputLatencyMinMs:null,firstOutputLatencyMaxMs:null};var m=c(79892),n=c(72626),o=c(79646);class p{push(a){if(0===a.length)return[];let b=(this.remainder+a).split("\n");this.remainder=b.pop()??"";let c=[];for(let a of b){let b=a.endsWith("\r")?a.slice(0,-1):a,d=this.parseLine(b);d&&c.push(d)}return c}flush(){if(0===this.remainder.length)return[];let a=this.parseLine(this.remainder);return this.remainder="",a?[a]:[]}parseLine(a){return 0===a.length?{type:"output",data:"\n"}:a.startsWith("%output ")?{type:"output",data:`${a.slice(8)}
1
+ exports.id=595,exports.ids=[595],exports.modules={3453:(a,b,c)=>{"use strict";c.d(b,{Rh:()=>r,T1:()=>o,Z2:()=>m,c$:()=>n,nu:()=>q});var d=c(72626),e=c(80438);let f=(0,d.h)("ip-restriction"),g="::ffff:",h=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/,i=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/(\d{1,2})$/,j=process.env.CM_ALLOWED_IPS?.trim()||"",k=process.env.CM_TRUST_PROXY?.trim()||"";""!==k&&"true"!==k&&"false"!==k&&(0,e.h)(f,"trust-proxy-unexpected",{value:k});let l="true"===k;function m(a){return a?a.toLowerCase().startsWith(g)?a.substring(g.length):a:""}function n(a,b){if(0===b.length)return!1;let c=function(a){let b=a.match(h);if(!b)return null;let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)];for(let a of c)if(a<0||a>255)return null;return(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0}(m(a));if(null===c)return!1;for(let a of b)if((c&a.mask)>>>0===a.network)return!0;return!1}function o(a){if(l){let b=a.get("x-forwarded-for");if(b){let a=b.split(",")[0].trim();if(a)return a}}return a.get("x-real-ip")||null}let p=j.length>0?function(a){let b=a.trim();if(0===b.length)return[];let c=b.split(",").map(a=>a.trim()).filter(a=>a.length>0);if(c.length>256)throw Error(`CM_ALLOWED_IPS: too many entries (${c.length}). Maximum is 256.`);let d=[];for(let a of c){if(a.length>18)throw Error(`CM_ALLOWED_IPS: entry "${a}" exceeds maximum length of 18 characters.`);let b=a.match(i);if(b){let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)],e=parseInt(b[5],10);for(let b of c)if(b<0||b>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);if(e<0||e>32)throw Error(`CM_ALLOWED_IPS: invalid prefix length in "${a}". Must be 0-32.`);let f=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0,g=0===e?0:0xffffffff<<32-e>>>0;d.push({network:(f&g)>>>0,mask:g});continue}let c=a.match(h);if(c){let b=[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10),parseInt(c[4],10)];for(let c of b)if(c<0||c>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);let e=(b[0]<<24|b[1]<<16|b[2]<<8|b[3])>>>0;d.push({network:e,mask:0xffffffff});continue}throw Error(`CM_ALLOWED_IPS: invalid entry "${a}". Expected IPv4 address or CIDR notation.`)}return d}(j):[];function q(){return p}function r(){return j.length>0}},7015:(a,b,c)=>{"use strict";c.d(b,{Ds:()=>g});var d=c(81719);class e{constructor(a,b=3e4){this.cache=new Map,this.allAppsCache=null,this.lastRefresh=0,this.db=a,this.ttl=b}getTTL(){return this.ttl}isStale(){return Date.now()-this.lastRefresh>this.ttl}async refresh(){let a=(0,d.$i)(this.db);for(let b of(this.cache.clear(),a))this.cache.set(b.pathPrefix,b);this.allAppsCache=a,this.lastRefresh=Date.now()}async getByPathPrefix(a){return this.isStale()&&await this.refresh(),this.cache.get(a)??null}async getAll(){return this.isStale()&&await this.refresh(),this.allAppsCache??[]}invalidate(){this.cache.clear(),this.allAppsCache=null,this.lastRefresh=0}invalidateByIssueNo(a){this.invalidate()}}let f=null;function g(a){if(!f){if(!a)throw Error("Database instance required to initialize cache");f=new e(a)}return f}},39727:()=>{},47990:()=>{},49640:(a,b,c)=>{"use strict";c.r(b),c.d(b,{WORKTREE_RENAMED_EVENT_TYPE:()=>aj,__internal:()=>ap,broadcast:()=>ag,broadcastMessage:()=>ai,cleanupRooms:()=>am,closeWebSocket:()=>ao,handleProxyUpgrade:()=>T,hasRoomSubscribers:()=>ah,migrateWorktreeRooms:()=>ak,setupWebSocket:()=>U});var d=c(81503),e=c(91645),f=c(88081),g=c(3453),h=c(15194),i=c(40964),j=c(88807),k=c(56791);let l={capturePaneCalls:0,activeControlSessions:0,subscriberCount:0,cleanupCount:0,firstOutputLatencyCount:0,firstOutputLatencyTotalMs:0,firstOutputLatencyLastMs:null,firstOutputLatencyMinMs:null,firstOutputLatencyMaxMs:null};var m=c(79892),n=c(72626),o=c(79646);class p{push(a){if(0===a.length)return[];let b=(this.remainder+a).split("\n");this.remainder=b.pop()??"";let c=[];for(let a of b){let b=a.endsWith("\r")?a.slice(0,-1):a,d=this.parseLine(b);d&&c.push(d)}return c}flush(){if(0===this.remainder.length)return[];let a=this.parseLine(this.remainder);return this.remainder="",a?[a]:[]}parseLine(a){return 0===a.length?{type:"output",data:"\n"}:a.startsWith("%output ")?{type:"output",data:`${a.slice(8)}
2
2
  `}:"%exit"===a||a.startsWith("%exit ")?{type:"exit",exitCode:null}:a.startsWith("%error ")?{type:"error",error:Error(a.slice(7))}:a.startsWith("%")?null:{type:"output",data:`${a}
3
3
  `}}constructor(){this.remainder=""}}let q=(0,n.h)("tmux-control-client");class r{constructor(a={}){this.parser=new p,this.handlers=new Set,this.child=null,this.sessionName=null,this.idleTimer=null,this.started=!1,this.spawnProcess=a.spawnProcess??((a,b,c)=>(0,o.spawn)(a,b,c)),this.tmuxBinary=a.tmuxBinary??"tmux",this.idleTimeoutMs=a.idleTimeoutMs??3e4}start(a){this.started||(this.sessionName=a,this.child=this.spawnProcess(this.tmuxBinary,["-C","attach-session","-t",(0,m.lA)(a)],{stdio:"pipe"}),this.started=!0,this.child.stdout.setEncoding("utf8"),this.child.stdout.on("data",a=>{this.touch();let b="string"==typeof a?a:a.toString("utf8");for(let a of this.parser.push(b))this.emit(a)}),this.child.stderr.setEncoding("utf8"),this.child.stderr.on("data",a=>{let b="string"==typeof a?a:a.toString("utf8");this.emit({type:"error",error:Error(b.trim()||"tmux control stderr")})}),this.child.on("close",a=>{for(let a of this.parser.flush())this.emit(a);this.emit({type:"exit",exitCode:a}),this.stop()}),this.child.on("error",a=>{this.emit({type:"error",error:a}),this.stop()}),this.resetIdleTimer(),q.debug("start",{sessionName:a}))}onEvent(a){return this.handlers.add(a),()=>{this.handlers.delete(a)}}sendInput(a){if(!this.child?.stdin.writable)throw Error("Tmux control client is not writable");this.touch(),this.child.stdin.write(a)}resize(a,b){if(!this.child?.stdin.writable)throw Error("Tmux control client is not writable");this.touch(),this.child.stdin.write(`refresh-client -C ${a}x${b}
4
- `)}stop(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null),this.child&&(this.child.removeAllListeners(),this.child.stdout.removeAllListeners(),this.child.stderr.removeAllListeners(),this.child.kill(),this.child=null),this.started=!1}isStarted(){return this.started}setSessionName(a){this.sessionName=a}emit(a){for(let b of this.handlers)b(a)}touch(){this.resetIdleTimer()}resetIdleTimer(){this.idleTimeoutMs<=0||(this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{q.debug("idle-timeout",{sessionName:this.sessionName}),this.stop()},this.idleTimeoutMs))}}let s=(0,n.h)("tmux-control-registry");class t{constructor(a={}){this.entries=new Map,this.handlers=new Map,this.idleTimeoutMs=a.idleTimeoutMs??15e3,this.createClient=a.createClient??(()=>new r(a))}subscribe(a,b,c){let d=this.ensureEntry(a);d.subscribers.add(b),this.cancelIdleCleanup(d),this.updateMetrics();let e=this.handlers.get(a);return e||(e=new Set,this.handlers.set(a,e)),e.add(c),()=>{e?.delete(c),this.unsubscribe(a,b)}}sendInput(a,b){let c=this.entries.get(a);if(!c)throw Error(`No control client registered for ${a}`);c.client.sendInput(b)}resize(a,b,c){let d=this.entries.get(a);if(!d)throw Error(`No control client registered for ${a}`);d.client.resize(b,c)}hasSession(a){return this.entries.has(a)}getSubscriberCount(a){return this.entries.get(a)?.subscribers.size??0}getTotalSubscriberCount(){let a=0;for(let b of this.entries.values())a+=b.subscribers.size;return a}getSessionCount(){return this.entries.size}shutdown(){for(let[a,b]of this.entries)this.teardownEntry(a,b);this.entries.clear(),this.handlers.clear(),this.updateMetrics()}renameSession(a,b){if(a===b)return!1;let c=this.entries.get(a);if(!c)return!1;if(this.entries.has(b))return s.warn("rename:destination-occupied",{oldName:a,newName:b}),!1;this.entries.delete(a),c.sessionName=b,this.entries.set(b,c),c.client.setSessionName(b);let d=this.handlers.get(a);return d&&(this.handlers.delete(a),this.handlers.set(b,d)),s.debug("rename",{oldName:a,newName:b}),!0}ensureEntry(a){let b=this.entries.get(a);if(b)return b;let c=this.createClient(a);c.start(a);let d={client:c,subscribers:new Set,unsubscribeClientEvent:()=>{},idleTimer:null,sessionName:a};return d.unsubscribeClientEvent=c.onEvent(a=>{let b=this.handlers.get(d.sessionName);if(b)for(let c of b)c(a);("exit"===a.type||"error"===a.type)&&this.deleteEntry(d.sessionName)}),this.entries.set(a,d),this.updateMetrics(),d}unsubscribe(a,b){let c=this.entries.get(a);c&&(c.subscribers.delete(b),this.updateMetrics(),0===c.subscribers.size&&this.scheduleIdleCleanup(a,c))}scheduleIdleCleanup(a,b){if(this.idleTimeoutMs<=0)return void this.deleteEntry(a);this.cancelIdleCleanup(b),b.idleTimer=setTimeout(()=>{s.debug("idle-cleanup",{sessionName:b.sessionName}),this.deleteEntry(b.sessionName)},this.idleTimeoutMs)}cancelIdleCleanup(a){a.idleTimer&&(clearTimeout(a.idleTimer),a.idleTimer=null)}deleteEntry(a){let b=this.entries.get(a);b&&(this.teardownEntry(a,b),this.entries.delete(a),this.handlers.delete(a),this.updateMetrics())}teardownEntry(a,b){this.cancelIdleCleanup(b),b.unsubscribeClientEvent(),b.client.stop(),l.cleanupCount+=1}updateMetrics(){l.activeControlSessions=Math.max(0,this.getSessionCount()),l.subscriberCount=Math.max(0,this.getTotalSubscriberCount())}}let u=null,v={streamingOutput:!0,explicitResize:!0,snapshotFallback:!0};class w{constructor(a={}){this.registry=a.registry??(u||(u=new t),u)}async ensureSession(a,b){await (0,m.N)(a)||await (0,m.jw)(a,b)}async sessionExists(a){return(0,m.N)(a)}async sendInput(a,b){if(this.registry.hasSession(a))return void this.registry.sendInput(a,b);await (0,m.V1)(a,b)}async sendSpecialKey(a,b){if("Escape"!==b&&"C-c"!==b&&"C-d"!==b&&"C-m"!==b&&"Enter"!==b)throw Error(`Unsupported special key for ControlModeTmuxTransport: ${b}`);await (0,m.ds)(a,b)}async resize(a,b,c){this.registry.resize(a,b,c)}async captureSnapshot(a,b){return l.capturePaneCalls+=1,(0,m.Xg)(a,b)}async subscribe(a,b){let c=`sub-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,d=this.registry.subscribe(a,c,a=>{"output"===a.type?b.onOutput(a.data):"exit"===a.type?b.onExit?.({exitCode:a.exitCode}):b.onError(a.error)});return{async unsubscribe(){d()}}}getCapabilities(){return v}getSubscriberCount(a){return this.registry.getSubscriberCount(a)}renameSession(a,b){return this.registry.renameSession(a,b)}async killSession(a){return(0,m.fY)(a)}}let x=null;function y(){return x||(x=new w),x}var z=c(7015),A=c(26838),B=c(54325),C=c(52660),D=c(55233),E=c(48083);let F=(0,n.h)("model-change-broadcast");function G(){let a=globalThis.__modelChangeBroadcastUnsubscribe;a&&(a(),globalThis.__modelChangeBroadcastUnsubscribe=void 0)}var H=c(57836);function I(){let a=globalThis.__waitingStatusBroadcastUnsubscribe;a&&(a(),globalThis.__waitingStatusBroadcastUnsubscribe=void 0),G()}let J=(0,n.h)("publisher-registry");function K(){return globalThis.__realtimeRoomPublisher?.publisher??null}let L=(0,n.h)("ws-server"),M=null,N=new Map,O=new Map,P=null,Q=new Set(["localhost","127.0.0.1"]);function R(a,b){try{a.write(`HTTP/1.1 ${b}\r
4
+ `)}stop(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null),this.child&&(this.child.removeAllListeners(),this.child.stdout.removeAllListeners(),this.child.stderr.removeAllListeners(),this.child.kill(),this.child=null),this.started=!1}isStarted(){return this.started}setSessionName(a){this.sessionName=a}emit(a){for(let b of this.handlers)b(a)}touch(){this.resetIdleTimer()}resetIdleTimer(){this.idleTimeoutMs<=0||(this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{q.debug("idle-timeout",{sessionName:this.sessionName}),this.stop()},this.idleTimeoutMs))}}let s=(0,n.h)("tmux-control-registry");class t{constructor(a={}){this.entries=new Map,this.handlers=new Map,this.idleTimeoutMs=a.idleTimeoutMs??15e3,this.createClient=a.createClient??(()=>new r(a))}subscribe(a,b,c){let d=this.ensureEntry(a);d.subscribers.add(b),this.cancelIdleCleanup(d),this.updateMetrics();let e=this.handlers.get(a);return e||(e=new Set,this.handlers.set(a,e)),e.add(c),()=>{e?.delete(c),this.unsubscribe(a,b)}}sendInput(a,b){let c=this.entries.get(a);if(!c)throw Error(`No control client registered for ${a}`);c.client.sendInput(b)}resize(a,b,c){let d=this.entries.get(a);if(!d)throw Error(`No control client registered for ${a}`);d.client.resize(b,c)}hasSession(a){return this.entries.has(a)}getSubscriberCount(a){return this.entries.get(a)?.subscribers.size??0}getTotalSubscriberCount(){let a=0;for(let b of this.entries.values())a+=b.subscribers.size;return a}getSessionCount(){return this.entries.size}shutdown(){for(let[a,b]of this.entries)this.teardownEntry(a,b);this.entries.clear(),this.handlers.clear(),this.updateMetrics()}renameSession(a,b){if(a===b)return!1;let c=this.entries.get(a);if(!c)return!1;if(this.entries.has(b))return s.warn("rename:destination-occupied",{oldName:a,newName:b}),!1;this.entries.delete(a),c.sessionName=b,this.entries.set(b,c),c.client.setSessionName(b);let d=this.handlers.get(a);return d&&(this.handlers.delete(a),this.handlers.set(b,d)),s.debug("rename",{oldName:a,newName:b}),!0}ensureEntry(a){let b=this.entries.get(a);if(b)return b;let c=this.createClient(a);c.start(a);let d={client:c,subscribers:new Set,unsubscribeClientEvent:()=>{},idleTimer:null,sessionName:a};return d.unsubscribeClientEvent=c.onEvent(a=>{let b=this.handlers.get(d.sessionName);if(b)for(let c of b)c(a);("exit"===a.type||"error"===a.type)&&this.deleteEntry(d.sessionName)}),this.entries.set(a,d),this.updateMetrics(),d}unsubscribe(a,b){let c=this.entries.get(a);c&&(c.subscribers.delete(b),this.updateMetrics(),0===c.subscribers.size&&this.scheduleIdleCleanup(a,c))}scheduleIdleCleanup(a,b){if(this.idleTimeoutMs<=0)return void this.deleteEntry(a);this.cancelIdleCleanup(b),b.idleTimer=setTimeout(()=>{s.debug("idle-cleanup",{sessionName:b.sessionName}),this.deleteEntry(b.sessionName)},this.idleTimeoutMs)}cancelIdleCleanup(a){a.idleTimer&&(clearTimeout(a.idleTimer),a.idleTimer=null)}deleteEntry(a){let b=this.entries.get(a);b&&(this.teardownEntry(a,b),this.entries.delete(a),this.handlers.delete(a),this.updateMetrics())}teardownEntry(a,b){this.cancelIdleCleanup(b),b.unsubscribeClientEvent(),b.client.stop(),l.cleanupCount+=1}updateMetrics(){l.activeControlSessions=Math.max(0,this.getSessionCount()),l.subscriberCount=Math.max(0,this.getTotalSubscriberCount())}}let u=null,v={streamingOutput:!0,explicitResize:!0,snapshotFallback:!0};class w{constructor(a={}){this.registry=a.registry??(u||(u=new t),u)}async ensureSession(a,b){await (0,m.N)(a)||await (0,m.jw)(a,b)}async sessionExists(a){return(0,m.N)(a)}async sendInput(a,b){if(this.registry.hasSession(a))return void this.registry.sendInput(a,b);await (0,m.V1)(a,b)}async sendSpecialKey(a,b){if("Escape"!==b&&"C-c"!==b&&"C-d"!==b&&"C-m"!==b&&"Enter"!==b)throw Error(`Unsupported special key for ControlModeTmuxTransport: ${b}`);await (0,m.ds)(a,b)}async resize(a,b,c){this.registry.resize(a,b,c)}async captureSnapshot(a,b){return l.capturePaneCalls+=1,(0,m.Xg)(a,b)}async subscribe(a,b){let c=`sub-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,d=this.registry.subscribe(a,c,a=>{"output"===a.type?b.onOutput(a.data):"exit"===a.type?b.onExit?.({exitCode:a.exitCode}):b.onError(a.error)});return{async unsubscribe(){d()}}}getCapabilities(){return v}getSubscriberCount(a){return this.registry.getSubscriberCount(a)}renameSession(a,b){return this.registry.renameSession(a,b)}async killSession(a){return(0,m.fY)(a)}}let x=null;function y(){return x||(x=new w),x}var z=c(7015),A=c(26838),B=c(54325),C=c(52660),D=c(55233),E=c(48083);let F=(0,n.h)("model-change-broadcast");function G(){let a=globalThis.__modelChangeBroadcastUnsubscribe;a&&(a(),globalThis.__modelChangeBroadcastUnsubscribe=void 0)}var H=c(43925),I=c(57836);function J(){let a=globalThis.__waitingStatusBroadcastUnsubscribe;a&&(a(),globalThis.__waitingStatusBroadcastUnsubscribe=void 0),G(),(0,H.dz)()}let K=(0,n.h)("publisher-registry");function L(){return globalThis.__realtimeRoomPublisher?.publisher??null}let M=(0,n.h)("ws-server"),N=null,O=new Map,P=new Map,Q=null,R=new Set(["localhost","127.0.0.1"]);function S(a,b){try{a.write(`HTTP/1.1 ${b}\r
5
5
  Content-Length: 0\r
6
6
  Connection: close\r
7
7
  \r
8
- `)}catch{}a.destroy()}async function S(a,b,c,d){let e,f=(a.url||"/").split("?")[0].split("/")[2]||"";if(!f)return void R(b,"400 Bad Request");try{let a=d.getDb(),b=d.getCache(a);e=await b.getByPathPrefix(f)}catch(a){L.error("ws-proxy:cache-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable&&R(b,"502 Bad Gateway");return}if(b.destroyed||!b.writable)return;if(!e)return void R(b,"404 Not Found");if(!e.enabled)return void R(b,"503 Service Unavailable");if(!e.websocketEnabled)return void R(b,"403 Forbidden");if(!Q.has(e.targetHost)){L.warn("ws-proxy:ssrf-blocked",{pathPrefix:f}),R(b,"403 Forbidden");return}let g=d.netConnect({host:e.targetHost,port:e.targetPort}),h=!1,i=!1,j=()=>{if(!i){i=!0;try{g.destroy()}catch{}try{b.destroy()}catch{}}};g.on("connect",()=>{h=!0;try{let b=function(a){let b=a.method||"GET",c=a.url||"/",d=a.httpVersion||"1.1",e=[`${b} ${c} HTTP/${d}`];for(let[b,c]of Object.entries(a.headers))if(void 0!==c)if(Array.isArray(c))for(let a of c)e.push(`${b}: ${a}`);else e.push(`${b}: ${c}`);return e.join("\r\n")+"\r\n\r\n"}(a);g.write(b)}catch(a){L.error("ws-proxy:upstream-write-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),j();return}b.pipe(g),g.pipe(b)}),g.on("error",a=>{L.error("ws-proxy:upstream-error",{pathPrefix:f,error:a.message}),h||b.destroyed||!b.writable?j():R(b,"502 Bad Gateway")}),g.on("close",()=>{j()}),b.on("error",a=>{L.error("ws-proxy:client-error",{pathPrefix:f,error:a.message}),j()}),b.on("close",()=>{j()})}function T(a){M=new d.zu({noServer:!0}),P=function(a){let b=(globalThis.__realtimeRoomPublisherGeneration??0)+1;return globalThis.__realtimeRoomPublisherGeneration=b,globalThis.__realtimeRoomPublisher={generation:b,publisher:a},globalThis.__realtimeUnroutedPublish=void 0,{token:b,unregister:()=>(function(a){let b=globalThis.__realtimeRoomPublisher;return!!b&&b.generation===a&&(globalThis.__realtimeRoomPublisher=void 0,!0)})(b)}}(ac),function(a){I();let b=(0,H.wN)(b=>{a(b.worktreeId,{type:"session_status_changed",worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId??b.cliToolId,isWaitingForResponse:b.waiting,waitingKind:b.kind??null,waitingSince:b.since})});globalThis.__waitingStatusBroadcastUnsubscribe=b,function(a){G();let b=(0,E.G5)(b=>{F.info("model-changed",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:b.instanceId,from:b.from,to:b.to,source:b.source});let c=function(a){try{let b=(0,j.getDbInstance)(),c=(0,D.dV)(b),d=(0,C.createModelChangeMessage)(b,{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,content:(0,D.DH)(c,a.from,a.to),at:a.at});return{type:"message",worktreeId:a.worktreeId,message:d}}catch(b){return F.warn("model-change-history-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)}),null}}(b);try{c&&a(b.worktreeId,c),a(b.worktreeId,{type:B.T4,worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId,from:b.from,to:b.to,source:b.source,at:b.at})}catch(a){F.warn("model-change-broadcast-failed",{worktreeId:b.worktreeId,instanceId:b.instanceId,error:a instanceof Error?a.message:String(a)})}(0,D.b3)(b)});globalThis.__modelChangeBroadcastUnsubscribe=b}(a)}(W),a.on("upgrade",(a,b,c)=>{let d=a.url||"/";if(d.startsWith("/_next/")){b.write("HTTP/1.1 426 Upgrade Required\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}if((0,g.Rh)()){let c=(0,g.Z2)(a.socket.remoteAddress||"");if(!(0,g.c$)(c,(0,g.nu)())){let a=c.substring(0,45);L.warn("websocket:denied",{ip:a}),b.write("HTTP/1.1 403 Forbidden\r\n\r\n"),b.destroy();return}}if((0,f.y2)()){let c=a.headers.cookie||"",d=(0,f.JT)(c)[f.aq];if(!d||!(0,f.nr)(d)){b.write("HTTP/1.1 401 Unauthorized\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}}if(d.startsWith("/proxy/"))return void(async()=>{try{await S(a,b,c,{getDb:()=>(0,j.getDbInstance)(),getCache:a=>(0,z.Ds)(a),netConnect:a=>(0,e.connect)(a)})}catch(a){if(L.error("ws-proxy:unhandled-error",{error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable){try{b.write("HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\nConnection: close\r\n\r\n")}catch{}b.destroy()}}})();M.handleUpgrade(a,b,c,b=>{M.emit("connection",b,a)})}),M.on("error",a=>{L.error("server:error",{error:a.message})}),M.on("connection",a=>{let b={ws:a,worktreeIds:new Set,terminalSubscription:null};N.set(a,b),a.on("message",b=>{try{let c=JSON.parse(b.toString());U(a,c)}catch(a){L.error("message:parse-failed",{error:a instanceof Error?a.message:String(a)})}}),a.on("close",()=>{X(a)}),a.on("error",b=>{"WS_ERR_INVALID_CLOSE_CODE"===b.code||b.message?.includes("Invalid WebSocket frame")||b.message?.includes("write after end")||b.message?.includes("ECONNRESET")||b.message?.includes("EPIPE")||L.error("websocket:error",{error:b.message});try{a.terminate()}catch{}X(a)})})}function U(a,b){switch(b.type){case"subscribe":if(!b.worktreeId)return;var c=a,d=b.worktreeId;let e=N.get(c);e&&(e.worktreeIds.add(d),O.has(d)||O.set(d,new Set),O.get(d).add(c));break;case"unsubscribe":if(!b.worktreeId)return;!function(a,b){let c=N.get(a);if(!c)return;c.worktreeIds.delete(b);let d=O.get(b);d&&(d.delete(a),0===d.size&&O.delete(b))}(a,b.worktreeId);break;case"broadcast":if(!b.worktreeId)return;W(b.worktreeId,b.data);break;case B.ST:V(a,b);break;case"terminal_subscribe":Z(a,b);break;case"terminal_input":$(a,b);break;case"terminal_resize":_(a,b);break;case"terminal_unsubscribe":aa(a);break;default:L.warn("message:unknown-type")}}function V(a,b){let c="string"==typeof b.version?b.version:"";if(!c)return;let e=(0,A.E2)(c);if(e&&a.readyState===d.kb.OPEN)try{a.send(JSON.stringify({type:B.Oo,serverVersion:e.serverVersion,clientVersion:e.clientVersion}))}catch(a){L.error("version:notify-failed",{error:a instanceof Error?a.message:String(a)})}}function W(a,b){let c=O.get(a);if(c&&0!==c.size)try{let e=JSON.stringify({type:"broadcast",worktreeId:a,data:b});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(e)}catch(a){L.error("broadcast:send-failed",{error:a instanceof Error?a.message:String(a)})}})}catch(b){L.error("broadcast:failed",{worktreeId:a,error:b instanceof Error?b.message:String(b)});try{let b=JSON.stringify({type:"broadcast",worktreeId:a,data:{error:"Message encoding error"}});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(b)}catch{}})}catch(a){L.error("fallback:send-failed",{error:a instanceof Error?a.message:String(a)})}}}function X(a){let b=N.get(a);b&&(b.worktreeIds.forEach(b=>{let c=O.get(b);c&&(c.delete(a),0===c.size&&O.delete(b))}),b.terminalSubscription&&(b.terminalSubscription.unsubscribe(),b.terminalSubscription=null),N.delete(a))}function Y(a,b){a.readyState===d.kb.OPEN&&a.send(JSON.stringify(b))}async function Z(a,b){let c=N.get(a);if(!c)return void Y(a,{type:"terminal_error",error:"Unauthorized WebSocket client"});if("true"!==process.env.TMUX_CONTROL_MODE_ENABLED)return void Y(a,{type:"terminal_error",error:"Tmux control mode is disabled"});let{worktreeId:d,cliToolId:e}=b;if(!d||!e||!(0,h.hR)(e))return void Y(a,{type:"terminal_error",error:"Invalid terminal subscription parameters"});let f=(0,j.getDbInstance)();if(!(0,k.getWorktreeById)(f,d))return void Y(a,{type:"terminal_error",error:"Worktree not found"});c.terminalSubscription&&(await c.terminalSubscription.unsubscribe(),c.terminalSubscription=null);let g=(0,i.m)(e,d),m=y();if(m.getSubscriberCount(g)>=4)return void Y(a,{type:"terminal_error",error:"Terminal subscriber limit reached"});let n=!1,o=Date.now(),p=await m.subscribe(g,{onOutput:b=>{if(!n){n=!0;let a=Math.max(0,Math.round(Date.now()-o));l.firstOutputLatencyCount+=1,l.firstOutputLatencyTotalMs+=a,l.firstOutputLatencyLastMs=a,l.firstOutputLatencyMinMs=null===l.firstOutputLatencyMinMs?a:Math.min(l.firstOutputLatencyMinMs,a),l.firstOutputLatencyMaxMs=null===l.firstOutputLatencyMaxMs?a:Math.max(l.firstOutputLatencyMaxMs,a)}Y(a,{type:"terminal_output",data:b})},onExit:({exitCode:b})=>{Y(a,{type:"terminal_exit",exitCode:b})},onError:b=>{(async()=>{try{let b=await m.captureSnapshot(g,{startLine:-200});b.length>0&&Y(a,{type:"terminal_output",data:b,fallback:!0})}catch{}Y(a,{type:"terminal_error",error:b.message,fallback:!0})})()}});c.terminalSubscription={worktreeId:d,cliToolId:e,sessionName:g,startedAt:o,unsubscribe:p.unsubscribe},Y(a,{type:"terminal_status",connected:!0,worktreeId:d,cliToolId:e})}async function $(a,b){let c=N.get(a),d=c?.terminalSubscription;if(!d)return void Y(a,{type:"terminal_error",error:"No active terminal subscription"});let e="string"==typeof b.data?b.data:"";if(0===e.length||e.length>4096)return void Y(a,{type:"terminal_error",error:"Invalid terminal input"});try{await y().sendInput(d.sessionName,e)}catch(b){Y(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to send terminal input"})}}async function _(a,b){let c=N.get(a),d=c?.terminalSubscription;if(d){if("number"!=typeof b.cols||!Number.isInteger(b.cols)||b.cols<20||b.cols>500||"number"!=typeof b.rows||!Number.isInteger(b.rows)||b.rows<5||b.rows>200)return void Y(a,{type:"terminal_error",error:"Invalid terminal resize payload"});try{await y().resize(d.sessionName,b.cols,b.rows)}catch(b){Y(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to resize terminal"})}}}async function aa(a){let b=N.get(a);if(b?.terminalSubscription){try{await b.terminalSubscription.unsubscribe()}catch{}b.terminalSubscription=null,Y(a,{type:"terminal_status",connected:!1})}}function ab(a){let b=O.get(a);return!!b&&b.size>0}let ac={publish:W,hasSubscribers:ab,cleanupRooms:am,migrateRooms:ak};function ad(){let a=K();return a&&a!==ac?a:null}function ae(a,b){null===K()&&0===O.size&&function(a,b,c=Date.now()){let d=globalThis.__realtimeUnroutedPublish??={total:0,suppressed:0,lastWarnedAt:null,operations:{}};if(d.total+=1,d.operations[a]=(d.operations[a]??0)+1,null!==d.lastWarnedAt&&c-d.lastWarnedAt<6e4){d.suppressed+=1;return}let e=d.suppressed;d.suppressed=0,d.lastWarnedAt=c,J.warn("realtime:no-room-publisher",{operation:a,worktreeId:b,total:d.total,suppressedSinceLastWarning:e,operations:{...d.operations}})}(a,b)}function af(a,b){let c=ad();if(c)return void c.publish(a,b);ae("broadcast",a),W(a,b)}function ag(a){let b=ad();return b?b.hasSubscribers(a):(ae("hasRoomSubscribers",a),ab(a))}function ah(a,b){b.worktreeId?af(b.worktreeId,{type:a,...b}):L.warn("broadcast:missing-worktree-id")}let ai="worktree_renamed";function aj(a){let b=ad();return b?b.migrateRooms(a):ak(a)}function ak(a){let b=new Map;for(let{oldId:c,newId:d}of a)c&&d&&c!==d&&b.set(c,d);if(0===b.size)return[];let c=[];for(let[a,d]of b){let b=O.get(a);b&&0!==b.size&&(O.delete(a),c.push({oldId:a,newId:d,sockets:b}))}let d=[];for(let{oldId:a,newId:b,sockets:e}of c){let c=O.get(b)??new Set;for(let d of e){c.add(d);let e=N.get(d);e&&(e.worktreeIds.delete(a),e.worktreeIds.add(b)),Y(d,{type:ai,worktreeId:b,previousWorktreeId:a})}O.set(b,c),d.push({oldId:a,newId:b,subscribers:e.size})}for(let a of N.values()){let c=a.terminalSubscription;if(!c)continue;let d=b.get(c.worktreeId);if(d)try{if(!(0,h.hR)(c.cliToolId))continue;c.sessionName=(0,i.m)(c.cliToolId,d),c.worktreeId=d}catch(a){L.warn("terminal:rename-failed",{worktreeId:c.worktreeId,newId:d,error:a instanceof Error?a.message:String(a)})}}return d.length>0&&L.info("rooms:migrated",{count:d.length}),d}function al(a){let b=ad();if(b)return void b.cleanupRooms(a);am(a)}function am(a){for(let b of a){let a=O.get(b);a&&(a.forEach(a=>{let c=N.get(a);c&&c.worktreeIds.delete(b)}),O.delete(b))}}function an(){let a=null!==P&&P.unregister();P=null,(a||null===K())&&I(),M&&(N.forEach(a=>{a.ws.close()}),N.clear(),O.clear(),M.close(),M=null)}let ao={handleMessage:U,handleClientVersion:V,handleProxyUpgrade:S,handleTerminalSubscribe:Z,handleTerminalInput:$,handleTerminalResize:_,handleTerminalUnsubscribe:aa,handleDisconnect:X,registerClientForTest(a){N.set(a,{ws:a,worktreeIds:new Set,terminalSubscription:null})},getClientInfoForTest:a=>N.get(a),resetStateForTest(){N.clear(),O.clear()}}},54036:(a,b,c)=>{"use strict";c.d(b,{aq:()=>d,gu:()=>f,kr:()=>h});let d="cm_auth_token",e=/^[0-9a-f]{64}$/;function f(a){return!!a&&e.test(a)}let g=2592e6;function h(){let a=process.env.CM_AUTH_EXPIRE,b=Date.now();if(a)try{return b+function(a){let b=a.match(/^(\d+)([hdm])$/);if(!b)throw Error(`Invalid duration format: "${a}". Use Nh, Nd, or Nm (e.g., "24h", "7d", "90m")`);let c=parseInt(b[1],10),d=b[2],e={h:36e5,d:864e5,m:6e4}[d];if(void 0===e)throw Error(`Invalid duration unit: "${d}"`);let f=c*e;if(f<36e5)throw Error(`Duration too short: minimum is 1h (60m). Got: "${a}"`);if(f>g)throw Error(`Duration too long: maximum is 30d (720h). Got: "${a}"`);return f}(a)}catch{return b+864e5}return process.env.CM_AUTH_TOKEN_HASH?b+864e5:null}},55233:(a,b,c)=>{"use strict";c.d(b,{DH:()=>o,b3:()=>q,dV:()=>p});var d=c(25754),e=c(88807),f=c(43167),g=c(73753),h=c(72626),i=c(72119),j=c(52445),k=c(61191),l=c(27519);let m=(0,h.h)("push/model-change-notifier"),n={en:i.agentModel.changed,ja:j.agentModel.changed};function o(a,b,c){return n[(0,k.resolvePushLocale)(a)].replace("{from}",b).replace("{to}",c)}function p(a){try{let b=(0,f.Se)(a),c=null;for(let a of b){let b=a.updatedAt.getTime();(null===c||b>c.updatedAt)&&(c={updatedAt:b,locale:a.locale})}return(0,k.resolvePushLocale)(c?.locale??d.Xn)}catch{return d.Xn}}async function q(a){if(!(0,l.lU)())return m.debug("model-change-push-suppressed",{worktreeId:a.worktreeId,instanceId:a.instanceId,reason:"unconfigured"}),"unconfigured";try{await (0,k.notifyPushSubscribers)({worktreeId:a.worktreeId,worktreeName:function(a){try{return(0,g.getWorktreeById)((0,e.getDbInstance)(),a)?.name??a}catch{return a}}(a.worktreeId),kind:"failure",agentName:a.instanceId,instanceId:a.instanceId,modelChange:{from:a.from,to:a.to,body:function(a,b){let c={};for(let e of d.dI)c[e]=o(e,a,b);return c}(a.from,a.to)}},a.at),m.info("model-change-push-raised",{worktreeId:a.worktreeId,instanceId:a.instanceId,from:a.from,to:a.to,source:a.source})}catch(b){m.warn("model-change-push-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)})}return null}},88081:(a,b,c)=>{"use strict";c.d(b,{JT:()=>m,QK:()=>k,aq:()=>f.aq,nr:()=>l,r0:()=>p,sO:()=>h,x:()=>q,y2:()=>n,zr:()=>o});var d=c(55511),e=c.n(d),f=c(54036);let g={maxAttempts:5,lockoutDuration:9e5,cleanupInterval:36e5},h=86400,i=(()=>{let a=process.env.CM_AUTH_TOKEN_HASH||void 0;return a?(0,f.gu)(a)?a:void console.error("[auth] CM_AUTH_TOKEN_HASH is not a valid SHA-256 hash"):void 0})(),j=(0,f.kr)();function k(a){return e().createHash("sha256").update(a).digest("hex")}function l(a){if(!i||!a||"string"!=typeof a||null!==j&&Date.now()>j)return!1;let b=k(a),c=Buffer.from(b,"hex"),d=Buffer.from(i,"hex");return c.length===d.length&&e().timingSafeEqual(c,d)}function m(a){let b={};if(!a)return b;for(let c of a.split(";")){let a=c.indexOf("=");if(-1===a)continue;let d=c.substring(0,a).trim(),e=c.substring(a+1).trim();d&&(b[d]=e)}return b}function n(){return!!i}function o(){if(null===j)return 0;let a=j-Date.now();return a<=0?0:Math.floor(a/1e3)}function p(a){return{httpOnly:!0,sameSite:"strict",secure:!!process.env.CM_HTTPS_CERT,maxAge:a,path:"/"}}function q(){let a=new Map,b=setInterval(()=>{let b=Date.now();for(let[c,d]of a){let e=null===d.lockedUntil||b>d.lockedUntil,f=b-d.lastAttempt>g.lockoutDuration;e&&f&&a.delete(c)}},g.cleanupInterval);return b.unref&&b.unref(),{checkLimit(b){let c=a.get(b);if(!c)return{allowed:!0};if(null!==c.lockedUntil){let a=Date.now();if(a<c.lockedUntil)return{allowed:!1,retryAfter:Math.ceil((c.lockedUntil-a)/1e3)};c.attempts=0,c.lockedUntil=null}return{allowed:!0}},recordFailure(b){let c=Date.now(),d=a.get(b)||{attempts:0,lockedUntil:null,lastAttempt:c};d.attempts++,d.lastAttempt=c,d.attempts>=g.maxAttempts&&(d.lockedUntil=c+g.lockoutDuration),a.set(b,d)},recordSuccess(b){a.delete(b)},destroy(){clearInterval(b),a.clear()}}}},90164:(a,b,c)=>{"use strict";c.d(b,{Dk:()=>e,kD:()=>f});let d="https://github.com/Kewton/CommandMate",e=`${d}/releases/`,f=`${d}/blob/main/docs/security-guide.md`}};
8
+ `)}catch{}a.destroy()}async function T(a,b,c,d){let e,f=(a.url||"/").split("?")[0].split("/")[2]||"";if(!f)return void S(b,"400 Bad Request");try{let a=d.getDb(),b=d.getCache(a);e=await b.getByPathPrefix(f)}catch(a){M.error("ws-proxy:cache-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable&&S(b,"502 Bad Gateway");return}if(b.destroyed||!b.writable)return;if(!e)return void S(b,"404 Not Found");if(!e.enabled)return void S(b,"503 Service Unavailable");if(!e.websocketEnabled)return void S(b,"403 Forbidden");if(!R.has(e.targetHost)){M.warn("ws-proxy:ssrf-blocked",{pathPrefix:f}),S(b,"403 Forbidden");return}let g=d.netConnect({host:e.targetHost,port:e.targetPort}),h=!1,i=!1,j=()=>{if(!i){i=!0;try{g.destroy()}catch{}try{b.destroy()}catch{}}};g.on("connect",()=>{h=!0;try{let b=function(a){let b=a.method||"GET",c=a.url||"/",d=a.httpVersion||"1.1",e=[`${b} ${c} HTTP/${d}`];for(let[b,c]of Object.entries(a.headers))if(void 0!==c)if(Array.isArray(c))for(let a of c)e.push(`${b}: ${a}`);else e.push(`${b}: ${c}`);return e.join("\r\n")+"\r\n\r\n"}(a);g.write(b)}catch(a){M.error("ws-proxy:upstream-write-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),j();return}b.pipe(g),g.pipe(b)}),g.on("error",a=>{M.error("ws-proxy:upstream-error",{pathPrefix:f,error:a.message}),h||b.destroyed||!b.writable?j():S(b,"502 Bad Gateway")}),g.on("close",()=>{j()}),b.on("error",a=>{M.error("ws-proxy:client-error",{pathPrefix:f,error:a.message}),j()}),b.on("close",()=>{j()})}function U(a){N=new d.zu({noServer:!0}),Q=function(a){let b=(globalThis.__realtimeRoomPublisherGeneration??0)+1;return globalThis.__realtimeRoomPublisherGeneration=b,globalThis.__realtimeRoomPublisher={generation:b,publisher:a},globalThis.__realtimeUnroutedPublish=void 0,{token:b,unregister:()=>(function(a){let b=globalThis.__realtimeRoomPublisher;return!!b&&b.generation===a&&(globalThis.__realtimeRoomPublisher=void 0,!0)})(b)}}(ad),function(a){J();let b=(0,I.wN)(b=>{a(b.worktreeId,{type:"session_status_changed",worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId??b.cliToolId,isWaitingForResponse:b.waiting,waitingKind:b.kind??null,waitingSince:b.since})});globalThis.__waitingStatusBroadcastUnsubscribe=b,function(a){G();let b=(0,E.G5)(b=>{F.info("model-changed",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:b.instanceId,from:b.from,to:b.to,source:b.source});let c=function(a){try{let b=(0,j.getDbInstance)(),c=(0,D.dV)(b),d=(0,C.createModelChangeMessage)(b,{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,content:(0,D.DH)(c,a.from,a.to),at:a.at});return{type:"message",worktreeId:a.worktreeId,message:d}}catch(b){return F.warn("model-change-history-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)}),null}}(b);try{c&&a(b.worktreeId,c),a(b.worktreeId,{type:B.T4,worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId,from:b.from,to:b.to,source:b.source,at:b.at})}catch(a){F.warn("model-change-broadcast-failed",{worktreeId:b.worktreeId,instanceId:b.instanceId,error:a instanceof Error?a.message:String(a)})}(0,D.b3)(b)});globalThis.__modelChangeBroadcastUnsubscribe=b}(a),(0,H.PJ)()}(X),a.on("upgrade",(a,b,c)=>{let d=a.url||"/";if(d.startsWith("/_next/")){b.write("HTTP/1.1 426 Upgrade Required\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}if((0,g.Rh)()){let c=(0,g.Z2)(a.socket.remoteAddress||"");if(!(0,g.c$)(c,(0,g.nu)())){let a=c.substring(0,45);M.warn("websocket:denied",{ip:a}),b.write("HTTP/1.1 403 Forbidden\r\n\r\n"),b.destroy();return}}if((0,f.y2)()){let c=a.headers.cookie||"",d=(0,f.JT)(c)[f.aq];if(!d||!(0,f.nr)(d)){b.write("HTTP/1.1 401 Unauthorized\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}}if(d.startsWith("/proxy/"))return void(async()=>{try{await T(a,b,c,{getDb:()=>(0,j.getDbInstance)(),getCache:a=>(0,z.Ds)(a),netConnect:a=>(0,e.connect)(a)})}catch(a){if(M.error("ws-proxy:unhandled-error",{error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable){try{b.write("HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\nConnection: close\r\n\r\n")}catch{}b.destroy()}}})();N.handleUpgrade(a,b,c,b=>{N.emit("connection",b,a)})}),N.on("error",a=>{M.error("server:error",{error:a.message})}),N.on("connection",a=>{let b={ws:a,worktreeIds:new Set,terminalSubscription:null};O.set(a,b),a.on("message",b=>{try{let c=JSON.parse(b.toString());V(a,c)}catch(a){M.error("message:parse-failed",{error:a instanceof Error?a.message:String(a)})}}),a.on("close",()=>{Y(a)}),a.on("error",b=>{"WS_ERR_INVALID_CLOSE_CODE"===b.code||b.message?.includes("Invalid WebSocket frame")||b.message?.includes("write after end")||b.message?.includes("ECONNRESET")||b.message?.includes("EPIPE")||M.error("websocket:error",{error:b.message});try{a.terminate()}catch{}Y(a)})})}function V(a,b){switch(b.type){case"subscribe":if(!b.worktreeId)return;var c=a,d=b.worktreeId;let e=O.get(c);e&&(e.worktreeIds.add(d),P.has(d)||P.set(d,new Set),P.get(d).add(c));break;case"unsubscribe":if(!b.worktreeId)return;!function(a,b){let c=O.get(a);if(!c)return;c.worktreeIds.delete(b);let d=P.get(b);d&&(d.delete(a),0===d.size&&P.delete(b))}(a,b.worktreeId);break;case"broadcast":if(!b.worktreeId)return;X(b.worktreeId,b.data);break;case B.ST:W(a,b);break;case"terminal_subscribe":$(a,b);break;case"terminal_input":_(a,b);break;case"terminal_resize":aa(a,b);break;case"terminal_unsubscribe":ab(a);break;default:M.warn("message:unknown-type")}}function W(a,b){let c="string"==typeof b.version?b.version:"";if(!c)return;let e=(0,A.E2)(c);if(e&&a.readyState===d.kb.OPEN)try{a.send(JSON.stringify({type:B.Oo,serverVersion:e.serverVersion,clientVersion:e.clientVersion}))}catch(a){M.error("version:notify-failed",{error:a instanceof Error?a.message:String(a)})}}function X(a,b){let c=P.get(a);if(c&&0!==c.size)try{let e=JSON.stringify({type:"broadcast",worktreeId:a,data:b});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(e)}catch(a){M.error("broadcast:send-failed",{error:a instanceof Error?a.message:String(a)})}})}catch(b){M.error("broadcast:failed",{worktreeId:a,error:b instanceof Error?b.message:String(b)});try{let b=JSON.stringify({type:"broadcast",worktreeId:a,data:{error:"Message encoding error"}});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(b)}catch{}})}catch(a){M.error("fallback:send-failed",{error:a instanceof Error?a.message:String(a)})}}}function Y(a){let b=O.get(a);b&&(b.worktreeIds.forEach(b=>{let c=P.get(b);c&&(c.delete(a),0===c.size&&P.delete(b))}),b.terminalSubscription&&(b.terminalSubscription.unsubscribe(),b.terminalSubscription=null),O.delete(a))}function Z(a,b){a.readyState===d.kb.OPEN&&a.send(JSON.stringify(b))}async function $(a,b){let c=O.get(a);if(!c)return void Z(a,{type:"terminal_error",error:"Unauthorized WebSocket client"});if("true"!==process.env.TMUX_CONTROL_MODE_ENABLED)return void Z(a,{type:"terminal_error",error:"Tmux control mode is disabled"});let{worktreeId:d,cliToolId:e}=b;if(!d||!e||!(0,h.hR)(e))return void Z(a,{type:"terminal_error",error:"Invalid terminal subscription parameters"});let f=(0,j.getDbInstance)();if(!(0,k.getWorktreeById)(f,d))return void Z(a,{type:"terminal_error",error:"Worktree not found"});c.terminalSubscription&&(await c.terminalSubscription.unsubscribe(),c.terminalSubscription=null);let g=(0,i.m)(e,d),m=y();if(m.getSubscriberCount(g)>=4)return void Z(a,{type:"terminal_error",error:"Terminal subscriber limit reached"});let n=!1,o=Date.now(),p=await m.subscribe(g,{onOutput:b=>{if(!n){n=!0;let a=Math.max(0,Math.round(Date.now()-o));l.firstOutputLatencyCount+=1,l.firstOutputLatencyTotalMs+=a,l.firstOutputLatencyLastMs=a,l.firstOutputLatencyMinMs=null===l.firstOutputLatencyMinMs?a:Math.min(l.firstOutputLatencyMinMs,a),l.firstOutputLatencyMaxMs=null===l.firstOutputLatencyMaxMs?a:Math.max(l.firstOutputLatencyMaxMs,a)}Z(a,{type:"terminal_output",data:b})},onExit:({exitCode:b})=>{Z(a,{type:"terminal_exit",exitCode:b})},onError:b=>{(async()=>{try{let b=await m.captureSnapshot(g,{startLine:-200});b.length>0&&Z(a,{type:"terminal_output",data:b,fallback:!0})}catch{}Z(a,{type:"terminal_error",error:b.message,fallback:!0})})()}});c.terminalSubscription={worktreeId:d,cliToolId:e,sessionName:g,startedAt:o,unsubscribe:p.unsubscribe},Z(a,{type:"terminal_status",connected:!0,worktreeId:d,cliToolId:e})}async function _(a,b){let c=O.get(a),d=c?.terminalSubscription;if(!d)return void Z(a,{type:"terminal_error",error:"No active terminal subscription"});let e="string"==typeof b.data?b.data:"";if(0===e.length||e.length>4096)return void Z(a,{type:"terminal_error",error:"Invalid terminal input"});try{await y().sendInput(d.sessionName,e)}catch(b){Z(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to send terminal input"})}}async function aa(a,b){let c=O.get(a),d=c?.terminalSubscription;if(d){if("number"!=typeof b.cols||!Number.isInteger(b.cols)||b.cols<20||b.cols>500||"number"!=typeof b.rows||!Number.isInteger(b.rows)||b.rows<5||b.rows>200)return void Z(a,{type:"terminal_error",error:"Invalid terminal resize payload"});try{await y().resize(d.sessionName,b.cols,b.rows)}catch(b){Z(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to resize terminal"})}}}async function ab(a){let b=O.get(a);if(b?.terminalSubscription){try{await b.terminalSubscription.unsubscribe()}catch{}b.terminalSubscription=null,Z(a,{type:"terminal_status",connected:!1})}}function ac(a){let b=P.get(a);return!!b&&b.size>0}let ad={publish:X,hasSubscribers:ac,cleanupRooms:an,migrateRooms:al};function ae(){let a=L();return a&&a!==ad?a:null}function af(a,b){null===L()&&0===P.size&&function(a,b,c=Date.now()){let d=globalThis.__realtimeUnroutedPublish??={total:0,suppressed:0,lastWarnedAt:null,operations:{}};if(d.total+=1,d.operations[a]=(d.operations[a]??0)+1,null!==d.lastWarnedAt&&c-d.lastWarnedAt<6e4){d.suppressed+=1;return}let e=d.suppressed;d.suppressed=0,d.lastWarnedAt=c,K.warn("realtime:no-room-publisher",{operation:a,worktreeId:b,total:d.total,suppressedSinceLastWarning:e,operations:{...d.operations}})}(a,b)}function ag(a,b){let c=ae();if(c)return void c.publish(a,b);af("broadcast",a),X(a,b)}function ah(a){let b=ae();return b?b.hasSubscribers(a):(af("hasRoomSubscribers",a),ac(a))}function ai(a,b){b.worktreeId?ag(b.worktreeId,{type:a,...b}):M.warn("broadcast:missing-worktree-id")}let aj="worktree_renamed";function ak(a){let b=ae();return b?b.migrateRooms(a):al(a)}function al(a){let b=new Map;for(let{oldId:c,newId:d}of a)c&&d&&c!==d&&b.set(c,d);if(0===b.size)return[];let c=[];for(let[a,d]of b){let b=P.get(a);b&&0!==b.size&&(P.delete(a),c.push({oldId:a,newId:d,sockets:b}))}let d=[];for(let{oldId:a,newId:b,sockets:e}of c){let c=P.get(b)??new Set;for(let d of e){c.add(d);let e=O.get(d);e&&(e.worktreeIds.delete(a),e.worktreeIds.add(b)),Z(d,{type:aj,worktreeId:b,previousWorktreeId:a})}P.set(b,c),d.push({oldId:a,newId:b,subscribers:e.size})}for(let a of O.values()){let c=a.terminalSubscription;if(!c)continue;let d=b.get(c.worktreeId);if(d)try{if(!(0,h.hR)(c.cliToolId))continue;c.sessionName=(0,i.m)(c.cliToolId,d),c.worktreeId=d}catch(a){M.warn("terminal:rename-failed",{worktreeId:c.worktreeId,newId:d,error:a instanceof Error?a.message:String(a)})}}return d.length>0&&M.info("rooms:migrated",{count:d.length}),d}function am(a){let b=ae();if(b)return void b.cleanupRooms(a);an(a)}function an(a){for(let b of a){let a=P.get(b);a&&(a.forEach(a=>{let c=O.get(a);c&&c.worktreeIds.delete(b)}),P.delete(b))}}function ao(){let a=null!==Q&&Q.unregister();Q=null,(a||null===L())&&J(),N&&(O.forEach(a=>{a.ws.close()}),O.clear(),P.clear(),N.close(),N=null)}let ap={handleMessage:V,handleClientVersion:W,handleProxyUpgrade:T,handleTerminalSubscribe:$,handleTerminalInput:_,handleTerminalResize:aa,handleTerminalUnsubscribe:ab,handleDisconnect:Y,registerClientForTest(a){O.set(a,{ws:a,worktreeIds:new Set,terminalSubscription:null})},getClientInfoForTest:a=>O.get(a),resetStateForTest(){O.clear(),P.clear()}}},54036:(a,b,c)=>{"use strict";c.d(b,{aq:()=>d,gu:()=>f,kr:()=>h});let d="cm_auth_token",e=/^[0-9a-f]{64}$/;function f(a){return!!a&&e.test(a)}let g=2592e6;function h(){let a=process.env.CM_AUTH_EXPIRE,b=Date.now();if(a)try{return b+function(a){let b=a.match(/^(\d+)([hdm])$/);if(!b)throw Error(`Invalid duration format: "${a}". Use Nh, Nd, or Nm (e.g., "24h", "7d", "90m")`);let c=parseInt(b[1],10),d=b[2],e={h:36e5,d:864e5,m:6e4}[d];if(void 0===e)throw Error(`Invalid duration unit: "${d}"`);let f=c*e;if(f<36e5)throw Error(`Duration too short: minimum is 1h (60m). Got: "${a}"`);if(f>g)throw Error(`Duration too long: maximum is 30d (720h). Got: "${a}"`);return f}(a)}catch{return b+864e5}return process.env.CM_AUTH_TOKEN_HASH?b+864e5:null}},55233:(a,b,c)=>{"use strict";c.d(b,{DH:()=>o,b3:()=>q,dV:()=>p});var d=c(25754),e=c(88807),f=c(43167),g=c(73753),h=c(72626),i=c(72119),j=c(52445),k=c(61191),l=c(27519);let m=(0,h.h)("push/model-change-notifier"),n={en:i.agentModel.changed,ja:j.agentModel.changed};function o(a,b,c){return n[(0,k.resolvePushLocale)(a)].replace("{from}",b).replace("{to}",c)}function p(a){try{let b=(0,f.Se)(a),c=null;for(let a of b){let b=a.updatedAt.getTime();(null===c||b>c.updatedAt)&&(c={updatedAt:b,locale:a.locale})}return(0,k.resolvePushLocale)(c?.locale??d.Xn)}catch{return d.Xn}}async function q(a){if(!(0,l.lU)())return m.debug("model-change-push-suppressed",{worktreeId:a.worktreeId,instanceId:a.instanceId,reason:"unconfigured"}),"unconfigured";try{await (0,k.notifyPushSubscribers)({worktreeId:a.worktreeId,worktreeName:function(a){try{return(0,g.getWorktreeById)((0,e.getDbInstance)(),a)?.name??a}catch{return a}}(a.worktreeId),kind:"failure",agentName:a.instanceId,instanceId:a.instanceId,modelChange:{from:a.from,to:a.to,body:function(a,b){let c={};for(let e of d.dI)c[e]=o(e,a,b);return c}(a.from,a.to)}},a.at),m.info("model-change-push-raised",{worktreeId:a.worktreeId,instanceId:a.instanceId,from:a.from,to:a.to,source:a.source})}catch(b){m.warn("model-change-push-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)})}return null}},88081:(a,b,c)=>{"use strict";c.d(b,{JT:()=>m,QK:()=>k,aq:()=>f.aq,nr:()=>l,r0:()=>p,sO:()=>h,x:()=>q,y2:()=>n,zr:()=>o});var d=c(55511),e=c.n(d),f=c(54036);let g={maxAttempts:5,lockoutDuration:9e5,cleanupInterval:36e5},h=86400,i=(()=>{let a=process.env.CM_AUTH_TOKEN_HASH||void 0;return a?(0,f.gu)(a)?a:void console.error("[auth] CM_AUTH_TOKEN_HASH is not a valid SHA-256 hash"):void 0})(),j=(0,f.kr)();function k(a){return e().createHash("sha256").update(a).digest("hex")}function l(a){if(!i||!a||"string"!=typeof a||null!==j&&Date.now()>j)return!1;let b=k(a),c=Buffer.from(b,"hex"),d=Buffer.from(i,"hex");return c.length===d.length&&e().timingSafeEqual(c,d)}function m(a){let b={};if(!a)return b;for(let c of a.split(";")){let a=c.indexOf("=");if(-1===a)continue;let d=c.substring(0,a).trim(),e=c.substring(a+1).trim();d&&(b[d]=e)}return b}function n(){return!!i}function o(){if(null===j)return 0;let a=j-Date.now();return a<=0?0:Math.floor(a/1e3)}function p(a){return{httpOnly:!0,sameSite:"strict",secure:!!process.env.CM_HTTPS_CERT,maxAge:a,path:"/"}}function q(){let a=new Map,b=setInterval(()=>{let b=Date.now();for(let[c,d]of a){let e=null===d.lockedUntil||b>d.lockedUntil,f=b-d.lastAttempt>g.lockoutDuration;e&&f&&a.delete(c)}},g.cleanupInterval);return b.unref&&b.unref(),{checkLimit(b){let c=a.get(b);if(!c)return{allowed:!0};if(null!==c.lockedUntil){let a=Date.now();if(a<c.lockedUntil)return{allowed:!1,retryAfter:Math.ceil((c.lockedUntil-a)/1e3)};c.attempts=0,c.lockedUntil=null}return{allowed:!0}},recordFailure(b){let c=Date.now(),d=a.get(b)||{attempts:0,lockedUntil:null,lastAttempt:c};d.attempts++,d.lastAttempt=c,d.attempts>=g.maxAttempts&&(d.lockedUntil=c+g.lockoutDuration),a.set(b,d)},recordSuccess(b){a.delete(b)},destroy(){clearInterval(b),a.clear()}}}}};
@@ -0,0 +1,48 @@
1
+ "use strict";exports.id=6286,exports.ids=[6286],exports.modules={1102:(a,b,c)=>{c.d(b,{m_:()=>i});var d=c(21124),e=c(38301),f=c(23312);function g(a,b,c){return Math.min(Math.max(a,4),Math.max(4,c-b-4))}let h={top:-9999,left:-9999};function i({content:a,placement:b="right",delay:c=100,children:i,className:j}){let[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)(null),q=(0,e.useRef)(null),r=(0,e.useRef)(null),s=(0,e.useRef)(null),t=(0,e.useCallback)(()=>{null!==s.current&&(clearTimeout(s.current),s.current=null)},[]),u=(0,e.useCallback)(()=>{t(),s.current=setTimeout(()=>{l(!0),s.current=null},c)},[c,t]),v=(0,e.useCallback)(()=>{t(),l(!1)},[t]),w=(0,e.useCallback)(()=>{n(!0)},[]),x=(0,e.useCallback)(()=>{n(!1)},[]);return(0,e.useCallback)(()=>{t(),l(!1),n(!1)},[t]),(0,e.useCallback)(()=>{let a=q.current,c=r.current;if(!a||!c)return;let d=a.getBoundingClientRect(),e=c.getBoundingClientRect();p(function(a,b,c,d){let e,f,h=b.left+b.width/2-c.width/2,i=b.top+b.height/2-c.height/2;switch(a){case"top":e=b.top-c.height-8,f=h;break;case"bottom":e=b.top+b.height+8,f=h;break;case"left":e=i,f=b.left-c.width-8;break;default:e=i,f=b.left+b.width+8}return{top:g(e,c.height,d.height),left:g(f,c.width,d.width)}}(b,{top:d.top,left:d.left,width:d.width,height:d.height},{width:e.width,height:e.height},{width:window.innerWidth,height:window.innerHeight}))},[b]),(0,d.jsxs)("span",{ref:q,"data-testid":"tooltip-wrapper",className:j?`relative inline-flex ${j}`:"relative inline-flex",tabIndex:-1,onMouseEnter:u,onMouseLeave:v,onFocus:w,onBlur:x,children:[i,(k||m)&&"undefined"!=typeof document&&(0,f.createPortal)((0,d.jsx)("span",{ref:r,role:"tooltip","aria-hidden":"true","data-placement":b,className:"fixed z-40 whitespace-nowrap px-2 py-1 text-xs font-medium rounded bg-foreground text-background shadow-lg pointer-events-none",style:o??h,children:a}),document.body)]})}},8509:(a,b,c)=>{c.d(b,{g:()=>h});var d=c(21124);c(38301);var e=c(20481),f=c(5772),g=c(12480);function h(){let{size:a,setSize:b,isMobile:c}=(0,f.Ps)(),h=(0,e.c)("common");if(c)return null;let i=h("displaySize.ariaLabel");return(0,d.jsxs)("div",{className:"flex items-center",children:[(0,d.jsx)("label",{htmlFor:"pc-display-size",className:"sr-only",children:i}),(0,d.jsx)("select",{id:"pc-display-size","data-testid":"pc-display-size-select","aria-label":i,value:a,onChange:a=>{let c=a.target.value;(0,g.fM)(c)&&b(c)},className:"text-sm bg-transparent text-foreground border border-input rounded-md px-2 py-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:g.Uf.map(a=>(0,d.jsx)("option",{value:a,children:h(`displaySize.${a}`)},a))})]})}},16286:(a,b,c)=>{c.d(b,{GV:()=>aZ});var d=c(21124),e=c(38301),f=c.n(e),g=c(42378),h=c(3991),i=c.n(h),j=c(52761);let k=(0,e.forwardRef)(function({href:a,onClick:b,target:c,...e},f){let h=(0,g.usePathname)(),k=(0,j.Hq)();return(0,d.jsx)(i(),{ref:f,href:a,target:c,onClick:d=>{var e;b?.(d),d.defaultPrevented||0!==(e=d).button||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||void 0!==c&&"_self"!==c||/^([a-z][a-z0-9+.-]*:)?\/\//i.test(a)||/^(mailto:|tel:)/i.test(a)||(d.preventDefault(),a!==h&&k.push(a))},...e})});var l=c(20481),m=c(15917),n=c(88285),o=c(97950),p=c(8509),q=c(81092),r=c(32482);function s(){let a=(0,q.pT)(),b=(0,l.c)("common");if(!a)return null;let{repoTabBarMode:c,setRepoTabBarMode:e}=a;return(0,d.jsxs)("div",{className:"hidden md:flex items-center",children:[(0,d.jsx)("label",{htmlFor:"repo-tab-bar-mode",className:"sr-only",children:b("repoTabBar.settingLabel")}),(0,d.jsx)("select",{id:"repo-tab-bar-mode","data-testid":"repo-tab-bar-mode-select","aria-label":b("repoTabBar.settingLabel"),title:b("repoTabBar.settingLabel"),value:c,onChange:a=>{let b=a.target.value;(0,r.m3)(b)&&e(b)},className:"rounded-md border border-border bg-surface px-2 py-1 text-sm text-muted-foreground transition-colors hover:text-foreground focus:outline-none focus:ring-2 focus:ring-ring",children:r.EN.map(a=>(0,d.jsx)("option",{value:a,children:b(`repoTabBar.mode.${a}`)},a))})]})}var t=c(45523),u=c(70175),v=c(60988);function w(){let{theme:a,setTheme:b}=(0,t.D)(),[c,f]=(0,e.useState)(!1);if(!c)return(0,d.jsx)("div",{"data-testid":"theme-toggle-placeholder",className:"w-8 h-8","aria-hidden":"true"});let g="dark"===a;return(0,d.jsx)("button",{"data-testid":"theme-toggle",onClick:()=>b(g?"light":"dark"),className:"p-1.5 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors focus:outline-none focus:ring-2 focus:ring-ring","aria-label":g?"Switch to light mode":"Switch to dark mode",title:g?"Switch to light mode":"Switch to dark mode",children:g?(0,d.jsx)(u.A,{className:"w-5 h-5","data-testid":"theme-icon-sun"}):(0,d.jsx)(v.A,{className:"w-5 h-5","data-testid":"theme-icon-moon"})})}var x=c(67619);function y(){let{status:a}=(0,x.xM)(),b=(0,l.c)("common");if("connected"===a)return null;let c="connecting"===a,e=b(c?"connection.reconnecting":"connection.offline");return(0,d.jsxs)("span",{"data-testid":"connection-status-indicator",role:"status","aria-live":"polite",title:b(c?"connection.reconnectingTooltip":"connection.offlineTooltip"),className:"hidden sm:inline-flex items-center gap-1.5 rounded-full border border-border bg-surface px-2 py-0.5 text-xs text-muted-foreground",children:[(0,d.jsx)("span",{"aria-hidden":"true",className:["w-1.5 h-1.5 rounded-full",c?"bg-warning motion-safe:animate-pulse":"bg-muted-foreground"].join(" ")}),e]})}var z=c(85647),A=c(64632);let B=[{labelKey:"nav.home",href:"/",isActive:a=>"/"===a},{labelKey:"nav.chat",href:"/chat",isActive:a=>a.startsWith("/chat")},{labelKey:"nav.sessions",href:"/sessions",isActive:a=>a.startsWith("/sessions")},{labelKey:"nav.repositoriesShort",href:"/repositories",isActive:a=>a.startsWith("/repositories")},{labelKey:"nav.reviewReport",href:"/review",isActive:a=>a.startsWith("/review")},{labelKey:"nav.more",href:"/more",isActive:a=>a.startsWith("/more")}];function C({title:a="CommandMate"}){let b=(0,g.usePathname)(),c=(0,l.c)("commandPalette"),e=(0,l.c)("common"),{setOpen:h}=(0,A.C)(),[i,j]=f().useState(null);return(0,d.jsx)("header",{className:"sticky top-0 z-50 border-b border-border bg-background supports-[backdrop-filter]:bg-background/80 backdrop-blur-md",children:(0,d.jsx)("div",{className:"container-custom",children:(0,d.jsxs)("div",{className:"flex items-center justify-between h-16",children:[(0,d.jsx)("div",{className:"flex items-center space-x-4",children:(0,d.jsxs)(k,{href:"/",className:"flex items-center space-x-2 hover:opacity-80 transition-opacity",children:[(0,d.jsx)("div",{className:"w-8 h-8 bg-accent-600 rounded-lg flex items-center justify-center",children:(0,d.jsx)(m.A,{size:20,strokeWidth:2,className:"text-white","aria-hidden":"true"})}),(0,d.jsx)("h1",{className:"text-xl font-bold text-foreground",children:a})]})}),(0,d.jsxs)("nav",{className:"flex items-center space-x-6",role:"navigation",children:[B.map(a=>{let c=a.isActive(b);return(0,d.jsx)(k,{href:a.href,"aria-current":c?"page":void 0,className:`relative py-1 text-sm font-medium transition-colors after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:rounded-full after:bg-accent-600 dark:after:bg-accent-400 after:origin-center motion-safe:after:transition-transform after:duration-200 after:ease-[var(--motion-ease-out)] ${c?"text-accent-600 dark:text-accent-400 after:scale-x-100":"text-muted-foreground hover:text-foreground after:scale-x-0"}`,children:e(a.labelKey)},a.href)}),(0,d.jsxs)("button",{type:"button","data-testid":"header-command-palette-trigger",onClick:()=>h(!0),"aria-label":c("mobileTrigger"),className:"hidden md:inline-flex items-center gap-2 rounded-md border border-border bg-surface px-2.5 py-1.5 text-sm text-muted-foreground hover:bg-surface-2 transition-colors",children:[(0,d.jsx)(n.A,{size:16,strokeWidth:2,"aria-hidden":"true",className:"shrink-0"}),(0,d.jsx)("span",{children:c("searchAction")}),i&&(0,d.jsxs)("span",{className:"flex items-center gap-0.5",children:[(0,d.jsx)(z.u,{children:i}),(0,d.jsx)(z.u,{children:"K"})]})]}),(0,d.jsx)(y,{}),(0,d.jsx)(p.g,{}),(0,d.jsx)(s,{}),(0,d.jsx)(w,{}),(0,d.jsxs)("a",{href:"https://github.com/kewton/MyCodeBranchDesk",target:"_blank",rel:"noopener noreferrer",className:"text-sm font-medium text-muted-foreground hover:text-foreground transition-colors flex items-center space-x-1",children:[(0,d.jsx)(o.A,{size:20,strokeWidth:2,"aria-hidden":"true"}),(0,d.jsx)("span",{children:"GitHub"})]})]})]})})})}var D=c(90076);let E={showSidebar:!0,showGlobalNav:!0,showLocalNav:!1,autoCollapseSidebar:!1},F=[{prefix:"/worktrees/",config:{showGlobalNav:!1,showLocalNav:!0}},{prefix:"/sessions",config:{autoCollapseSidebar:!0}}];var G=c(5772),H=c(65828),I=c(10366),J=c(99615),K=c(22023),L=c(47817),M=c(23312),N=c.n(M),O=c(89877),P=c(22317);let Q=(0,e.memo)(function({status:a,label:b,waitingKind:c}){return(0,d.jsx)(P.m,{"data-testid":"status-indicator",status:a,label:b,waitingKind:c,size:"lg"})});function R({id:a,branch:b,isVisible:c,anchorRef:f,nextActionLabel:g}){let[h,i]=(0,e.useState)({top:-9999,left:-9999}),j=(0,e.useRef)(null);if("undefined"==typeof document||!c)return null;let k=Math.min(384,Math.max(0,window.innerWidth-16));return N().createPortal((0,d.jsxs)("div",{ref:j,id:a,role:"tooltip",className:" fixed z-[9999] px-3 py-2 rounded-md shadow-lg bg-sidebar text-xs text-sidebar-foreground border border-sidebar-border pointer-events-none max-w-sm transition-opacity duration-150 ",style:{top:h.top,left:h.left,maxWidth:k},children:[(0,d.jsx)("p",{className:"font-medium text-sidebar-foreground whitespace-nowrap",children:b.name}),(0,d.jsx)("p",{className:"text-sidebar-muted whitespace-nowrap",children:b.repositoryName}),(0,d.jsxs)("p",{className:"text-sidebar-muted whitespace-nowrap",children:["Status: ",b.status]}),b.worktreePath&&(0,d.jsx)("p",{className:"text-sidebar-muted truncate",children:b.worktreePath}),g&&(0,d.jsxs)("p",{className:"text-sidebar-muted whitespace-nowrap",children:["Next: ",g]}),b.description&&(0,d.jsx)("p",{className:"text-sidebar-muted mt-1 border-t border-sidebar-border pt-1 whitespace-pre-wrap break-words",children:b.description})]}),document.body)}let S=0,T=(0,e.memo)(function({branch:a,isSelected:b,onClick:c,showRepositoryName:f=!0}){let g=(0,l.c)("common"),h=(0,l.c)("worktree"),i=`tooltip-${a.id}`,j=(0,e.useRef)(null),[k,m]=(0,e.useState)(!1),n=(0,e.useRef)(null),o=(0,e.useCallback)(()=>{null!==n.current&&(clearTimeout(n.current),n.current=null)},[]);(0,e.useEffect)(()=>()=>o(),[o]);let p=(0,O.A7)(a.cliStatus),q="waiting"===p,r=!0===a.awaitingInstruction,s=a.nextActionKey?h(a.nextActionKey):null,t=(0,e.useMemo)(()=>new Set(a.exitedInstanceIds??[]),[a.exitedInstanceIds]),u=(q||r)&&null!==s,v=k&&!b;return(0,e.useEffect)(()=>{b&&m(!1)},[b]),(0,e.useEffect)(()=>{if(!k)return;let a=()=>m(!1);return document.addEventListener("click",a),()=>document.removeEventListener("click",a)},[k]),(0,d.jsxs)("button",{ref:j,"data-testid":"branch-list-item",onClick:()=>{o(),S=Date.now()+400,m(!1),c()},onMouseEnter:()=>{o(),Date.now()>=S&&(n.current=setTimeout(()=>{m(!0)},150))},onMouseLeave:()=>{o(),m(!1)},onFocus:a=>{o(),a.target.matches(":focus-visible")&&(n.current=setTimeout(()=>{m(!0)},150))},onBlur:()=>{o(),m(!1)},"aria-current":b?"true":void 0,"aria-describedby":v?i:void 0,"aria-label":f?void 0:`${a.name} - ${a.repositoryName}`,className:`
2
+ group relative w-full px-4 py-3 flex flex-col gap-1
3
+ hover:bg-sidebar-hover transition-colors
4
+ focus:outline-none focus:ring-2 focus:ring-inset focus:ring-ring
5
+ ${b?"bg-sidebar-hover border-l-2 border-accent-500":"border-l-2 border-transparent"}
6
+ `,children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 w-full",children:[a.cliStatus&&Object.keys(a.cliStatus).length>0&&(0,d.jsx)("div",{className:"flex items-center justify-center flex-shrink-0 w-4","aria-label":g("branchItem.cliToolStatus"),children:(0,d.jsx)(Q,{status:p,label:(0,O.dw)(a.cliStatus,a.cliStatusLabels,t.size>0?a=>t.has(a)?g("branchItem.agentExited"):null:void 0),waitingKind:a.waitingKind})}),(0,d.jsxs)("div",{className:"flex-1 min-w-0 text-left",children:[(0,d.jsx)("p",{className:"text-sm font-medium text-sidebar-foreground truncate",children:a.name}),f&&(0,d.jsx)("p",{className:"text-xs text-sidebar-muted truncate",children:a.repositoryName}),u&&(0,d.jsx)("p",{"data-testid":"branch-next-action",className:`text-xs font-medium truncate ${q?"text-warning-foreground":"text-success-foreground"}`,children:s})]}),r&&(0,d.jsx)("span",{"data-testid":"awaiting-instruction-badge",className:"flex-shrink-0 rounded-full bg-success-subtle px-1.5 py-0.5 text-[10px] font-medium leading-4 text-success-foreground",title:h("awaitingInstruction.label"),children:h("awaitingInstruction.badge")}),a.hasUnread&&(0,d.jsx)("span",{"data-testid":"unread-indicator",className:"w-2 h-2 rounded-full bg-accent-500 flex-shrink-0","aria-label":g("branchItem.hasUnread")})]}),a.description&&(0,d.jsx)("div",{"data-testid":"branch-description",className:"pl-6 pr-2 mt-1 text-left",children:(0,d.jsx)("p",{className:"text-xs text-sidebar-muted line-clamp-2",children:a.description})}),(0,d.jsx)(R,{id:i,branch:a,isVisible:v,anchorRef:j,nextActionLabel:s})]})});var U=c(1102);function V(a,b,c){if(b<=0||c<=0)return 0;let d=a+b+8-c;return d>0?-Math.min(d,Math.max(0,a-8)):a<8?8-a:0}let W=(0,e.memo)(function({sortKey:a,sortDirection:b,onSortKeyChange:c,onSortDirectionChange:f,options:g,defaultDirections:h,compact:i,tooltip:j,iconClassName:k="w-3 h-3"}){let m=(0,l.c)("common"),[n,o]=(0,e.useState)(!1),p=(0,e.useRef)(null),q=(0,e.useRef)(null),r=(0,e.useRef)({x:0,y:0}),[s,t]=(0,e.useState)({x:0,y:0});(0,e.useEffect)(()=>{function a(a){p.current&&!p.current.contains(a.target)&&o(!1)}if(n)return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[n]),(0,e.useEffect)(()=>{function a(a){"Escape"===a.key&&o(!1)}if(n)return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[n]),(0,e.useLayoutEffect)(()=>{let a=a=>{r.current=a,t(b=>b.x===a.x&&b.y===a.y?b:a)};if(!n)return void a({x:0,y:0});let b=q.current;if(!b)return;let c=b.getBoundingClientRect();a({x:V(c.left-r.current.x,c.width,window.innerWidth),y:V(c.top-r.current.y,c.height,window.innerHeight)})},[n]);let u=(0,e.useCallback)(()=>{o(a=>!a)},[]),v=(0,e.useCallback)(d=>{d===a?f("asc"===b?"desc":"asc"):(c(d),f(h?.[d]??"asc")),o(!1)},[a,b,c,f,h]),w=(0,e.useCallback)(()=>{f("asc"===b?"desc":"asc")},[b,f]),x=g.find(b=>b.key===a)?.label||"Sort",y=(0,d.jsxs)("button",{type:"button",onClick:u,"aria-expanded":n,"aria-haspopup":"listbox","aria-label":`Sort by ${x}`,className:" flex items-center gap-1 px-2 py-1 rounded text-xs text-sidebar-muted hover:text-sidebar-foreground hover:bg-sidebar-hover focus:outline-none focus:ring-2 focus:ring-ring transition-colors ",children:[(0,d.jsx)(X,{className:k}),(0,d.jsx)("span",{className:i?"hidden":"hidden sm:inline",children:x})]});return(0,d.jsxs)("div",{ref:p,className:"relative","data-testid":"sort-selector-base",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[j?(0,d.jsx)(U.m_,{content:j,placement:"bottom",children:y}):y,(0,d.jsx)("button",{type:"button",onClick:w,"aria-label":"asc"===b?"Sort ascending":"Sort descending",className:" p-1 rounded text-sidebar-muted hover:text-sidebar-foreground hover:bg-sidebar-hover focus:outline-none focus:ring-2 focus:ring-ring transition-colors ",children:"asc"===b?(0,d.jsx)(Y,{className:k}):(0,d.jsx)(Z,{className:k})})]}),n&&(0,d.jsx)("div",{ref:q,role:"listbox","aria-label":m("sort.options"),className:" absolute right-0 top-full mt-1 z-50 min-w-[140px] py-1 rounded-md shadow-lg bg-sidebar border border-sidebar-border ",style:0!==s.x||0!==s.y?{transform:`translate(${s.x}px, ${s.y}px)`}:void 0,children:g.map(c=>(0,d.jsxs)("button",{type:"button",role:"option","aria-selected":a===c.key,onClick:()=>v(c.key),className:`
7
+ w-full px-3 py-2 text-left text-sm
8
+ flex items-center justify-between
9
+ hover:bg-sidebar-hover transition-colors
10
+ ${a===c.key?"text-accent-700 dark:text-accent-400":"text-sidebar-muted"}
11
+ `,children:[(0,d.jsx)("span",{children:c.label}),a===c.key&&(0,d.jsx)("span",{className:"text-xs",children:"asc"===b?"ASC":"DESC"})]},c.key))})]})});function X({className:a}){return(0,d.jsx)("svg",{className:a,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 4h13M3 8h9m-9 4h6m4 0l4-4m0 0l4 4m-4-4v12"})})}function Y({className:a}){return(0,d.jsx)("svg",{className:a,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 15l7-7 7 7"})})}function Z({className:a}){return(0,d.jsx)("svg",{className:a,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})}let $=[{key:"updatedAt",labelKey:"sort.updatedAt"},{key:"repositoryName",labelKey:"sort.repositoryName"},{key:"branchName",labelKey:"sort.branchName"},{key:"status",labelKey:"sort.status"}],_={updatedAt:"desc"},aa=(0,e.memo)(function(){let{sortKey:a,sortDirection:b,setSortKey:c,setSortDirection:f}=(0,q.VF)(),g=(0,l.c)("common"),h=(0,e.useMemo)(()=>$.map(({key:a,labelKey:b})=>({key:a,label:g(b)})),[g]);return(0,d.jsx)(W,{sortKey:a,sortDirection:b,onSortKeyChange:c,onSortDirectionChange:f,options:h,defaultDirections:_,compact:!0,tooltip:g("tooltips.sort"),iconClassName:"w-4 h-4"})});var ab=c(15737),ac=c(81497),ad=c(85744),ae=c(68232);function af(){let{currentLocale:a,switchLocale:b}=(0,ad.g)(),c=(0,l.c)("common");return(0,d.jsx)("select",{value:a,onChange:a=>b(a.target.value),"data-testid":"locale-switcher","aria-label":c("language"),className:" w-full px-3 py-2 rounded-md bg-sidebar text-sidebar-foreground border border-sidebar-border focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent text-sm ",children:ae.dI.map(a=>(0,d.jsx)("option",{value:a,children:ae.vK[a]},a))})}var ag=c(84342);function ah(){let a=(0,l.c)("auth"),b=(0,ag.H)(),[c,f]=(0,e.useState)(!1);if(!b)return null;async function g(){f(!0);try{await fetch("/api/auth/logout",{method:"POST"}),window.location.href="/login"}catch{window.location.href="/login"}}return(0,d.jsx)("button",{type:"button",onClick:g,disabled:c,"data-testid":"logout-button",className:" w-full px-3 py-2 text-sm text-left rounded-md text-muted-foreground hover:text-foreground hover:bg-muted focus:outline-none focus:ring-2 focus:ring-ring disabled:opacity-50 transition-colors ",children:c?"...":a("logout.button")})}var ai=c(63474),aj=c(77560),ak=c(19463);function al(){let a=(0,l.c)("common"),{count:b}=(0,ak.Lv)();return 0===b?null:(0,d.jsxs)(i(),{href:aj.ks,"data-testid":"attention-badge","aria-label":a("attention.badgeLabel",{count:b}),className:"mt-2 inline-flex w-full items-center justify-between gap-2 rounded-md border border-warning-border bg-warning-subtle px-2 py-1 text-xs font-medium text-warning-foreground transition-colors hover:brightness-105 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[(0,d.jsx)("span",{className:"min-w-0 truncate",children:a("attention.label")}),(0,d.jsx)("span",{"data-testid":"attention-badge-count",className:"tabular-nums font-semibold",children:b})]})}function am({count:a}){let b=(0,l.c)("common");return 0===a?null:(0,d.jsx)("span",{"data-testid":"attention-badge-bubble",role:"status","aria-label":b("attention.badgeLabel",{count:a}),className:"absolute -top-1.5 -right-2.5 min-w-[1.05rem] rounded-full bg-warning-foreground px-1 text-[0.625rem] font-bold leading-[1.05rem] text-warning-subtle tabular-nums text-center",children:a>99?"99+":a})}var an=c(78352);function ao(a){let{items:b,sortKey:c,sortDirection:d,viewMode:f,filterText:g}=a,h=(0,e.useMemo)(()=>{if(!g)return b;let a=g.toLowerCase();return b.filter(b=>b.name.toLowerCase().includes(a)||b.repositoryName.toLowerCase().includes(a))},[b,g]);return{sortedItems:(0,e.useMemo)(()=>(0,r.Xn)(h,c,d),[h,c,d]),groupedItems:(0,e.useMemo)(()=>"grouped"===f?(0,r._s)(h,c,d):[],[h,c,d,f])}}let ap="w-4 h-4",aq=0,ar=(0,e.memo)(function(){let a=(0,j.Hq)(),{worktrees:b,repositories:c,selectedWorktreeId:f,selectWorktree:g,refreshWorktrees:h,isLoading:k,error:m}=(0,L.$f)(),{closeMobileDrawer:n,sortKey:o,sortDirection:p,viewMode:s,setViewMode:t,repositoryOrder:u,setRepositoryOrder:v}=(0,q.VF)(),x=(0,l.c)("common"),[y,z]=(0,e.useState)(""),A=(0,e.useRef)(null),[B,C]=(0,e.useState)(()=>({})),D=(0,e.useRef)(!1);(0,e.useEffect)(()=>{D.current||(D.current=!0,fetch("/api/sidebar/group-order").then(a=>a.json()).then(a=>{a.success&&Array.isArray(a.order)&&v(a.order)}).catch(()=>{}))},[v]);let E=(0,e.useMemo)(()=>(0,r.UZ)(c),[c]),F=(0,e.useMemo)(()=>(0,r.s6)(b,E),[b,E]),G=(0,e.useMemo)(()=>F.map(O.XK),[F]),K=(0,e.useDeferredValue)(G),M=(0,e.useRef)(null),N=(0,e.useRef)(null),[P,Q]=(0,e.useState)(0);(0,e.useEffect)(()=>()=>{null!==N.current&&clearTimeout(N.current)},[]);let R=(0,e.useCallback)(()=>{null!==N.current&&(clearTimeout(N.current),N.current=null),M.current=null},[]),S=(0,e.useMemo)(()=>{let a=M.current;return!a||0===a.items.length||Date.now()>=a.expiresAt?K:a.items},[K,P]),V=(0,e.useRef)(S);(0,e.useLayoutEffect)(()=>{V.current=S;let a=M.current;a&&0===a.items.length&&K.length>0&&R()});let W=(0,e.useCallback)(()=>{if(0===V.current.length)return;null!==N.current&&(clearTimeout(N.current),N.current=null);let a=M.current;if(a&&Date.now()<a.expiresAt){M.current={...a,expiresAt:1/0};return}M.current={items:V.current,expiresAt:1/0}},[]),X=(0,e.useCallback)(()=>{M.current&&(M.current={...M.current,expiresAt:Date.now()+1e3},null!==N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{R(),Q(a=>a+1)},1e3))},[R]),{sortedItems:Y,groupedItems:Z}=ao({items:S,sortKey:o,sortDirection:p,viewMode:s,filterText:y}),$=(0,e.useMemo)(()=>"grouped"===s&&Z?y.trim()?Z:(0,r.BN)(Z,u):null,[s,Z,u,y]),_="grouped"===s?$:null;(0,e.useEffect)(()=>{},[B]);let ac=(0,e.useCallback)(a=>{C(b=>({...b,[a]:!b[a]}))},[]),ad=(0,e.useCallback)(()=>{var a;aq=Number.isFinite(a=A.current?.scrollTop??0)&&a>0?a:0},[]),ae=Y.length>0||(_?.length??0)>0;(0,e.useEffect)(()=>{let a=A.current;if(!a)return;let b=window.requestAnimationFrame(()=>{a.scrollTop=aq});return()=>{window.cancelAnimationFrame(b)}},[ae,s]);let ag=(0,e.useCallback)(b=>{ad(),g(b),a.push(`/worktrees/${b}`),n()},[ad,g,a,n]),ai=(0,I.FR)((0,I.MS)(I.AN,{activationConstraint:{distance:8}})),aj=(0,e.useCallback)(a=>{let{active:b,over:c}=a;if(!c||b.id===c.id||!_)return;let d=_.map(a=>a.repositoryName),e=d.indexOf(String(b.id)),f=d.indexOf(String(c.id));if(-1===e||-1===f)return;let g=(0,J.be)(d,e,f);v(g),fetch("/api/sidebar/group-order",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({order:g})}).catch(()=>{v(d)})},[_,v]),ak="flat"===s?0===Y.length:(_?.length??0)===0,am=k&&0===b.length,an=!am&&!!m&&0===b.length,ar=(0,e.useCallback)(()=>{h()},[h]);return(0,d.jsxs)("nav",{"data-testid":"sidebar","aria-label":x("sidebar.branchNavigation"),className:"h-full flex flex-col bg-sidebar text-sidebar-foreground",role:"navigation",children:[(0,d.jsxs)("div",{"data-testid":"sidebar-header",className:"flex-shrink-0 px-4 py-4 border-b border-sidebar-border",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-y-2",children:[(0,d.jsx)("h2",{className:"min-w-0 truncate text-lg font-semibold text-sidebar-foreground",children:x("sidebar.branches")}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1",children:[(0,d.jsx)(av,{viewMode:s,onToggle:t}),(0,d.jsx)(aa,{}),(0,d.jsx)(aA,{refreshWorktrees:h}),(0,d.jsx)(U.m_,{content:x("tooltips.repositories"),placement:"bottom",children:(0,d.jsx)(i(),{href:"/repositories","aria-label":x("nav.repositories"),className:"p-1 rounded-md text-sidebar-muted hover:text-sidebar-foreground hover:bg-sidebar-hover focus:outline-none focus:ring-2 focus:ring-ring transition-colors inline-flex items-center",children:(0,d.jsx)(H.A,{className:ap,"aria-hidden":"true"})})})]})]}),(0,d.jsx)(al,{})]}),(0,d.jsx)("div",{className:"flex-shrink-0 px-4 py-3 border-b border-sidebar-border",children:(0,d.jsx)(ab.pd,{type:"text",placeholder:x("sidebar.searchBranches"),value:y,onChange:a=>z(a.target.value),className:"bg-background shadow-none"})}),(0,d.jsx)("div",{ref:A,"data-testid":"branch-list",onScroll:ad,onMouseEnter:W,onMouseLeave:X,className:"flex-1 overflow-y-auto overflow-x-hidden",children:am?(0,d.jsx)(as,{label:x("sidebar.loadingBranches")}):an?(0,d.jsxs)("div",{"data-testid":"branch-list-error",role:"alert",className:"px-4 py-8 text-center text-sidebar-muted",children:[(0,d.jsx)("p",{className:"text-sm",children:x("sidebar.branchesLoadFailed")}),(0,d.jsx)(ab.$n,{type:"button",variant:"secondary",size:"sm",className:"mt-3","data-testid":"branch-list-retry",onClick:ar,children:x("sidebar.retryLoadBranches")})]}):ak?(0,d.jsx)("div",{className:"px-4 py-8 text-center text-sidebar-muted",children:x(y?"sidebar.noBranchesFound":"sidebar.noBranchesAvailable")}):"grouped"===s&&_?(0,d.jsx)(I.Mp,{sensors:ai,collisionDetection:I.fp,onDragEnd:aj,children:(0,d.jsx)(J.gB,{items:_.map(a=>a.repositoryName),strategy:J._G,children:_.map(a=>{let b=!B[a.repositoryName]||!!y.trim();return(0,d.jsx)(at,{group:a,isExpanded:b,selectedWorktreeId:f,onToggle:()=>ac(a.repositoryName),onBranchClick:ag,isDragDisabled:!!y.trim()},a.repositoryName)})})}):Y.map(a=>(0,d.jsx)(T,{branch:a,isSelected:a.id===f,onClick:()=>ag(a.id)},a.id))}),(0,d.jsxs)("div",{className:"flex-shrink-0 px-4 py-3 border-t border-sidebar-border space-y-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("div",{className:"flex-1",children:(0,d.jsx)(af,{})}),(0,d.jsx)(w,{})]}),(0,d.jsx)(ah,{})]})]})}),as=(0,e.memo)(function({label:a}){return(0,d.jsxs)("div",{"data-testid":"branch-list-skeleton",role:"status","aria-live":"polite",className:"px-4 py-3 space-y-3",children:[(0,d.jsx)("span",{className:"sr-only",children:a}),[0,1,2,3,4].map(a=>(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(ab.EA,{className:"h-2 w-2 rounded-full"}),(0,d.jsx)(ab.EA,{className:"h-3 flex-1"})]},a))]})});function at({group:a,isExpanded:b,selectedWorktreeId:c,onToggle:e,onBranchClick:f,isDragDisabled:g}){let{attributes:h,listeners:i,setNodeRef:j,setActivatorNodeRef:k,transform:l,transition:m,isDragging:n}=(0,J.gl)({id:a.repositoryName,disabled:g}),o={transform:K.Ks.Transform.toString(l),transition:m,opacity:n?.5:1};return(0,d.jsxs)("div",{ref:j,style:o,className:"w-full min-w-0",children:[(0,d.jsx)(au,{repositoryName:a.repositoryName,branchCount:a.branches.length,isExpanded:b,onClick:e,dragHandleRef:k,dragHandleListeners:g?void 0:i,dragHandleAttributes:g?void 0:h}),b&&a.branches.map(a=>(0,d.jsx)(T,{branch:a,isSelected:a.id===c,onClick:()=>f(a.id),showRepositoryName:!1},a.id))]})}function au({repositoryName:a,branchCount:b,isExpanded:c,onClick:e,dragHandleRef:f,dragHandleListeners:g,dragHandleAttributes:h}){let i=(0,l.c)("common");return(0,d.jsxs)("div",{className:"flex items-center w-full",children:[g&&(0,d.jsx)("div",{ref:f,...g,...h,"aria-label":i("sidebar.dragToReorderGroup"),className:" flex-shrink-0 flex items-center justify-center w-6 h-full pl-2 cursor-grab active:cursor-grabbing text-sidebar-muted hover:text-sidebar-foreground transition-colors ",children:(0,d.jsx)(ay,{})}),(0,d.jsxs)("button",{"data-testid":"group-header",type:"button",onClick:e,"aria-expanded":c,className:" flex-1 min-w-0 flex items-center gap-2 px-2 py-2 text-xs font-semibold text-sidebar-muted uppercase tracking-wider focus:outline-none focus:ring-2 focus:ring-inset focus:ring-ring transition-colors ",children:[(0,d.jsx)(aw,{isExpanded:c}),(0,d.jsx)(ab.nF,{color:(0,r.LV)(a)}),(0,d.jsx)(ac.nR,{content:a,className:"flex-1 min-w-0 text-left truncate",children:a}),(0,d.jsx)("span",{className:"text-sidebar-muted font-normal tabular-nums pr-2",children:b})]})]})}function av({viewMode:a,onToggle:b}){let c=(0,l.c)("common");return(0,d.jsx)(U.m_,{content:c("tooltips.viewMode"),placement:"bottom",children:(0,d.jsx)("button",{"data-testid":"view-mode-toggle",type:"button",onClick:()=>{b("grouped"===a?"flat":"grouped")},"aria-label":c("grouped"===a?"sidebar.switchToFlatView":"sidebar.switchToGroupedView"),className:" p-1 rounded-md text-sidebar-muted hover:text-sidebar-foreground hover:bg-sidebar-hover focus:outline-none focus:ring-2 focus:ring-ring transition-colors ",children:"grouped"===a?(0,d.jsx)(ax,{className:ap}):(0,d.jsx)(ab.nF,{className:ap})})})}function aw({isExpanded:a}){return(0,d.jsx)("svg",{className:`w-3 h-3 flex-shrink-0 transition-transform ${a?"rotate-90":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})}function ax({className:a="w-3 h-3"}){return(0,d.jsx)("svg",{className:a,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16M4 18h16"})})}function ay(){return(0,d.jsxs)("svg",{className:"w-3 h-3",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"9",cy:"5",r:"1.5"}),(0,d.jsx)("circle",{cx:"15",cy:"5",r:"1.5"}),(0,d.jsx)("circle",{cx:"9",cy:"12",r:"1.5"}),(0,d.jsx)("circle",{cx:"15",cy:"12",r:"1.5"}),(0,d.jsx)("circle",{cx:"9",cy:"19",r:"1.5"}),(0,d.jsx)("circle",{cx:"15",cy:"19",r:"1.5"})]})}function az({className:a=""}){return(0,d.jsx)("svg",{className:`${ap} ${a}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 4v5h5M20 20v-5h-5M20.49 9A9 9 0 005.64 5.64L4 4m16 16l-1.64-1.64A9 9 0 014.51 15"})})}let aA=(0,e.memo)(function({refreshWorktrees:a}){let[b,c]=(0,e.useState)(!1),f=(0,e.useRef)(!1),{showToast:g}=(0,ai.dj)(),h=(0,l.c)("common"),i=(0,e.useCallback)(async()=>{if(!f.current){f.current=!0,c(!0);try{let b=await an.Rx.sync();await a(),g(h("syncSuccess",{count:b.worktreeCount}),"success",3e3)}catch(a){a instanceof an.hD&&401===a.status?g(h("syncAuthError"),"error",5e3):g(h("syncError"),"error",5e3)}finally{f.current=!1,c(!1)}}},[a,g,h]);return(0,d.jsx)(d.Fragment,{children:(0,d.jsx)(U.m_,{content:h("tooltips.sync"),placement:"bottom",children:(0,d.jsx)("button",{type:"button",onClick:i,disabled:b,"aria-label":h("syncButtonLabel"),className:"p-1 rounded-md text-sidebar-muted hover:text-sidebar-foreground hover:bg-sidebar-hover focus:outline-none focus:ring-2 focus:ring-ring disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:(0,d.jsx)(az,{className:b?"animate-spin":""})})})})});var aB=c(38882),aC=c(72280),aD=c(52120),aE=c(11010);let aF=/^\/worktrees\/([^/]+)/;function aG(a,b,c){let d=c-8-b;return d<=8?8:Math.min(Math.max(a.left+b>c-8?a.right-b:a.left,8),d)}let aH=(0,e.memo)(function(){let a=(0,l.c)("common"),b=(0,g.usePathname)(),c=(0,j.Hq)(),{sortKey:f,sortDirection:h,repositoryOrder:i}=(0,q.VF)(),{worktrees:k,repositories:m,selectedWorktreeId:n,selectWorktree:o}=(0,L.$f)(),{factor:p}=(0,G.Ps)(),s=(0,e.useMemo)(()=>(0,r.UZ)(m??[]),[m]),t=(0,e.useMemo)(()=>(0,r.s6)(k??[],s),[k,s]),{groupedItems:u}=ao({items:(0,e.useMemo)(()=>t.map(O.XK),[t]),sortKey:f,sortDirection:h,viewMode:"grouped"}),v=(0,e.useMemo)(()=>(0,r.BN)(u,i),[u,i]),w=function(a,b){let c=aF.exec(a);if(!c)return b;try{return decodeURIComponent(c[1])}catch{return c[1]}}(b,n),x=(0,e.useMemo)(()=>v.find(a=>a.branches.some(a=>a.id===w))?.repositoryName??null,[v,w]),[y,z]=(0,e.useState)(null),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)(!1),E=(0,e.useRef)(null),F=(0,e.useRef)(null),H=(0,e.useRef)(new Map),I=(0,e.useCallback)((a,b)=>{b?H.current.set(a,b):H.current.delete(a)},[]),J=(0,e.useCallback)(()=>{z(null),B(null),D(!1)},[]),K=(0,e.useCallback)(a=>{let b=H.current.get(a);if(!b)return;let c=b.getBoundingClientRect();B({left:c.left,right:c.right,bottom:c.bottom}),z(a),D(!1)},[]),M=(0,e.useCallback)(a=>{if(y===a)return void J();K(a)},[y,J,K]),[N,P]=(0,e.useState)(!1),Q=(0,e.useCallback)(()=>{let a=E.current;a&&P(a.scrollWidth>a.clientWidth+1)},[]);(0,e.useLayoutEffect)(()=>{Q()},[Q,v.length,p]),(0,e.useEffect)(()=>{},[Q]);let R=null!==y||C;(0,e.useEffect)(()=>{if(!R)return;let a=a=>{let b=a.target;!(!b||E.current?.contains(b)||F.current?.contains(b))&&(b.closest?.("[data-repository-tab-panel]")||J())},b=a=>{if("Escape"!==a.key)return;let b=y?H.current.get(y):F.current;J(),b?.focus()};return document.addEventListener("mousedown",a),document.addEventListener("keydown",b),()=>{document.removeEventListener("mousedown",a),document.removeEventListener("keydown",b)}},[R,y,J]),(0,e.useEffect)(()=>{J()},[b,J]);let S=(0,e.useCallback)(a=>{J(),o(a),c.push(`/worktrees/${a}`)},[J,o,c]),T=(0,e.useCallback)(a=>{let b=H.current.get(a);b?.scrollIntoView({block:"nearest",inline:"nearest"}),K(a),b?.focus()},[K]);if(0===v.length)return null;let U=Math.round(32*p),V=v.find(a=>a.repositoryName===y)??null;return(0,d.jsxs)("div",{"data-testid":"repository-tab-bar",className:"relative flex-shrink-0 flex items-stretch border-b border-border bg-surface",style:{height:`${U}px`},children:[(0,d.jsx)("nav",{ref:E,"data-testid":"repository-tab-strip","aria-label":a("nav.repositories"),className:"flex min-w-0 flex-1 flex-nowrap items-stretch overflow-x-auto overflow-y-hidden",children:v.map(a=>(0,d.jsx)(aI,{group:a,isActive:a.repositoryName===x,isOpen:a.repositoryName===y,registerTab:I,onToggle:M},a.repositoryName))}),N&&(0,d.jsx)("button",{ref:F,type:"button","data-testid":"repository-tab-overflow","aria-haspopup":"menu","aria-expanded":C,"aria-label":a("nav.more"),title:a("nav.more"),onClick:()=>{z(null),B(null),D(a=>!a)},className:"flex-shrink-0 flex items-center border-l border-border px-2 text-muted-foreground transition-colors hover:bg-surface-2 hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",children:(0,d.jsx)(aB.A,{size:16,strokeWidth:2,"aria-hidden":"true"})}),V&&A&&(0,d.jsx)(aJ,{group:V,anchor:A,factor:p,activeWorktreeId:w,onBranchClick:S}),C&&(0,d.jsx)(aK,{groups:v,anchorRef:F,activeRepositoryName:x,onSelect:T})]})}),aI=(0,e.memo)(function({group:a,isActive:b,isOpen:c,registerTab:e,onToggle:f}){let g=(0,l.c)("common"),h=(0,r.zD)(a.branches),i=(0,r.j)(a.branches),j=g(aD.PL[h].labelKey);return(0,d.jsxs)("button",{ref:b=>e(a.repositoryName,b),type:"button","data-testid":"repository-tab","data-repository":a.repositoryName,"aria-haspopup":"menu","aria-expanded":c,"aria-current":b?"true":void 0,title:`${a.repositoryName} — ${j}`,onClick:()=>f(a.repositoryName),onKeyDown:b=>{"ArrowDown"===b.key&&(b.preventDefault(),c||f(a.repositoryName))},className:`
12
+ group/tab flex-shrink-0 flex max-w-[14rem] items-center gap-1.5 px-2.5
13
+ border-b-2 text-xs font-medium transition-colors
14
+ focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring
15
+ ${b?"border-accent-500 bg-surface-2 text-foreground":"border-transparent text-muted-foreground hover:bg-surface-2 hover:text-foreground"}
16
+ `,children:[(0,d.jsx)(aC.n,{className:"h-3.5 w-3.5",color:(0,r.LV)(a.repositoryName)}),(0,d.jsx)("span",{className:"min-w-0 truncate",children:a.repositoryName}),(0,d.jsx)(P.m,{status:h,size:"sm",label:j,"data-testid":"repository-tab-status"}),i>0&&(0,d.jsx)("span",{"data-testid":"repository-tab-attention-count","aria-label":g("attention.badgeLabel",{count:i}),className:"flex-shrink-0 rounded-full bg-warning-subtle px-1.5 text-[10px] font-semibold leading-4 tabular-nums text-warning-foreground",children:i})]})});function aJ({group:a,anchor:b,factor:c,activeWorktreeId:f,onBranchClick:g}){let h=(0,l.c)("common"),i=(0,e.useRef)(null);if("undefined"==typeof document)return null;let j=Math.round(300*c);return N().createPortal((0,d.jsx)("div",{ref:i,"data-repository-tab-panel":"","data-testid":"repository-tab-popover","data-repository":a.repositoryName,role:"menu","aria-label":h("sidebar.branchNavigation"),className:"fixed rounded-md border border-sidebar-border bg-sidebar text-sidebar-foreground shadow-lg",style:{top:b.bottom+4,left:aG(b,j,j),width:j,zIndex:aE.M.POPOVER},children:(0,d.jsx)("div",{"data-testid":"repository-tab-popover-list",className:"overflow-y-auto overflow-x-hidden py-1",style:{maxHeight:`${Math.round(520*c)}px`},children:0===a.branches.length?(0,d.jsx)("p",{className:"px-4 py-6 text-center text-sm text-sidebar-muted",children:h("sidebar.noBranchesAvailable")}):a.branches.map(a=>(0,d.jsx)(T,{branch:a,isSelected:a.id===f,onClick:()=>g(a.id),showRepositoryName:!1},a.id))})}),document.body)}function aK({groups:a,anchorRef:b,activeRepositoryName:c,onSelect:e}){let f=(0,l.c)("common"),g=b.current?.getBoundingClientRect();return"undefined"!=typeof document&&g?N().createPortal((0,d.jsx)("div",{"data-repository-tab-panel":"","data-testid":"repository-tab-overflow-menu",role:"menu","aria-label":f("nav.repositories"),className:"fixed rounded-md border border-sidebar-border bg-sidebar text-sidebar-foreground shadow-lg",style:{top:g.bottom+4,left:aG({left:g.left,right:g.right,bottom:g.bottom},300,300),width:300,maxHeight:"520px",zIndex:aE.M.POPOVER},children:(0,d.jsx)("div",{className:"overflow-y-auto py-1",style:{maxHeight:"inherit"},children:a.map(a=>{let b=(0,r.zD)(a.branches);return(0,d.jsxs)("button",{type:"button",role:"menuitem","data-testid":"repository-tab-overflow-item","data-repository":a.repositoryName,"aria-current":a.repositoryName===c?"true":void 0,onClick:()=>e(a.repositoryName),className:"flex w-full items-center gap-2 px-3 py-2 text-left text-sm transition-colors hover:bg-sidebar-hover focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",children:[(0,d.jsx)(aC.n,{className:"h-3.5 w-3.5",color:(0,r.LV)(a.repositoryName)}),(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate",children:a.repositoryName}),(0,d.jsx)(P.m,{status:b,size:"sm",label:f(aD.PL[b].labelKey)}),(0,d.jsx)("span",{className:"tabular-nums text-xs text-sidebar-muted",children:a.branches.length})]},a.repositoryName)})})}),document.body):null}var aL=c(78733),aM=c(44688),aN=c(75903),aO=c(59268);let aP=[{labelKey:"nav.home",href:"/",isActive:a=>"/"===a,icon:(0,d.jsx)(aL.A,{size:20,"aria-hidden":"true"})},{labelKey:"nav.chat",href:"/chat",isActive:a=>a.startsWith("/chat"),icon:(0,d.jsx)(aM.A,{size:20,"aria-hidden":"true"})},{labelKey:"nav.sessions",href:"/sessions",isActive:a=>a.startsWith("/sessions"),icon:(0,d.jsx)(aN.A,{size:20,"aria-hidden":"true"})},{labelKey:"nav.review",href:"/review",isActive:a=>a.startsWith("/review"),icon:(0,d.jsx)(aO.A,{size:20,"aria-hidden":"true"}),showsAttentionBadge:!0},{labelKey:"nav.more",href:"/more",isActive:a=>a.startsWith("/more"),icon:(0,d.jsx)(aB.A,{size:20,"aria-hidden":"true"})}];function aQ(){let a=(0,g.usePathname)(),{setOpen:b}=(0,A.C)(),c=(0,l.c)("commandPalette"),e=(0,l.c)("common"),{count:f}=(0,ak.Lv)();return(0,d.jsx)("nav",{"data-testid":"global-mobile-nav",className:"fixed bottom-0 left-0 right-0 z-50 border-t border-border bg-background supports-[backdrop-filter]:bg-background/80 backdrop-blur-md pb-safe",children:(0,d.jsxs)("div",{className:"flex items-center justify-around h-14",children:[aP.map(b=>{let c=b.isActive(a),g=!0===b.showsAttentionBadge&&f>0;return(0,d.jsxs)(k,{href:g?aj.ks:b.href,className:`flex flex-col items-center justify-center flex-1 h-full text-xs transition-colors ${c?"text-accent-600 dark:text-accent-400":"text-muted-foreground hover:text-foreground"}`,children:[(0,d.jsxs)("span",{className:"relative inline-flex",children:[b.icon,!0===b.showsAttentionBadge&&(0,d.jsx)(am,{count:f})]}),(0,d.jsx)("span",{className:"mt-1 whitespace-nowrap",children:e(b.labelKey)})]},b.href)}),(0,d.jsxs)("button",{type:"button","data-testid":"mobile-command-palette-trigger",onClick:()=>b(!0),"aria-label":c("mobileTrigger"),className:"flex flex-col items-center justify-center flex-1 h-full text-xs text-muted-foreground hover:text-foreground transition-colors",children:[(0,d.jsx)(n.A,{size:20,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"mt-1 whitespace-nowrap",children:c("mobileLabel")})]})]})})}var aR=c(76047),aS=c(98033),aT=c(89184);let aU=["global","terminal","composer","editor"],aV=[{id:"commandPalette",keys:["MOD","K"],scope:"global"},{id:"keyboardHelp",keys:["?"],scope:"global"},{id:"closeOverlay",keys:["Esc"],scope:"global"},{id:"navigateList",keys:["↑","↓"],scope:"global"},{id:"terminalSearch",keys:["MOD","F"],scope:"terminal"},{id:"toggleSurfaceMode",keys:["MOD","Shift","M"],scope:"terminal"},{id:"sendMessage",keys:["↵"],scope:"composer"},{id:"composerNewline",keys:["Shift","↵"],scope:"composer"},{id:"editorIndent",keys:["Tab"],scope:"editor"},{id:"editorOutdent",keys:["Shift","Tab"],scope:"editor"},{id:"editorTabFocus",keys:["Ctrl","M"],scope:"editor"},{id:"editorSave",keys:["MOD","S"],scope:"editor"},{id:"editorFullscreen",keys:["MOD","Shift","F"],scope:"editor"}];function aW(){let{open:a,setOpen:b}=(0,aT.K)(),{open:c}=(0,A.C)(),f=(0,l.c)("keyboardShortcuts"),[g,h]=(0,e.useState)(!1);(0,e.useRef)(a),(0,e.useRef)(c);let i=function(a=aV){return aU.map(b=>({scope:b,shortcuts:a.filter(a=>a.scope===b)})).filter(a=>a.shortcuts.length>0)}();return(0,d.jsx)(aS.a,{isOpen:a,onClose:()=>b(!1),title:f("title"),size:"md",children:(0,d.jsx)("div",{"data-testid":"keyboard-shortcuts-overlay",className:"space-y-6",children:i.map(({scope:a,shortcuts:b})=>(0,d.jsxs)("section",{"data-testid":`keyboard-shortcuts-scope-${a}`,children:[(0,d.jsx)("h4",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:f(`scopes.${a}`)}),(0,d.jsx)("ul",{className:"divide-y divide-border",children:b.map(a=>(0,d.jsxs)("li",{"data-testid":`keyboard-shortcut-${a.id}`,className:"flex items-center justify-between gap-4 py-2",children:[(0,d.jsx)("span",{className:"text-sm text-foreground",children:f(`shortcuts.${a.id}`)}),(0,d.jsx)("span",{className:"flex flex-shrink-0 items-center gap-1",children:a.keys.map((a,b)=>(0,d.jsx)(z.u,{children:"MOD"===a?g?"⌘":"Ctrl":a},b))})]},a.id))})]},a))})})}var aX=c(18608);let aY="transform transition-transform duration-300 ease-out",aZ=(0,e.memo)(function({children:a}){let{isOpen:b,isMobileDrawerOpen:c,closeMobileDrawer:f,width:h,setWidth:i,repoTabBarMode:j}=(0,q.VF)(),k=(0,D.a)(),{showSidebar:l,showGlobalNav:m}=function(){var a=(0,g.usePathname)();for(let b of F)if(a.startsWith(b.prefix))return{...E,...b.config};return{...E}}(),{factor:n}=(0,G.Ps)(),o=Math.round(160*n),p=Math.round(480*n),s=Math.round(Math.min(p,Math.max(o,h*n))),t=(0,r.fs)(j??r.PB,b),u=Math.round(32*n)+64*!!m,v=t?{top:`${u}px`,height:`calc(100vh - ${u}px)`}:{},w=(0,e.useRef)(null),x=(0,e.useRef)(null),y=(0,e.useCallback)(a=>{i(Math.round(a/n))},[i,n]);return k?(0,d.jsxs)("div",{"data-testid":"app-shell",className:"h-screen flex flex-col",children:[c&&(0,d.jsx)("div",{"data-testid":"drawer-overlay",className:"fixed inset-0 bg-black/50 z-40",onClick:f,"aria-hidden":"true"}),l&&(0,d.jsx)("aside",{"data-testid":"sidebar-container",className:`
17
+ fixed left-0 top-0 h-full w-72 z-50
18
+ ${aY}
19
+ ${c?"translate-x-0":"-translate-x-full"}
20
+ `,role:"complementary",children:(0,d.jsx)(ar,{})}),(0,d.jsx)("main",{className:`flex-1 min-h-0 overflow-hidden ${m?"pb-14":""}`,role:"main","data-view-transition":"content",children:a}),m&&(0,d.jsx)(aQ,{}),(0,d.jsx)(aR.xq,{}),(0,d.jsx)(aW,{}),(0,d.jsx)(aX.n,{})]}):(0,d.jsxs)("div",{"data-testid":"app-shell",className:"h-screen flex flex-col",children:[t&&(0,d.jsx)(aH,{}),m&&(0,d.jsx)(C,{}),(0,d.jsxs)("div",{className:"flex flex-1 min-h-0",children:[l&&(0,d.jsxs)("aside",{ref:w,"data-testid":"sidebar-container",className:`
21
+ fixed left-0
22
+ ${m?"top-16 h-[calc(100vh-4rem)]":"top-0 h-full"}
23
+ border-r border-border
24
+ ${aY}
25
+ ${b?"translate-x-0":"-translate-x-full"}
26
+ `,style:{width:`${s}px`,zIndex:aE.M.SIDEBAR,...v},role:"complementary","aria-hidden":!b,children:[(0,d.jsx)(ar,{}),(0,d.jsx)(a$,{currentWidth:s,minWidth:o,maxWidth:p,sidebarRef:w,mainRef:x,onWidthChange:y})]}),(0,d.jsx)("main",{ref:x,className:"flex-1 min-w-0 h-full overflow-hidden transition-[padding] duration-300 ease-out",style:{paddingLeft:l&&b?`${s}px`:0},role:"main","data-view-transition":"content",children:a})]}),(0,d.jsx)(aR.xq,{}),(0,d.jsx)(aW,{}),(0,d.jsx)(aX.n,{})]})});function a$({currentWidth:a,minWidth:b,maxWidth:c,sidebarRef:e,mainRef:f,onWidthChange:g}){return(0,d.jsx)("div",{"data-testid":"sidebar-resize-handle","aria-hidden":"true",onMouseDown:d=>{d.preventDefault();let h=d.clientX,i=a;f.current&&(f.current.style.transition="none");let j=d=>{i=Math.max(b,Math.min(c,a+(d.clientX-h))),e.current&&(e.current.style.width=`${i}px`),f.current&&(f.current.style.paddingLeft=`${i}px`)},k=()=>{document.body.style.cursor="",document.body.style.userSelect="",f.current&&(f.current.style.transition=""),document.removeEventListener("mousemove",j),document.removeEventListener("mouseup",k),g(i)};document.body.style.cursor="col-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",j),document.addEventListener("mouseup",k)},className:"absolute top-0 right-0 w-1 h-full cursor-col-resize hover:bg-accent-500/40 transition-colors"})}},52120:(a,b,c)=>{c.d(b,{PL:()=>e,sb:()=>f});let d={idle:"bg-muted-foreground",ready:"bg-success",spinner:"border-info",waiting:"bg-warning"},e={idle:{className:d.idle,labelKey:"status.idle",type:"dot"},ready:{className:d.ready,labelKey:"status.ready",type:"dot"},running:{className:d.spinner,labelKey:"status.running",type:"spinner"},waiting:{className:d.waiting,labelKey:"status.waiting",type:"dot"},generating:{className:d.spinner,labelKey:"status.generating",type:"spinner"}},f={idle:"detailStatus.idle",ready:"detailStatus.ready",running:"detailStatus.running",waiting:"detailStatus.waiting"}},68232:(a,b,c)=>{c.d(b,{dI:()=>d,gB:()=>e,vK:()=>f});let d=["en","ja"],e="locale",f={en:"English",ja:"日本語"}},76047:(a,b,c)=>{c.d(b,{P0:()=>Y,oQ:()=>X,tJ:()=>T,xk:()=>W,xq:()=>$,yW:()=>Z});var d=c(21124),e=c(38301),f=c(23312),g=c(42378),h=c(55992),i=c(20481),j=c(45523),k=c(67565),l=c(78733),m=c(44688),n=c(75903),o=c(50987),p=c(59268),q=c(75234),r=c(38882),s=c(70175),t=c(60988),u=c(34487),v=c(25345),w=c(96558),x=c(97950),y=c(75692),z=c(57898),A=c(88285),B=c(71563),C=c(35595),D=c(11010),E=c(64632),F=c(89184),G=c(5772),H=c(63157),I=c(12480),J=c(85744),K=c(78352),L=c(22317),M=c(85647),N=c(63474),O=c(85678),P=c(17252);let Q=[{key:"home",href:"/"},{key:"chat",href:"/chat"},{key:"sessions",href:"/sessions"},{key:"repositories",href:"/repositories"},{key:"review",href:"/review"},{key:"skills",href:"/skills"},{key:"more",href:"/more"}],R={home:l.A,chat:m.A,sessions:n.A,repositories:o.A,review:p.A,skills:q.A,more:r.A};function S(a){return a.isWaitingForResponse?"waiting":a.isProcessing?"running":a.isSessionRunning?"ready":"idle"}function T(a){if(!(a instanceof HTMLElement))return!1;let b=a.tagName;return!!("INPUT"===b||"TEXTAREA"===b||"SELECT"===b||a.isContentEditable||a.closest('[role="log"]'))}let U=(0,C.cn)("flex cursor-pointer items-center gap-2 rounded-md px-2 py-2 text-sm","text-foreground","data-[selected=true]:bg-accent-500/15 data-[selected=true]:text-accent-700","dark:data-[selected=true]:text-accent-300"),V="shrink-0 text-muted-foreground";function W(){if("undefined"==typeof document)return null;let a=document.querySelector("[data-instance-id]");return a?.getAttribute("data-instance-id")?.trim()||null}function X(a){if("undefined"==typeof document)return!1;let b=Array.from(document.querySelectorAll('[data-testid="message-input-textarea"]'));if(0===b.length)return!1;let c=document.activeElement,d=b.find(a=>a===c)??b[0],e=d.value,f=""===e.trim()?a:`${e}
27
+
28
+ ${a}`,g=Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype,"value")?.set;return g?g.call(d,f):d.value=f,d.dispatchEvent(new Event("input",{bubbles:!0})),d.focus(),d.setSelectionRange(f.length,f.length),!0}async function Y(a,b,c){try{let[d,e]=await Promise.all([fetch(`/api/worktrees/${a}/cli-reference`),fetch(`/api/worktrees/${a}/resolve-target?instance=${encodeURIComponent(b.id)}`)]);if(!d.ok||!e.ok)return null;let[f,g]=await Promise.all([d.json(),e.json()]);return(0,O.Bz)({binary:f.binary,worktreeId:f.worktreeId,instanceId:g.instanceId,instanceLabel:b.alias,toolLabel:(0,P.oo)(g.cliToolId),portPrefix:f.portPrefix,locale:c})}catch{return null}}let Z={ja:{heading:"委任 (/delegate)",menuItem:"委任方法をコンポーザーに挿入",inserted:"委任方法をコンポーザーに挿入しました",self:"自分自身には委任できません",noComposer:"コンポーザーが見つかりません。worktree 画面を開いてから実行してください",failed:"委任方法を作成できませんでした"},en:{heading:"Delegate (/delegate)",menuItem:"Insert delegation brief into the composer",inserted:"Delegation brief inserted into the composer",self:"That is this session — nothing to delegate to",noComposer:"No composer on screen. Open a worktree screen and try again",failed:"Could not build the delegation brief"}};function $(){let{open:a,setOpen:b}=(0,E.C)(),{setOpen:c}=(0,F.K)(),l=(0,g.useRouter)(),m=(0,g.usePathname)(),n=(0,h.Ym)(),o=(0,i.c)("commandPalette"),p=(0,i.c)("common"),{theme:q,setTheme:r}=(0,j.D)(),{setSize:O,isMobile:T}=(0,G.Ps)(),{currentLocale:$,switchLocale:_}=(0,J.g)(),aa=(0,H.rC)(),{showToast:ab}=(0,N.dj)(),[ac,ad]=(0,e.useState)(!1),[ae,af]=(0,e.useState)(""),[ag,ah]=(0,e.useState)([]),ai=(0,e.useRef)(null);(0,e.useRef)(null),(0,e.useRef)(a);let aj=(0,e.useCallback)((a,c)=>{c&&ah(a=>(function(a,b){let c=a.filter(a=>a.kind!==b.kind||a.id!==b.id),d=[b,...c].slice(0,8);try{localStorage.setItem("cm.palette.recents",JSON.stringify(d))}catch{}return d})(a,c)),b(!1),a()},[b]),ak=(0,e.useCallback)(async a=>{let b=Z["ja"===n?"ja":"en"];if(function(a){let b=/^\/worktrees\/([^/?#]+)/.exec(a??"");return b?decodeURIComponent(b[1]):null}(m)===a.worktree.id&&W()===a.instance.id)return void ab(b.self,"info");let c=await Y(a.worktree.id,a.instance,n);if(null===c)return void ab(b.failed,"error");let d=X(c);ab(d?b.inserted:b.noComposer,d?"success":"error")},[n,m,ab]),al=(0,e.useCallback)(async()=>{try{await K.Rx.sync(),await aa?.refresh?.(),ab(o("actions.syncSuccess"),"success")}catch{ab(o("actions.syncError"),"error")}},[aa,ab,o]),am="dark"===q,an=""===ae.trim(),ao=aa?.error??null,ap=aa?.isLoading??!1,aq=ao?[]:aa?.worktrees??[],ar=aq.length>0,as=!ao&&ap&&0===aq.length,at=!function(a){let b=a.trim().toLowerCase();return""!==b&&(b.startsWith("/")||b.includes("delegate"))}(ae)?[]:function(a){let b=[];for(let c of a)for(let a of c.agentInstances?.length?c.agentInstances:c.cliToolId?[{id:c.cliToolId,cliTool:c.cliToolId,alias:(0,P.oo)(c.cliToolId),order:0}]:[])b.push({worktree:c,instance:a});return b}(aq),au=Z["ja"===n?"ja":"en"],av=[...aq].sort((a,b)=>{let c=+!!a.isSessionRunning,d=+!!b.isSessionRunning;if(c!==d)return d-c;let e=a.updatedAt?new Date(a.updatedAt).getTime():0;return(b.updatedAt?new Date(b.updatedAt).getTime():0)-e}),aw=an?av.slice(0,8):av,ax=[{id:"theme",label:am?o("actions.toLight"):o("actions.toDark"),icon:am?s.A:t.A,run:()=>r(am?"light":"dark")},...T?[]:I.Uf.map(a=>({id:`displaysize:${a}`,label:`${o("actions.displaySizePrefix")}: ${p(`displaySize.${a}`)}`,icon:u.A,run:()=>O(a)})),{id:"sync",label:o("actions.syncRepositories"),icon:v.A,run:()=>{al()}},{id:"locale",label:o("actions.switchLanguage"),icon:w.A,run:()=>_("ja"===$?"en":"ja")},{id:"github",label:o("actions.openGitHub"),icon:x.A,run:()=>window.open("https://github.com/kewton/MyCodeBranchDesk","_blank","noopener,noreferrer")},{id:"keyboardShortcuts",label:o("actions.keyboardShortcuts"),icon:y.A,run:()=>c(!0)}],ay=an?ag.map(a=>{if("nav"===a.kind){let b=Q.find(b=>b.key===a.id);if(!b)return null;let c=R[b.key],e=p(`nav.${b.key}`);return{id:`nav-${b.key}`,value:`recent nav ${b.key}`,node:(0,d.jsxs)(d.Fragment,{children:[c&&(0,d.jsx)(c,{size:16,className:V,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:e})]}),onSelect:()=>aj(()=>l.push(b.href),{kind:"nav",id:b.key})}}if("worktree"===a.kind){let b=aq.find(b=>b.id===a.id);if(!b)return null;let c=b.repositoryDisplayName||b.repositoryName||"",e=b.branch||b.name;return{id:`worktree-${b.id}`,value:`recent worktree ${b.id}`,node:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(z.A,{size:16,className:V,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:e}),c&&(0,d.jsx)("span",{className:"ml-auto truncate pl-2 text-xs text-muted-foreground",children:c}),(0,d.jsx)(L.m,{status:S(b),size:"sm",className:c?"ml-2":"ml-auto"})]}),onSelect:()=>aj(()=>l.push(`/worktrees/${b.id}`),{kind:"worktree",id:b.id})}}let b=ax.find(b=>b.id===a.id);if(!b)return null;let c=b.icon;return{id:`action-${b.id}`,value:`recent action ${b.id}`,node:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(c,{size:16,className:V,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:b.label})]}),onSelect:()=>aj(b.run,{kind:"action",id:b.id})}}).filter(a=>null!==a):[];return ac?(0,f.createPortal)((0,d.jsx)(d.Fragment,{children:a&&(0,d.jsxs)("div",{className:"fixed inset-0 overflow-y-auto",style:{zIndex:D.M.MODAL},"data-testid":"command-palette",children:[(0,d.jsx)("div",{"data-state":"open","aria-hidden":"true",className:"fixed inset-0 bg-black/40 backdrop-blur-sm transition-opacity data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:duration-200",onClick:()=>b(!1)}),(0,d.jsx)("div",{className:"relative flex min-h-full items-start justify-center p-4 pt-[15vh]",children:(0,d.jsx)("div",{"data-state":"open","data-testid":"command-palette-panel",className:(0,C.cn)("relative w-full max-w-lg overflow-hidden rounded-xl bg-surface/95 shadow-2xl ring-1 ring-border backdrop-blur-xl","data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-200"),children:(0,d.jsxs)(k.uB,{label:o("title"),className:(0,C.cn)("flex flex-col","[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:pb-1 [&_[cmdk-group-heading]]:pt-2","[&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground"),children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-3",children:[(0,d.jsx)(A.A,{size:16,strokeWidth:2,"aria-hidden":"true",className:"shrink-0 text-muted-foreground"}),(0,d.jsx)(k.uB.Input,{ref:ai,value:ae,onValueChange:af,placeholder:o("placeholder"),"data-testid":"command-palette-input",className:"flex-1 bg-transparent py-3 text-sm text-foreground outline-none placeholder:text-muted-foreground"})]}),(0,d.jsxs)(k.uB.List,{className:"max-h-[min(60vh,360px)] overflow-y-auto p-2",children:[(0,d.jsx)(k.uB.Empty,{"data-testid":"command-palette-empty",className:"py-6 text-center text-sm text-muted-foreground",children:o("empty")}),as&&(0,d.jsx)(k.uB.Loading,{"data-testid":"command-palette-loading",className:"py-6 text-center text-sm text-muted-foreground",children:o("loading")}),ay.length>0&&(0,d.jsx)(k.uB.Group,{heading:o("groups.recent"),children:ay.map(a=>(0,d.jsx)(k.uB.Item,{value:a.value,onSelect:a.onSelect,className:U,children:a.node},a.id))}),(0,d.jsx)(k.uB.Group,{heading:o("groups.navigation"),children:Q.map(a=>{let b=p(`nav.${a.key}`),c=R[a.key];return(0,d.jsxs)(k.uB.Item,{value:`nav ${b} ${a.href}`,onSelect:()=>aj(()=>l.push(a.href),{kind:"nav",id:a.key}),className:U,children:[c&&(0,d.jsx)(c,{size:16,className:V,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:b})]},a.key)})}),ar&&(function(a){let b=new Map;for(let c of a){let a=c.repositoryDisplayName||c.repositoryName||"",d=a||"\0unnamed",e=b.get(d);e?e.worktrees.push(c):b.set(d,{key:d,repository:a,worktrees:[c]})}return[...b.values()]})(aw).map(a=>(0,d.jsx)(k.uB.Group,{heading:a.repository||o("groups.worktrees"),children:a.worktrees.map(b=>{let c=b.branch||b.name;return(0,d.jsxs)(k.uB.Item,{value:`worktree ${a.repository} ${c} ${b.name} ${b.id}`,onSelect:()=>aj(()=>l.push(`/worktrees/${b.id}`),{kind:"worktree",id:b.id}),className:U,children:[(0,d.jsx)(z.A,{size:16,className:V,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:c}),(0,d.jsx)(L.m,{status:S(b),size:"sm",className:"ml-auto"})]},b.id)})},a.key)),at.length>0&&(0,d.jsx)(k.uB.Group,{heading:au.heading,children:at.map(a=>{let b=a.worktree.branch||a.worktree.name;return(0,d.jsxs)(k.uB.Item,{"data-testid":`palette-delegate-${a.worktree.id}-${a.instance.id}`,value:`/delegate ${a.worktree.id} ${a.instance.id} ${a.instance.alias} ${b}`,onSelect:()=>aj(()=>{ak(a)}),className:U,children:[(0,d.jsx)(B.A,{size:16,className:V,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:a.instance.alias}),(0,d.jsxs)("span",{className:"ml-auto truncate pl-2 text-xs text-muted-foreground",children:[b," / ",a.instance.id]})]},`${a.worktree.id}:${a.instance.id}`)})}),(0,d.jsx)(k.uB.Group,{heading:o("groups.actions"),children:ax.map(a=>{let b=a.icon;return(0,d.jsxs)(k.uB.Item,{value:`action ${a.id} ${a.label}`,onSelect:()=>aj(a.run,{kind:"action",id:a.id}),className:U,children:[(0,d.jsx)(b,{size:16,className:V,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:a.label})]},a.id)})})]}),(0,d.jsxs)("div",{className:"flex items-center gap-3 border-t border-border bg-surface-2 px-3 py-2 text-[11px] text-muted-foreground",children:[(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)(M.u,{children:"↑"}),(0,d.jsx)(M.u,{children:"↓"}),o("footer.navigate")]}),(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)(M.u,{children:"↵"}),o("footer.select")]}),(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)(M.u,{children:"esc"}),o("footer.close")]})]})]})})})]})}),document.body):null}},77560:(a,b,c)=>{c.d(b,{$h:()=>l,DR:()=>e,IH:()=>j,Iu:()=>d,Nb:()=>m,SD:()=>f,_d:()=>i,bm:()=>n,ks:()=>h,t7:()=>k,z7:()=>g});let d=7e3,e=["in_review","approval","stalled"],f="in_review",g="filter",h=`/review?${g}=approval`;function i(a){return a&&e.includes(a)?a:null}let j=["claude","codex","copilot","antigravity","opencode"],k=1e3,l=5,m=100,n=1e3},81497:(a,b,c)=>{c.d(b,{nR:()=>g});var d=c(21124),e=c(38301),f=c(23312);function g({content:a,delay:b=200,className:c,children:g,metadata:h}){let i=(0,e.useRef)(null),j=(0,e.useRef)(null),k=(0,e.useRef)(null),l=(0,e.useRef)(null),[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)({top:-9999,left:-9999}),q=(0,e.useCallback)(()=>{null!==k.current&&(clearTimeout(k.current),k.current=null)},[]),r=(0,e.useCallback)(()=>{let a=i.current;a&&(a.scrollWidth>a.clientWidth||h)&&(q(),k.current=setTimeout(()=>{let b=a.getBoundingClientRect(),c=b.left;l.current={top:b.top,bottom:b.bottom},p({top:b.bottom+4,left:Math.min(b.left,c)}),n(!0),k.current=null},b))},[q,b,h]),s=(0,e.useCallback)(()=>{q(),n(!1)},[q]);return(0,d.jsxs)("span",{ref:i,className:c,onMouseEnter:r,onMouseLeave:s,children:[g??a,m&&"undefined"!=typeof document&&(0,f.createPortal)((0,d.jsxs)("span",{ref:j,role:"tooltip","aria-hidden":"true",className:"fixed z-[9999] max-w-md px-2 py-1 text-xs font-medium rounded bg-foreground text-background shadow-lg pointer-events-none",style:{top:o.top,left:o.left},children:[(0,d.jsx)("span",{className:"block break-all",children:a}),h&&(0,d.jsx)("span",{className:"mt-0.5 block whitespace-pre-line font-normal text-background/70",children:h})]}),document.body)]})}},85678:(a,b,c)=>{c.d(b,{Bz:()=>f,kj:()=>e,wx:()=>d});let d=["send","wait","capture","respond"];function e(a){let{binary:b,worktreeId:c,instanceId:d,messagePlaceholder:e}=a,f=null!=a.portPrefix&&3e3!==a.portPrefix?`CM_PORT=${a.portPrefix} `:"",g=`--instance ${d}`,h=`${f}${b}`;return{send:`${h} send ${c} "${e}" ${g}`,wait:`${h} wait ${c} ${g} --on-prompt human`,capture:`${h} capture ${c} ${g}`,respond:`${h} respond ${c} "1" ${g}`}}function f(a){let{binary:b,worktreeId:c,instanceId:d,instanceLabel:e,toolLabel:f}=a,g=null!=a.portPrefix&&3e3!==a.portPrefix?`CM_PORT=${a.portPrefix} `:"",h=`${g}${b}`,i=`--instance ${d}`,j="ja"===a.locale?"ja":"en",k=`${h} capture ${c} ${i} --pane --tail 60`,l=`${h} ask ${c} ${i} "<request>" --async`;if("ja"===j){let a=`${h} ask ${c} ${i} "<依頼文>" --timeout 1800`;return`## 別セッション「${e}」への委任
29
+ - 宛先: worktree \`${c}\` / instance \`${d}\`(${f})
30
+ - 依頼: ${a}
31
+ - exit 0: 標準出力が返答本文
32
+ - exit 10: 相手が確認待ち。標準出力のprompt JSONを私に報告して止まる(自分で答えない)
33
+ - exit 124: タイムアウト。captureで状況を見て報告
34
+ - 待たない依頼: ${l}
35
+ - 即座に relay id を返して exit 0。完了時に \`[from ...]\` 付きで返答が私のコンポーザーに届く
36
+ - 状況確認: ${h} relays / 取り消し: ${h} relays cancel <relay-id>
37
+ - 進捗確認: ${k}
38
+ - 禁止: respondで相手のプロンプトに答える / auto-yesを有効化する`}let m=`${h} ask ${c} ${i} "<request>" --timeout 1800`;return`## Delegating to session "${e}"
39
+ - Target: worktree \`${c}\` / instance \`${d}\` (${f})
40
+ - Ask: ${m}
41
+ - exit 0: stdout is the reply body
42
+ - exit 10: they are waiting on a confirmation. Report the prompt JSON on stdout back to me and stop (do not answer it yourself)
43
+ - exit 124: timed out. Look with capture and report what you see
44
+ - Ask without waiting: ${l}
45
+ - exits 0 with a relay id on stdout; the reply lands in my composer prefixed \`[from ...]\` when the turn ends
46
+ - Outstanding: ${h} relays / withdraw: ${h} relays cancel <relay-id>
47
+ - Progress: ${k}
48
+ - Do not: answer their prompt with respond / turn auto-yes on`}},85744:(a,b,c)=>{c.d(b,{g:()=>f});var d=c(55992),e=c(68232);function f(){return{currentLocale:(0,d.Ym)(),switchLocale:a=>{if(e.dI.includes(a)){let b="https:"===window.location.protocol;document.cookie=`${e.gB}=${a};path=/;max-age=31536000;SameSite=Lax${b?";Secure":""}`,localStorage.setItem("locale",a),window.location.reload()}}}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=6306,exports.ids=[3925,6306,8687],exports.modules={23854:(a,b,c)=>{c.d(b,{$G:()=>f,AL:()=>h,DZ:()=>d,Qe:()=>g,ie:()=>e});let d=4e3,e=15e3;function f(a){var b,c;if(b=a.from,c=a.to,b.worktreeId===c.worktreeId&&b.instanceId===c.instanceId)return{code:"RELAY_SELF_TARGET",message:"A session cannot relay a reply to itself. --reply-to must name a different worktree or a different agent instance."};let d=null===a.parentHops?1:a.parentHops+1;return null===a.parentHops||a.allowRelayChain?d>3?{code:"RELAY_HOPS_EXCEEDED",message:`Relay chains stop at 3 hops; this one would be ${d}. Report the reply to whoever asked instead of forwarding it again.`}:a.openBetween>=1?{code:"RELAY_DUPLICATE_PENDING",message:"There is already an open relay between these two sessions. Wait for it, or withdraw it with `commandmate relays cancel <id>`."}:{ok:!0,hops:d}:{code:"RELAY_CHAIN_BLOCKED",message:"The last message this session was given arrived over a relay, so opening another one would chain two deliveries together. Pass --allow-relay-chain if that is what you mean."}}function g(a){return"code"in a}function h(a){return void 0!==a&&Number.isFinite(a)?Math.min(6048e5,Math.max(6e4,Math.trunc(a))):864e5}},43925:(a,b,c)=>{c.d(b,{PJ:()=>i,dz:()=>j,vQ:()=>g});var d=c(57836),e=c(23854);let f=(0,c(72626).h)("relay-triggers");function g(a,b,d,e){let g={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayTurnCompleted:a}=await Promise.all([c.e(1503),c.e(1634),c.e(4299),c.e(6838),c.e(9130),c.e(4443),c.e(8800),c.e(1719),c.e(7905),c.e(2119),c.e(2445),c.e(6337),c.e(1886),c.e(595),c.e(6491),c.e(8918),c.e(7875),c.e(3077),c.e(1210)]).then(c.bind(c,71210));await a(g,{settled:e})}catch(c){f.warn("relay-turn-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:g.instanceId,error:c instanceof Error?c.message:String(c)})}})()}async function h(){try{let{runRelayMaintenanceTick:a}=await Promise.all([c.e(1503),c.e(1634),c.e(4299),c.e(6838),c.e(9130),c.e(4443),c.e(8800),c.e(1719),c.e(7905),c.e(2119),c.e(2445),c.e(6337),c.e(1886),c.e(595),c.e(6491),c.e(8918),c.e(7875),c.e(3077),c.e(1210)]).then(c.bind(c,71210));await a()}catch(a){f.warn("relay-maintenance-failed",{error:a instanceof Error?a.message:String(a)})}}function i(){j(),globalThis.__relayTriggersUnsubscribe=(0,d.wN)(a=>{a.waiting&&"prompt"===a.kind&&function(a,b,d){let e={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayPromptWaiting:a}=await Promise.all([c.e(1503),c.e(1634),c.e(4299),c.e(6838),c.e(9130),c.e(4443),c.e(8800),c.e(1719),c.e(7905),c.e(2119),c.e(2445),c.e(6337),c.e(1886),c.e(595),c.e(6491),c.e(8918),c.e(7875),c.e(3077),c.e(1210)]).then(c.bind(c,71210));a(e)}catch(c){f.warn("relay-prompt-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:e.instanceId,error:c instanceof Error?c.message:String(c)})}})()}(a.worktreeId,a.cliToolId,a.instanceId)});let a=setInterval(()=>void h(),e.ie);a.unref?.(),globalThis.__relayMaintenanceTimer=a}function j(){let a=globalThis.__relayTriggersUnsubscribe;a&&(a(),globalThis.__relayTriggersUnsubscribe=void 0),globalThis.__relayMaintenanceTimer&&(clearInterval(globalThis.__relayMaintenanceTimer),globalThis.__relayMaintenanceTimer=void 0)}},57836:(a,b,c)=>{c.d(b,{Jp:()=>k,Te:()=>l,hd:()=>j,wN:()=>h});var d=c(24455);let e=(0,c(72626).h)("waiting-episode-state"),f=globalThis.__sessionWaitingEpisodes??(globalThis.__sessionWaitingEpisodes=new Map),g=globalThis.__sessionWaitingTransitionListeners??(globalThis.__sessionWaitingTransitionListeners=new Set);function h(a){return g.add(a),()=>{g.delete(a)}}function i(a){for(let b of g)try{b(a)}catch(b){e.error("waiting-transition-listener-failed",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId,waiting:a.waiting,error:b instanceof Error?b.message:String(b)})}}function j({worktreeId:a,cliToolId:b,instanceId:c,waiting:e,kind:g=null,structuredSince:h=null,now:j=Date.now()}){let k=(0,d.v7)(a,b,c),l=f.get(k);if(!e)return void 0===l||(f.delete(k),i({worktreeId:a,cliToolId:b,instanceId:c,waiting:!1,since:null,kind:null,at:j})),null;if(void 0!==l)return l.kind=g,l.since;let m=h??j;return f.set(k,{since:m,kind:g}),i({worktreeId:a,cliToolId:b,instanceId:c,waiting:!0,since:m,kind:g,at:j}),m}function k(a,b,c){return f.get((0,d.v7)(a,b,c))??null}function l(a){let b=`${a}${d.CS}`;for(let a of f.keys())if(a.startsWith(b))return!0;return!1}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=6363,exports.ids=[3086,3925,5220,6306,6363,8687],exports.modules={12462:(a,b,c)=>{c.d(b,{T8:()=>j,o4:()=>k});var d=c(31990),e=c(56791),f=c(49640),g=c(82450),h=c(15194);let i=(0,c(72626).h)("assistant-response-saver");function j(a,b){switch(b){case"claude":return(0,g.NN)(a);case"gemini":return(0,g.IS)(a);case"opencode":return(0,g.aW)(a);case"copilot":return(0,g.LH)(a);default:return a.trim()}}async function k(a,b,c,g,k){let l=k??c;try{let m;if((0,h.VA)(c))return null;let n=(0,e.getSessionState)(a,b,l),o=n?.lastCapturedLine||0;try{m=await (0,d.Wh)(b,c,1e4,k)}catch{return i.info("failed-to-capture"),null}if(!m)return null;let p=m.split("\n"),q=p.length;for(;q>0&&""===p[q-1].trim();)q--;let r=q,{bufferReset:s,reason:t}=r>0&&o>25&&r+25<o?{bufferReset:!0,reason:"shrink"}:r>0&&o>50&&r<50?{bufferReset:!0,reason:"restart"}:{bufferReset:!1,reason:null};s&&i.info("buffer:reset-detected",{reason:t,currentLineCount:r,lastCapturedLine:o});let u=s?0:o;if(!s&&r<=o)return r<o&&((0,e.updateSessionState)(a,b,c,r,k),i.info("position:corrected-stale",{from:o,to:r})),null;let v=p.slice(u).join("\n"),w=j(v,c);if(!w||""===w.trim())return(0,e.updateSessionState)(a,b,c,r,k),i.debug("response:empty-after-clean",{currentLineCount:r}),null;let x=new Date(g.getTime()-1),y=(0,e.createMessage)(a,{worktreeId:b,role:"assistant",content:w,messageType:"normal",timestamp:x,cliToolId:c,instanceId:l});return(0,e.updateSessionState)(a,b,c,r,k),(0,f.broadcastMessage)("message",{worktreeId:b,message:y}),i.info("response:saved",{fromLine:o,toLine:r}),y}catch(a){return i.error("error:",{error:a instanceof Error?a.message:String(a)}),null}}},23854:(a,b,c)=>{c.d(b,{$G:()=>f,AL:()=>h,DZ:()=>d,Qe:()=>g,ie:()=>e});let d=4e3,e=15e3;function f(a){var b,c;if(b=a.from,c=a.to,b.worktreeId===c.worktreeId&&b.instanceId===c.instanceId)return{code:"RELAY_SELF_TARGET",message:"A session cannot relay a reply to itself. --reply-to must name a different worktree or a different agent instance."};let d=null===a.parentHops?1:a.parentHops+1;return null===a.parentHops||a.allowRelayChain?d>3?{code:"RELAY_HOPS_EXCEEDED",message:`Relay chains stop at 3 hops; this one would be ${d}. Report the reply to whoever asked instead of forwarding it again.`}:a.openBetween>=1?{code:"RELAY_DUPLICATE_PENDING",message:"There is already an open relay between these two sessions. Wait for it, or withdraw it with `commandmate relays cancel <id>`."}:{ok:!0,hops:d}:{code:"RELAY_CHAIN_BLOCKED",message:"The last message this session was given arrived over a relay, so opening another one would chain two deliveries together. Pass --allow-relay-chain if that is what you mean."}}function g(a){return"code"in a}function h(a){return void 0!==a&&Number.isFinite(a)?Math.min(6048e5,Math.max(6e4,Math.trunc(a))):864e5}},39687:(a,b,c)=>{c.d(b,{d:()=>p});var d=c(56791),e=c(43234),f=c(15194),g=c(95220),h=c(12462),i=c(49640),j=c(54325),k=c(72626),l=c(58707),m=c(41466);let n=(0,k.h)("session/send-user-message");function o(a){return a instanceof Error?a.message:String(a)}async function p(a,b){let{worktreeId:c,content:k,cliToolId:p,instanceId:q,absoluteImagePath:r,copilotModel:s}=b,t=b.messageType??"normal",u=q??p,v=e.CLIToolManager.getInstance().getTool(p),w=await (0,l.a3)(c,p,q,{ignoreStructured:b.ignoreStructuredPromptGuard});if(w.waiting)return n.info("send-refused-prompt-waiting",{worktreeId:c,cliToolId:p,reason:w.reason,blockedBy:w.blockedBy}),{ok:!1,stage:"prompt_waiting",error:(0,l.br)(c,w.blockedBy)};let x=new Date;try{await (0,h.o4)(a,c,p,x,q)}catch(a){n.error("failed-to-save-pending-assistant-response:",{error:o(a)})}let y=null;try{let b=(0,d.getMessages)(a,c,{limit:1,cliToolId:p,instanceId:u,matchResolvedInstance:!0});b.length>0&&"user"===b[0].role&&b[0].content===k&&(y=b[0].id)}catch(a){n.error("failed-to-detect-orphaned-messages:",{error:o(a)})}if(s&&"copilot"===p)try{await v.sendModelCommand(c,s,q),n.info("copilot-model-command-sent",{model:s})}catch(a){return n.error("failed-to-send-model-command:",{error:o(a)}),{ok:!1,stage:"model",error:o(a)}}try{r?(0,f._J)(v)?await v.sendMessageWithImage(c,k,r,q):await v.sendMessage(c,(0,m.TZ)(k,r),q):await v.sendMessage(c,k,q)}catch(a){return n.error("failed-to-send-message-to:",{error:o(a)}),{ok:!1,stage:"send",error:o(a)}}let z=(0,d.createMessage)(a,{worktreeId:c,role:"user",content:k,messageType:t,timestamp:x,cliToolId:p,instanceId:q,requestId:b.requestId});try{(0,i.broadcastMessage)("message",{worktreeId:c,message:{...z,cliToolId:p,instanceId:u}})}catch(a){n.warn("user-message-broadcast-failed",{error:o(a)})}if(y)try{if((0,d.deleteMessageById)(a,y)){n.info("cleaned-up-orphaned-user");try{(0,i.broadcastMessage)(j.dz,{worktreeId:c,cliToolId:p,instanceId:u,reason:"orphan_cleanup"})}catch(a){n.warn("orphan-cleanup-broadcast-failed",{error:o(a)})}}}catch(a){n.error("failed-to-clean-up-orphaned-message:",{error:o(a)})}return(0,d.updateLastUserMessage)(a,c,k,x),(0,d.clearInProgressMessageId)(a,c,p,q),n.info("cleared-in-progress-message-for"),(0,g.startPolling)(c,p,q),{ok:!0,message:z}}},43925:(a,b,c)=>{c.d(b,{PJ:()=>i,dz:()=>j,vQ:()=>g});var d=c(57836),e=c(23854);let f=(0,c(72626).h)("relay-triggers");function g(a,b,d,e){let g={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayTurnCompleted:a}=await Promise.all([c.e(1503),c.e(1634),c.e(4299),c.e(6838),c.e(9130),c.e(4443),c.e(8800),c.e(1719),c.e(7905),c.e(2119),c.e(2445),c.e(6337),c.e(1886),c.e(595),c.e(6491),c.e(8918),c.e(7875),c.e(3077),c.e(1210)]).then(c.bind(c,71210));await a(g,{settled:e})}catch(c){f.warn("relay-turn-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:g.instanceId,error:c instanceof Error?c.message:String(c)})}})()}async function h(){try{let{runRelayMaintenanceTick:a}=await Promise.all([c.e(1503),c.e(1634),c.e(4299),c.e(6838),c.e(9130),c.e(4443),c.e(8800),c.e(1719),c.e(7905),c.e(2119),c.e(2445),c.e(6337),c.e(1886),c.e(595),c.e(6491),c.e(8918),c.e(7875),c.e(3077),c.e(1210)]).then(c.bind(c,71210));await a()}catch(a){f.warn("relay-maintenance-failed",{error:a instanceof Error?a.message:String(a)})}}function i(){j(),globalThis.__relayTriggersUnsubscribe=(0,d.wN)(a=>{a.waiting&&"prompt"===a.kind&&function(a,b,d){let e={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayPromptWaiting:a}=await Promise.all([c.e(1503),c.e(1634),c.e(4299),c.e(6838),c.e(9130),c.e(4443),c.e(8800),c.e(1719),c.e(7905),c.e(2119),c.e(2445),c.e(6337),c.e(1886),c.e(595),c.e(6491),c.e(8918),c.e(7875),c.e(3077),c.e(1210)]).then(c.bind(c,71210));a(e)}catch(c){f.warn("relay-prompt-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:e.instanceId,error:c instanceof Error?c.message:String(c)})}})()}(a.worktreeId,a.cliToolId,a.instanceId)});let a=setInterval(()=>void h(),e.ie);a.unref?.(),globalThis.__relayMaintenanceTimer=a}function j(){let a=globalThis.__relayTriggersUnsubscribe;a&&(a(),globalThis.__relayTriggersUnsubscribe=void 0),globalThis.__relayMaintenanceTimer&&(clearInterval(globalThis.__relayMaintenanceTimer),globalThis.__relayMaintenanceTimer=void 0)}},57836:(a,b,c)=>{c.d(b,{Jp:()=>k,Te:()=>l,hd:()=>j,wN:()=>h});var d=c(24455);let e=(0,c(72626).h)("waiting-episode-state"),f=globalThis.__sessionWaitingEpisodes??(globalThis.__sessionWaitingEpisodes=new Map),g=globalThis.__sessionWaitingTransitionListeners??(globalThis.__sessionWaitingTransitionListeners=new Set);function h(a){return g.add(a),()=>{g.delete(a)}}function i(a){for(let b of g)try{b(a)}catch(b){e.error("waiting-transition-listener-failed",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId,waiting:a.waiting,error:b instanceof Error?b.message:String(b)})}}function j({worktreeId:a,cliToolId:b,instanceId:c,waiting:e,kind:g=null,structuredSince:h=null,now:j=Date.now()}){let k=(0,d.v7)(a,b,c),l=f.get(k);if(!e)return void 0===l||(f.delete(k),i({worktreeId:a,cliToolId:b,instanceId:c,waiting:!1,since:null,kind:null,at:j})),null;if(void 0!==l)return l.kind=g,l.since;let m=h??j;return f.set(k,{since:m,kind:g}),i({worktreeId:a,cliToolId:b,instanceId:c,waiting:!0,since:m,kind:g,at:j}),m}function k(a,b,c){return f.get((0,d.v7)(a,b,c))??null}function l(a){let b=`${a}${d.CS}`;for(let a of f.keys())if(a.startsWith(b))return!0;return!1}},58707:(a,b,c)=>{c.d(b,{$n:()=>k,a3:()=>l,br:()=>m});var d=c(43234),e=c(31990),f=c(95595),g=c(34405),h=c(72626),i=c(30008);let j=(0,h.h)("prompt-waiting-guard"),k="PROMPT_WAITING";async function l(a,b,c,h){try{let k=d.CLIToolManager.getInstance().getTool(b);if(!await k.isRunning(a,c))return{waiting:!1};let l=await (0,e.Wh)(a,b,g._,c),m=(0,f.WC)(l,b),n=(0,i._G)({worktreeId:a,cliToolId:b,instanceId:c,scraper:{status:m.status,reason:m.reason,hasActivePrompt:m.hasActivePrompt},ignoreStructured:h?.ignoreStructured});if(!n.blocksSend)return null!==n.structuredSendBlockSuppressed&&j.info("structured-send-guard-not-applied",{worktreeId:a,cliToolId:b,instanceId:c,suppressed:n.structuredSendBlockSuppressed,promptWaitingSince:n.structured?.at??null}),{waiting:!1};return{waiting:!0,reason:n.blockReason??void 0,blockedBy:n.blockedBy??void 0}}catch(c){return j.warn("prompt-waiting-check-failed",{worktreeId:a,cliToolId:b,error:c instanceof Error?c.message:String(c)}),{waiting:!1}}}function m(a,b){let c=`${a} is waiting on a prompt. Sending now would type into the prompt's input line instead of reaching the agent, and would leave that text in place for the next answer. Answer the prompt first: \`commandmate respond ${a} <answer>\`.`;if("structured"!==b)return c;let d=Math.round(i.j0/6e4);return`${c} This dialog was reported by the agent's own hooks and is not visible to the terminal scraper, so if the pane looks idle the record has outlived its dialog: it stops blocking sends ${d} minutes after it was reported, or immediately with \`commandmate send ${a} <message> --ignore-structured-prompt\` (server-wide: ${i.F1}=off).`}},85775:(a,b,c)=>{c.d(b,{Tm:()=>o,x4:()=>m,xJ:()=>n});var d=c(34129),e=c(43234),f=c(88807),g=c(72626),h=c(87374),i=c(39687);let j=(0,g.h)("timer-manager");function k(){return globalThis.__timerManagerState||(globalThis.__timerManagerState={timers:new Map,timerWorktrees:new Map,initialized:!1}),globalThis.__timerManagerState}async function l(a){let b=k(),c=(0,f.getDbInstance)();try{let b=(0,d.kx)(c,a);if(!b||"pending"!==b.status)return;let f=e.CLIToolManager.getInstance().getTool(b.cliToolId),g=b.instanceId;if(!await f.isRunning(b.worktreeId,g)){j.warn("timer:no-session",{timerId:a,worktreeId:b.worktreeId,instanceId:g}),(0,d.j2)(c,a,h.HR.NO_SESSION);return}(0,d.j2)(c,a,"sending");let k=await (0,i.d)(c,{worktreeId:b.worktreeId,content:b.message,cliToolId:b.cliToolId,instanceId:g});if(!k.ok){let b=`[${k.stage}] ${k.error}`;(0,d.j2)(c,a,"failed",void 0,b),j.error("timer:send-failed",{timerId:a,stage:k.stage,error:k.error});return}(0,d.j2)(c,a,"sent",Date.now()),j.info("timer:sent",{timerId:a,worktreeId:b.worktreeId})}catch(e){let b=e instanceof Error?e.message:String(e);try{(0,d.j2)(c,a,"failed",void 0,b)}catch{}j.error("timer:send-failed",{timerId:a,error:b})}finally{b.timers.delete(a),b.timerWorktrees.delete(a)}}function m(a,b,c){let d=k(),e=setTimeout(()=>{l(a)},c);d.timers.set(a,e),d.timerWorktrees.set(a,b)}function n(a){let b=k(),c=b.timers.get(a);c&&(clearTimeout(c),b.timers.delete(a),b.timerWorktrees.delete(a));let e=(0,f.getDbInstance)();(0,d.Ud)(e,a)}function o(a){let b=k(),c=(0,f.getDbInstance)();for(let[c,d]of b.timerWorktrees)if(d===a){let a=b.timers.get(c);a&&clearTimeout(a),b.timers.delete(c),b.timerWorktrees.delete(c)}(0,d.$$)(c,a)}},95220:(a,b,c)=>{c.r(b),c.d(b,{accumulateTuiContent:()=>g.IZ,cleanClaudeResponse:()=>f.NN,cleanCopilotResponse:()=>f.LH,cleanGeminiResponse:()=>f.IS,cleanOpenCodeResponse:()=>f.aW,clearPromptHashCache:()=>h.iX,clearTuiAccumulator:()=>g.q1,extractCopilotContentLines:()=>g.o0,extractTuiContentLines:()=>g.K0,findOverlapIndex:()=>g.vQ,getAccumulatedContent:()=>g.Uz,getActivePollers:()=>d.KQ,initTuiAccumulator:()=>g.tb,isDuplicatePrompt:()=>h.gv,isOpenCodeComplete:()=>e.bE,migrateResponsePollerWorktreeIds:()=>d.sR,normalizeCopilotLine:()=>g.IW,normalizePromptForDedup:()=>h.zm,renamePromptHashCacheKey:()=>h.i2,resolveExtractionStartIndex:()=>e.QM,startPolling:()=>d.g8,stopAllPolling:()=>d.fq,stopPolling:()=>d.Et,truncateMessage:()=>f.Sj});var d=c(45146),e=c(60),f=c(82450),g=c(13033),h=c(72457)}};
@@ -1 +1 @@
1
- "use strict";exports.id=6401,exports.ids=[6401],exports.modules={20419:(a,b,c)=>{c.r(b),c.d(b,{default:()=>g});var d=c(75338),e=c(93045),f=c(27289);async function g({children:a,params:b}){let{id:c}=await b,g=(0,f.z)(c);return g!==c&&(0,e.permanentRedirect)(`/worktrees/${encodeURIComponent(g)}`),(0,d.jsx)(d.Fragment,{children:a})}},25799:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(82831),e=c(43740),f=c(29305),g=c(61981),h=c(26906),i=c(69168);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},27289:(a,b,c)=>{c.d(b,{t:()=>j,z:()=>i});var d=c(10641),e=c(88807),f=c(56791),g=c(95506),h=c(66007);function i(a){if(!a)return a;try{if(!(0,h.h6)(a))return a;let b=(0,e.getDbInstance)();return(0,g.l0)(b,a)??a}catch{return a}}function j(a){if(!(0,h.h6)(a))return d.NextResponse.json({error:"Invalid worktree ID format"},{status:400});let b=(0,e.getDbInstance)(),c=(0,f.getWorktreeById)(b,i(a));return c||d.NextResponse.json({error:"Worktree not found"},{status:404})}},29088:(a,b,c)=>{function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(98541).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},47614:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{getRedirectError:function(){return g},getRedirectStatusCodeFromError:function(){return l},getRedirectTypeFromError:function(){return k},getURLFromRedirectError:function(){return j},permanentRedirect:function(){return i},redirect:function(){return h}});let d=c(91203),e=c(92781),f=c(19121).actionAsyncStorage;function g(a,b,c){void 0===c&&(c=d.RedirectStatusCode.TemporaryRedirect);let f=Object.defineProperty(Error(e.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return f.digest=e.REDIRECT_ERROR_CODE+";"+b+";"+a+";"+c+";",f}function h(a,b){var c;throw null!=b||(b=(null==f||null==(c=f.getStore())?void 0:c.isAction)?e.RedirectType.push:e.RedirectType.replace),g(a,b,d.RedirectStatusCode.TemporaryRedirect)}function i(a,b){throw void 0===b&&(b=e.RedirectType.replace),g(a,b,d.RedirectStatusCode.PermanentRedirect)}function j(a){return(0,e.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function k(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function l(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},56791:(a,b,c)=>{c.r(b),c.d(b,{ACTIVE_FILTER:()=>d.ks,ACTIVE_TASK_STATUSES:()=>d.EL,AgentInstanceLimitError:()=>d.AC,CURRENT_SCHEMA_VERSION:()=>f.FT,DEFAULT_RUN_HISTORY_LIMIT:()=>d.Tu,InvalidAgentInstanceError:()=>d.ug,MAX_DISABLED_REPOSITORIES:()=>h.nc,MAX_RUN_HISTORY_DAYS:()=>d.eP,MAX_RUN_HISTORY_LIMIT:()=>d.mg,MemoDbError:()=>d.lm,NEW_SUBSCRIPTION_DEFAULTS:()=>d.s6,PUSH_DEFAULTS_VERSION:()=>d.VP,RepositoryDbError:()=>h.j8,TASK_STATUSES:()=>d.Hi,TERMINAL_TASK_STATUSES:()=>d.sA,VERIFICATION_GATE_SOURCES:()=>d.Dx,VERIFICATION_TRIGGERS:()=>d.af,WORKTREE_TODO_STATUSES:()=>d.KG,addAgentInstance:()=>d.Uq,archiveAllAssistantMessages:()=>d.cD,archiveAssistantMessagesFrom:()=>d.Jj,cancelTimer:()=>d.Ud,cancelTimersByWorktree:()=>d.$$,cleanupOldTimers:()=>d.ul,clearInProgressMessageId:()=>d.YX,clearLastUserMessage:()=>d.cf,clearTimerHistory:()=>d.jf,closeDbInstance:()=>e.closeDbInstance,countAgentInstances:()=>d.fs,countDisabledRepositories:()=>h.QJ,countPushSubscriptionsForKind:()=>d.rC,countWorktreesByRepositoryPath:()=>h.kp,createAssistantConversation:()=>d.G4,createAssistantExecution:()=>d.hL,createAssistantMessage:()=>d.qp,createCloneJob:()=>h.tw,createGateResult:()=>d.hl,createMemo:()=>d.To,createMessage:()=>d.oH,createRepository:()=>h.vB,createTask:()=>d.UT,createTimer:()=>d.CR,createTodo:()=>d.py,createVerificationRun:()=>d.rY,createWorktreeTodo:()=>d.yy,deleteAllMessages:()=>d.pE,deleteAssistantSessionState:()=>d.z2,deleteMemo:()=>d.cP,deleteMessageById:()=>d.DF,deleteMessagesByCliTool:()=>d.lA,deleteMessagesByInstance:()=>d.Qp,deletePushSubscriptionByEndpoint:()=>d.th,deleteRepository:()=>h.oG,deleteRepositoryWorktrees:()=>d.oZ,deleteSessionState:()=>d.ZP,deleteTodo:()=>d.Ys,deleteWorktreeTodo:()=>d.vg,deleteWorktreesByIds:()=>d.Rm,disableExistingRepository:()=>h.eP,disableRepository:()=>h.l$,ensureEnvRepositoriesRegistered:()=>h.ES,filterExcludedPaths:()=>h.Ho,findMessageByRequestId:()=>d.Ow,finishGateResult:()=>d.C8,finishVerificationRun:()=>d.u$,getActiveCloneJobByUrl:()=>h.fD,getActiveTask:()=>d.__,getActiveTaskForInstance:()=>d.MH,getAgentInstance:()=>d.BN,getAgentInstances:()=>d.m0,getAliasedWorktreeIds:()=>d.r3,getAllPushSubscriptions:()=>d.Se,getAllRepositories:()=>h.Yg,getAllRepositoriesWithWorktreeCount:()=>h._D,getAllTodos:()=>d.Tk,getAllWorktreeAliases:()=>d.fX,getAllWorktreeIds:()=>d.nO,getAllWorktreePathIds:()=>d.Sj,getAssistantConversationById:()=>d.iT,getAssistantConversationByRepositoryAndCliTool:()=>d.gp,getAssistantExecutionById:()=>d.$r,getAssistantMessageById:()=>d.yE,getAssistantMessages:()=>d.BE,getAssistantSessionState:()=>d.qK,getCloneJob:()=>h.bM,getCloneJobsByStatus:()=>h.n_,getCurrentVersion:()=>f.Mj,getDailyReport:()=>d.ap,getDbInstance:()=>e.getDbInstance,getDefaultDbPath:()=>g.$b,getExcludedRepositories:()=>h.lS,getExcludedRepositoryPaths:()=>h.pr,getInitialBranch:()=>d.p4,getIssueDbPath:()=>g.zm,getLastAssistantMessageAt:()=>d.nP,getLastMessage:()=>d.sy,getLastUserMessage:()=>d.r8,getLatestAssistantExecutionByConversation:()=>d.of,getLegacyDbPaths:()=>q,getMemoById:()=>d.DN,getMemosByWorktreeId:()=>d.pZ,getMessageById:()=>d.kA,getMessages:()=>d.VL,getMessagesByDateRange:()=>d.lr,getMigrationHistory:()=>f.PS,getPendingTimerCountByWorktree:()=>d.GF,getPendingTimers:()=>d._O,getPushSubscriptionByEndpoint:()=>d.CF,getPushSubscriptionsForKind:()=>d.gn,getRepositories:()=>d.NV,getRepositoryById:()=>h.r,getRepositoryByNormalizedUrl:()=>h.Uj,getRepositoryByPath:()=>h.Dp,getRunningAssistantExecutionByConversation:()=>d.ce,getRunningVerificationRun:()=>d.WZ,getSessionState:()=>d.y1,getTask:()=>d.gg,getTimerById:()=>d.kx,getTimersByWorktree:()=>d.DP,getTodoById:()=>d.Nr,getTodosByRepositoryId:()=>d.ob,getTodosByWorktreeId:()=>d.fr,getVerificationRun:()=>d.J6,getWorktreeAliases:()=>d.Q2,getWorktreeById:()=>d.Ui,getWorktreeIdsByRepository:()=>d.P9,getWorktreeTodoById:()=>d.eN,getWorktrees:()=>d.vi,getWorktreesByRepository:()=>d.uJ,initDatabase:()=>d.s4,isTerminalTaskStatus:()=>d.uB,isWorktreeTodoStatus:()=>d.yT,listRunningAssistantExecutions:()=>d.b2,listRunningVerificationRuns:()=>d.Fi,listTaskEvents:()=>d.HB,listTasks:()=>d.Vk,listVerificationRuns:()=>d.Mt,listVerificationRunsForPeriod:()=>d.UE,markPendingPromptsAsAnswered:()=>d.PL,migrateDbIfNeeded:()=>r,migrateWorktreeIdPreservingChildren:()=>d._h,pushSubscriptionNeedsDefaultsNotice:()=>d.Zj,recomputeLastUserMessage:()=>d.jp,recordAnsweredPrompt:()=>d.pG,recordWorktreeAlias:()=>d.xJ,recoverStuckSendingTimers:()=>d.Xm,registerAndFilterRepositories:()=>h.$G,removeAgentInstance:()=>d.NU,reorderMemos:()=>d.nQ,reorderWorktreeTodos:()=>d.yb,resolveAndValidatePath:()=>p,resolveRepositoryPath:()=>h.mE,resolveWorktreeIdWithAlias:()=>d.l0,restoreRepository:()=>h.RS,rollbackMigrations:()=>f.Wy,runMigrations:()=>f.vI,saveDailyReport:()=>d.tt,saveInitialBranch:()=>d.GA,setAgentInstances:()=>d.Cs,setInProgressMessageId:()=>d.OF,setRepositoryEnabled:()=>h.iQ,updateAssistantConversation:()=>d.xR,updateAssistantExecution:()=>d.az,updateAssistantMessageStatus:()=>d.nZ,updateAssistantSessionState:()=>d.PP,updateCliToolId:()=>d.WU,updateCloneJob:()=>h.k5,updateDailyReportContent:()=>d.IF,updateFavorite:()=>d.O,updateLastUserMessage:()=>d.EU,updateLastViewedAt:()=>d.HZ,updateMemo:()=>d.UY,updateMessageContent:()=>d.e8,updatePromptData:()=>d.cw,updatePushSubscriptionPreferences:()=>d.jJ,updateRepository:()=>h.Ir,updateSelectedAgents:()=>d.DC,updateSessionState:()=>d.gb,updateStatus:()=>d.yB,updateTimerStatus:()=>d.j2,updateTodo:()=>d.uy,updateVibeLocalContextWindow:()=>d.s,updateVibeLocalModel:()=>d.iu,updateWorktreeDescription:()=>d.hq,updateWorktreeLink:()=>d.z1,updateWorktreeTodo:()=>d.bl,upsertPushSubscription:()=>d.jA,upsertWorktree:()=>d.ZL,validateDbPath:()=>g.Sv,validateRepositoryPath:()=>h.Ux,validateSchema:()=>f.i6});var d=c(90444),e=c(88807),f=c(27727),g=c(20416),h=c(10406),i=c(29021),j=c.n(i),k=c(33873),l=c.n(k),m=c(21820),n=c(7956);let o=(0,c(72626).h)("db-migration-path");function p(a,b){try{if(!j().existsSync(a))return null;let c=j().realpathSync(a);if((0,n.fW)(c))return o.warn(`[Security] ${b} points to system directory, skipping: ${c}`),null;return c}catch{return o.warn(`[Security] Failed to resolve ${b}: ${a}`),null}}function q(){let a=[];a.push(l().join(process.cwd(),"data","db.sqlite")),a.push(l().join(process.cwd(),"data","cm.db")),a.push(l().join((0,m.homedir)(),".commandmate","data","db.sqlite"));let b=process.env.DATABASE_PATH;if(b)try{let c=l().resolve(b);(0,n.fW)(c)?o.warn(`[Security] Skipping DATABASE_PATH in system directory: ${c}`):a.push(b)}catch{o.warn(`[Security] Invalid DATABASE_PATH: ${b}`)}return a}function r(a){let b=l().resolve(a);if((0,n.fW)(b))throw Error(`Security error: Target path cannot be in system directory: ${b}`);if(j().existsSync(a)){let b=p(a,"target path");if(b)return{migrated:!1,targetPath:b}}for(let a of q()){let c=p(a,"legacy path");if(!c)continue;let d=`${c}.bak`;j().copyFileSync(c,d),j().chmodSync(d,384);let e=l().dirname(b);return j().existsSync(e)||j().mkdirSync(e,{recursive:!0,mode:448}),j().copyFileSync(c,b),o.info(`[Migration] Database migrated from ${c} to ${b}`),o.info(`[Migration] Backup created at ${d}`),{migrated:!0,sourcePath:c,targetPath:b,backupPath:d}}return{migrated:!1,targetPath:b}}},57387:(a,b,c)=>{c.r(b),c.d(b,{default:()=>f});var d=c(75338),e=c(43084);function f(){return(0,d.jsx)(e.k,{})}},64404:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return e}});let d=""+c(98541).HTTP_ERROR_FALLBACK_ERROR_CODE+";404";function e(){let a=Object.defineProperty(Error(d),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw a.digest=d,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},64712:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=c(25799).unstable_rethrow;("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},67837:(a,b,c)=>{function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(98541).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},93045:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{ReadonlyURLSearchParams:function(){return k},RedirectType:function(){return e.RedirectType},forbidden:function(){return g.forbidden},notFound:function(){return f.notFound},permanentRedirect:function(){return d.permanentRedirect},redirect:function(){return d.redirect},unauthorized:function(){return h.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return i.unstable_rethrow}});let d=c(47614),e=c(92781),f=c(64404),g=c(67837),h=c(29088),i=c(64712);class j extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class k extends URLSearchParams{append(){throw new j}delete(){throw new j}set(){throw new j}sort(){throw new j}}function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)}};
1
+ "use strict";exports.id=6401,exports.ids=[6401],exports.modules={20419:(a,b,c)=>{c.r(b),c.d(b,{default:()=>g});var d=c(75338),e=c(93045),f=c(27289);async function g({children:a,params:b}){let{id:c}=await b,g=(0,f.z)(c);return g!==c&&(0,e.permanentRedirect)(`/worktrees/${encodeURIComponent(g)}`),(0,d.jsx)(d.Fragment,{children:a})}},25799:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(82831),e=c(43740),f=c(29305),g=c(61981),h=c(26906),i=c(69168);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},27289:(a,b,c)=>{c.d(b,{t:()=>j,z:()=>i});var d=c(10641),e=c(88807),f=c(56791),g=c(95506),h=c(66007);function i(a){if(!a)return a;try{if(!(0,h.h6)(a))return a;let b=(0,e.getDbInstance)();return(0,g.l0)(b,a)??a}catch{return a}}function j(a){if(!(0,h.h6)(a))return d.NextResponse.json({error:"Invalid worktree ID format"},{status:400});let b=(0,e.getDbInstance)(),c=(0,f.getWorktreeById)(b,i(a));return c||d.NextResponse.json({error:"Worktree not found"},{status:404})}},29088:(a,b,c)=>{function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(98541).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},47614:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{getRedirectError:function(){return g},getRedirectStatusCodeFromError:function(){return l},getRedirectTypeFromError:function(){return k},getURLFromRedirectError:function(){return j},permanentRedirect:function(){return i},redirect:function(){return h}});let d=c(91203),e=c(92781),f=c(19121).actionAsyncStorage;function g(a,b,c){void 0===c&&(c=d.RedirectStatusCode.TemporaryRedirect);let f=Object.defineProperty(Error(e.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return f.digest=e.REDIRECT_ERROR_CODE+";"+b+";"+a+";"+c+";",f}function h(a,b){var c;throw null!=b||(b=(null==f||null==(c=f.getStore())?void 0:c.isAction)?e.RedirectType.push:e.RedirectType.replace),g(a,b,d.RedirectStatusCode.TemporaryRedirect)}function i(a,b){throw void 0===b&&(b=e.RedirectType.replace),g(a,b,d.RedirectStatusCode.PermanentRedirect)}function j(a){return(0,e.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function k(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function l(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},56791:(a,b,c)=>{c.r(b),c.d(b,{ACTIVE_FILTER:()=>d.ks,ACTIVE_TASK_STATUSES:()=>d.EL,AgentInstanceLimitError:()=>d.AC,CURRENT_SCHEMA_VERSION:()=>f.FT,DEFAULT_RUN_HISTORY_LIMIT:()=>d.Tu,InvalidAgentInstanceError:()=>d.ug,MAX_DISABLED_REPOSITORIES:()=>h.nc,MAX_RUN_HISTORY_DAYS:()=>d.eP,MAX_RUN_HISTORY_LIMIT:()=>d.mg,MemoDbError:()=>d.lm,NEW_SUBSCRIPTION_DEFAULTS:()=>d.s6,PUSH_DEFAULTS_VERSION:()=>d.VP,RepositoryDbError:()=>h.j8,TASK_STATUSES:()=>d.Hi,TERMINAL_TASK_STATUSES:()=>d.sA,VERIFICATION_GATE_SOURCES:()=>d.Dx,VERIFICATION_TRIGGERS:()=>d.af,WORKTREE_TODO_STATUSES:()=>d.KG,addAgentInstance:()=>d.Uq,archiveAllAssistantMessages:()=>d.cD,archiveAssistantMessagesFrom:()=>d.Jj,cancelTimer:()=>d.Ud,cancelTimersByWorktree:()=>d.$$,cleanupOldTimers:()=>d.ul,clearInProgressMessageId:()=>d.YX,clearLastUserMessage:()=>d.cf,clearTimerHistory:()=>d.jf,closeDbInstance:()=>e.closeDbInstance,countAgentInstances:()=>d.fs,countDisabledRepositories:()=>h.QJ,countPushSubscriptionsForKind:()=>d.rC,countWorktreesByRepositoryPath:()=>h.kp,createAssistantConversation:()=>d.G4,createAssistantExecution:()=>d.hL,createAssistantMessage:()=>d.qp,createCloneJob:()=>h.tw,createGateResult:()=>d.hl,createMemo:()=>d.To,createMessage:()=>d.oH,createRepository:()=>h.vB,createTask:()=>d.UT,createTimer:()=>d.CR,createTodo:()=>d.py,createVerificationRun:()=>d.rY,createWorktreeTodo:()=>d.yy,deleteAllMessages:()=>d.pE,deleteAssistantSessionState:()=>d.z2,deleteMemo:()=>d.cP,deleteMessageById:()=>d.DF,deleteMessagesByCliTool:()=>d.lA,deleteMessagesByInstance:()=>d.Qp,deletePushSubscriptionByEndpoint:()=>d.th,deleteRepository:()=>h.oG,deleteRepositoryWorktrees:()=>d.oZ,deleteSessionState:()=>d.ZP,deleteTodo:()=>d.Ys,deleteWorktreeTodo:()=>d.vg,deleteWorktreesByIds:()=>d.Rm,disableExistingRepository:()=>h.eP,disableRepository:()=>h.l$,ensureEnvRepositoriesRegistered:()=>h.ES,filterExcludedPaths:()=>h.Ho,findMessageByRequestId:()=>d.Ow,finishGateResult:()=>d.C8,finishVerificationRun:()=>d.u$,getActiveCloneJobByUrl:()=>h.fD,getActiveTask:()=>d.__,getActiveTaskForInstance:()=>d.MH,getAgentInstance:()=>d.BN,getAgentInstances:()=>d.m0,getAliasedWorktreeIds:()=>d.r3,getAllPushSubscriptions:()=>d.Se,getAllRepositories:()=>h.Yg,getAllRepositoriesWithWorktreeCount:()=>h._D,getAllTodos:()=>d.Tk,getAllWorktreeAliases:()=>d.fX,getAllWorktreeIds:()=>d.nO,getAllWorktreePathIds:()=>d.Sj,getAssistantConversationById:()=>d.iT,getAssistantConversationByRepositoryAndCliTool:()=>d.gp,getAssistantExecutionById:()=>d.$r,getAssistantMessageById:()=>d.yE,getAssistantMessages:()=>d.BE,getAssistantSessionState:()=>d.qK,getCloneJob:()=>h.bM,getCloneJobsByStatus:()=>h.n_,getCurrentVersion:()=>f.Mj,getDailyReport:()=>d.ap,getDbInstance:()=>e.getDbInstance,getDefaultDbPath:()=>g.$b,getExcludedRepositories:()=>h.lS,getExcludedRepositoryPaths:()=>h.pr,getInitialBranch:()=>d.p4,getIssueDbPath:()=>g.zm,getLastAssistantMessageAt:()=>d.nP,getLastMessage:()=>d.sy,getLastUserMessage:()=>d.r8,getLatestAssistantExecutionByConversation:()=>d.of,getLegacyDbPaths:()=>q,getMemoById:()=>d.DN,getMemosByWorktreeId:()=>d.pZ,getMessageById:()=>d.kA,getMessages:()=>d.VL,getMessagesByDateRange:()=>d.lr,getMigrationHistory:()=>f.PS,getPendingTimerCountByWorktree:()=>d.GF,getPendingTimers:()=>d._O,getPushSubscriptionByEndpoint:()=>d.CF,getPushSubscriptionsForKind:()=>d.gn,getRepositories:()=>d.NV,getRepositoryById:()=>h.r,getRepositoryByNormalizedUrl:()=>h.Uj,getRepositoryByPath:()=>h.Dp,getRunningAssistantExecutionByConversation:()=>d.ce,getRunningVerificationRun:()=>d.WZ,getSessionState:()=>d.y1,getTask:()=>d.gg,getTimerById:()=>d.kx,getTimersByWorktree:()=>d.DP,getTodoById:()=>d.Nr,getTodosByRepositoryId:()=>d.ob,getTodosByWorktreeId:()=>d.fr,getVerificationRun:()=>d.J6,getWorktreeAliases:()=>d.Q2,getWorktreeById:()=>d.Ui,getWorktreeIdsByRepository:()=>d.P9,getWorktreeTodoById:()=>d.eN,getWorktrees:()=>d.vi,getWorktreesByRepository:()=>d.uJ,initDatabase:()=>d.s4,isTerminalTaskStatus:()=>d.uB,isWorktreeTodoStatus:()=>d.yT,listRunningAssistantExecutions:()=>d.b2,listRunningVerificationRuns:()=>d.Fi,listTaskEvents:()=>d.HB,listTasks:()=>d.Vk,listVerificationRuns:()=>d.Mt,listVerificationRunsForPeriod:()=>d.UE,markPendingPromptsAsAnswered:()=>d.PL,migrateDbIfNeeded:()=>r,migrateWorktreeIdPreservingChildren:()=>d._h,pushSubscriptionNeedsDefaultsNotice:()=>d.Zj,recomputeLastUserMessage:()=>d.jp,recordAnsweredPrompt:()=>d.pG,recordWorktreeAlias:()=>d.xJ,recoverStuckSendingTimers:()=>d.Xm,registerAndFilterRepositories:()=>h.$G,removeAgentInstance:()=>d.NU,reorderMemos:()=>d.nQ,reorderWorktreeTodos:()=>d.yb,resolveAndValidatePath:()=>p,resolveRepositoryPath:()=>h.mE,resolveWorktreeIdWithAlias:()=>d.l0,restoreRepository:()=>h.RS,rollbackMigrations:()=>f.Wy,runMigrations:()=>f.vI,saveDailyReport:()=>d.tt,saveInitialBranch:()=>d.GA,setAgentInstances:()=>d.Cs,setInProgressMessageId:()=>d.OF,setRepositoryEnabled:()=>h.iQ,updateAssistantConversation:()=>d.xR,updateAssistantExecution:()=>d.az,updateAssistantMessageStatus:()=>d.nZ,updateAssistantSessionState:()=>d.PP,updateCliToolId:()=>d.WU,updateCloneJob:()=>h.k5,updateDailyReportContent:()=>d.IF,updateFavorite:()=>d.O,updateLastUserMessage:()=>d.EU,updateLastViewedAt:()=>d.HZ,updateMemo:()=>d.UY,updateMessageContent:()=>d.e8,updatePromptData:()=>d.cw,updatePushSubscriptionPreferences:()=>d.jJ,updateRepository:()=>h.Ir,updateSelectedAgents:()=>d.DC,updateSessionState:()=>d.gb,updateStatus:()=>d.yB,updateTimerStatus:()=>d.j2,updateTodo:()=>d.uy,updateVibeLocalContextWindow:()=>d.s,updateVibeLocalModel:()=>d.iu,updateWorktreeDescription:()=>d.hq,updateWorktreeLink:()=>d.z1,updateWorktreeTodo:()=>d.bl,upsertPushSubscription:()=>d.jA,upsertWorktree:()=>d.ZL,validateDbPath:()=>g.Sv,validateRepositoryPath:()=>h.Ux,validateSchema:()=>f.i6});var d=c(90444),e=c(88807),f=c(28037),g=c(20416),h=c(10406),i=c(29021),j=c.n(i),k=c(33873),l=c.n(k),m=c(21820),n=c(7956);let o=(0,c(72626).h)("db-migration-path");function p(a,b){try{if(!j().existsSync(a))return null;let c=j().realpathSync(a);if((0,n.fW)(c))return o.warn(`[Security] ${b} points to system directory, skipping: ${c}`),null;return c}catch{return o.warn(`[Security] Failed to resolve ${b}: ${a}`),null}}function q(){let a=[];a.push(l().join(process.cwd(),"data","db.sqlite")),a.push(l().join(process.cwd(),"data","cm.db")),a.push(l().join((0,m.homedir)(),".commandmate","data","db.sqlite"));let b=process.env.DATABASE_PATH;if(b)try{let c=l().resolve(b);(0,n.fW)(c)?o.warn(`[Security] Skipping DATABASE_PATH in system directory: ${c}`):a.push(b)}catch{o.warn(`[Security] Invalid DATABASE_PATH: ${b}`)}return a}function r(a){let b=l().resolve(a);if((0,n.fW)(b))throw Error(`Security error: Target path cannot be in system directory: ${b}`);if(j().existsSync(a)){let b=p(a,"target path");if(b)return{migrated:!1,targetPath:b}}for(let a of q()){let c=p(a,"legacy path");if(!c)continue;let d=`${c}.bak`;j().copyFileSync(c,d),j().chmodSync(d,384);let e=l().dirname(b);return j().existsSync(e)||j().mkdirSync(e,{recursive:!0,mode:448}),j().copyFileSync(c,b),o.info(`[Migration] Database migrated from ${c} to ${b}`),o.info(`[Migration] Backup created at ${d}`),{migrated:!0,sourcePath:c,targetPath:b,backupPath:d}}return{migrated:!1,targetPath:b}}},57387:(a,b,c)=>{c.r(b),c.d(b,{default:()=>f});var d=c(75338),e=c(43084);function f(){return(0,d.jsx)(e.k,{})}},64404:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return e}});let d=""+c(98541).HTTP_ERROR_FALLBACK_ERROR_CODE+";404";function e(){let a=Object.defineProperty(Error(d),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw a.digest=d,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},64712:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=c(25799).unstable_rethrow;("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},67837:(a,b,c)=>{function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(98541).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},93045:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{ReadonlyURLSearchParams:function(){return k},RedirectType:function(){return e.RedirectType},forbidden:function(){return g.forbidden},notFound:function(){return f.notFound},permanentRedirect:function(){return d.permanentRedirect},redirect:function(){return d.redirect},unauthorized:function(){return h.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return i.unstable_rethrow}});let d=c(47614),e=c(92781),f=c(64404),g=c(67837),h=c(29088),i=c(64712);class j extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class k extends URLSearchParams{append(){throw new j}delete(){throw new j}set(){throw new j}sort(){throw new j}}function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)}};