commandmate 0.34.1 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +365 -343
  3. package/.next/app-path-routes-manifest.json +29 -29
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +12 -12
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/update-check/route.js +1 -1
  12. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  14. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  16. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/assistant/messages/route.js +1 -1
  18. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  19. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/assistant/session/route.js +1 -1
  21. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  22. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/assistant/start/route.js +1 -1
  24. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  25. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/assistant/terminal/route.js +1 -1
  27. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  28. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  30. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/capabilities/route.js +1 -1
  35. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  44. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  46. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  47. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  49. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  56. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  57. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/relays/route.js +1 -1
  59. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  60. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  66. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  67. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/clone/route.js +1 -1
  69. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  70. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/repositories/restore/route.js +1 -1
  73. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  74. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/repositories/route.js +1 -1
  76. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  77. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/repositories/scan/route.js +1 -1
  79. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  80. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/repositories/sync/route.js +1 -1
  82. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  83. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  86. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  104. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  106. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  109. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  115. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  146. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  148. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  151. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  163. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  167. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  177. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  190. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  193. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  197. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/route.js +1 -1
  211. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/chat/page.js +2 -2
  214. package/.next/server/app/chat/page.js.nft.json +1 -1
  215. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  216. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  217. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/more/page.js +2 -2
  219. package/.next/server/app/more/page.js.nft.json +1 -1
  220. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  221. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  222. package/.next/server/app/page.js +1 -1
  223. package/.next/server/app/page.js.nft.json +1 -1
  224. package/.next/server/app/page_client-reference-manifest.js +1 -1
  225. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/repositories/page.js +2 -2
  227. package/.next/server/app/repositories/page.js.nft.json +1 -1
  228. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  229. package/.next/server/app/review/page.js +1 -1
  230. package/.next/server/app/review/page.js.nft.json +1 -1
  231. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  232. package/.next/server/app/sessions/page.js +2 -2
  233. package/.next/server/app/sessions/page.js.nft.json +1 -1
  234. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  235. package/.next/server/app/skills/[skillId]/page.js +2 -2
  236. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  237. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  238. package/.next/server/app/skills/installed/page.js +2 -2
  239. package/.next/server/app/skills/installed/page.js.nft.json +1 -1
  240. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  241. package/.next/server/app/skills/page.js +1 -1
  242. package/.next/server/app/skills/page.js.nft.json +1 -1
  243. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  244. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
  245. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  246. package/.next/server/app/worktrees/[id]/page.js +9 -22
  247. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  248. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  249. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  250. package/.next/server/app-paths-manifest.json +29 -29
  251. package/.next/server/chunks/1210.js +1 -1
  252. package/.next/server/chunks/{6286.js → 1467.js} +6 -6
  253. package/.next/server/chunks/1707.js +14 -0
  254. package/.next/server/chunks/1886.js +1 -1
  255. package/.next/server/chunks/2980.js +1 -1
  256. package/.next/server/chunks/3077.js +1 -1
  257. package/.next/server/chunks/3123.js +1 -1
  258. package/.next/server/chunks/3241.js +1 -1
  259. package/.next/server/chunks/3323.js +1 -1
  260. package/.next/server/chunks/3543.js +1 -1
  261. package/.next/server/chunks/364.js +1 -0
  262. package/.next/server/chunks/3945.js +1 -1
  263. package/.next/server/chunks/434.js +1 -1
  264. package/.next/server/chunks/4443.js +1 -1
  265. package/.next/server/chunks/450.js +1 -1
  266. package/.next/server/chunks/4802.js +1 -1
  267. package/.next/server/chunks/6130.js +1 -1
  268. package/.next/server/chunks/650.js +1 -1
  269. package/.next/server/chunks/6677.js +3 -3
  270. package/.next/server/chunks/7004.js +1 -0
  271. package/.next/server/chunks/7075.js +1 -1
  272. package/.next/server/chunks/7506.js +1 -1
  273. package/.next/server/chunks/7905.js +1 -1
  274. package/.next/server/chunks/8142.js +1 -0
  275. package/.next/server/chunks/8728.js +8 -0
  276. package/.next/server/chunks/8918.js +5 -5
  277. package/.next/server/chunks/9123.js +2 -2
  278. package/.next/server/chunks/9627.js +1 -1
  279. package/.next/server/chunks/9701.js +1 -0
  280. package/.next/server/middleware-build-manifest.js +1 -1
  281. package/.next/server/middleware-manifest.json +5 -5
  282. package/.next/server/pages/500.html +1 -1
  283. package/.next/server/server-reference-manifest.json +1 -1
  284. package/.next/static/chunks/2039-117a361f795ddc4b.js +1 -0
  285. package/.next/static/chunks/2053-ce3fe896ad45e50f.js +1 -0
  286. package/.next/static/chunks/2407-6b8ca567e18ad583.js +1 -0
  287. package/.next/static/chunks/3160-79d24ca264a528b9.js +1 -0
  288. package/.next/static/chunks/{4322-dfd5a7119b5ba4fc.js → 4322-59a7dbd77a7763cc.js} +1 -1
  289. package/.next/static/chunks/4388-410b1d8ed0d8d98b.js +1 -0
  290. package/.next/static/chunks/4718-56ebb6e55073ed5e.js +1 -0
  291. package/.next/static/chunks/4949-d804db873cfd9310.js +1 -0
  292. package/.next/static/chunks/{6022-7a7d1760fc9814c7.js → 6022-d2d7bd9373ff3ae9.js} +1 -1
  293. package/.next/static/chunks/6983-3ed2099251793bdf.js +1 -0
  294. package/.next/static/chunks/934-a37509667baa86ee.js +1 -0
  295. package/.next/static/chunks/9526-4fe2fc64be44e5c1.js +1 -0
  296. package/.next/static/chunks/app/chat/page-bfc1f5bb17bd771d.js +1 -0
  297. package/.next/static/chunks/app/error-c1dc1038d0a84a33.js +1 -0
  298. package/.next/static/chunks/app/global-error-49f765ecb7fd6527.js +1 -0
  299. package/.next/static/chunks/app/{layout-4c2f21e3f653ee4c.js → layout-114dc6e93e332392.js} +1 -1
  300. package/.next/static/chunks/app/more/page-400ffa825f8f150e.js +1 -0
  301. package/.next/static/chunks/app/{page-26a42881c8648cd3.js → page-a4f03c188610c6c8.js} +1 -1
  302. package/.next/static/chunks/app/repositories/{page-2576158c8420fda0.js → page-a15efb4ce1d1721e.js} +1 -1
  303. package/.next/static/chunks/app/review/{page-35b99baaf3c93b38.js → page-90ac618489676cbc.js} +1 -1
  304. package/.next/static/chunks/app/sessions/page-366edfaa0b1faad2.js +1 -0
  305. package/.next/static/chunks/app/skills/[skillId]/{page-06799157652e8fa9.js → page-ce8f6fd9e4356580.js} +1 -1
  306. package/.next/static/chunks/app/skills/installed/{page-2f3987e3a131c8d0.js → page-566dfde26d7e63ba.js} +1 -1
  307. package/.next/static/chunks/app/skills/{page-e70bfcf5ed4e4865.js → page-7859540e8092aace.js} +1 -1
  308. package/.next/static/chunks/app/worktrees/[id]/page-df482ec0c378c77b.js +1 -0
  309. package/.next/static/chunks/{webpack-1dc9eb5ebb4fa5ff.js → webpack-0281b30457d46ebc.js} +1 -1
  310. package/.next/static/css/c511ecdf1e7f18a0.css +1 -0
  311. package/.next/trace +14 -13
  312. package/dist/lib/detection/tools/verified-against.d.ts +20 -0
  313. package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
  314. package/dist/lib/detection/tools/verified-against.js +20 -0
  315. package/dist/server/src/config/websocket-config.js +67 -0
  316. package/dist/server/src/lib/auto-yes-poller.js +40 -7
  317. package/dist/server/src/lib/auto-yes-state.js +36 -0
  318. package/dist/server/src/lib/detection/selection-shape.js +361 -3
  319. package/dist/server/src/lib/detection/tools/command-code/detect.js +96 -0
  320. package/dist/server/src/lib/detection/tools/command-code/dialog.js +314 -0
  321. package/dist/server/src/lib/detection/tools/verified-against.js +20 -0
  322. package/dist/server/src/lib/polling/response-checker.js +48 -2
  323. package/dist/server/src/lib/ws-server.js +111 -1
  324. package/package.json +1 -1
  325. package/public/sw.js +12 -0
  326. package/.next/server/chunks/120.js +0 -1
  327. package/.next/server/chunks/595.js +0 -8
  328. package/.next/server/chunks/7593.js +0 -1
  329. package/.next/static/chunks/1191-b7dfdfe86b1d31d1.js +0 -1
  330. package/.next/static/chunks/2053-9ac860ab4e92ac89.js +0 -1
  331. package/.next/static/chunks/2652-18b8fea64413467e.js +0 -1
  332. package/.next/static/chunks/4718-29cfcfb806724d9a.js +0 -1
  333. package/.next/static/chunks/5542-b6457f305d724a6b.js +0 -1
  334. package/.next/static/chunks/8361-0142beb59be2abf3.js +0 -1
  335. package/.next/static/chunks/app/chat/page-e60d07c4c79602f0.js +0 -1
  336. package/.next/static/chunks/app/error-27ab04bce6545dae.js +0 -1
  337. package/.next/static/chunks/app/global-error-7b761b8e181ffc1f.js +0 -1
  338. package/.next/static/chunks/app/more/page-fc94f86aa881489e.js +0 -1
  339. package/.next/static/chunks/app/sessions/page-a3ab6f122ec60d5a.js +0 -1
  340. package/.next/static/chunks/app/worktrees/[id]/page-60eab4e24c37cb77.js +0 -1
  341. package/.next/static/css/b09bede85744e1cf.css +0 -1
  342. /package/.next/static/{oDWX0JcwfhUYrMnnqDWVC → zNNp00FuBenN_iZtIvIBP}/_buildManifest.js +0 -0
  343. /package/.next/static/{oDWX0JcwfhUYrMnnqDWVC → zNNp00FuBenN_iZtIvIBP}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
1
  "use strict";exports.id=1886,exports.ids=[1886],exports.modules={17287:(a,b,c)=>{c.d(b,{CD:()=>g,nL:()=>f});var d=c(24455);let e=globalThis.__permissionDecisions??(globalThis.__permissionDecisions=new Map);function f(a,b,c,f){e.set((0,d.v7)(a,b,c),f)}function g(a,b,c){return e.get((0,d.v7)(a,b,c))??null}},23365:(a,b,c)=>{c.d(b,{H:()=>g,y:()=>h});var d=c(16983),e=c(34405),f=c(15194);let g=200;function h(a){var b;return{statusLines:"opencode"===(b=a)?d.xT:"gemini"===b?g:e.G,usesAlternateScreen:(0,f.VA)(a)}}},34405:(a,b,c)=>{c.d(b,{G:()=>e,_:()=>d});let d=1e4,e=1e3},39333:(a,b,c)=>{c.d(b,{$Y:()=>g,Bg:()=>i,HB:()=>f,df:()=>h,f9:()=>d});let d=[".png",".jpg",".jpeg",".gif",".webp",".svg"],e=[{extension:".png",mimeType:"image/png",magicBytes:[137,80,78,71]},{extension:".jpg",mimeType:"image/jpeg",magicBytes:[255,216,255]},{extension:".jpeg",mimeType:"image/jpeg",magicBytes:[255,216,255]},{extension:".gif",mimeType:"image/gif",magicBytes:[71,73,70,56]},{extension:".webp",mimeType:"image/webp",magicBytes:[82,73,70,70]},{extension:".svg",mimeType:"image/svg+xml"}];function f(a){return a?a.startsWith(".")?a.toLowerCase():"."+a.toLowerCase():""}function g(a){let b=f(a),c=e.find(a=>a.extension===b);return c?.mimeType||"application/octet-stream"}function h(a){if(!a)return!1;let b=f(a);return d.includes(b)}function i(a,b){if(b.length>0x1400000)return{valid:!1,error:"File size exceeds 20MB limit"};if(".svg"===f(a)){var c;return(c=b.toString("utf-8")).includes("<svg")||c.startsWith("<?xml")?/<script[\s>]/i.test(c)?{valid:!1,error:"SVG contains script tags"}:/\s+on\w+\s*=/i.test(c)?{valid:!1,error:"SVG contains event handler attributes"}:/(?:xlink:)?href\s*=\s*["']?\s*(?:javascript|data|vbscript):/i.test(c)?{valid:!1,error:"SVG contains dangerous URI scheme"}:/<foreignObject[\s>]/i.test(c)?{valid:!1,error:"SVG contains foreignObject element"}:{valid:!0}:{valid:!1,error:"Invalid SVG format"}}return!function(a,b){let c=f(a),d=e.find(a=>a.extension===c);if(!d?.magicBytes)return".svg"===c;let g=d.magicBytesOffset||0;return!(b.length<g+d.magicBytes.length)&&d.magicBytes.every((a,c)=>b[g+c]===a)}(a,b)?{valid:!1,error:"Invalid image magic bytes"}:{valid:!0}}d.filter(a=>".svg"!==a).map(a=>g(a)).filter(a=>"application/octet-stream"!==a).join(",")},41466:(a,b,c)=>{c.d(b,{Ui:()=>as,TZ:()=>ar});var d=c(81886),e=c(8953),f=c(79892),g=c(85164),h=c(40236),i=c(93997),j=c(29021),k=c(21820),l=c(33873),m=c(8004),n=c(72626);let o=(0,n.h)("cli-tools/opencode-config"),p=/^[a-zA-Z0-9._:/-]{1,100}$/,q=/^[a-zA-Z0-9._:/@-]{1,200}$/,r="CM_OPENCODE_LOCAL_PROVIDER_CONFIG",s="OPENCODE_CONFIG",t=["opencode.json","opencode.jsonc",l.join(".opencode","opencode.json"),l.join(".opencode","opencode.jsonc")],u=["opencode.json","opencode.jsonc"];async function v(){let a={};try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch("http://localhost:11434/api/tags",{signal:b.signal}).finally(()=>{clearTimeout(c)});if(!d.ok)return o.warn("ollama-api-returned"),{};let e=await d.text();if(e.length>1048576)return o.warn("ollama-api-response"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.models))return o.warn("invalid-ollama-api"),{};for(let b of f.models.slice(0,100))"string"==typeof b?.name&&p.test(b.name)&&(a[b.name]={name:function(a){let b=String(a.name),c=a.details;if(!c)return b;let d=[b];return"string"==typeof c.parameter_size&&/^[\d.]+[BKMGT]?B?$/i.test(c.parameter_size)&&d.push(c.parameter_size),"string"==typeof c.quantization_level&&/^[A-Z0-9_]{1,20}$/i.test(c.quantization_level)&&d.push(c.quantization_level),d.length>1?`${b} (${d.slice(1).join(", ")})`:b}(b)})}catch(a){a instanceof Error&&"AbortError"===a.name?o.warn("ollama-api-timeout"):o.warn("failed-to-fetch")}return a}async function w(){let a={};try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch("http://localhost:1234/v1/models",{signal:b.signal}).finally(()=>{clearTimeout(c)});if(!d.ok)return o.warn("lm-studio-api"),{};let e=await d.text();if(e.length>1048576)return o.warn("lm-studio-api"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.data))return o.warn("invalid-lm-studio"),{};for(let b of f.data.slice(0,100))"string"==typeof b?.id&&q.test(b.id)&&(a[b.id]={name:b.id})}catch(a){a instanceof Error&&"AbortError"===a.name?o.warn("lm-studio-api"):o.warn("failed-to-fetch")}return a}function x(a=process.env){let b=l.join(k.homedir(),".config");return l.join((0,m.T)(a.XDG_CONFIG_HOME,b,"XDG_CONFIG_HOME"),"opencode")}async function y(){let[a,b]=await Promise.all([v(),w()]),c={};return Object.keys(a).length>0&&(c.ollama={npm:"@ai-sdk/openai-compatible",name:"Ollama (local)",options:{baseURL:"http://localhost:11434/v1"},models:a}),Object.keys(b).length>0&&(c.lmstudio={npm:"@ai-sdk/openai-compatible",name:"LM Studio (local)",options:{baseURL:"http://localhost:1234/v1"},models:b}),c}async function z(a){let b=function(a=process.env){let b=(a[r]??"").trim().toLowerCase();return"worktree"===b||"project"===b?"worktree":"global"===b||"user"===b?"global":(""!==b&&"off"!==b&&"0"!==b&&"false"!==b&&"none"!==b&&o.warn("opencode-config-mode-unrecognised",{variable:r,value:b}),"off")}();if("off"===b)return{written:!1,configPath:null,reason:"disabled"};let c="worktree"===b?function(a){let b=l.resolve(a);try{if(!j.lstatSync(b).isDirectory())throw Error(`Path is not a directory: ${b}`)}catch(a){if("ENOENT"===a.code)throw Error(`Path does not exist: ${b}`);throw a}return j.realpathSync(b)}(a):null,d=function(a,b=process.env){if(""!==(b[s]??"").trim())return`env:${s}`;if(null!==a)for(let b of t){let c=l.join(a,b);if(j.existsSync(c))return c}let c=x(b);for(let a of u){let b=l.join(c,a);if(j.existsSync(b))return b}return null}(c);if(null!==d)return o.info("opencode-config-generation-skipped",{mode:b,owned:d}),{written:!1,configPath:null,reason:"existing-config"};let e=c??x(),f=l.join(e,"opencode.json"),g=await y();if(0===Object.keys(g).length)return{written:!1,configPath:null,reason:"no-providers"};try{"global"===b&&j.mkdirSync(e,{recursive:!0}),j.writeFileSync(f,JSON.stringify({$schema:"https://opencode.ai/config.json",provider:g},null,2),{encoding:"utf-8",flag:"wx"})}catch(a){if("EEXIST"===a.code)return{written:!1,configPath:null,reason:"existing-config"};return o.warn("failed-to-write-opencodejson:error-insta"),{written:!1,configPath:null,reason:"write-failed"}}return o.info("opencode-config-generated",{mode:b,configPath:f}),{written:!0,configPath:f,reason:"written"}}var A=c(16983),B=c(79646),C=c(28354),D=c(39333),E=c(1305),F=c(49791),G=c(62887),H=c(72272),I=c(49154),J=c(48083),K=c(36051),L=c(57510),M=c(129),N=c(75356),O=c(98211),P=c(90488),Q=c(85322);let R=(0,n.h)("lib/hooks/sources/opencode/ingest");async function S(a,b,c){let d=(0,M.VM)(Q.k),e=(0,O.Lu)(b.raw,b.receivedAt);if(!e)return R.info("opencode-permission-unparsed",{worktreeId:a.worktreeId,instanceId:c}),!1;let f=await (0,H.t)(d,a,e,d.parsePermissionRequest(b.raw));return R.info("opencode-permission-decided",{worktreeId:a.worktreeId,instanceId:c,decisionId:e.id,behavior:f.behavior,reason:f.reason,delivered:f.delivered,settled:f.settled}),f.settled}async function T(a,b){let[{getDbInstance:d},{getWorktreeById:e},{applyAgentStopEvent:f}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.all([c.e(1356),c.e(6065),c.e(1191),c.e(6337),c.e(3323),c.e(1501),c.e(3707),c.e(6781)]).then(c.bind(c,16781))]),g=d(),h=e(g,a.worktreeId)??null;if(!h)return void R.info("opencode-stop-unresolved-target",{worktreeId:a.worktreeId});let i=await f(g,h,Q.k,b);R.info("opencode-stop-applied",{worktreeId:a.worktreeId,instanceId:b,taskId:i.taskId,taskEventApplied:i.taskEventApplied,verificationRunId:i.verificationRunId})}async function U(a,b){let c=a.instanceId??Q.k;try{let d=(0,M.VM)(Q.k),e=(0,J.classifyAgentEventDelivery)({worktreeId:a.worktreeId,cliToolId:Q.k,instanceId:c,event:b.event,detail:b.detail,sessionId:b.conversationId,at:b.receivedAt,identity:d.eventIdentityOf(b.raw),identityKind:d.capabilities.eventIdentity});if(e.duplicate)return void R.info("opencode-event-duplicate-dropped",{worktreeId:a.worktreeId,instanceId:c,event:b.event,detail:b.detail,by:e.by});let f={event:b.event,at:b.receivedAt,detail:b.detail?.slice(0,G.h9)??null,sessionId:b.conversationId,message:(function(a){let b=(0,L.Qd)(a.raw.properties)?a.raw.properties:{};if(a.detail===N.aF)return(0,L.NZ)(b,["metadata","command"])??(0,L.O2)(b,"permission");if(a.detail===N.Tm){let a=b.questions;return Array.isArray(a)&&(0,L.Qd)(a[0])?(0,L.O2)(a[0],"question"):null}return a.detail===N.vE?(0,L.NZ)(b,["error","data","message"])??(0,L.NZ)(b,["error","name"]):null})(b)?.slice(0,K.lY)??null,model:b.model},g={sessionStartMayArriveLate:d.capabilities.sessionStartMayArriveLate};if("notification"===b.event&&b.detail===N.aF){f.decisionId=(0,L.O2)((0,L.Qd)(b.raw.properties)?b.raw.properties:{},"id");let d=(0,O.LF)(b.raw,b.receivedAt);f.toolName=d?.toolName??null,f.decisionPatterns=d?.patterns??null,f.promptSettled=await S(a,b,c),(0,J.recordAgentEvent)(a.worktreeId,Q.k,c,f,g);return}if("notification"===b.event&&b.detail===N.C8){f.decisionId=(0,N.Mn)(b.raw),f.promptSettled=!!(0,M.VM)(Q.k).capabilities.permissionReplyReleasesPrompt||(R.info("opencode-permission-reply-not-releasing",{worktreeId:a.worktreeId,instanceId:c,reason:"capability-permissionReplyReleasesPrompt-false"}),!1),(0,J.recordAgentEvent)(a.worktreeId,Q.k,c,f,g),R.info("opencode-permission-reply-observed",{worktreeId:a.worktreeId,instanceId:c,decisionId:f.decisionId,released:f.promptSettled});return}if((0,J.recordAgentEvent)(a.worktreeId,Q.k,c,f,g),"notification"===b.event&&b.detail===N.Tm){let d=(0,M.VM)(Q.k).parseQuestion(b.raw);d&&((0,J.recordAskUserQuestion)(a.worktreeId,Q.k,c,d,b.receivedAt),(0,J.reportQuestionPending)(a.worktreeId,Q.k,c,{toolName:I.GF,decisionId:d.promptId,detail:N.Tm},b.receivedAt),R.info("opencode-question-recorded",{worktreeId:a.worktreeId,instanceId:c,decisionId:d.promptId,questionCount:d.questions.length,optionCounts:d.questions.map(a=>a.choices.length)})),await (0,P.Vo)(a,c,f.message??null,b.receivedAt);return}if("stop"===b.event)return void await T(a,c);"notification"===b.event&&b.detail===N.vE&&await (0,P.dJ)(a,c,(0,L.NZ)((0,L.Qd)(b.raw.properties)?b.raw.properties:{},["error","name"]),f.message??null,b.conversationId,b.receivedAt),R.info("opencode-event-received",{worktreeId:a.worktreeId,instanceId:c,event:b.event,detail:b.detail})}catch(d){R.error("opencode-event-ingest-failed",{worktreeId:a.worktreeId,instanceId:c,event:b.event,error:d instanceof Error?d.message:String(d)})}}var V=c(84574),W=c(85965),X=c(53163);let Y=(0,n.h)("lib/hooks/sources/opencode/runtime");function Z(a,b){return{worktreeId:a,cliToolId:"opencode",instanceId:b}}async function $(a,b){try{return await (0,V.CU)(a,b)}catch(b){return Y.warn("opencode-port-reserve-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),null}}let _=[0,500,1e3,2e3,4e3];async function aa(a,b){for(let[c,d]of _.entries()){d>0&&await new Promise(a=>setTimeout(a,d));let e=await (0,F.sc)(b);if("healthy"===e.kind)return c>0&&Y.info("opencode-server-reachable-after-retry",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,attempt:c}),e.health;if("rejected"===e.kind){Y.warn("opencode-server-refused-commandmate",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,status:e.status,consequence:"structured events are off for this session; the scraper decides"});break}}return null}async function ab(a){try{let b=(0,V.hC)(a);if(null===b)return!1;if((0,X.wb)(a))return!0;let c=await aa(a,b);if(!c)return Y.info("opencode-server-not-reachable",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,attempts:_.length}),!1;await W.cC.subscribe(a,b=>{U(a,b)});let d=await ac(a);return Y.info("opencode-event-stream-attached",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,version:c.version,activity:d}),!0}catch(b){return Y.warn("opencode-event-stream-attach-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),!1}}async function ac(a){let b=null;try{b=await W.cC.probeActivity(a)}catch(b){Y.debug("opencode-activity-probe-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)})}return(0,X.yn)(a,b,Date.now()),b}async function ad(a,b){try{if((0,X.wb)(a))return!0;let c=await (0,V.jp)(a,b);if(null===c)return!1;return await ab(a)}catch(b){return Y.warn("opencode-event-stream-resume-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),!1}}async function ae(a){let b=a.instanceId??a.cliToolId;try{let c=(0,V.hC)(a);if(null===c)return!1;let d=(0,X.lf)(a);if("live"!==d.state)return Y.info("opencode-abort-skipped-not-live",{worktreeId:a.worktreeId,instanceId:b,port:c,liveness:d.state}),!1;let e=(0,X.ym)(a);if(null===e)return Y.info("opencode-abort-skipped-no-session",{worktreeId:a.worktreeId,instanceId:b,port:c}),!1;let f=(0,X.H1)(a,e,2e3);if(!await (0,F.UR)(c,e))return f.cancel(),Y.warn("opencode-abort-rejected",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e}),!1;if(!await f.seen)return Y.warn("opencode-abort-unconfirmed",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e,timeoutMs:2e3}),!1;return Y.info("opencode-abort-confirmed",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e}),!0}catch(c){return Y.warn("opencode-abort-failed",{worktreeId:a.worktreeId,instanceId:b,error:c instanceof Error?c.message:String(c)}),!1}}async function af(a){try{await (0,X.FN)(a),(0,V.kE)(a)}catch(b){Y.warn("opencode-event-stream-release-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)})}}var ag=c(18529),ah=c(70849),ai=c(27939),aj=c(93949),ak=c(20610),al=c(78099);let am=(0,n.h)("cli-tools/opencode"),an=(0,C.promisify)(B.execFile);function ao(a){return a instanceof Error?a.message:String(a)}function ap(){let a=process.env[A.ao],b=(0,A._u)();return void 0!==a&&String(b)!==a.trim()?am.warn("opencode-pane-width-rejected",{requested:a,applied:b}):b>=A.Lg&&am.warn("opencode-pane-width-sidebar-visible",{width:b,sidebarMinWidth:A.Lg}),b}let aq=[0,50,100,200];function ar(a,b){return a?`${a}
2
2
 
3
3
  [添付画像: ${b}]`:`[添付画像: ${b}]`}class as extends d.Mj{navigationKeys(){return{keys:e.sM,leaderKey:e.Mx}}async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,f.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw(0,al.Tl)(this);let d=this.getSessionName(a,c),e=Z(a,c),g=await (0,f.N)(d);if(g){if(await this.reconcileExistingSession(d,{windowWidth:ap(),windowHeight:A.xT}),await this.isToolLive(d,{confirm:!0})){await ad(e,b),am.info("opencode-session-sessionname");return}am.warn("opencode-session-relaunch",{sessionName:d}),await af(e)}(0,E.Fq)(e);try{await z(b),g||(await (0,f.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,ak.Uc)));try{await an("tmux",["resize-window","-t",(0,f.lA)(d),"-x",String(ap()),"-y",String(A.xT)])}catch{}await $(e,b);let h=(0,E.wK)({target:e,executablePath:this.command,worktreePath:b}),i=(0,ai.pr)(e,b),j=null===i?h:(0,ai.XO)(h,i);null!==i&&am.info("opencode-session-resumed",{worktreeId:a,instanceId:c??this.id,sessionId:i}),await (0,f.V1)(d,j,!0),await this.waitForReady(d),await ab(e),am.info("started-opencode-session:sessionname")}catch(b){let a=ao(b);throw Error(`Failed to start OpenCode session: ${a}`)}}async waitForReady(a){for(let b=0;b<60;b++){try{let c=(0,g.aJ)(await (0,f.Xg)(a,50));if(g.vU.test(c))return am.info("opencode-composer-detected",{attempt:b}),!0;if(g.LO.test(c))return am.info("opencode-overlay-detected",{attempt:b}),!0}catch{}await new Promise(a=>setTimeout(a,500))}return am.info("opencode-ready-detection-timeout"),!1}async trySendViaServer(a,b,c){let d=a.instanceId??a.cliToolId;try{let e=(0,V.hC)(a);if(null===e)return!1;let f=(0,X.lf)(a);if("live"!==f.state)return am.info("opencode-send-skipped-not-live",{worktreeId:a.worktreeId,instanceId:d,port:e,liveness:f.state}),!1;let g=(0,X.ym)(a);if(null===g)return am.info("opencode-send-skipped-no-session",{worktreeId:a.worktreeId,instanceId:d,port:e}),!1;let h=[{type:"text",text:b}];void 0!==c&&h.push({type:"file",mime:(0,D.$Y)((0,l.extname)(c)),filename:(0,l.basename)(c),url:(0,F.fy)(c)});let i=(0,F.CH)(),j=(0,ag.QH)((0,ag.Q1)(a));if(!await (0,F.wZ)(e,g,i,h,j))return!1;if(!await this.verifyPostedMessage(e,g,i,b))return am.warn("opencode-send-unverified",{worktreeId:a.worktreeId,instanceId:d,port:e,sessionId:g,messageId:i,hasImage:void 0!==c}),!1;return am.info("opencode-send-delivered-via-api",{worktreeId:a.worktreeId,instanceId:d,port:e,sessionId:g,messageId:i,hasImage:void 0!==c}),!0}catch(b){return am.warn("opencode-send-api-failed",{worktreeId:a.worktreeId,instanceId:d,error:ao(b)}),!1}}async verifyPostedMessage(a,b,c,d){for(let e of aq){e>0&&await new Promise(a=>setTimeout(a,e));let f=await (0,F.ep)(a,b,c);if("found"===f.kind)return f.texts.includes(d);if("missing"===f.kind)break}return!1}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,f.N)(d))throw Error(`OpenCode session ${d} does not exist. Start the session first.`);if(await this.relaunchIfToolExited(a,c),await this.trySendViaServer(Z(a,c),b))return void(0,i.gm)(d);try{await (0,h.FW)({sessionName:d,message:b,cliToolId:"opencode",composer:this.describeComposer()}),(0,i.gm)(d),am.info("sent-message-to-opencode-session:session")}catch(b){let a=ao(b);throw Error(`Failed to send message to OpenCode: ${a}`)}}supportsImage(){return!0}async sendMessageWithImage(a,b,c,d){let e=this.getSessionName(a,d);if(!await (0,f.N)(e))throw Error(`OpenCode session ${e} does not exist. Start the session first.`);let g=Z(a,d);if(await this.trySendViaServer(g,b,c))return void(0,i.gm)(e);am.info("opencode-image-degraded-to-path",{worktreeId:a,instanceId:d??this.id}),await this.sendMessage(a,ar(b,c),d)}async killSession(a,b){let c=this.getSessionName(a,b),d=Z(a,b),e=(0,V.hC)(d),g=await (0,ah.LQ)(d).catch(()=>null);g&&!g.captured&&am.info("opencode-session-capture-skipped",{sessionName:c,reason:g.skipped}),await af(d);try{if(await (0,f.N)(c)){await (0,f.V1)(c,"/exit",!1),await new Promise(a=>setTimeout(a,ak.pL)),await (0,f.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,ak.KI));let a=await (0,aj.rY)({sessionAlive:()=>(0,f.N)(c),portAnswering:null===e?null:async()=>await (0,F.Ok)(e)!==null});a.ok||(am.warn("opencode-graceful-exit-postcondition-failed",{sessionName:c,reason:a.reason,...null!==e?{port:e}:{}}),await (0,f.fY)(c))}else await (0,f.fY)(c);(0,i.gm)(c),am.info("stopped-opencode-session:sessionname")}catch(a){throw am.error("session:stop-failed",{error:ao(a)}),a}}async interrupt(a,b){let c=this.getSessionName(a,b);if(await ae(Z(a,b))){(0,i.gm)(c),am.info("opencode-interrupt-aborted-via-api");return}await (0,f.ds)(c,"Escape"),await new Promise(a=>setTimeout(a,ak.os)),await (0,f.ds)(c,"Escape"),(0,i.gm)(c),am.info("opencode-interrupt-sent")}constructor(...a){super(...a),this.id="opencode",this.name="OpenCode",this.command="opencode"}}},43234:(a,b,c)=>{c.r(b),c.d(b,{CLIToolManager:()=>af});var d=c(81886),e=c(8953),f=c(57905);class g extends d.Mj{navigationKeys(){return{keys:e.pU,leaderKey:null}}async isInstalled(){return await (0,f.zw)()}async isRunning(a,b){return await (0,f.Yq)(a,b)}async launchSession(a,b,c){await (0,f.R7)({worktreeId:a,worktreePath:b,instanceId:c})}async sendMessage(a,b,c){await (0,f.pU)(a,b,c)}supportsImage(){return!0}async sendMessageWithImage(a,b,c,d){let e=`
4
- ![](${c})`,f=b?`${b}${e}`:e;await this.sendMessage(a,f,d)}async killSession(a,b){await (0,f.VU)(a,b)}constructor(...a){super(...a),this.id="claude",this.name="Claude Code",this.command="claude"}}var h=c(79892),i=c(40236),j=c(93997),k=c(85164),l=c(11472);let m=["skip","skip-until-next-version","update","ask"],n=Object.freeze({update:"1",skip:"2","skip-until-next-version":"3",ask:null});function o(a){if("string"!=typeof a)return null;let b=a.trim().toLowerCase();return"string"==typeof b&&m.includes(b)?b:null}c(68847);var p=c(61260);c(48800);var q=c(72626),r=c(22354),s=c(99432),t=c(1305),u=c(20610),v=c(78099);let w=(0,q.h)("cli-tools/codex");function x(a){return a instanceof Error?a.message:String(a)}let y="codex";function z(){return{screen:null,attempts:0}}class A extends d.Mj{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,h.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw(0,v.Tl)(this);let d=this.getSessionName(a,c),e=await (0,h.N)(d);if(e){if(await this.reconcileExistingSession(d),await this.isToolLive(d,{confirm:!0}))return void w.info("codex-session-sessionname");w.warn("codex-session-relaunch",{sessionName:d})}(0,t.Fq)({worktreeId:a,cliToolId:r.c1,instanceId:c});try{e||(await (0,h.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,u.Uc)));let f=(0,t.wK)({target:{worktreeId:a,cliToolId:r.c1,instanceId:c},executablePath:this.command,worktreePath:b}),g=async()=>{(0,t.Fq)({worktreeId:a,cliToolId:r.c1,instanceId:c}),await (0,h.V1)(d,f,!0),await new Promise(a=>setTimeout(a,3e3))};await (0,h.V1)(d,f,!0),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(d,{relaunch:g,trustHooks:(0,s.dO)(b)}),w.info("started-codex-session:sessionname")}catch(b){let a=x(b);throw Error(`Failed to start Codex session: ${a}`)}}async waitForReady(a,b){let c=b?.trustHooks??!1,d=!1,e=!1,f=z(),g=function(a){let b=o(void 0);if(null!==b)return b;let c=o(((void 0)??process.env).CM_CODEX_UPDATE_DIALOG);return null!==c?c:"skip-until-next-version"}(),i=n[g],j=!1,m=!1,q=!1,r=30;try{for(let o=0;o<r;o++){try{let s=await (0,h.Xg)(a,50),t=(0,k.aJ)(s),v=(0,k.E6)(t);if(("hooks-review"===v||"hooks-list"===v||"hooks-detail"===v)&&await this.answerCodexHooksScreen(a,v,f,c)){await new Promise(a=>setTimeout(a,u.CV));continue}if((0,k.zZ)(t))return void w.info("codex-prompt-detected");if(j&&!m&&b?.relaunch&&null!==(0,l.GE)(t,this.livenessSpec())){m=!0,r=Math.max(r,o+1+30),e=!1,f.screen=null,f.attempts=0,q&&(q=!1,(0,p.lM)(y),w.info("codex-update-lock-released",{sessionName:a})),w.info("codex-relaunched-after-update",{sessionName:a,policy:g}),await b.relaunch();continue}let x=(0,k.Qh)(t);if("update"===x){if(j=!0,null===i){await new Promise(a=>setTimeout(a,1e3));continue}if(!d){let b=i;b!==n.update||(0,p.mf)(y)?b===n.update&&(q=!0):(b=n["skip-until-next-version"],w.warn("codex-update-dialog-yielded-to-running-update",{sessionName:a,policy:g,requestedKey:i,key:b})),await (0,h.V1)(a,b,!1),d=!0,b===n.update&&(r=Math.max(r,o+1+120)),w.info("codex-update-dialog-answered",{sessionName:a,policy:g,key:b}),await new Promise(a=>setTimeout(a,u.CV));continue}}if("press-enter"===x){await (0,h.ds)(a,"Enter"),w.info("dismissed-codex-notification"),await new Promise(a=>setTimeout(a,u.CV));continue}if("trust"===x&&!e){await (0,h.V1)(a,"1",!1),e=!0,w.info("auto-trusted-folder-for"),await new Promise(a=>setTimeout(a,u.CV));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}w.info("codex-prompt-detection")}finally{q&&(q=!1,(0,p.lM)(y),w.warn("codex-update-lock-released-unfinished",{sessionName:a}))}}async answerCodexHooksScreen(a,b,c,d){if(c.screen!==b&&(c.screen=b,c.attempts=0),c.attempts>=3)return w.warn("codex-hooks-screen-unresponsive",{sessionName:a,screen:b,trust:d}),!1;let e=++c.attempts;if("hooks-review"===b){let b=1===e?d?"2":"3":"1";return await (0,h.V1)(a,b,!1),w.info("codex-hooks-review-answered",{sessionName:a,key:b,attempt:e,trust:d}),!0}return d?(await (0,h.V1)(a,"t",!1,{literal:!0}),w.info("codex-hooks-screen-trusted",{sessionName:a,screen:b,attempt:e})):(await (0,h.ds)(a,"Escape"),w.info("codex-hooks-screen-escaped",{sessionName:a,screen:b,attempt:e})),!0}async waitForPrompt(a){let b=Date.now(),c=z(),d=null;for(;Date.now()-b<15e3;){try{let b=await (0,h.Xg)(a,50),e=(0,k.aJ)(b),f=(0,k.E6)(e);if("hooks-review"===f||"hooks-list"===f||"hooks-detail"===f){if(null===d){let b=await (0,h.nS)(a);d=null!==b&&(0,s.dO)(b)}await this.answerCodexHooksScreen(a,f,c,d)}else if((0,k.zZ)(e))return}catch{}await new Promise(a=>setTimeout(a,500))}throw w.info("codex-prompt-not"),Error("Codex prompt not ready: timed out waiting for the input prompt before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,h.N)(d))throw Error(`Codex session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await this.waitForPrompt(d),await (0,i.FW)({sessionName:d,message:b,cliToolId:"codex",composer:this.describeComposer()}),(0,j.gm)(d),w.info("sent-message-to-codex-session:sessionnam")}catch(b){let a=x(b);throw Error(`Failed to send message to Codex: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,h.N)(c)&&(await (0,h.ds)(c,"C-d"),await new Promise(a=>setTimeout(a,u.Zf))),await (0,h.fY)(c)&&w.info("stopped-codex-session:sessionname")}catch(a){throw w.error("session:stop-failed",{error:x(a)}),a}}constructor(...a){super(...a),this.id="codex",this.name="Codex CLI",this.command="codex"}}var B=c(23365);let C=(0,q.h)("cli-tools/gemini");function D(a){return a instanceof Error?a.message:String(a)}class E extends d.Mj{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,h.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw(0,v.Tl)(this);let d=this.getSessionName(a,c),e=await (0,h.N)(d);if(e){if(await this.reconcileExistingSession(d),await this.isToolLive(d,{confirm:!0}))return void C.info("gemini-session-sessionname");C.warn("gemini-session-relaunch",{sessionName:d})}(0,t.Fq)({worktreeId:a,cliToolId:r.o,instanceId:c});try{e||(await (0,h.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,u.Uc)));let f=(0,t.wK)({target:{worktreeId:a,cliToolId:r.o,instanceId:c},executablePath:this.command,worktreePath:b});await (0,h.V1)(d,f,!0),await new Promise(a=>setTimeout(a,6e3)),await this.waitForReady(d),C.info("started-gemini-session:sessionname")}catch(b){let a=D(b);throw Error(`Failed to start Gemini session: ${a}`)}}async waitForReady(a){let b=!1;for(let c=0;c<30;c++){try{let c=await (0,h.Xg)(a,B.H),d=(0,k.aJ)(c);if(k.wN.test(d))return void C.info("gemini-prompt-detected");!b&&d.includes("Do you trust this folder?")&&(await (0,h.ds)(a,"Enter"),b=!0,C.info("auto-trusted-folder-for"))}catch{}await new Promise(a=>setTimeout(a,1e3))}C.info("gemini-prompt-detection")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,h.Xg)(a,B.H),c=(0,k.aJ)(b);if(k.wN.test(c))return}catch{}await new Promise(a=>setTimeout(a,500))}C.info("gemini-prompt-not")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,h.N)(d))throw Error(`Gemini session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await this.waitForPrompt(d),await (0,i.FW)({sessionName:d,message:b,cliToolId:"gemini",composer:this.describeComposer()}),(0,j.gm)(d),C.info("sent-message-to-gemini-session:sessionna")}catch(b){let a=D(b);throw Error(`Failed to send message to Gemini: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,h.N)(c)&&(await (0,h.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,u.Is)),await (0,h.V1)(c,"/quit",!0),await new Promise(a=>setTimeout(a,u.Zf))),await (0,h.fY)(c)&&C.info("stopped-gemini-session:sessionname")}catch(a){throw C.error("session:stop-failed",{error:D(a)}),a}}constructor(...a){super(...a),this.id="gemini",this.name="Gemini CLI",this.command="gemini"}}var F=c(15194),G=c(88807),H=c(56791);let I=(0,q.h)("cli-tools/vibe-local");function J(a){return a instanceof Error?a.message:String(a)}class K extends d.Mj{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,h.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw(0,v.Tl)(this);let d=this.getSessionName(a,c),e=await (0,h.N)(d);if(e){if(await this.reconcileExistingSession(d),await this.isToolLive(d,{confirm:!0}))return void I.info("vibe-local-session");I.warn("vibe-local-session-relaunch",{sessionName:d})}(0,t.Fq)({worktreeId:a,cliToolId:this.id,instanceId:c});try{e||(await (0,h.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,u.Uc)));let c="vibe-local -y";try{let b=(0,G.getDbInstance)(),d=(0,H.getWorktreeById)(b,a);d?.vibeLocalModel&&F.QP.test(d.vibeLocalModel)&&(c+=` -m ${d.vibeLocalModel}`);let e=d?.vibeLocalContextWindow;(0,F.FV)(e)&&(c+=` --context-window ${Number(e)}`)}catch{}await (0,h.V1)(d,c,!0),await new Promise(a=>setTimeout(a,5e3)),I.info("started-vibe-local-session:sessionname")}catch(b){let a=J(b);throw Error(`Failed to start Vibe Local session: ${a}`)}}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,h.N)(d))throw Error(`Vibe Local session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await (0,i.FW)({sessionName:d,message:b,cliToolId:"vibe-local",composer:this.describeComposer(),interEnterWaitMs:u.PY}),(0,j.gm)(d),I.info("sent-message-to-vibe-local-session:sessi")}catch(b){let a=J(b);throw Error(`Failed to send message to Vibe Local: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,h.N)(c)&&(await (0,h.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,u.Is)),await (0,h.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,u.Zf))),await (0,h.fY)(c)&&I.info("stopped-vibe-local-session:sessionname")}catch(a){throw I.error("session:stop-failed",{error:J(a)}),a}}constructor(...a){super(...a),this.id="vibe-local",this.name="Vibe Local",this.command="vibe-local"}}var L=c(41466),M=c(81776),N=c(56263),O=c(21758),P=c(54633),Q=c(77093);let R=(0,q.h)("cli-tools/copilot"),S=new Set(["model","agent","theme","permissions","skills","mcp","settings","statusline","subagents","resume","session"]),T=/^[>❯](?:\s|$)/;class U extends d.Mj{async isInstalled(){return await (0,M.B0)()!==null}launchExecutable(a){return"path"===a.source?this.command:O.nL}async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,h.N)(c)}async launchSession(a,b,c){let d=await (0,M.B0)();if(!d)throw(0,v.Tl)(this);let e=this.getSessionName(a,c),f=await (0,h.N)(e);if(f){if(await this.reconcileExistingSession(e),await this.isToolLive(e,{confirm:!0}))return void R.info("copilot-session-exists");R.warn("copilot-session-relaunch",{sessionName:e})}(0,t.Fq)({worktreeId:a,cliToolId:P.V,instanceId:c});try{f||(await (0,h.jw)({sessionName:e,workingDirectory:b}),await new Promise(a=>setTimeout(a,u.Uc)));let g=(0,t.wK)({target:{worktreeId:a,cliToolId:P.V,instanceId:c},executablePath:this.launchExecutable(d),worktreePath:b});await (0,h.V1)(e,g,!0),await this.waitForReady(e),R.info("started-copilot-session",{executableSource:d.source,version:d.version})}catch(b){let a=(0,Q.u1)(b);throw Error(`Failed to start Copilot session: ${a}`)}}async answerFolderTrustDialog(a,b){return!!(0,k.Rx)(b)&&(await (0,h.V1)(a,k.oD,!1),(0,j.gm)(a),R.info("copilot-folder-trust-answered"),!0)}isComposerDrawn(a){let b=a.split("\n");for(let a=1;a<b.length-1;a++)if(T.test(b[a])&&k.A.test(b[a-1].trimEnd())&&k.A.test(b[a+1].trimEnd()))return!0;return!1}async waitForReady(a){let b=!1;for(let c=0;c<30;c++){try{let c=await (0,h.Xg)(a,50),d=(0,k.aJ)(c);if(this.isComposerDrawn(d))return void R.info("copilot-prompt-detected");!b&&await this.answerFolderTrustDialog(a,d)&&(b=!0)}catch{}await new Promise(a=>setTimeout(a,1e3))}R.info("copilot-prompt-detection-timeout")}async waitForPrompt(a,b=15e3){let c=Date.now(),d=!1;for(;Date.now()-c<b;){try{let b=await (0,h.Xg)(a,50),c=(0,k.aJ)(b);if(k.Du.test(c))return;!d&&await this.answerFolderTrustDialog(a,c)&&(d=!0)}catch{}await new Promise(a=>setTimeout(a,500))}R.info("copilot-prompt-not-detected")}extractSlashCommand(a){let b=a.trim();if(!b.startsWith("/"))return null;let c=b.match(/^\/(\S+)/);return c?c[1]:null}async waitForSelectionList(a){let b=Date.now();for(;Date.now()-b<5e3;){await new Promise(a=>setTimeout(a,300));try{let b=await (0,h.Xg)(a,50),c=(0,k.aJ)(b);if((0,k.gT)(c.split("\n")))return R.info("copilot-selection-list-detected"),!0}catch{}}return R.info("copilot-selection-list-not-detected-timeout"),!1}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,h.N)(d))throw Error(`Copilot session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await this.waitForPrompt(d);let a=this.extractSlashCommand(b);if(a&&S.has(a)){await (0,h.V1)(d,b,!0),await this.waitForSelectionList(d),(0,j.gm)(d),R.info("sent-selection-list-command-to-copilot",{command:a});return}await (0,i.FW)({sessionName:d,message:b,cliToolId:"copilot",composer:this.describeComposer(),textInputWaitMs:N.L1,verifyDelayMs:N.wp}),(0,j.gm)(d),R.info("sent-message-to-copilot-session")}catch(b){let a=(0,Q.u1)(b);throw Error(`Failed to send message to Copilot: ${a}`)}}async sendModelCommand(a,b,c){let d=this.getSessionName(a,c);if(!await (0,h.N)(d))throw Error(`Copilot session ${d} does not exist. Start the session first.`);try{await (0,h.V1)(d,`/model ${b}`,!0),await this.waitForPrompt(d,N.pL),(0,j.gm)(d),R.info("copilot-model-switched",{model:b})}catch(c){let a=(0,Q.u1)(c);throw Error(`Failed to switch Copilot model to ${b}: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,h.N)(c)&&(await (0,h.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,u.Is)),await (0,h.V1)(c,"/exit",!1),await new Promise(a=>setTimeout(a,N.L1)),await (0,h.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,u.Rk))),await (0,h.fY)(c)&&R.info("stopped-copilot-session")}catch(a){throw R.error("session:stop-failed",{error:(0,Q.u1)(a)}),a}}constructor(...a){super(...a),this.id="copilot",this.name="Copilot",this.command="copilot"}}var V=c(74258);let W=(0,q.h)("cli-tools/antigravity");function X(a){return a instanceof Error?a.message:String(a)}let Y=/\?\s+for\s+shortcuts/,Z=/Do you trust the contents of this project\?/;function $(a){let b=(0,V.z)(a);if(k.kT.test(b.lastLines)||Z.test(b.lastLines))return!1;let c=function(a){let b=a.map(a=>a.trim()),c=a=>a>=0&&k.kn.test(b[a]),d=a=>{let c=a;for(;c>=0&&""===b[c];)c--;return c},e=b.length-1,f="";return(e>=0&&!c(e)&&(f=b[e],e=d(e-1)),!c(e)||(e=d(e-1))<0||!k.lE.test(b[e]))?null:c(d(e-1))?f:null}(b.contentLines);return null!==c&&(!!Y.test(c)||!(0,k.ut)("antigravity",b.lastLines))}class _ extends d.Mj{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,h.N)(c)}async launchSession(a,b,c,d){if(!await this.isInstalled())throw(0,v.Tl)(this);let e=this.getSessionName(a,c),f=await (0,h.N)(e);if(f){if(await this.reconcileExistingSession(e),await this.isToolLive(e,{confirm:!0}))return void W.info("antigravity-session-exists");W.warn("antigravity-session-relaunch",{sessionName:e})}(0,t.Fq)({worktreeId:a,cliToolId:r.F0,instanceId:c});try{f||(await (0,h.jw)({sessionName:e,workingDirectory:b}),await new Promise(a=>setTimeout(a,u.Uc)));let g=(0,t.wK)({target:{worktreeId:a,cliToolId:r.F0,instanceId:c},executablePath:this.command,worktreePath:b}),i=d?`${g} --model '${d.replace(/'/g,"'\\''")}'`:g;await (0,h.V1)(e,i,!0),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(e),W.info("started-antigravity-session")}catch(b){let a=X(b);throw Error(`Failed to start Antigravity session: ${a}`)}}async waitForReady(a){let b=!1;for(let c=0;c<30;c++){try{let c=await (0,h.Xg)(a,50),d=(0,k.aJ)(c);if($(d))return void W.info("antigravity-prompt-detected");if(!b&&Z.test(d)){await (0,h.ds)(a,"Enter"),b=!0,W.info("auto-trusted-folder-for-antigravity"),await new Promise(a=>setTimeout(a,500));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}W.info("antigravity-prompt-detection-timeout")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,h.Xg)(a,50),c=(0,k.aJ)(b);if($(c))return}catch{}await new Promise(a=>setTimeout(a,500))}throw W.info("antigravity-prompt-not-ready"),Error("Antigravity prompt not ready: timed out waiting for the input prompt before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,h.N)(d))throw Error(`Antigravity session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await this.waitForPrompt(d),await (0,i.FW)({sessionName:d,message:b,cliToolId:"antigravity",composer:this.describeComposer()}),(0,j.gm)(d),W.info("sent-message-to-antigravity-session")}catch(b){let a=X(b);throw Error(`Failed to send message to Antigravity: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,h.N)(c)&&(await (0,h.ds)(c,"C-d"),await new Promise(a=>setTimeout(a,u.Zf)));let a=await (0,h.fY)(c);(0,j.gm)(c),a&&W.info("stopped-antigravity-session")}catch(a){throw W.error("session:stop-failed",{error:X(a)}),a}}constructor(...a){super(...a),this.id="antigravity",this.name="Antigravity CLI",this.command="agy"}}var aa=c(28862);let ab=(0,q.h)("cli-tools/command-code"),ac=["--trust","--skip-onboarding","--no-auto-update"];function ad(a){let b=a.split("\n");return!(0>(0,k.I$)(b))&&!k.k0.test((0,k.aJ)(a))}class ae extends d.Mj{navigationKeys(){return{keys:e.pU,leaderKey:null}}async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,h.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw(0,v.Tl)(this);let d=this.getSessionName(a,c),e=await (0,h.N)(d);if(e){if(await this.reconcileExistingSession(d),await this.isToolLive(d,{confirm:!0}))return void ab.info("command-code-session-exists");ab.warn("command-code-session-relaunch",{sessionName:d})}(0,t.Fq)({worktreeId:a,cliToolId:aa.k,instanceId:c});try{var f;e||(await (0,h.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,u.Uc))),await (0,h.V1)(d,(f={target:{worktreeId:a,cliToolId:aa.k,instanceId:c},executablePath:this.command,worktreePath:b},[(0,t.wK)(f),...ac].join(" ")),!0),await new Promise(a=>setTimeout(a,u.yO)),await this.waitForReady(d),ab.info("started-command-code-session")}catch(a){throw Error(`Failed to start Command Code session: ${(0,Q.u1)(a)}`)}}async waitForReady(a){for(let b=0;b<30;b++){try{let b=await (0,h.Xg)(a,50);if(ad(b))return void ab.info("command-code-prompt-detected")}catch{}await new Promise(a=>setTimeout(a,1e3))}ab.info("command-code-prompt-detection-timeout")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,h.Xg)(a,50);if(ad(b))return}catch{}await new Promise(a=>setTimeout(a,500))}throw ab.info("command-code-prompt-not-ready"),Error("Command Code prompt not ready: timed out waiting for the composer before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,h.N)(d))throw Error(`Command Code session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await this.waitForPrompt(d),await (0,i.FW)({sessionName:d,message:b,cliToolId:"command-code",composer:this.describeComposer()}),(0,j.gm)(d),ab.info("sent-message-to-command-code-session")}catch(a){throw Error(`Failed to send message to Command Code: ${(0,Q.u1)(a)}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,h.N)(c)&&(await (0,h.V1)(c,"/exit",!1),await new Promise(a=>setTimeout(a,u.pL)),await (0,h.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,u.Zf)));let a=await (0,h.fY)(c);(0,j.gm)(c),a&&ab.info("stopped-command-code-session")}catch(a){throw ab.error("session:stop-failed",{error:(0,Q.u1)(a)}),a}}constructor(...a){super(...a),this.id="command-code",this.name="Command Code CLI",this.command="commandcode"}}class af{constructor(){this.tools=new Map,this.tools.set("claude",new g),this.tools.set("codex",new A),this.tools.set("gemini",new E),this.tools.set("vibe-local",new K),this.tools.set("opencode",new L.Ui),this.tools.set("copilot",new U),this.tools.set("antigravity",new _),this.tools.set("command-code",new ae)}static getInstance(){return af.instance||(af.instance=new af),af.instance}getTool(a){let b=this.tools.get(a);if(!b)throw Error(`CLI tool '${a}' not found`);return b}getAllTools(){return Array.from(this.tools.values())}async getToolInfo(a){let b=this.getTool(a),c=await b.isInstalled();return{id:b.id,name:b.name,command:b.command,installed:c}}async getAllToolsInfo(){return Promise.all(this.getAllTools().map(async a=>{let b=await a.isInstalled();return{id:a.id,name:a.name,command:a.command,installed:b}}))}async getInstalledTools(){return(await this.getAllToolsInfo()).filter(a=>a.installed)}async stopPollers(a,b,d){let{stopPolling:e}=await Promise.all([c.e(1356),c.e(1503),c.e(1634),c.e(1191),c.e(1719),c.e(2119),c.e(2445),c.e(6337),c.e(595),c.e(3323),c.e(8918),c.e(650),c.e(6677),c.e(5220)]).then(c.bind(c,95220));e(a,b,d)}}},56263:(a,b,c)=>{c.d(b,{L1:()=>e,MJ:()=>j,Rf:()=>f,ky:()=>g,lM:()=>i,pL:()=>h,wp:()=>d,zt:()=>k});let d=200,e=100,f=1e5,g="[... truncated ...]",h=3e4,i=/^[a-zA-Z0-9][a-zA-Z0-9\-._/:]*$/,j=128,k="Install with: brew install copilot-cli (macOS) or npm i -g @github/copilot"},68652:(a,b,c)=>{c.d(b,{N:()=>g});let d=/Esc\s+to\s+cancel\s*[·•]\s*Tab\s+to\s+amend/i,e=/Enter\s+to\s+select\b.*\bnavigate\b/i,f=/^\s*[>❯]\s*(?:\d{1,2}[.)])?|esc\s+to\s+interrupt|[✻✽✶✢✳⦿◉●⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏]\s+.+…/i;function g(a){if(""===a)return"";let b=a.split("\n"),c=-1;for(let a=b.length-1;a>=0;a--){var g;if(g=b[a],d.test(g)||e.test(g)){c=a;break}}let h=b;return c>=0&&(h=b.slice(c+1).some(a=>f.test(a))?b.slice(c+1):b.slice(0,c+1)),(function(a){let b=[],c=!1;for(let d of a){let a=""===d.trim();a&&c||(b.push(d),c=a)}for(;b.length>0&&""===b[b.length-1].trim();)b.pop();return b})(h).join("\n")}},70849:(a,b,c)=>{c.d(b,{LQ:()=>k,SW:()=>l});var d=c(72626),e=c(84574),f=c(48083),g=c(77634),h=c(27939);let i=(0,d.h)("lib/session/opencode-session-recall");async function j(a,b){let c=new Set,d=await (0,g.GP)(a,b);for(let b=0;b<3;b+=1){if(null===d)return null;if(null===d.parentId||c.has(d.parentId))break;c.add(d.parentId),i.debug("opencode-session-parent-hop",{from:d.id,to:d.parentId}),d=await (0,g.GP)(a,d.parentId)}return d}async function k(a){let b=a.instanceId??a.cliToolId,c=(0,e.hC)(a);if(null===c)return{captured:!1,skipped:"no-port"};let d=(0,f.getLastAgentEvent)(a.worktreeId,"opencode",a.instanceId)?.sessionId;if(!(0,h.jp)(d))return{captured:!1,skipped:"no-session-observed"};let g=await j(c,d);if(null===g)return{captured:!1,skipped:"session-unreadable"};if(null===g.directory)return{captured:!1,skipped:"no-directory"};let k=(0,e.U9)(a);return null!==k&&k!==g.directory?(i.warn("opencode-session-capture-directory-mismatch",{worktreeId:a.worktreeId,instanceId:b,expected:k,reported:g.directory}),{captured:!1,skipped:"directory-mismatch"}):(0,h.F_)(a,{sessionId:g.id,title:g.title,worktreePath:g.directory})?(i.info("opencode-session-captured",{worktreeId:a.worktreeId,instanceId:b,sessionId:g.id,viaParentOf:g.id===d?null:d}),{captured:!0,memory:{sessionId:g.id,title:g.title,worktreePath:g.directory,updatedAt:Date.now()}}):{captured:!1,skipped:"not-persisted"}}async function l(a){let b=(0,e.hC)(a),c=(0,f.getLastAgentEvent)(a.worktreeId,"opencode",a.instanceId)?.sessionId;if(null!==b&&(0,h.jp)(c)){let a=await j(b,c);if(null!==a)return a.id}return(0,h.KA)(a)?.sessionId??null}},72272:(a,b,c)=>{c.d(b,{t:()=>i});var d=c(72626),e=c(50474),f=c(25071),g=c(17287);let h=(0,d.h)("lib/hooks/permission-adjudication");async function i(a,b,d,j,k="event"){let l=b.instanceId??b.cliToolId,m={worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l},{resolvePermissionRequest:n}=await c.e(3241).then(c.bind(c,43241)),o=n(m,j),p="allow"===o.behavior?{kind:"allowOnce"}:{kind:"abstain"};if("abstain"===p.kind){let c=(0,e.y_)(a);c.safe||h.warn("permission-request-abstain-blocks-agent",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l,toolName:j?.toolName??null,decisionId:d.id,reason:o.reason,consequence:c.summary,blocksForMs:c.blocksForMs})}let{delivery:q}=await (0,f.GW)(a,b,d,p),r=q?.delivered===!0,s=r&&a.capabilities.permissionReplyReleasesPrompt;return(0,g.nL)(b.worktreeId,b.cliToolId,b.instanceId,{decisionId:d.id,toolName:j?.toolName??null,behavior:"allow"===o.behavior?"allow":null,reason:o.reason,delivered:r,releasedPrompt:s,trigger:k,at:d.askedAt}),h.info("permission-decision-adjudicated",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l,decisionId:d.id,toolName:j?.toolName??null,behavior:o.behavior,reason:o.reason,suppressedBy:o.suppressedBy,delivered:r,settled:s,trigger:k}),{decisionId:d.id,behavior:"allow"===o.behavior?"allow":null,reason:o.reason,delivered:r,settled:s}}},74258:(a,b,c)=>{c.d(b,{h:()=>g,z:()=>h});var d=c(85164),e=c(68652),f=c(46423);let g=15;function h(a){let b=(0,e.N)((0,d.aJ)(a)),c=b.split("\n"),h=c.length-1;for(;h>=0&&""===c[h].trim();)h--;let i=c.slice(0,h+1);return{raw:a,clean:b,lines:c,contentLines:i,lastLines:i.slice(-g).join("\n"),thinkingLines:i.slice(-f.$).join("\n")}}},77634:(a,b,c)=>{c.d(b,{GP:()=>l,Hv:()=>h,eJ:()=>n,mf:()=>o,y4:()=>m,yg:()=>p});var d=c(72626),e=c(49791),f=c(27939);let g=(0,d.h)("lib/session/opencode-session-api"),h="session_new";function i(a,b){let c=a[b];return"string"==typeof c&&c.length>0?c:null}async function j(a,b){try{let c=await fetch(a,{...b,redirect:e.uS,signal:AbortSignal.timeout(e.T0)});if(!c.ok)return null;if(!function(a){let b=a.headers?.get?.("content-type");return"string"==typeof b&&b.split(";",1)[0]?.trim().toLowerCase()===e._t}(c))return g.debug("opencode-session-request-content-type",{url:a,contentType:c.headers?.get?.("content-type")??null}),null;return await c.json()}catch(b){return g.debug("opencode-session-request-failed",{url:a,error:b instanceof Error?b.message:String(b)}),null}}function k(a){if(!("object"==typeof a&&null!==a&&!Array.isArray(a)))return null;let b=i(a,"id");if(!(0,f.jp)(b))return null;let c=i(a,"title");return{id:b,title:null===c?null:c.slice(0,f.Y2),directory:i(a,"directory"),parentId:i(a,"parentID")}}async function l(a,b){return(0,f.jp)(b)?k(await j(`${(0,e.M2)(a)}/session/${encodeURIComponent(b)}`)):null}async function m(a,b){return(0,f.jp)(b)?k(await j(`${(0,e.M2)(a)}/session/${encodeURIComponent(b)}/fork`,{method:"POST",headers:{"content-type":e._t},body:"{}"})):null}async function n(a){return!0===await j(`${(0,e.M2)(a)}/tui/open-sessions`,{method:"POST",headers:{"content-type":e._t},body:"{}"})}async function o(a,b){return!0===await j(`${(0,e.M2)(a)}/tui/execute-command`,{method:"POST",headers:{"content-type":e._t},body:JSON.stringify({command:b})})}async function p(a,b){return!!(0,f.jp)(b)&&!0===await j(`${(0,e.M2)(a)}/tui/select-session`,{method:"POST",headers:{"content-type":e._t},body:JSON.stringify({sessionID:b})})}},78099:(a,b,c)=>{c.d(b,{Tl:()=>g});var d=c(56263),e=c(2669);let f={claude:"Install with: npm install -g @anthropic-ai/claude-code",codex:"Install with: npm install -g @openai/codex",gemini:"Install with: npm install -g @google/gemini-cli",opencode:"Install with: npm install -g opencode-ai",copilot:d.zt,"command-code":"Install with: npm install -g command-code",antigravity:"Install the Antigravity CLI: https://antigravity.google/docs/cli/reference","vibe-local":"vibe-local is a local script rather than a published package: put your own `vibe-local` executable on PATH."};function g(a){var b;return new e.lU(a.name,(b=a,`${b.name} (${b.command}) is not installed or not in PATH. ${f[b.id]}`))}},81886:(a,b,c)=>{c.d(b,{Km:()=>A,Mj:()=>z});var d=c(79646),e=c(28354),f=c(40964),g=c(79892),h=c(56717),i=c(23365),j=c(93949),k=c(91536),l=c(50945),m=c(96287),n=c(51297),o=c(87447),p=c(45567),q=c(72626),r=c(8953),s=c(20610),t=c(16983);let u=(0,e.promisify)(d.exec),v=(0,q.h)("cli-tools/base"),w=RegExp(`${p.ZM}=(?:'([^']*)'|"([^"]*)"|(\\S+))`,"g"),x=new Set,y=new Set;class z{async isInstalled(){try{return await u(`which ${this.command}`,{timeout:5e3}),!0}catch{return!1}}getSessionName(a,b){return(0,f.m)(this.id,a,b)}async startSession(a,b,c,d){try{await this.launchSession(a,b,c,d)}catch(b){throw this.takeAdoptionMark(a,c),(0,m.Zl)({worktreeId:a,cliToolId:this.id,instanceId:c,toolName:this.name},b),b}let e=this.takeAdoptionMark(a,c);null!==e&&await this.warnIfHookUrlIsStale(a,e,c)}async reconcileExistingSession(a,b){x.add(a),await (0,g.zT)(a,b)}takeAdoptionMark(a,b){try{let c=this.getSessionName(a,b);return x.delete(c)?c:null}catch{return null}}async warnIfHookUrlIsStale(a,b,c){if(!y.has(b))try{let d=await (0,g.Xg)(b,{startLine:-t.eu});y.add(b);let e=function(a){let b=null;for(let c of(0,n.aJ)(a).matchAll(w)){let a=c[1]??c[2]??c[3]??null;a&&(b=a)}return b}(d);if(null===e)return;let f=function(a){try{let b=new URL(a);if(""!==b.port)return Number(b.port);return"https:"===b.protocol?443:80}catch{return null}}(e),h=(0,o.D0)();if(null===f||f===h)return;v.warn("session:hook-url-stale",{cliToolId:this.id,sessionName:b,sessionPort:f,serverPort:h}),(0,m.ED)({worktreeId:a,cliToolId:this.id,instanceId:c,toolName:this.name,sessionPort:f,serverPort:h})}catch(b){v.debug("session:hook-url-probe-failed",{cliToolId:this.id,worktreeId:a,error:b instanceof Error?b.message:String(b)})}}async warnIfRunningSessionHookUrlIsStale(a,b){let c;try{c=this.getSessionName(a,b)}catch{return}await this.warnIfHookUrlIsStale(a,c,b)}async interrupt(a,b){let c=this.getSessionName(a,b);await (0,g.ds)(c,"Escape")}describeComposer(){return(0,h.gc)(this.id)}gracefulExitSequence(){return(0,j.JV)(this.id)}captureSpec(){return(0,i.y)(this.id)}livenessSpec(){return(0,k.H7)(this.id)}async isToolLive(a,b){let c=this.livenessSpec(),d=await (0,l.Q)(a,c);if(d.alive)return!0;if(!b?.confirm)return!1;await new Promise(a=>setTimeout(a,s.kZ));let e=await (0,l.Q)(a,c);return e.alive?(v.info("session:liveness-confirm-recovered",{cliToolId:this.id,firstReason:d.reason}),!0):(v.warn("session:tool-exited",{cliToolId:this.id,reason:e.reason}),!1)}async relaunchIfToolExited(a,b){let c=this.getSessionName(a,b);if(await this.isToolLive(c))return;let d=await (0,g.nS)(c);if(null===d)return void v.warn("session:relaunch-skipped-no-path",{cliToolId:this.id,worktreeId:a});v.info("session:relaunch-before-send",{cliToolId:this.id,sessionName:c}),await this.startSession(a,d,b)}navigationKeys(){return{keys:r.qD,leaderKey:null}}}function A(a,b,c){a instanceof z&&a.warnIfRunningSessionHookUrlIsStale(b,c).catch(()=>{})}},93949:(a,b,c)=>{c.d(b,{JV:()=>i,rY:()=>k});var d=c(56263),e=c(20610),f=c(86069);let g={keys:[(0,f.IS)("C-d")],exitWaitMs:e.Zf,ownsLoopbackServer:!1},h={claude:g,codex:g,antigravity:g,gemini:{keys:[(0,f.IS)("C-c",e.Is),(0,f.iF)(`/quit\r`,void 0)],exitWaitMs:e.Zf,ownsLoopbackServer:!1},"vibe-local":{keys:[(0,f.IS)("C-c",e.Is),(0,f.IS)("C-c")],exitWaitMs:e.Zf,ownsLoopbackServer:!1},copilot:{keys:[(0,f.IS)("C-c",e.Is),(0,f.iF)("/exit",d.L1),(0,f.IS)("Enter")],exitWaitMs:e.Rk,ownsLoopbackServer:!1},"command-code":{keys:[(0,f.iF)("/exit",e.pL),(0,f.IS)("Enter")],exitWaitMs:e.Zf,ownsLoopbackServer:!1},opencode:{keys:[(0,f.iF)("/exit",e.pL),(0,f.IS)("Enter")],exitWaitMs:e.KI,ownsLoopbackServer:!0}};function i(a){return h[a]??g}let j=a=>new Promise(b=>setTimeout(b,a));async function k(a){let b=Math.max(1,a.attempts??1),c=a.intervalMs??0,d=a.sleep??j,e=!0;for(let f=0;f<b&&(e=await a.sessionAlive());f+=1)f<b-1&&c>0&&await d(c);if(e)return{ok:!1,reason:"graceful_exit_timeout"};let f=a.portAnswering;if(!f)return{ok:!0};let g=!0;for(let a=0;a<b&&(g=await f());a+=1)a<b-1&&c>0&&await d(c);return g?{ok:!1,reason:"port_orphaned"}:{ok:!0}}},96287:(a,b,c)=>{c.d(b,{$k:()=>h,ED:()=>g,VI:()=>i,Zl:()=>e});var d=c(78099);function e(a,b){Promise.all([c.e(1356),c.e(1191),c.e(6337)]).then(c.bind(c,81099)).then(({notifySessionStartFailurePush:c})=>c({...a,error:b})).catch(()=>{})}let f=new Set;function g(a){let b=[a.worktreeId,a.instanceId??a.cliToolId,a.sessionPort,a.serverPort].join(":");f.has(b)||(f.add(b),Promise.all([c.e(1356),c.e(1191),c.e(6337)]).then(c.bind(c,81099)).then(({notifyStaleHookUrlPush:b})=>b(a)).catch(()=>{}))}async function h(a,b){if(await a.isInstalled())return;let c=(0,d.Tl)(a);throw e({worktreeId:b.worktreeId,cliToolId:a.id,instanceId:b.instanceId,toolName:a.name,subject:b.subject},c),c}function i(a,b){Promise.resolve().then(c.bind(c,43234)).then(({CLIToolManager:c})=>{let f=c.getInstance().getTool(a);e({worktreeId:b.worktreeId,cliToolId:a,instanceId:b.instanceId,toolName:f.name,subject:b.subject},(0,d.Tl)(f))}).catch(()=>{})}}};
4
+ ![](${c})`,f=b?`${b}${e}`:e;await this.sendMessage(a,f,d)}async killSession(a,b){await (0,f.VU)(a,b)}constructor(...a){super(...a),this.id="claude",this.name="Claude Code",this.command="claude"}}var h=c(79892),i=c(40236),j=c(93997),k=c(85164),l=c(11472);let m=["skip","skip-until-next-version","update","ask"],n=Object.freeze({update:"1",skip:"2","skip-until-next-version":"3",ask:null});function o(a){if("string"!=typeof a)return null;let b=a.trim().toLowerCase();return"string"==typeof b&&m.includes(b)?b:null}c(68847);var p=c(61260);c(48800);var q=c(72626),r=c(22354),s=c(99432),t=c(1305),u=c(20610),v=c(78099);let w=(0,q.h)("cli-tools/codex");function x(a){return a instanceof Error?a.message:String(a)}let y="codex";function z(){return{screen:null,attempts:0}}class A extends d.Mj{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,h.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw(0,v.Tl)(this);let d=this.getSessionName(a,c),e=await (0,h.N)(d);if(e){if(await this.reconcileExistingSession(d),await this.isToolLive(d,{confirm:!0}))return void w.info("codex-session-sessionname");w.warn("codex-session-relaunch",{sessionName:d})}(0,t.Fq)({worktreeId:a,cliToolId:r.c1,instanceId:c});try{e||(await (0,h.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,u.Uc)));let f=(0,t.wK)({target:{worktreeId:a,cliToolId:r.c1,instanceId:c},executablePath:this.command,worktreePath:b}),g=async()=>{(0,t.Fq)({worktreeId:a,cliToolId:r.c1,instanceId:c}),await (0,h.V1)(d,f,!0),await new Promise(a=>setTimeout(a,3e3))};await (0,h.V1)(d,f,!0),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(d,{relaunch:g,trustHooks:(0,s.dO)(b)}),w.info("started-codex-session:sessionname")}catch(b){let a=x(b);throw Error(`Failed to start Codex session: ${a}`)}}async waitForReady(a,b){let c=b?.trustHooks??!1,d=!1,e=!1,f=z(),g=function(a){let b=o(void 0);if(null!==b)return b;let c=o(((void 0)??process.env).CM_CODEX_UPDATE_DIALOG);return null!==c?c:"skip-until-next-version"}(),i=n[g],j=!1,m=!1,q=!1,r=30;try{for(let o=0;o<r;o++){try{let s=await (0,h.Xg)(a,50),t=(0,k.aJ)(s),v=(0,k.E6)(t);if(("hooks-review"===v||"hooks-list"===v||"hooks-detail"===v)&&await this.answerCodexHooksScreen(a,v,f,c)){await new Promise(a=>setTimeout(a,u.CV));continue}if((0,k.zZ)(t))return void w.info("codex-prompt-detected");if(j&&!m&&b?.relaunch&&null!==(0,l.GE)(t,this.livenessSpec())){m=!0,r=Math.max(r,o+1+30),e=!1,f.screen=null,f.attempts=0,q&&(q=!1,(0,p.lM)(y),w.info("codex-update-lock-released",{sessionName:a})),w.info("codex-relaunched-after-update",{sessionName:a,policy:g}),await b.relaunch();continue}let x=(0,k.Qh)(t);if("update"===x){if(j=!0,null===i){await new Promise(a=>setTimeout(a,1e3));continue}if(!d){let b=i;b!==n.update||(0,p.mf)(y)?b===n.update&&(q=!0):(b=n["skip-until-next-version"],w.warn("codex-update-dialog-yielded-to-running-update",{sessionName:a,policy:g,requestedKey:i,key:b})),await (0,h.V1)(a,b,!1),d=!0,b===n.update&&(r=Math.max(r,o+1+120)),w.info("codex-update-dialog-answered",{sessionName:a,policy:g,key:b}),await new Promise(a=>setTimeout(a,u.CV));continue}}if("press-enter"===x){await (0,h.ds)(a,"Enter"),w.info("dismissed-codex-notification"),await new Promise(a=>setTimeout(a,u.CV));continue}if("trust"===x&&!e){await (0,h.V1)(a,"1",!1),e=!0,w.info("auto-trusted-folder-for"),await new Promise(a=>setTimeout(a,u.CV));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}w.info("codex-prompt-detection")}finally{q&&(q=!1,(0,p.lM)(y),w.warn("codex-update-lock-released-unfinished",{sessionName:a}))}}async answerCodexHooksScreen(a,b,c,d){if(c.screen!==b&&(c.screen=b,c.attempts=0),c.attempts>=3)return w.warn("codex-hooks-screen-unresponsive",{sessionName:a,screen:b,trust:d}),!1;let e=++c.attempts;if("hooks-review"===b){let b=1===e?d?"2":"3":"1";return await (0,h.V1)(a,b,!1),w.info("codex-hooks-review-answered",{sessionName:a,key:b,attempt:e,trust:d}),!0}return d?(await (0,h.V1)(a,"t",!1,{literal:!0}),w.info("codex-hooks-screen-trusted",{sessionName:a,screen:b,attempt:e})):(await (0,h.ds)(a,"Escape"),w.info("codex-hooks-screen-escaped",{sessionName:a,screen:b,attempt:e})),!0}async waitForPrompt(a){let b=Date.now(),c=z(),d=null;for(;Date.now()-b<15e3;){try{let b=await (0,h.Xg)(a,50),e=(0,k.aJ)(b),f=(0,k.E6)(e);if("hooks-review"===f||"hooks-list"===f||"hooks-detail"===f){if(null===d){let b=await (0,h.nS)(a);d=null!==b&&(0,s.dO)(b)}await this.answerCodexHooksScreen(a,f,c,d)}else if((0,k.zZ)(e))return}catch{}await new Promise(a=>setTimeout(a,500))}throw w.info("codex-prompt-not"),Error("Codex prompt not ready: timed out waiting for the input prompt before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,h.N)(d))throw Error(`Codex session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await this.waitForPrompt(d),await (0,i.FW)({sessionName:d,message:b,cliToolId:"codex",composer:this.describeComposer()}),(0,j.gm)(d),w.info("sent-message-to-codex-session:sessionnam")}catch(b){let a=x(b);throw Error(`Failed to send message to Codex: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,h.N)(c)&&(await (0,h.ds)(c,"C-d"),await new Promise(a=>setTimeout(a,u.Zf))),await (0,h.fY)(c)&&w.info("stopped-codex-session:sessionname")}catch(a){throw w.error("session:stop-failed",{error:x(a)}),a}}constructor(...a){super(...a),this.id="codex",this.name="Codex CLI",this.command="codex"}}var B=c(23365);let C=(0,q.h)("cli-tools/gemini");function D(a){return a instanceof Error?a.message:String(a)}class E extends d.Mj{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,h.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw(0,v.Tl)(this);let d=this.getSessionName(a,c),e=await (0,h.N)(d);if(e){if(await this.reconcileExistingSession(d),await this.isToolLive(d,{confirm:!0}))return void C.info("gemini-session-sessionname");C.warn("gemini-session-relaunch",{sessionName:d})}(0,t.Fq)({worktreeId:a,cliToolId:r.o,instanceId:c});try{e||(await (0,h.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,u.Uc)));let f=(0,t.wK)({target:{worktreeId:a,cliToolId:r.o,instanceId:c},executablePath:this.command,worktreePath:b});await (0,h.V1)(d,f,!0),await new Promise(a=>setTimeout(a,6e3)),await this.waitForReady(d),C.info("started-gemini-session:sessionname")}catch(b){let a=D(b);throw Error(`Failed to start Gemini session: ${a}`)}}async waitForReady(a){let b=!1;for(let c=0;c<30;c++){try{let c=await (0,h.Xg)(a,B.H),d=(0,k.aJ)(c);if(k.wN.test(d))return void C.info("gemini-prompt-detected");!b&&d.includes("Do you trust this folder?")&&(await (0,h.ds)(a,"Enter"),b=!0,C.info("auto-trusted-folder-for"))}catch{}await new Promise(a=>setTimeout(a,1e3))}C.info("gemini-prompt-detection")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,h.Xg)(a,B.H),c=(0,k.aJ)(b);if(k.wN.test(c))return}catch{}await new Promise(a=>setTimeout(a,500))}C.info("gemini-prompt-not")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,h.N)(d))throw Error(`Gemini session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await this.waitForPrompt(d),await (0,i.FW)({sessionName:d,message:b,cliToolId:"gemini",composer:this.describeComposer()}),(0,j.gm)(d),C.info("sent-message-to-gemini-session:sessionna")}catch(b){let a=D(b);throw Error(`Failed to send message to Gemini: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,h.N)(c)&&(await (0,h.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,u.Is)),await (0,h.V1)(c,"/quit",!0),await new Promise(a=>setTimeout(a,u.Zf))),await (0,h.fY)(c)&&C.info("stopped-gemini-session:sessionname")}catch(a){throw C.error("session:stop-failed",{error:D(a)}),a}}constructor(...a){super(...a),this.id="gemini",this.name="Gemini CLI",this.command="gemini"}}var F=c(15194),G=c(88807),H=c(56791);let I=(0,q.h)("cli-tools/vibe-local");function J(a){return a instanceof Error?a.message:String(a)}class K extends d.Mj{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,h.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw(0,v.Tl)(this);let d=this.getSessionName(a,c),e=await (0,h.N)(d);if(e){if(await this.reconcileExistingSession(d),await this.isToolLive(d,{confirm:!0}))return void I.info("vibe-local-session");I.warn("vibe-local-session-relaunch",{sessionName:d})}(0,t.Fq)({worktreeId:a,cliToolId:this.id,instanceId:c});try{e||(await (0,h.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,u.Uc)));let c="vibe-local -y";try{let b=(0,G.getDbInstance)(),d=(0,H.getWorktreeById)(b,a);d?.vibeLocalModel&&F.QP.test(d.vibeLocalModel)&&(c+=` -m ${d.vibeLocalModel}`);let e=d?.vibeLocalContextWindow;(0,F.FV)(e)&&(c+=` --context-window ${Number(e)}`)}catch{}await (0,h.V1)(d,c,!0),await new Promise(a=>setTimeout(a,5e3)),I.info("started-vibe-local-session:sessionname")}catch(b){let a=J(b);throw Error(`Failed to start Vibe Local session: ${a}`)}}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,h.N)(d))throw Error(`Vibe Local session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await (0,i.FW)({sessionName:d,message:b,cliToolId:"vibe-local",composer:this.describeComposer(),interEnterWaitMs:u.PY}),(0,j.gm)(d),I.info("sent-message-to-vibe-local-session:sessi")}catch(b){let a=J(b);throw Error(`Failed to send message to Vibe Local: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,h.N)(c)&&(await (0,h.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,u.Is)),await (0,h.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,u.Zf))),await (0,h.fY)(c)&&I.info("stopped-vibe-local-session:sessionname")}catch(a){throw I.error("session:stop-failed",{error:J(a)}),a}}constructor(...a){super(...a),this.id="vibe-local",this.name="Vibe Local",this.command="vibe-local"}}var L=c(41466),M=c(81776),N=c(56263),O=c(21758),P=c(54633),Q=c(77093);let R=(0,q.h)("cli-tools/copilot"),S=new Set(["model","agent","theme","permissions","skills","mcp","settings","statusline","subagents","resume","session"]),T=/^[>❯](?:\s|$)/;class U extends d.Mj{async isInstalled(){return await (0,M.B0)()!==null}launchExecutable(a){return"path"===a.source?this.command:O.nL}async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,h.N)(c)}async launchSession(a,b,c){let d=await (0,M.B0)();if(!d)throw(0,v.Tl)(this);let e=this.getSessionName(a,c),f=await (0,h.N)(e);if(f){if(await this.reconcileExistingSession(e),await this.isToolLive(e,{confirm:!0}))return void R.info("copilot-session-exists");R.warn("copilot-session-relaunch",{sessionName:e})}(0,t.Fq)({worktreeId:a,cliToolId:P.V,instanceId:c});try{f||(await (0,h.jw)({sessionName:e,workingDirectory:b}),await new Promise(a=>setTimeout(a,u.Uc)));let g=(0,t.wK)({target:{worktreeId:a,cliToolId:P.V,instanceId:c},executablePath:this.launchExecutable(d),worktreePath:b});await (0,h.V1)(e,g,!0),await this.waitForReady(e),R.info("started-copilot-session",{executableSource:d.source,version:d.version})}catch(b){let a=(0,Q.u1)(b);throw Error(`Failed to start Copilot session: ${a}`)}}async answerFolderTrustDialog(a,b){return!!(0,k.Rx)(b)&&(await (0,h.V1)(a,k.oD,!1),(0,j.gm)(a),R.info("copilot-folder-trust-answered"),!0)}isComposerDrawn(a){let b=a.split("\n");for(let a=1;a<b.length-1;a++)if(T.test(b[a])&&k.A.test(b[a-1].trimEnd())&&k.A.test(b[a+1].trimEnd()))return!0;return!1}async waitForReady(a){let b=!1;for(let c=0;c<30;c++){try{let c=await (0,h.Xg)(a,50),d=(0,k.aJ)(c);if(this.isComposerDrawn(d))return void R.info("copilot-prompt-detected");!b&&await this.answerFolderTrustDialog(a,d)&&(b=!0)}catch{}await new Promise(a=>setTimeout(a,1e3))}R.info("copilot-prompt-detection-timeout")}async waitForPrompt(a,b=15e3){let c=Date.now(),d=!1;for(;Date.now()-c<b;){try{let b=await (0,h.Xg)(a,50),c=(0,k.aJ)(b);if(k.Du.test(c))return;!d&&await this.answerFolderTrustDialog(a,c)&&(d=!0)}catch{}await new Promise(a=>setTimeout(a,500))}R.info("copilot-prompt-not-detected")}extractSlashCommand(a){let b=a.trim();if(!b.startsWith("/"))return null;let c=b.match(/^\/(\S+)/);return c?c[1]:null}async waitForSelectionList(a){let b=Date.now();for(;Date.now()-b<5e3;){await new Promise(a=>setTimeout(a,300));try{let b=await (0,h.Xg)(a,50),c=(0,k.aJ)(b);if((0,k.gT)(c.split("\n")))return R.info("copilot-selection-list-detected"),!0}catch{}}return R.info("copilot-selection-list-not-detected-timeout"),!1}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,h.N)(d))throw Error(`Copilot session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await this.waitForPrompt(d);let a=this.extractSlashCommand(b);if(a&&S.has(a)){await (0,h.V1)(d,b,!0),await this.waitForSelectionList(d),(0,j.gm)(d),R.info("sent-selection-list-command-to-copilot",{command:a});return}await (0,i.FW)({sessionName:d,message:b,cliToolId:"copilot",composer:this.describeComposer(),textInputWaitMs:N.L1,verifyDelayMs:N.wp}),(0,j.gm)(d),R.info("sent-message-to-copilot-session")}catch(b){let a=(0,Q.u1)(b);throw Error(`Failed to send message to Copilot: ${a}`)}}async sendModelCommand(a,b,c){let d=this.getSessionName(a,c);if(!await (0,h.N)(d))throw Error(`Copilot session ${d} does not exist. Start the session first.`);try{await (0,h.V1)(d,`/model ${b}`,!0),await this.waitForPrompt(d,N.pL),(0,j.gm)(d),R.info("copilot-model-switched",{model:b})}catch(c){let a=(0,Q.u1)(c);throw Error(`Failed to switch Copilot model to ${b}: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,h.N)(c)&&(await (0,h.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,u.Is)),await (0,h.V1)(c,"/exit",!1),await new Promise(a=>setTimeout(a,N.L1)),await (0,h.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,u.Rk))),await (0,h.fY)(c)&&R.info("stopped-copilot-session")}catch(a){throw R.error("session:stop-failed",{error:(0,Q.u1)(a)}),a}}constructor(...a){super(...a),this.id="copilot",this.name="Copilot",this.command="copilot"}}var V=c(74258);let W=(0,q.h)("cli-tools/antigravity");function X(a){return a instanceof Error?a.message:String(a)}let Y=/\?\s+for\s+shortcuts/,Z=/Do you trust the contents of this project\?/;function $(a){let b=(0,V.z)(a);if(k.kT.test(b.lastLines)||Z.test(b.lastLines))return!1;let c=function(a){let b=a.map(a=>a.trim()),c=a=>a>=0&&k.kn.test(b[a]),d=a=>{let c=a;for(;c>=0&&""===b[c];)c--;return c},e=b.length-1,f="";return(e>=0&&!c(e)&&(f=b[e],e=d(e-1)),!c(e)||(e=d(e-1))<0||!k.lE.test(b[e]))?null:c(d(e-1))?f:null}(b.contentLines);return null!==c&&(!!Y.test(c)||!(0,k.ut)("antigravity",b.lastLines))}class _ extends d.Mj{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,h.N)(c)}async launchSession(a,b,c,d){if(!await this.isInstalled())throw(0,v.Tl)(this);let e=this.getSessionName(a,c),f=await (0,h.N)(e);if(f){if(await this.reconcileExistingSession(e),await this.isToolLive(e,{confirm:!0}))return void W.info("antigravity-session-exists");W.warn("antigravity-session-relaunch",{sessionName:e})}(0,t.Fq)({worktreeId:a,cliToolId:r.F0,instanceId:c});try{f||(await (0,h.jw)({sessionName:e,workingDirectory:b}),await new Promise(a=>setTimeout(a,u.Uc)));let g=(0,t.wK)({target:{worktreeId:a,cliToolId:r.F0,instanceId:c},executablePath:this.command,worktreePath:b}),i=d?`${g} --model '${d.replace(/'/g,"'\\''")}'`:g;await (0,h.V1)(e,i,!0),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(e),W.info("started-antigravity-session")}catch(b){let a=X(b);throw Error(`Failed to start Antigravity session: ${a}`)}}async waitForReady(a){let b=!1;for(let c=0;c<30;c++){try{let c=await (0,h.Xg)(a,50),d=(0,k.aJ)(c);if($(d))return void W.info("antigravity-prompt-detected");if(!b&&Z.test(d)){await (0,h.ds)(a,"Enter"),b=!0,W.info("auto-trusted-folder-for-antigravity"),await new Promise(a=>setTimeout(a,500));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}W.info("antigravity-prompt-detection-timeout")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,h.Xg)(a,50),c=(0,k.aJ)(b);if($(c))return}catch{}await new Promise(a=>setTimeout(a,500))}throw W.info("antigravity-prompt-not-ready"),Error("Antigravity prompt not ready: timed out waiting for the input prompt before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,h.N)(d))throw Error(`Antigravity session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await this.waitForPrompt(d),await (0,i.FW)({sessionName:d,message:b,cliToolId:"antigravity",composer:this.describeComposer()}),(0,j.gm)(d),W.info("sent-message-to-antigravity-session")}catch(b){let a=X(b);throw Error(`Failed to send message to Antigravity: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,h.N)(c)&&(await (0,h.ds)(c,"C-d"),await new Promise(a=>setTimeout(a,u.Zf)));let a=await (0,h.fY)(c);(0,j.gm)(c),a&&W.info("stopped-antigravity-session")}catch(a){throw W.error("session:stop-failed",{error:X(a)}),a}}constructor(...a){super(...a),this.id="antigravity",this.name="Antigravity CLI",this.command="agy"}}var aa=c(28862);let ab=(0,q.h)("cli-tools/command-code"),ac=["--trust","--skip-onboarding","--no-auto-update"];function ad(a){let b=a.split("\n");return!(0>(0,k.I$)(b))&&!k.k0.test((0,k.aJ)(a))}class ae extends d.Mj{navigationKeys(){return{keys:e.pU,leaderKey:null}}async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,h.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw(0,v.Tl)(this);let d=this.getSessionName(a,c),e=await (0,h.N)(d);if(e){if(await this.reconcileExistingSession(d),await this.isToolLive(d,{confirm:!0}))return void ab.info("command-code-session-exists");ab.warn("command-code-session-relaunch",{sessionName:d})}(0,t.Fq)({worktreeId:a,cliToolId:aa.k,instanceId:c});try{var f;e||(await (0,h.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,u.Uc))),await (0,h.V1)(d,(f={target:{worktreeId:a,cliToolId:aa.k,instanceId:c},executablePath:this.command,worktreePath:b},[(0,t.wK)(f),...ac].join(" ")),!0),await new Promise(a=>setTimeout(a,u.yO)),await this.waitForReady(d),ab.info("started-command-code-session")}catch(a){throw Error(`Failed to start Command Code session: ${(0,Q.u1)(a)}`)}}async waitForReady(a){for(let b=0;b<30;b++){try{let b=await (0,h.Xg)(a,50);if(ad(b))return void ab.info("command-code-prompt-detected")}catch{}await new Promise(a=>setTimeout(a,1e3))}ab.info("command-code-prompt-detection-timeout")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,h.Xg)(a,50);if(ad(b))return}catch{}await new Promise(a=>setTimeout(a,500))}throw ab.info("command-code-prompt-not-ready"),Error("Command Code prompt not ready: timed out waiting for the composer before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,h.N)(d))throw Error(`Command Code session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await this.waitForPrompt(d),await (0,i.FW)({sessionName:d,message:b,cliToolId:"command-code",composer:this.describeComposer()}),(0,j.gm)(d),ab.info("sent-message-to-command-code-session")}catch(a){throw Error(`Failed to send message to Command Code: ${(0,Q.u1)(a)}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,h.N)(c)&&(await (0,h.V1)(c,"/exit",!1),await new Promise(a=>setTimeout(a,u.pL)),await (0,h.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,u.Zf)));let a=await (0,h.fY)(c);(0,j.gm)(c),a&&ab.info("stopped-command-code-session")}catch(a){throw ab.error("session:stop-failed",{error:(0,Q.u1)(a)}),a}}constructor(...a){super(...a),this.id="command-code",this.name="Command Code CLI",this.command="commandcode"}}class af{constructor(){this.tools=new Map,this.tools.set("claude",new g),this.tools.set("codex",new A),this.tools.set("gemini",new E),this.tools.set("vibe-local",new K),this.tools.set("opencode",new L.Ui),this.tools.set("copilot",new U),this.tools.set("antigravity",new _),this.tools.set("command-code",new ae)}static getInstance(){return af.instance||(af.instance=new af),af.instance}getTool(a){let b=this.tools.get(a);if(!b)throw Error(`CLI tool '${a}' not found`);return b}getAllTools(){return Array.from(this.tools.values())}async getToolInfo(a){let b=this.getTool(a),c=await b.isInstalled();return{id:b.id,name:b.name,command:b.command,installed:c}}async getAllToolsInfo(){return Promise.all(this.getAllTools().map(async a=>{let b=await a.isInstalled();return{id:a.id,name:a.name,command:a.command,installed:b}}))}async getInstalledTools(){return(await this.getAllToolsInfo()).filter(a=>a.installed)}async stopPollers(a,b,d){let{stopPolling:e}=await Promise.all([c.e(1356),c.e(1503),c.e(1634),c.e(1191),c.e(1719),c.e(2119),c.e(2445),c.e(6337),c.e(8728),c.e(3323),c.e(8918),c.e(650),c.e(6677),c.e(5220)]).then(c.bind(c,95220));e(a,b,d)}}},56263:(a,b,c)=>{c.d(b,{L1:()=>e,MJ:()=>j,Rf:()=>f,ky:()=>g,lM:()=>i,pL:()=>h,wp:()=>d,zt:()=>k});let d=200,e=100,f=1e5,g="[... truncated ...]",h=3e4,i=/^[a-zA-Z0-9][a-zA-Z0-9\-._/:]*$/,j=128,k="Install with: brew install copilot-cli (macOS) or npm i -g @github/copilot"},68652:(a,b,c)=>{c.d(b,{N:()=>g});let d=/Esc\s+to\s+cancel\s*[·•]\s*Tab\s+to\s+amend/i,e=/Enter\s+to\s+select\b.*\bnavigate\b/i,f=/^\s*[>❯]\s*(?:\d{1,2}[.)])?|esc\s+to\s+interrupt|[✻✽✶✢✳⦿◉●⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏]\s+.+…/i;function g(a){if(""===a)return"";let b=a.split("\n"),c=-1;for(let a=b.length-1;a>=0;a--){var g;if(g=b[a],d.test(g)||e.test(g)){c=a;break}}let h=b;return c>=0&&(h=b.slice(c+1).some(a=>f.test(a))?b.slice(c+1):b.slice(0,c+1)),(function(a){let b=[],c=!1;for(let d of a){let a=""===d.trim();a&&c||(b.push(d),c=a)}for(;b.length>0&&""===b[b.length-1].trim();)b.pop();return b})(h).join("\n")}},70849:(a,b,c)=>{c.d(b,{LQ:()=>k,SW:()=>l});var d=c(72626),e=c(84574),f=c(48083),g=c(77634),h=c(27939);let i=(0,d.h)("lib/session/opencode-session-recall");async function j(a,b){let c=new Set,d=await (0,g.GP)(a,b);for(let b=0;b<3;b+=1){if(null===d)return null;if(null===d.parentId||c.has(d.parentId))break;c.add(d.parentId),i.debug("opencode-session-parent-hop",{from:d.id,to:d.parentId}),d=await (0,g.GP)(a,d.parentId)}return d}async function k(a){let b=a.instanceId??a.cliToolId,c=(0,e.hC)(a);if(null===c)return{captured:!1,skipped:"no-port"};let d=(0,f.getLastAgentEvent)(a.worktreeId,"opencode",a.instanceId)?.sessionId;if(!(0,h.jp)(d))return{captured:!1,skipped:"no-session-observed"};let g=await j(c,d);if(null===g)return{captured:!1,skipped:"session-unreadable"};if(null===g.directory)return{captured:!1,skipped:"no-directory"};let k=(0,e.U9)(a);return null!==k&&k!==g.directory?(i.warn("opencode-session-capture-directory-mismatch",{worktreeId:a.worktreeId,instanceId:b,expected:k,reported:g.directory}),{captured:!1,skipped:"directory-mismatch"}):(0,h.F_)(a,{sessionId:g.id,title:g.title,worktreePath:g.directory})?(i.info("opencode-session-captured",{worktreeId:a.worktreeId,instanceId:b,sessionId:g.id,viaParentOf:g.id===d?null:d}),{captured:!0,memory:{sessionId:g.id,title:g.title,worktreePath:g.directory,updatedAt:Date.now()}}):{captured:!1,skipped:"not-persisted"}}async function l(a){let b=(0,e.hC)(a),c=(0,f.getLastAgentEvent)(a.worktreeId,"opencode",a.instanceId)?.sessionId;if(null!==b&&(0,h.jp)(c)){let a=await j(b,c);if(null!==a)return a.id}return(0,h.KA)(a)?.sessionId??null}},72272:(a,b,c)=>{c.d(b,{t:()=>i});var d=c(72626),e=c(50474),f=c(25071),g=c(17287);let h=(0,d.h)("lib/hooks/permission-adjudication");async function i(a,b,d,j,k="event"){let l=b.instanceId??b.cliToolId,m={worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l},{resolvePermissionRequest:n}=await c.e(3241).then(c.bind(c,43241)),o=n(m,j),p="allow"===o.behavior?{kind:"allowOnce"}:{kind:"abstain"};if("abstain"===p.kind){let c=(0,e.y_)(a);c.safe||h.warn("permission-request-abstain-blocks-agent",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l,toolName:j?.toolName??null,decisionId:d.id,reason:o.reason,consequence:c.summary,blocksForMs:c.blocksForMs})}let{delivery:q}=await (0,f.GW)(a,b,d,p),r=q?.delivered===!0,s=r&&a.capabilities.permissionReplyReleasesPrompt;return(0,g.nL)(b.worktreeId,b.cliToolId,b.instanceId,{decisionId:d.id,toolName:j?.toolName??null,behavior:"allow"===o.behavior?"allow":null,reason:o.reason,delivered:r,releasedPrompt:s,trigger:k,at:d.askedAt}),h.info("permission-decision-adjudicated",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l,decisionId:d.id,toolName:j?.toolName??null,behavior:o.behavior,reason:o.reason,suppressedBy:o.suppressedBy,delivered:r,settled:s,trigger:k}),{decisionId:d.id,behavior:"allow"===o.behavior?"allow":null,reason:o.reason,delivered:r,settled:s}}},74258:(a,b,c)=>{c.d(b,{h:()=>g,z:()=>h});var d=c(85164),e=c(68652),f=c(46423);let g=15;function h(a){let b=(0,e.N)((0,d.aJ)(a)),c=b.split("\n"),h=c.length-1;for(;h>=0&&""===c[h].trim();)h--;let i=c.slice(0,h+1);return{raw:a,clean:b,lines:c,contentLines:i,lastLines:i.slice(-g).join("\n"),thinkingLines:i.slice(-f.$).join("\n")}}},77634:(a,b,c)=>{c.d(b,{GP:()=>l,Hv:()=>h,eJ:()=>n,mf:()=>o,y4:()=>m,yg:()=>p});var d=c(72626),e=c(49791),f=c(27939);let g=(0,d.h)("lib/session/opencode-session-api"),h="session_new";function i(a,b){let c=a[b];return"string"==typeof c&&c.length>0?c:null}async function j(a,b){try{let c=await fetch(a,{...b,redirect:e.uS,signal:AbortSignal.timeout(e.T0)});if(!c.ok)return null;if(!function(a){let b=a.headers?.get?.("content-type");return"string"==typeof b&&b.split(";",1)[0]?.trim().toLowerCase()===e._t}(c))return g.debug("opencode-session-request-content-type",{url:a,contentType:c.headers?.get?.("content-type")??null}),null;return await c.json()}catch(b){return g.debug("opencode-session-request-failed",{url:a,error:b instanceof Error?b.message:String(b)}),null}}function k(a){if(!("object"==typeof a&&null!==a&&!Array.isArray(a)))return null;let b=i(a,"id");if(!(0,f.jp)(b))return null;let c=i(a,"title");return{id:b,title:null===c?null:c.slice(0,f.Y2),directory:i(a,"directory"),parentId:i(a,"parentID")}}async function l(a,b){return(0,f.jp)(b)?k(await j(`${(0,e.M2)(a)}/session/${encodeURIComponent(b)}`)):null}async function m(a,b){return(0,f.jp)(b)?k(await j(`${(0,e.M2)(a)}/session/${encodeURIComponent(b)}/fork`,{method:"POST",headers:{"content-type":e._t},body:"{}"})):null}async function n(a){return!0===await j(`${(0,e.M2)(a)}/tui/open-sessions`,{method:"POST",headers:{"content-type":e._t},body:"{}"})}async function o(a,b){return!0===await j(`${(0,e.M2)(a)}/tui/execute-command`,{method:"POST",headers:{"content-type":e._t},body:JSON.stringify({command:b})})}async function p(a,b){return!!(0,f.jp)(b)&&!0===await j(`${(0,e.M2)(a)}/tui/select-session`,{method:"POST",headers:{"content-type":e._t},body:JSON.stringify({sessionID:b})})}},78099:(a,b,c)=>{c.d(b,{Tl:()=>g});var d=c(56263),e=c(2669);let f={claude:"Install with: npm install -g @anthropic-ai/claude-code",codex:"Install with: npm install -g @openai/codex",gemini:"Install with: npm install -g @google/gemini-cli",opencode:"Install with: npm install -g opencode-ai",copilot:d.zt,"command-code":"Install with: npm install -g command-code",antigravity:"Install the Antigravity CLI: https://antigravity.google/docs/cli/reference","vibe-local":"vibe-local is a local script rather than a published package: put your own `vibe-local` executable on PATH."};function g(a){var b;return new e.lU(a.name,(b=a,`${b.name} (${b.command}) is not installed or not in PATH. ${f[b.id]}`))}},81886:(a,b,c)=>{c.d(b,{Km:()=>A,Mj:()=>z});var d=c(79646),e=c(28354),f=c(40964),g=c(79892),h=c(56717),i=c(23365),j=c(93949),k=c(91536),l=c(50945),m=c(96287),n=c(51297),o=c(87447),p=c(45567),q=c(72626),r=c(8953),s=c(20610),t=c(16983);let u=(0,e.promisify)(d.exec),v=(0,q.h)("cli-tools/base"),w=RegExp(`${p.ZM}=(?:'([^']*)'|"([^"]*)"|(\\S+))`,"g"),x=new Set,y=new Set;class z{async isInstalled(){try{return await u(`which ${this.command}`,{timeout:5e3}),!0}catch{return!1}}getSessionName(a,b){return(0,f.m)(this.id,a,b)}async startSession(a,b,c,d){try{await this.launchSession(a,b,c,d)}catch(b){throw this.takeAdoptionMark(a,c),(0,m.Zl)({worktreeId:a,cliToolId:this.id,instanceId:c,toolName:this.name},b),b}let e=this.takeAdoptionMark(a,c);null!==e&&await this.warnIfHookUrlIsStale(a,e,c)}async reconcileExistingSession(a,b){x.add(a),await (0,g.zT)(a,b)}takeAdoptionMark(a,b){try{let c=this.getSessionName(a,b);return x.delete(c)?c:null}catch{return null}}async warnIfHookUrlIsStale(a,b,c){if(!y.has(b))try{let d=await (0,g.Xg)(b,{startLine:-t.eu});y.add(b);let e=function(a){let b=null;for(let c of(0,n.aJ)(a).matchAll(w)){let a=c[1]??c[2]??c[3]??null;a&&(b=a)}return b}(d);if(null===e)return;let f=function(a){try{let b=new URL(a);if(""!==b.port)return Number(b.port);return"https:"===b.protocol?443:80}catch{return null}}(e),h=(0,o.D0)();if(null===f||f===h)return;v.warn("session:hook-url-stale",{cliToolId:this.id,sessionName:b,sessionPort:f,serverPort:h}),(0,m.ED)({worktreeId:a,cliToolId:this.id,instanceId:c,toolName:this.name,sessionPort:f,serverPort:h})}catch(b){v.debug("session:hook-url-probe-failed",{cliToolId:this.id,worktreeId:a,error:b instanceof Error?b.message:String(b)})}}async warnIfRunningSessionHookUrlIsStale(a,b){let c;try{c=this.getSessionName(a,b)}catch{return}await this.warnIfHookUrlIsStale(a,c,b)}async interrupt(a,b){let c=this.getSessionName(a,b);await (0,g.ds)(c,"Escape")}describeComposer(){return(0,h.gc)(this.id)}gracefulExitSequence(){return(0,j.JV)(this.id)}captureSpec(){return(0,i.y)(this.id)}livenessSpec(){return(0,k.H7)(this.id)}async isToolLive(a,b){let c=this.livenessSpec(),d=await (0,l.Q)(a,c);if(d.alive)return!0;if(!b?.confirm)return!1;await new Promise(a=>setTimeout(a,s.kZ));let e=await (0,l.Q)(a,c);return e.alive?(v.info("session:liveness-confirm-recovered",{cliToolId:this.id,firstReason:d.reason}),!0):(v.warn("session:tool-exited",{cliToolId:this.id,reason:e.reason}),!1)}async relaunchIfToolExited(a,b){let c=this.getSessionName(a,b);if(await this.isToolLive(c))return;let d=await (0,g.nS)(c);if(null===d)return void v.warn("session:relaunch-skipped-no-path",{cliToolId:this.id,worktreeId:a});v.info("session:relaunch-before-send",{cliToolId:this.id,sessionName:c}),await this.startSession(a,d,b)}navigationKeys(){return{keys:r.qD,leaderKey:null}}}function A(a,b,c){a instanceof z&&a.warnIfRunningSessionHookUrlIsStale(b,c).catch(()=>{})}},93949:(a,b,c)=>{c.d(b,{JV:()=>i,rY:()=>k});var d=c(56263),e=c(20610),f=c(86069);let g={keys:[(0,f.IS)("C-d")],exitWaitMs:e.Zf,ownsLoopbackServer:!1},h={claude:g,codex:g,antigravity:g,gemini:{keys:[(0,f.IS)("C-c",e.Is),(0,f.iF)(`/quit\r`,void 0)],exitWaitMs:e.Zf,ownsLoopbackServer:!1},"vibe-local":{keys:[(0,f.IS)("C-c",e.Is),(0,f.IS)("C-c")],exitWaitMs:e.Zf,ownsLoopbackServer:!1},copilot:{keys:[(0,f.IS)("C-c",e.Is),(0,f.iF)("/exit",d.L1),(0,f.IS)("Enter")],exitWaitMs:e.Rk,ownsLoopbackServer:!1},"command-code":{keys:[(0,f.iF)("/exit",e.pL),(0,f.IS)("Enter")],exitWaitMs:e.Zf,ownsLoopbackServer:!1},opencode:{keys:[(0,f.iF)("/exit",e.pL),(0,f.IS)("Enter")],exitWaitMs:e.KI,ownsLoopbackServer:!0}};function i(a){return h[a]??g}let j=a=>new Promise(b=>setTimeout(b,a));async function k(a){let b=Math.max(1,a.attempts??1),c=a.intervalMs??0,d=a.sleep??j,e=!0;for(let f=0;f<b&&(e=await a.sessionAlive());f+=1)f<b-1&&c>0&&await d(c);if(e)return{ok:!1,reason:"graceful_exit_timeout"};let f=a.portAnswering;if(!f)return{ok:!0};let g=!0;for(let a=0;a<b&&(g=await f());a+=1)a<b-1&&c>0&&await d(c);return g?{ok:!1,reason:"port_orphaned"}:{ok:!0}}},96287:(a,b,c)=>{c.d(b,{$k:()=>h,ED:()=>g,VI:()=>i,Zl:()=>e});var d=c(78099);function e(a,b){Promise.all([c.e(1356),c.e(1191),c.e(6337)]).then(c.bind(c,81099)).then(({notifySessionStartFailurePush:c})=>c({...a,error:b})).catch(()=>{})}let f=new Set;function g(a){let b=[a.worktreeId,a.instanceId??a.cliToolId,a.sessionPort,a.serverPort].join(":");f.has(b)||(f.add(b),Promise.all([c.e(1356),c.e(1191),c.e(6337)]).then(c.bind(c,81099)).then(({notifyStaleHookUrlPush:b})=>b(a)).catch(()=>{}))}async function h(a,b){if(await a.isInstalled())return;let c=(0,d.Tl)(a);throw e({worktreeId:b.worktreeId,cliToolId:a.id,instanceId:b.instanceId,toolName:a.name,subject:b.subject},c),c}function i(a,b){Promise.resolve().then(c.bind(c,43234)).then(({CLIToolManager:c})=>{let f=c.getInstance().getTool(a);e({worktreeId:b.worktreeId,cliToolId:a,instanceId:b.instanceId,toolName:f.name,subject:b.subject},(0,d.Tl)(f))}).catch(()=>{})}}};
@@ -1 +1 @@
1
- "use strict";exports.id=2980,exports.ids=[2980],exports.modules={22980:a=>{a.exports=JSON.parse('{"boundary":{"errorOccurredIn":"An error occurred in {componentName}","errorOccurred":"An error occurred"},"chunkReload":{"title":"Updating to the latest version","description":"A newer version of CommandMate is available. Reloading to get the latest update…"},"unexpected":{"title":"Something went wrong","description":"An unexpected error occurred. Try again, or reload the page."},"fileOps":{"failedToCreateFile":"Failed to create file","failedToCreateDirectory":"Failed to create directory","failedToRename":"Failed to rename","failedToDelete":"Failed to delete","failedToMove":"Failed to move"},"terminal":{"displayError":"Terminal display error","outputError":"An error occurred while displaying terminal output"},"history":{"loadError":"Message history loading error","displayError":"An error occurred while displaying history"},"prompt":{"responseError":"Prompt response error","choiceDisplayError":"An error occurred while displaying choices"},"connection":{"error":"Connection error","serverError":"A problem occurred connecting to the server"},"fileTooLarge":{"editableLimit":"Editable file size limit ({limit}MB) exceeded","viewerLimit":"Viewer-only file size limit exceeded"}}')}};
1
+ "use strict";exports.id=2980,exports.ids=[2980],exports.modules={22980:a=>{a.exports=JSON.parse('{"boundary":{"errorOccurredIn":"An error occurred in {componentName}","errorOccurred":"An error occurred"},"chunkReload":{"title":"Updating to the latest version","description":"A newer version of CommandMate is available. Reloading to get the latest update…"},"chunkOffline":{"title":"You\'re offline","description":"Part of the page could not be loaded because the device is off the network. It will be retried automatically as soon as the connection is back.","waiting":"Waiting for the connection to come back…"},"unexpected":{"title":"Something went wrong","description":"An unexpected error occurred. Try again, or reload the page."},"fileOps":{"failedToCreateFile":"Failed to create file","failedToCreateDirectory":"Failed to create directory","failedToRename":"Failed to rename","failedToDelete":"Failed to delete","failedToMove":"Failed to move"},"terminal":{"displayError":"Terminal display error","outputError":"An error occurred while displaying terminal output"},"history":{"loadError":"Message history loading error","displayError":"An error occurred while displaying history"},"prompt":{"responseError":"Prompt response error","choiceDisplayError":"An error occurred while displaying choices"},"connection":{"error":"Connection error","serverError":"A problem occurred connecting to the server"},"fileTooLarge":{"editableLimit":"Editable file size limit ({limit}MB) exceeded","viewerLimit":"Viewer-only file size limit exceeded"}}')}};
@@ -1,5 +1,5 @@
1
1
  "use strict";exports.id=3077,exports.ids=[3077],exports.modules={640:(a,b,c)=>{function d(a){return`[from ${a.alias} / ${a.worktreeId}]`}function e(a,b){let c=b.trim();return""===c?`${d(a)} (no reply body)`:`${d(a)} ${c}`}function f(a,b){let c=a.replace(/\s+/g," ").trim();return c.length<=b?c:`${c.slice(0,b-1)}…`}c.d(b,{Hr:()=>h,KA:()=>j,Nl:()=>l,z0:()=>e});let g={en:{waiting:"is waiting for a confirmation:",options:"Options:",more:"(+{n} more)"},ja:{waiting:"確認待ちです:",options:"選択肢:",more:"(他 {n} 件)"}};function h(a,b,c){let e=g[a],h=`${d(b)} ${e.waiting} ${f(c.question,200)}`;if(0===c.options.length)return h;let i=c.options.slice(0,9),j=c.options.length-i.length,k=i.map(a=>`${a.key}) ${f(a.label,60)}`).join(" "),l=j>0?` ${e.more.replace("{n}",String(j))}`:"";return`${h}
2
- ${e.options} ${k}${l}`}let i={en:"The reply you were waiting for did not arrive within {hours}h; the relay has expired.",ja:"待っていた返信が {hours} 時間以内に届かなかったため、委任は期限切れになりました。"};function j(a,b,c){let e=Math.max(1,Math.round(c/36e5));return`${d(b)} ${i[a].replace("{hours}",String(e))}`}let k={en:{requested:"Delegated to {alias}; waiting for the reply.",replied:"Reply from {alias}.",waiting:"{alias} is waiting for a confirmation.",expired:"The delegation to {alias} expired without a reply."},ja:{requested:"{alias} へ委任、返信待ち",replied:"{alias} から返信",waiting:"{alias} が確認待ち",expired:"{alias} への委任が返信のないまま期限切れ"}};function l(a,b,c){return k[a][b].replace("{alias}",c)}},49798:(a,b,c)=>{c.d(b,{S:()=>h,r:()=>i});var d=c(28274),e=c(73753),f=c(83530);let g=(0,c(72626).h)("relay-session-ref");function h(a,b){let c="claude",e=b.instanceId;try{c=(0,f.iK)(a,b.worktreeId,{instanceId:b.instanceId}).cliToolId;let g=(0,d.BN)(a,b.worktreeId,b.instanceId);g?.alias&&(e=g.alias)}catch(a){g.warn("relay-session-resolve-failed",{worktreeId:b.worktreeId,instanceId:b.instanceId,error:a instanceof Error?a.message:String(a)})}return{worktreeId:b.worktreeId,instanceId:b.instanceId,cliToolId:c,alias:e}}function i(a,b){try{return null!==(0,e.getWorktreeById)(a,b)}catch{return!1}}},67164:(a,b,c)=>{c.d(b,{_:()=>i});var d=c(52660),e=c(55233),f=c(49640),g=c(640);let h=(0,c(72626).h)("relay-system-line");function i(a,b,c,j,k,l=Date.now()){let m=`${d.RELAY_SYSTEM_REQUEST_ID_PREFIX}${b}:${c}`;try{if((0,d.findMessageByRequestId)(a,j.worktreeId,m))return!1;let i=(0,e.dV)(a),n=(0,d.createRelaySystemMessage)(a,{worktreeId:j.worktreeId,cliToolId:j.cliToolId,instanceId:j.instanceId,content:(0,g.Nl)(i,c,k.alias),relayId:b,kind:c,at:l});try{(0,f.broadcastMessage)("message",{worktreeId:j.worktreeId,message:{...n,cliToolId:j.cliToolId,instanceId:j.instanceId}})}catch(a){h.warn("relay-system-line-broadcast-failed",{relayId:b,kind:c,error:a instanceof Error?a.message:String(a)})}return!0}catch(a){return h.warn("relay-system-line-failed",{relayId:b,kind:c,error:a instanceof Error?a.message:String(a)}),!1}}},90787:(a,b,c)=>{c.d(b,{m_:()=>x,uJ:()=>r,Oz:()=>o,_7:()=>y,CR:()=>i,Ip:()=>j,GC:()=>u,M4:()=>m,s7:()=>w,pT:()=>n,ix:()=>l,uG:()=>q,Bf:()=>s,Cz:()=>v,UC:()=>t,be:()=>p});var d=c(55511);let e=["pending","prompt"],f=(0,c(72626).h)("relay-db"),g=`
2
+ ${e.options} ${k}${l}`}let i={en:"The reply you were waiting for did not arrive within {hours}h; the relay has expired.",ja:"待っていた返信が {hours} 時間以内に届かなかったため、委任は期限切れになりました。"};function j(a,b,c){let e=Math.max(1,Math.round(c/36e5));return`${d(b)} ${i[a].replace("{hours}",String(e))}`}let k={en:{requested:"Delegated to {alias}; waiting for the reply.",replied:"Reply from {alias}.",waiting:"{alias} is waiting for a confirmation.",expired:"The delegation to {alias} expired without a reply."},ja:{requested:"{alias} へ委任、返信待ち",replied:"{alias} から返信",waiting:"{alias} が確認待ち",expired:"{alias} への委任が返信のないまま期限切れ"}};function l(a,b,c){return k[a][b].replace("{alias}",c)}},49798:(a,b,c)=>{c.d(b,{S:()=>h,r:()=>i});var d=c(28274),e=c(73753),f=c(83530);let g=(0,c(72626).h)("relay-session-ref");function h(a,b){let c="claude",e=b.instanceId;try{c=(0,f.iK)(a,b.worktreeId,{instanceId:b.instanceId}).cliToolId;let g=(0,d.BN)(a,b.worktreeId,b.instanceId);g?.alias&&(e=g.alias)}catch(a){g.warn("relay-session-resolve-failed",{worktreeId:b.worktreeId,instanceId:b.instanceId,error:a instanceof Error?a.message:String(a)})}return{worktreeId:b.worktreeId,instanceId:b.instanceId,cliToolId:c,alias:e}}function i(a,b){try{return null!==(0,e.getWorktreeById)(a,b)}catch{return!1}}},67164:(a,b,c)=>{c.d(b,{_:()=>i});var d=c(52660),e=c(55233),f=c(43015),g=c(640);let h=(0,c(72626).h)("relay-system-line");function i(a,b,c,j,k,l=Date.now()){let m=`${d.RELAY_SYSTEM_REQUEST_ID_PREFIX}${b}:${c}`;try{if((0,d.findMessageByRequestId)(a,j.worktreeId,m))return!1;let i=(0,e.dV)(a),n=(0,d.createRelaySystemMessage)(a,{worktreeId:j.worktreeId,cliToolId:j.cliToolId,instanceId:j.instanceId,content:(0,g.Nl)(i,c,k.alias),relayId:b,kind:c,at:l});try{(0,f.broadcastMessage)("message",{worktreeId:j.worktreeId,message:{...n,cliToolId:j.cliToolId,instanceId:j.instanceId}})}catch(a){h.warn("relay-system-line-broadcast-failed",{relayId:b,kind:c,error:a instanceof Error?a.message:String(a)})}return!0}catch(a){return h.warn("relay-system-line-failed",{relayId:b,kind:c,error:a instanceof Error?a.message:String(a)}),!1}}},90787:(a,b,c)=>{c.d(b,{m_:()=>x,uJ:()=>r,Oz:()=>o,_7:()=>y,CR:()=>i,Ip:()=>j,GC:()=>u,M4:()=>m,s7:()=>w,pT:()=>n,ix:()=>l,uG:()=>q,Bf:()=>s,Cz:()=>v,UC:()=>t,be:()=>p});var d=c(55511);let e=["pending","prompt"],f=(0,c(72626).h)("relay-db"),g=`
3
3
  id, from_worktree_id, from_instance_id, to_worktree_id, to_instance_id,
4
4
  state, hops, sent_request_id, pending_kind, pending_body, prompt_signature,
5
5
  created_at, updated_at, expires_at, delivered_at
@@ -1 +1 @@
1
- "use strict";exports.id=3123,exports.ids=[3123],exports.modules={8849:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(23339).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},9212:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(23339).A)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]])},23123:(a,b,c)=>{c.d(b,{uN:()=>y,he:()=>p,$8:()=>t});var d=c(21124),e=c(38301),f=c(20481),g=c(71613),h=c(70584),i=c(24417),j=c(47089),k=c(8849),l=c(15737),m=c(17252),n=c(89907);function o(a){return!!a&&"object"==typeof a&&Array.isArray(a.defaultSelectedAgents)&&a.defaultSelectedAgents.length>0&&Array.isArray(a.available)&&a.available.length>0&&"number"==typeof a.minAgents&&"number"==typeof a.maxAgents}function p(){let a=(0,f.c)("common"),[b,c]=(0,e.useState)(null),[p,q]=(0,e.useState)([]),[r,s]=(0,e.useState)(!0),[t,u]=(0,e.useState)("idle"),[v,w]=(0,e.useState)(null);(0,e.useCallback)(async()=>{try{let a=await fetch(`${n.zk}?include=installed`);if(!a.ok)throw Error(String(a.status));let b=await a.json();if(!o(b))throw Error("unexpected body");c(b),q(b.defaultSelectedAgents),(0,n.IK)(b.defaultSelectedAgents)}catch{w(a("settings.defaultAgents.loadError"))}finally{s(!1)}},[a]);let x=(0,e.useCallback)(a=>{q(a),u("idle"),w(null)},[]),y=(0,e.useCallback)((a,b)=>{let c=a+b;if(c<0||c>=p.length)return;let d=[...p];[d[a],d[c]]=[d[c],d[a]],x(d)},[p,x]),z=(0,e.useCallback)(async b=>{u("saving"),w(null);try{let d=await fetch(n.zk,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({agents:b})}),e=await d.json().catch(()=>null);if(!d.ok||!o(e)){u("error"),w(e?.error??a("settings.defaultAgents.saveError"));return}c(a=>({...e,installed:a?.installed})),q(e.defaultSelectedAgents),(0,n.IK)(e.defaultSelectedAgents),u("saved")}catch{u("error"),w(a("settings.defaultAgents.saveError"))}},[a]);if(r)return(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),a("loadingPage")]})});if(!b)return(0,d.jsx)(l.Zp,{children:(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"default-agents-load-error",children:v??a("settings.defaultAgents.loadError")})});let A=b.installed??[],B=b.available.filter(a=>!p.includes(a)),C=p.length<b.minAgents,D=p.length>b.maxAgents,E=!C&&!D&&"saving"!==t,F=b=>A.includes(b)?(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded bg-success-subtle px-1.5 py-0.5 text-xs text-success-foreground","data-testid":`default-agents-installed-${b}`,children:[(0,d.jsx)(g.A,{className:"h-3 w-3","aria-hidden":"true"}),a("settings.defaultAgents.installed")]}):(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:a("settings.defaultAgents.notInstalled")});return(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"space-y-4","data-testid":"default-agents-settings",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:a("settings.defaultAgents.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultAgents.description")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultAgents.appliesToNew")})]}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"default-agents-selected",children:p.map((c,e)=>(0,d.jsxs)("li",{className:"flex items-center gap-2 rounded-md border border-border bg-surface px-3 py-2","data-testid":`default-agents-row-${c}`,children:[(0,d.jsx)("span",{className:"w-6 text-xs text-muted-foreground",children:e+1}),(0,d.jsx)("span",{className:"text-sm text-foreground",children:(0,m.oo)(c)}),0===e&&(0,d.jsx)("span",{className:"rounded bg-info-subtle px-1.5 py-0.5 text-xs text-info-foreground","data-testid":"default-agents-primary-badge",children:a("settings.defaultAgents.primary")}),(0,d.jsx)("span",{className:"ml-auto",children:F(c)}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>y(e,-1),disabled:0===e,"aria-label":a("settings.defaultAgents.moveUp"),"data-testid":`default-agents-up-${c}`,children:(0,d.jsx)(h.A,{className:"h-4 w-4","aria-hidden":"true"})}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>y(e,1),disabled:e===p.length-1,"aria-label":a("settings.defaultAgents.moveDown"),"data-testid":`default-agents-down-${c}`,children:(0,d.jsx)(i.A,{className:"h-4 w-4","aria-hidden":"true"})}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>x(p.filter(a=>a!==c)),disabled:p.length<=b.minAgents,"aria-label":a("settings.defaultAgents.remove"),"data-testid":`default-agents-remove-${c}`,children:(0,d.jsx)(j.A,{className:"h-4 w-4","aria-hidden":"true"})})]},c))}),B.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-2 text-xs text-muted-foreground",children:a("settings.defaultAgents.addLabel")}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"default-agents-available",children:B.map(c=>(0,d.jsxs)("li",{className:"flex items-center gap-2 rounded-md border border-border px-3 py-2",children:[(0,d.jsx)("span",{className:"text-sm text-foreground",children:(0,m.oo)(c)}),(0,d.jsx)("span",{className:"ml-auto",children:F(c)}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>x([...p,c]),disabled:p.length>=b.maxAgents,"aria-label":a("settings.defaultAgents.add"),"data-testid":`default-agents-add-${c}`,children:(0,d.jsx)(k.A,{className:"h-4 w-4","aria-hidden":"true"})})]},c))})]}),(C||D)&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-agents-range-error",children:a("settings.defaultAgents.range",{min:b.minAgents,max:b.maxAgents})}),v&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-agents-error",children:v}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(l.$n,{size:"sm",onClick:()=>void z(p),disabled:!E,"data-testid":"default-agents-save",children:"saving"===t?a("settings.defaultAgents.saving"):a("settings.defaultAgents.save")}),(0,d.jsx)(l.$n,{size:"sm",variant:"ghost",onClick:()=>void z(null),disabled:!b.configured||"saving"===t,"data-testid":"default-agents-reset",children:a("settings.defaultAgents.reset")}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":"default-agents-state",children:"saved"===t?a("settings.defaultAgents.saved"):b.configured?a("settings.defaultAgents.configured"):a("settings.defaultAgents.usingBuiltIn")})]}),b.configured&&(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"default-agents-builtin",children:a("settings.defaultAgents.builtIn",{agents:b.constantDefault.map(m.oo).join(", ")})})]})})}var q=c(70911),r=c(61916);function s(a){return!!a&&"object"==typeof a&&(0,r.jg)(a.defaultSurfaceMode)&&(0,r.jg)(a.constantDefault)&&Array.isArray(a.available)&&a.available.length>0&&a.available.every(r.jg)}function t(){let a=(0,f.c)("common"),[b,c]=(0,e.useState)(null),[g,h]=(0,e.useState)(!0),[i,j]=(0,e.useState)("idle"),[k,m]=(0,e.useState)(null),n=(0,e.useCallback)(async()=>{try{let a=await fetch(q.wp);if(!a.ok)throw Error(String(a.status));let b=await a.json();if(!s(b))throw Error("unexpected body");c(b),(0,q.B1)(b.defaultSurfaceMode)}catch{m({kind:"load"})}finally{h(!1)}},[]),o=(0,e.useCallback)(async a=>{j("saving"),m(null),c(b=>b?{...b,defaultSurfaceMode:a}:b);try{let b=await fetch(q.wp,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:a})}),d=await b.json().catch(()=>null);if(!b.ok||!s(d)){j("error"),m({kind:"save",detail:d?.error}),n();return}c(d),(0,q.B1)(d.defaultSurfaceMode),j("saved")}catch{j("error"),m({kind:"save"}),n()}},[n]),p=k?k.detail??a("load"===k.kind?"settings.defaultSurfaceMode.loadError":"settings.defaultSurfaceMode.saveError"):null;return g?(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),a("loadingPage")]})}):b?(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"space-y-4","data-testid":"default-surface-mode-settings",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:a("settings.defaultSurfaceMode.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultSurfaceMode.description")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultSurfaceMode.appliesToNew")})]}),(0,d.jsx)("div",{role:"radiogroup","aria-label":a("settings.defaultSurfaceMode.title"),className:"space-y-2","data-selected":b.defaultSurfaceMode,children:b.available.map(c=>(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-2 rounded-md border border-border bg-surface px-3 py-2","data-testid":`default-surface-mode-option-${c}`,children:[(0,d.jsx)("input",{type:"radio",name:"default-surface-mode",value:c,className:"mt-0.5",checked:b.defaultSurfaceMode===c,disabled:"saving"===i,onChange:()=>void o(c),"data-testid":`default-surface-mode-radio-${c}`}),(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm text-foreground",children:a(`settings.defaultSurfaceMode.mode.${c}`)}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a(`settings.defaultSurfaceMode.hint.${c}`)})]})]},c))}),p&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-surface-mode-error",children:p}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"default-surface-mode-state",children:"saving"===i?a("settings.defaultSurfaceMode.saving"):"saved"===i?a("settings.defaultSurfaceMode.saved"):b.configured?a("settings.defaultSurfaceMode.configured"):a("settings.defaultSurfaceMode.usingBuiltIn")})]})}):(0,d.jsx)(l.Zp,{children:(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"default-surface-mode-load-error",children:p??a("settings.defaultSurfaceMode.loadError")})})}let u=(0,c(23339).A)("circle-arrow-up",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]]);var v=c(16945),w=c(9212);function x(a){let b=a.trim();if(!b)return null;try{let a=JSON.parse(b);if(!a||"object"!=typeof a)return null;let c=a.type;if("plan"!==c&&"output"!==c&&"done"!==c)return null;return a}catch{return null}}function y({worktreeId:a,instances:b,variant:c="card"}){let g=(0,f.c)("common"),{versions:h,isLoading:i,loadError:j,run:k,isUpdating:n,update:o}=function(a=!0){let[b,c]=(0,e.useState)(null),[d,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(a),[i,j]=(0,e.useState)(null),[k,l]=(0,e.useState)(!1),m=(0,e.useRef)(!0),n=(0,e.useCallback)(async(b=!1)=>{if(a){h(!0);try{let a=await fetch(`/api/agents/versions${b?"?refresh=1":""}`);if(!a.ok)throw Error(String(a.status));let d=await a.json();if(!(d&&"object"==typeof d&&Array.isArray(d.tools)&&Array.isArray(d.updatable)))throw Error("unexpected body");if(!m.current)return;c(d.tools),f(!1)}catch{if(!m.current)return;f(!0)}finally{m.current&&h(!1)}}},[a]),o=(0,e.useCallback)(async a=>{if(k)return;l(!0),j({tool:a,command:null,output:"",ok:null,previousVersion:null,installed:null,error:null});let b=a=>{m.current&&j(b=>b?{...b,ok:!1,error:a}:b)};try{let c=await fetch("/api/agents/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:a})});if(!c.ok||!c.body){let a=await c.json().catch(()=>null);b(a?.error??`Request failed (${c.status})`);return}let d=c.body.getReader(),e=new TextDecoder,f="",g=a=>{m.current&&j(b=>b?"plan"===a.type?{...b,command:a.command}:"output"===a.type?{...b,output:b.output+a.text}:{...b,ok:a.ok,previousVersion:a.previousVersion,installed:a.installed,error:a.error??null}:b)};for(;;){let{done:a,value:b}=await d.read();if(a)break;let c=(f+=e.decode(b,{stream:!0})).split("\n");for(let a of(f=c.pop()??"",c)){let b=x(a);b&&g(b)}}let h=x(f);h&&g(h)}catch(a){b(a instanceof Error?a.message:String(a))}finally{m.current&&l(!1),await n(!0)}},[k,n]);return{versions:b,isLoading:g,loadError:d,run:i,isUpdating:k,reload:n,update:o}}(!0),[p,q]=(0,e.useState)(0),r=function(a,b,c){let[d,f]=(0,e.useState)({});return d}(0,0,0),[s,t]=(0,e.useState)({}),[y,z]=(0,e.useState)(null),A=(0,e.useRef)(null),B=k?.ok===!0,C=(0,e.useCallback)(a=>(b??[]).filter(b=>b.cliTool===a&&r[b.id]),[b,r]),D=(0,e.useCallback)(async b=>{if(a){z(null);try{let c=new URLSearchParams({cliTool:b.cliTool,instance:b.id}),d=await fetch(`/api/worktrees/${a}/kill-session?${c.toString()}`,{method:"POST"});if(!d.ok&&404!==d.status)throw Error(String(d.status));t(a=>({...a,[b.id]:!0})),q(a=>a+1)}catch{z(g("agentUpdates.restartError"))}}},[a,g]),E=i&&!h?(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),g("loadingPage")]}):j&&!h?(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"agent-updates-load-error",children:g("agentUpdates.loadError")}):(0,d.jsxs)("div",{className:"space-y-3","data-testid":"agent-updates",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:g("agentUpdates.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:g("agentUpdates.description")})]}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"agent-updates-rows",children:(h??[]).map(b=>{var c;let e=C(b.tool),f=b.updatable&&null!==b.installed;return(0,d.jsxs)("li",{className:"rounded-md border border-border bg-surface px-3 py-2","data-testid":`agent-updates-row-${b.tool}`,children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("span",{className:"text-sm text-foreground",children:(c=b.tool,(0,m.oo)(c)||c)}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":`agent-updates-installed-${b.tool}`,children:b.installed?g("agentUpdates.installed",{version:b.installed}):g("agentUpdates.notInstalled")}),b.updateAvailable&&(0,d.jsx)("span",{className:"rounded bg-info-subtle px-1.5 py-0.5 text-xs text-info-foreground","data-testid":`agent-updates-available-${b.tool}`,children:g("agentUpdates.available",{version:b.latestVersion??""})}),b.dismissedInCodex&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":`agent-updates-dismissed-${b.tool}`,children:g("agentUpdates.dismissed")}),f&&(0,d.jsxs)(l.$n,{size:"sm",className:"ml-auto",disabled:n,onClick:()=>void o(b.tool),"data-testid":`agent-updates-update-${b.tool}`,children:[(0,d.jsx)(u,{className:"h-4 w-4","aria-hidden":"true"}),n&&k?.tool===b.tool?g("agentUpdates.updating"):g("agentUpdates.update")]})]}),f&&e.length>0&&(0,d.jsxs)("div",{className:"mt-2 flex items-start gap-1 text-xs text-warning-foreground","data-testid":`agent-updates-restart-warning-${b.tool}`,children:[(0,d.jsx)(v.A,{className:"mt-0.5 h-3 w-3 shrink-0","aria-hidden":"true"}),(0,d.jsx)("span",{children:g("agentUpdates.restartWarning",{sessions:e.map(a=>a.alias).join(", ")})})]}),f&&0===e.length&&void 0===a&&(0,d.jsx)("p",{className:"mt-2 text-xs text-muted-foreground","data-testid":`agent-updates-restart-notice-${b.tool}`,children:g("agentUpdates.restartNotice")}),B&&k?.tool===b.tool&&e.map(a=>(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,d.jsxs)(l.$n,{size:"sm",variant:"ghost",disabled:s[a.id],onClick:()=>void D(a),"data-testid":`agent-updates-restart-${a.id}`,children:[(0,d.jsx)(w.A,{className:"h-4 w-4","aria-hidden":"true"}),g("agentUpdates.restart",{alias:a.alias})]}),s[a.id]&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:g("agentUpdates.restarted")})]},a.id))]},b.tool)})}),k&&(0,d.jsxs)("div",{className:"space-y-2","data-testid":"agent-updates-run",children:[k.command&&(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"agent-updates-command",children:g("agentUpdates.running",{command:k.command})}),k.output&&(0,d.jsx)("pre",{ref:A,"data-testid":"agent-updates-output",className:"max-h-48 overflow-auto whitespace-pre-wrap rounded-md bg-terminal-surface p-2 text-xs text-terminal-foreground",children:k.output}),!0===k.ok&&(0,d.jsx)("div",{className:"text-xs text-success-foreground","data-testid":"agent-updates-success",children:g("agentUpdates.succeeded",{from:k.previousVersion??"?",to:k.installed??"?"})}),!1===k.ok&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"agent-updates-failure",children:g("agentUpdates.failed",{error:k.error??""})})]}),y&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"agent-updates-restart-error",children:y})]});return"plain"===c?E:(0,d.jsx)(l.Zp,{children:E})}},24417:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(23339).A)("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]])},61916:(a,b,c)=>{c.d(b,{jg:()=>f,kQ:()=>g,mR:()=>j,mS:()=>i,wf:()=>d});let d="terminal",e=new Set(["terminal","chat"]);function f(a){return"string"==typeof a&&e.has(a)}let g={data:null,messageId:null,visible:!1,answering:!1},h={mode:"split",mobileActivePane:"terminal",leftPaneTab:"history",splitRatio:.5,leftPaneCollapsed:!1,activityBar:{active:"files"},historyPane:{visible:!0,width:25,collapsed:!1}},i={type:null,message:null,retryable:!1,retryCount:0};function j(){return{phase:"idle",prompt:{...g},layout:{...h},error:{...i},messages:[],wsConnected:!1}}},70584:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(23339).A)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]])},70911:(a,b,c)=>{c.d(b,{$2:()=>g,B1:()=>n,If:()=>i,NP:()=>h,TR:()=>j,wp:()=>f});var d=c(61916);let e="commandmate.worktree.surfaceMode-",f="/api/settings/default-surface-mode";function g(a,b){return`${e}${a}-split-${b}`}function h(a){return`${e}${a}-mobile`}function i(a,b){}function j(a,b){let c=void 0===b?null:b;return c?(i(a,c),c):m()}let k=d.wf,l=new Set;function m(){return k}function n(a){if(!(0,d.jg)(a))return!1;let b=m()!==a;if(k=a,i("commandmate.settings.defaultSurfaceMode",a),b)for(let a of l)a();return b}}};
1
+ "use strict";exports.id=3123,exports.ids=[3123],exports.modules={8849:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(23339).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},23123:(a,b,c)=>{c.d(b,{uN:()=>y,he:()=>p,$8:()=>t});var d=c(21124),e=c(38301),f=c(20481),g=c(71613),h=c(70584),i=c(24417),j=c(47089),k=c(8849),l=c(15737),m=c(17252),n=c(89907);function o(a){return!!a&&"object"==typeof a&&Array.isArray(a.defaultSelectedAgents)&&a.defaultSelectedAgents.length>0&&Array.isArray(a.available)&&a.available.length>0&&"number"==typeof a.minAgents&&"number"==typeof a.maxAgents}function p(){let a=(0,f.c)("common"),[b,c]=(0,e.useState)(null),[p,q]=(0,e.useState)([]),[r,s]=(0,e.useState)(!0),[t,u]=(0,e.useState)("idle"),[v,w]=(0,e.useState)(null);(0,e.useCallback)(async()=>{try{let a=await fetch(`${n.zk}?include=installed`);if(!a.ok)throw Error(String(a.status));let b=await a.json();if(!o(b))throw Error("unexpected body");c(b),q(b.defaultSelectedAgents),(0,n.IK)(b.defaultSelectedAgents)}catch{w(a("settings.defaultAgents.loadError"))}finally{s(!1)}},[a]);let x=(0,e.useCallback)(a=>{q(a),u("idle"),w(null)},[]),y=(0,e.useCallback)((a,b)=>{let c=a+b;if(c<0||c>=p.length)return;let d=[...p];[d[a],d[c]]=[d[c],d[a]],x(d)},[p,x]),z=(0,e.useCallback)(async b=>{u("saving"),w(null);try{let d=await fetch(n.zk,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({agents:b})}),e=await d.json().catch(()=>null);if(!d.ok||!o(e)){u("error"),w(e?.error??a("settings.defaultAgents.saveError"));return}c(a=>({...e,installed:a?.installed})),q(e.defaultSelectedAgents),(0,n.IK)(e.defaultSelectedAgents),u("saved")}catch{u("error"),w(a("settings.defaultAgents.saveError"))}},[a]);if(r)return(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),a("loadingPage")]})});if(!b)return(0,d.jsx)(l.Zp,{children:(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"default-agents-load-error",children:v??a("settings.defaultAgents.loadError")})});let A=b.installed??[],B=b.available.filter(a=>!p.includes(a)),C=p.length<b.minAgents,D=p.length>b.maxAgents,E=!C&&!D&&"saving"!==t,F=b=>A.includes(b)?(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded bg-success-subtle px-1.5 py-0.5 text-xs text-success-foreground","data-testid":`default-agents-installed-${b}`,children:[(0,d.jsx)(g.A,{className:"h-3 w-3","aria-hidden":"true"}),a("settings.defaultAgents.installed")]}):(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:a("settings.defaultAgents.notInstalled")});return(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"space-y-4","data-testid":"default-agents-settings",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:a("settings.defaultAgents.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultAgents.description")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultAgents.appliesToNew")})]}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"default-agents-selected",children:p.map((c,e)=>(0,d.jsxs)("li",{className:"flex items-center gap-2 rounded-md border border-border bg-surface px-3 py-2","data-testid":`default-agents-row-${c}`,children:[(0,d.jsx)("span",{className:"w-6 text-xs text-muted-foreground",children:e+1}),(0,d.jsx)("span",{className:"text-sm text-foreground",children:(0,m.oo)(c)}),0===e&&(0,d.jsx)("span",{className:"rounded bg-info-subtle px-1.5 py-0.5 text-xs text-info-foreground","data-testid":"default-agents-primary-badge",children:a("settings.defaultAgents.primary")}),(0,d.jsx)("span",{className:"ml-auto",children:F(c)}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>y(e,-1),disabled:0===e,"aria-label":a("settings.defaultAgents.moveUp"),"data-testid":`default-agents-up-${c}`,children:(0,d.jsx)(h.A,{className:"h-4 w-4","aria-hidden":"true"})}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>y(e,1),disabled:e===p.length-1,"aria-label":a("settings.defaultAgents.moveDown"),"data-testid":`default-agents-down-${c}`,children:(0,d.jsx)(i.A,{className:"h-4 w-4","aria-hidden":"true"})}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>x(p.filter(a=>a!==c)),disabled:p.length<=b.minAgents,"aria-label":a("settings.defaultAgents.remove"),"data-testid":`default-agents-remove-${c}`,children:(0,d.jsx)(j.A,{className:"h-4 w-4","aria-hidden":"true"})})]},c))}),B.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-2 text-xs text-muted-foreground",children:a("settings.defaultAgents.addLabel")}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"default-agents-available",children:B.map(c=>(0,d.jsxs)("li",{className:"flex items-center gap-2 rounded-md border border-border px-3 py-2",children:[(0,d.jsx)("span",{className:"text-sm text-foreground",children:(0,m.oo)(c)}),(0,d.jsx)("span",{className:"ml-auto",children:F(c)}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>x([...p,c]),disabled:p.length>=b.maxAgents,"aria-label":a("settings.defaultAgents.add"),"data-testid":`default-agents-add-${c}`,children:(0,d.jsx)(k.A,{className:"h-4 w-4","aria-hidden":"true"})})]},c))})]}),(C||D)&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-agents-range-error",children:a("settings.defaultAgents.range",{min:b.minAgents,max:b.maxAgents})}),v&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-agents-error",children:v}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(l.$n,{size:"sm",onClick:()=>void z(p),disabled:!E,"data-testid":"default-agents-save",children:"saving"===t?a("settings.defaultAgents.saving"):a("settings.defaultAgents.save")}),(0,d.jsx)(l.$n,{size:"sm",variant:"ghost",onClick:()=>void z(null),disabled:!b.configured||"saving"===t,"data-testid":"default-agents-reset",children:a("settings.defaultAgents.reset")}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":"default-agents-state",children:"saved"===t?a("settings.defaultAgents.saved"):b.configured?a("settings.defaultAgents.configured"):a("settings.defaultAgents.usingBuiltIn")})]}),b.configured&&(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"default-agents-builtin",children:a("settings.defaultAgents.builtIn",{agents:b.constantDefault.map(m.oo).join(", ")})})]})})}var q=c(70911),r=c(61916);function s(a){return!!a&&"object"==typeof a&&(0,r.jg)(a.defaultSurfaceMode)&&(0,r.jg)(a.constantDefault)&&Array.isArray(a.available)&&a.available.length>0&&a.available.every(r.jg)}function t(){let a=(0,f.c)("common"),[b,c]=(0,e.useState)(null),[g,h]=(0,e.useState)(!0),[i,j]=(0,e.useState)("idle"),[k,m]=(0,e.useState)(null),n=(0,e.useCallback)(async()=>{try{let a=await fetch(q.wp);if(!a.ok)throw Error(String(a.status));let b=await a.json();if(!s(b))throw Error("unexpected body");c(b),(0,q.B1)(b.defaultSurfaceMode)}catch{m({kind:"load"})}finally{h(!1)}},[]),o=(0,e.useCallback)(async a=>{j("saving"),m(null),c(b=>b?{...b,defaultSurfaceMode:a}:b);try{let b=await fetch(q.wp,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:a})}),d=await b.json().catch(()=>null);if(!b.ok||!s(d)){j("error"),m({kind:"save",detail:d?.error}),n();return}c(d),(0,q.B1)(d.defaultSurfaceMode),j("saved")}catch{j("error"),m({kind:"save"}),n()}},[n]),p=k?k.detail??a("load"===k.kind?"settings.defaultSurfaceMode.loadError":"settings.defaultSurfaceMode.saveError"):null;return g?(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),a("loadingPage")]})}):b?(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"space-y-4","data-testid":"default-surface-mode-settings",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:a("settings.defaultSurfaceMode.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultSurfaceMode.description")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultSurfaceMode.appliesToNew")})]}),(0,d.jsx)("div",{role:"radiogroup","aria-label":a("settings.defaultSurfaceMode.title"),className:"space-y-2","data-selected":b.defaultSurfaceMode,children:b.available.map(c=>(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-2 rounded-md border border-border bg-surface px-3 py-2","data-testid":`default-surface-mode-option-${c}`,children:[(0,d.jsx)("input",{type:"radio",name:"default-surface-mode",value:c,className:"mt-0.5",checked:b.defaultSurfaceMode===c,disabled:"saving"===i,onChange:()=>void o(c),"data-testid":`default-surface-mode-radio-${c}`}),(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm text-foreground",children:a(`settings.defaultSurfaceMode.mode.${c}`)}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a(`settings.defaultSurfaceMode.hint.${c}`)})]})]},c))}),p&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-surface-mode-error",children:p}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"default-surface-mode-state",children:"saving"===i?a("settings.defaultSurfaceMode.saving"):"saved"===i?a("settings.defaultSurfaceMode.saved"):b.configured?a("settings.defaultSurfaceMode.configured"):a("settings.defaultSurfaceMode.usingBuiltIn")})]})}):(0,d.jsx)(l.Zp,{children:(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"default-surface-mode-load-error",children:p??a("settings.defaultSurfaceMode.loadError")})})}let u=(0,c(23339).A)("circle-arrow-up",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]]);var v=c(16945),w=c(9212);function x(a){let b=a.trim();if(!b)return null;try{let a=JSON.parse(b);if(!a||"object"!=typeof a)return null;let c=a.type;if("plan"!==c&&"output"!==c&&"done"!==c)return null;return a}catch{return null}}function y({worktreeId:a,instances:b,variant:c="card"}){let g=(0,f.c)("common"),{versions:h,isLoading:i,loadError:j,run:k,isUpdating:n,update:o}=function(a=!0){let[b,c]=(0,e.useState)(null),[d,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(a),[i,j]=(0,e.useState)(null),[k,l]=(0,e.useState)(!1),m=(0,e.useRef)(!0),n=(0,e.useCallback)(async(b=!1)=>{if(a){h(!0);try{let a=await fetch(`/api/agents/versions${b?"?refresh=1":""}`);if(!a.ok)throw Error(String(a.status));let d=await a.json();if(!(d&&"object"==typeof d&&Array.isArray(d.tools)&&Array.isArray(d.updatable)))throw Error("unexpected body");if(!m.current)return;c(d.tools),f(!1)}catch{if(!m.current)return;f(!0)}finally{m.current&&h(!1)}}},[a]),o=(0,e.useCallback)(async a=>{if(k)return;l(!0),j({tool:a,command:null,output:"",ok:null,previousVersion:null,installed:null,error:null});let b=a=>{m.current&&j(b=>b?{...b,ok:!1,error:a}:b)};try{let c=await fetch("/api/agents/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:a})});if(!c.ok||!c.body){let a=await c.json().catch(()=>null);b(a?.error??`Request failed (${c.status})`);return}let d=c.body.getReader(),e=new TextDecoder,f="",g=a=>{m.current&&j(b=>b?"plan"===a.type?{...b,command:a.command}:"output"===a.type?{...b,output:b.output+a.text}:{...b,ok:a.ok,previousVersion:a.previousVersion,installed:a.installed,error:a.error??null}:b)};for(;;){let{done:a,value:b}=await d.read();if(a)break;let c=(f+=e.decode(b,{stream:!0})).split("\n");for(let a of(f=c.pop()??"",c)){let b=x(a);b&&g(b)}}let h=x(f);h&&g(h)}catch(a){b(a instanceof Error?a.message:String(a))}finally{m.current&&l(!1),await n(!0)}},[k,n]);return{versions:b,isLoading:g,loadError:d,run:i,isUpdating:k,reload:n,update:o}}(!0),[p,q]=(0,e.useState)(0),r=function(a,b,c){let[d,f]=(0,e.useState)({});return d}(0,0,0),[s,t]=(0,e.useState)({}),[y,z]=(0,e.useState)(null),A=(0,e.useRef)(null),B=k?.ok===!0,C=(0,e.useCallback)(a=>(b??[]).filter(b=>b.cliTool===a&&r[b.id]),[b,r]),D=(0,e.useCallback)(async b=>{if(a){z(null);try{let c=new URLSearchParams({cliTool:b.cliTool,instance:b.id}),d=await fetch(`/api/worktrees/${a}/kill-session?${c.toString()}`,{method:"POST"});if(!d.ok&&404!==d.status)throw Error(String(d.status));t(a=>({...a,[b.id]:!0})),q(a=>a+1)}catch{z(g("agentUpdates.restartError"))}}},[a,g]),E=i&&!h?(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),g("loadingPage")]}):j&&!h?(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"agent-updates-load-error",children:g("agentUpdates.loadError")}):(0,d.jsxs)("div",{className:"space-y-3","data-testid":"agent-updates",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:g("agentUpdates.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:g("agentUpdates.description")})]}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"agent-updates-rows",children:(h??[]).map(b=>{var c;let e=C(b.tool),f=b.updatable&&null!==b.installed;return(0,d.jsxs)("li",{className:"rounded-md border border-border bg-surface px-3 py-2","data-testid":`agent-updates-row-${b.tool}`,children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("span",{className:"text-sm text-foreground",children:(c=b.tool,(0,m.oo)(c)||c)}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":`agent-updates-installed-${b.tool}`,children:b.installed?g("agentUpdates.installed",{version:b.installed}):g("agentUpdates.notInstalled")}),b.updateAvailable&&(0,d.jsx)("span",{className:"rounded bg-info-subtle px-1.5 py-0.5 text-xs text-info-foreground","data-testid":`agent-updates-available-${b.tool}`,children:g("agentUpdates.available",{version:b.latestVersion??""})}),b.dismissedInCodex&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":`agent-updates-dismissed-${b.tool}`,children:g("agentUpdates.dismissed")}),f&&(0,d.jsxs)(l.$n,{size:"sm",className:"ml-auto",disabled:n,onClick:()=>void o(b.tool),"data-testid":`agent-updates-update-${b.tool}`,children:[(0,d.jsx)(u,{className:"h-4 w-4","aria-hidden":"true"}),n&&k?.tool===b.tool?g("agentUpdates.updating"):g("agentUpdates.update")]})]}),f&&e.length>0&&(0,d.jsxs)("div",{className:"mt-2 flex items-start gap-1 text-xs text-warning-foreground","data-testid":`agent-updates-restart-warning-${b.tool}`,children:[(0,d.jsx)(v.A,{className:"mt-0.5 h-3 w-3 shrink-0","aria-hidden":"true"}),(0,d.jsx)("span",{children:g("agentUpdates.restartWarning",{sessions:e.map(a=>a.alias).join(", ")})})]}),f&&0===e.length&&void 0===a&&(0,d.jsx)("p",{className:"mt-2 text-xs text-muted-foreground","data-testid":`agent-updates-restart-notice-${b.tool}`,children:g("agentUpdates.restartNotice")}),B&&k?.tool===b.tool&&e.map(a=>(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,d.jsxs)(l.$n,{size:"sm",variant:"ghost",disabled:s[a.id],onClick:()=>void D(a),"data-testid":`agent-updates-restart-${a.id}`,children:[(0,d.jsx)(w.A,{className:"h-4 w-4","aria-hidden":"true"}),g("agentUpdates.restart",{alias:a.alias})]}),s[a.id]&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:g("agentUpdates.restarted")})]},a.id))]},b.tool)})}),k&&(0,d.jsxs)("div",{className:"space-y-2","data-testid":"agent-updates-run",children:[k.command&&(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"agent-updates-command",children:g("agentUpdates.running",{command:k.command})}),k.output&&(0,d.jsx)("pre",{ref:A,"data-testid":"agent-updates-output",className:"max-h-48 overflow-auto whitespace-pre-wrap rounded-md bg-terminal-surface p-2 text-xs text-terminal-foreground",children:k.output}),!0===k.ok&&(0,d.jsx)("div",{className:"text-xs text-success-foreground","data-testid":"agent-updates-success",children:g("agentUpdates.succeeded",{from:k.previousVersion??"?",to:k.installed??"?"})}),!1===k.ok&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"agent-updates-failure",children:g("agentUpdates.failed",{error:k.error??""})})]}),y&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"agent-updates-restart-error",children:y})]});return"plain"===c?E:(0,d.jsx)(l.Zp,{children:E})}},70911:(a,b,c)=>{c.d(b,{$2:()=>g,B1:()=>n,If:()=>i,NP:()=>h,TR:()=>j,wp:()=>f});var d=c(61916);let e="commandmate.worktree.surfaceMode-",f="/api/settings/default-surface-mode";function g(a,b){return`${e}${a}-split-${b}`}function h(a){return`${e}${a}-mobile`}function i(a,b){}function j(a,b){let c=void 0===b?null:b;return c?(i(a,c),c):m()}let k=d.wf,l=new Set;function m(){return k}function n(a){if(!(0,d.jg)(a))return!1;let b=m()!==a;if(k=a,i("commandmate.settings.defaultSurfaceMode",a),b)for(let a of l)a();return b}}};
@@ -1 +1 @@
1
- "use strict";exports.id=3241,exports.ids=[3241],exports.modules={15388:(a,b,c)=>{c.d(b,{RJ:()=>f,SQ:()=>g});var d=c(24455);let e=globalThis.__toolInputNormalizations??(globalThis.__toolInputNormalizations=new Map);function f(a,b,c,g,h,i=Date.now()){e.set((0,d.v7)(a,b,c),{...g,toolName:h,at:i})}function g(a,b,c){return e.get((0,d.v7)(a,b,c))??null}},43241:(a,b,c)=>{c.d(b,{resolvePermissionRequest:()=>u,wn:()=>r});var d=c(24455),e=c(88807),f=c(52660),g=c(91318),h=c(75498),i=c(52277),j=c(48083),k=c(72626),l=c(2466),m=c(13287),n=c(129),o=c(15388);let p=(0,k.h)("lib/hooks/permission-decision-service"),q="multiple_choice",r=500,s=a=>({behavior:null,reason:a}),t=new Set(["bypassPermissions"]);function u(a,b,k={}){let r=function(a,b,c={}){if(!b)return s("unknown-payload");if(b.toolName===m.k$)return s("ask-user-question");let{worktreeId:e,cliToolId:f,instanceId:i}=a,j=(0,d.aq)(e,f,i);if(!j?.enabled)return s("auto-yes-disabled");let k=(c.readPolicy??function(a){return(0,g.n)(a.worktreeId,a.cliToolId,a.instanceId)})({worktreeId:e,cliToolId:f,instanceId:i}),l=(0,h.Lj)(q,(0,m.I4)(b.toolName,b.toolInput,b.toolInputNormalization),k);return l?{behavior:null,reason:"policy-suppressed",suppressedBy:l.reason,pattern:l.pattern,mode:k?.mode??null}:{behavior:"allow",reason:"auto-yes",mode:k?.mode??null}}(a,b,k);if(b?.toolInputNormalization&&(0,o.RJ)(a.worktreeId,a.cliToolId,a.instanceId,b.toolInputNormalization,b.toolName),b?.toolName===m.k$){let c=(0,l.ek)({tool_name:b.toolName,tool_input:b.toolInput,prompt_id:b.promptId});c&&(0,j.recordAskUserQuestion)(a.worktreeId,a.cliToolId,a.instanceId,c)}return"allow"!==r.behavior&&function(a,b){if(!(b?.permissionMode&&t.has(b.permissionMode))){if(!(0,n.VM)(a.cliToolId).capabilities.permissionHookPredictsDialog)return p.debug("permission-request:dialog-forecast-skipped",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,toolName:b?.toolName??null,reason:"capability-permissionHookPredictsDialog-false"});(0,j.reportPermissionRequestPending)(a.worktreeId,a.cliToolId,a.instanceId,b?.toolName??null)}}(a,b),"policy-suppressed"===r.reason&&r.suppressedBy&&((0,i.ZS)(a.worktreeId,a.cliToolId,a.instanceId,{reason:r.suppressedBy,mode:r.mode??null,promptType:q,pattern:r.pattern}),p.warn("permission-request:suppressed-by-policy",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,toolName:b?.toolName,promptId:b?.promptId,reason:r.suppressedBy,mode:r.mode??null,pattern:r.pattern})),"allow"===r.behavior&&b&&(k.recordAllow??function(a,b){var d,g;let i=(0,m.I4)(b.toolName,b.toolInput,b.toolInputNormalization).join("\n").slice(0,h.Tb),j=new Date,k=null;try{k=(0,f.createMessage)((0,e.getDbInstance)(),{worktreeId:a.worktreeId,role:"assistant",content:`${b.toolName}: ${i}`.slice(0,h.Tb),summary:`PermissionRequest allow \xb7 tool=${b.toolName} \xb7 prompt_id=${b.promptId??"unknown"}`,messageType:"prompt",promptData:{type:"multiple_choice",question:`Approve ${b.toolName}?`,options:[],status:"answered",answer:"allow",answeredAt:j.toISOString(),answeredBy:"auto",approvalTarget:i},timestamp:j,cliToolId:a.cliToolId,instanceId:a.instanceId})}catch(c){p.warn("permission-request:audit-record-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,toolName:b.toolName,error:c instanceof Error?c.message:String(c)})}k&&(d=a,g=k,Promise.all([c.e(1356),c.e(1503),c.e(1191),c.e(9080),c.e(1719),c.e(2119),c.e(2445),c.e(595)]).then(c.bind(c,49640)).then(({broadcastMessage:a})=>{a("message",{worktreeId:d.worktreeId,message:g})}).catch(a=>{p.warn("permission-request:audit-broadcast-failed",{worktreeId:d.worktreeId,instanceId:d.instanceId,error:a instanceof Error?a.message:String(a)})}))})(a,b),r}},52277:(a,b,c)=>{c.d(b,{ZS:()=>f,gb:()=>g});var d=c(24455);let e=globalThis.__autoYesPolicySuppressions??(globalThis.__autoYesPolicySuppressions=new Map);function f(a,b,c,g,h=Date.now()){e.set((0,d.v7)(a,b,c),{...g,at:h})}function g(a,b,c){return e.get((0,d.v7)(a,b,c))??null}},75498:(a,b,c)=>{c.d(b,{Lj:()=>f,Tb:()=>e,sD:()=>g});var d=c(68901);let e=2e4;function f(a,b,c){if(!c)return null;if("off"===c.mode)return{reason:"mode-off"};let f=function(a,b){if(0===b.length)return{outcome:"no-match"};let c=a.map(a=>a.length>e?a.slice(0,e):a);for(let a of b){if(a.length>200||!(0,d.P0)(a).valid)return{outcome:"unusable",pattern:a};let b=new RegExp(a);for(let e of c){let c=(0,d.eJ)(b,e);if(null===c)return{outcome:"unusable",pattern:a};if(c)return{outcome:"match",pattern:a}}}return{outcome:"no-match"}}(b,c.denyPatterns);return"match"===f.outcome?{reason:"deny-pattern",pattern:f.pattern}:"unusable"===f.outcome?{reason:"deny-pattern-unusable",pattern:f.pattern}:"safe"===c.mode?"yes_no"===a?null:{reason:"type-not-allowed"}:"allow-listed"===c.mode?c.allowPromptTypes.includes(a)?null:{reason:"type-not-allowed"}:null}function g(a,b){let c=function(a){if("yes_no"===a.type)return"y";if("multiple_choice"===a.type){let b=a.options.find(a=>a.isDefault)??a.options[0];return!b||b.requiresTextInput?null:b.number.toString()}return null}(a);if(null===c)return{answer:null,suppressedBy:null};let d=f(a.type,function(a){let b=[a.question];if(a.approvalTarget&&b.push(a.approvalTarget),"multiple_choice"===a.type)for(let c of a.options)b.push(c.label);else b.push(...a.options);return b}(a),b);return d?{answer:null,suppressedBy:d.reason,pattern:d.pattern}:{answer:c,suppressedBy:null}}},91318:(a,b,c)=>{c.d(b,{ie:()=>j,n:()=>i});var d=c(56791),e=c(88807),f=c(24455);let g=(0,c(72626).h)("auto-yes-policy"),h=new Map;function i(a,b,c){let i=c??b,j=(0,f.v7)(a,b,i),k=Date.now(),l=h.get(j);if(l&&l.expiresAt>k)return l.policy;let m=function(a,b,c){try{let f=(0,d.getActiveTaskForInstance)((0,e.getDbInstance)(),a,b,c);if(!f)return null;return f.contract.autoYes}catch(d){return g.warn("policy-lookup-failed",{worktreeId:a,cliToolId:b,instanceId:c,error:d instanceof Error?d.message:String(d)}),null}}(a,b,i);return h.size>=200&&function(a){for(let[b,c]of h.entries())c.expiresAt<=a&&h.delete(b)}(k),h.set(j,{policy:m,expiresAt:k+5e3}),m}function j(a){h.delete(a)}}};
1
+ "use strict";exports.id=3241,exports.ids=[3241],exports.modules={15388:(a,b,c)=>{c.d(b,{RJ:()=>f,SQ:()=>g});var d=c(24455);let e=globalThis.__toolInputNormalizations??(globalThis.__toolInputNormalizations=new Map);function f(a,b,c,g,h,i=Date.now()){e.set((0,d.v7)(a,b,c),{...g,toolName:h,at:i})}function g(a,b,c){return e.get((0,d.v7)(a,b,c))??null}},43241:(a,b,c)=>{c.d(b,{resolvePermissionRequest:()=>u,wn:()=>r});var d=c(24455),e=c(88807),f=c(52660),g=c(91318),h=c(75498),i=c(52277),j=c(48083),k=c(72626),l=c(2466),m=c(13287),n=c(129),o=c(15388);let p=(0,k.h)("lib/hooks/permission-decision-service"),q="multiple_choice",r=500,s=a=>({behavior:null,reason:a}),t=new Set(["bypassPermissions"]);function u(a,b,k={}){let r=function(a,b,c={}){if(!b)return s("unknown-payload");if(b.toolName===m.k$)return s("ask-user-question");let{worktreeId:e,cliToolId:f,instanceId:i}=a,j=(0,d.aq)(e,f,i);if(!j?.enabled)return s("auto-yes-disabled");let k=(c.readPolicy??function(a){return(0,g.n)(a.worktreeId,a.cliToolId,a.instanceId)})({worktreeId:e,cliToolId:f,instanceId:i}),l=(0,h.Lj)(q,(0,m.I4)(b.toolName,b.toolInput,b.toolInputNormalization),k);return l?{behavior:null,reason:"policy-suppressed",suppressedBy:l.reason,pattern:l.pattern,mode:k?.mode??null}:{behavior:"allow",reason:"auto-yes",mode:k?.mode??null}}(a,b,k);if(b?.toolInputNormalization&&(0,o.RJ)(a.worktreeId,a.cliToolId,a.instanceId,b.toolInputNormalization,b.toolName),b?.toolName===m.k$){let c=(0,l.ek)({tool_name:b.toolName,tool_input:b.toolInput,prompt_id:b.promptId});c&&(0,j.recordAskUserQuestion)(a.worktreeId,a.cliToolId,a.instanceId,c)}return"allow"!==r.behavior&&function(a,b){if(!(b?.permissionMode&&t.has(b.permissionMode))){if(!(0,n.VM)(a.cliToolId).capabilities.permissionHookPredictsDialog)return p.debug("permission-request:dialog-forecast-skipped",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,toolName:b?.toolName??null,reason:"capability-permissionHookPredictsDialog-false"});(0,j.reportPermissionRequestPending)(a.worktreeId,a.cliToolId,a.instanceId,b?.toolName??null)}}(a,b),"policy-suppressed"===r.reason&&r.suppressedBy&&((0,i.ZS)(a.worktreeId,a.cliToolId,a.instanceId,{reason:r.suppressedBy,mode:r.mode??null,promptType:q,pattern:r.pattern}),p.warn("permission-request:suppressed-by-policy",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,toolName:b?.toolName,promptId:b?.promptId,reason:r.suppressedBy,mode:r.mode??null,pattern:r.pattern})),"allow"===r.behavior&&b&&(k.recordAllow??function(a,b){var d,g;let i=(0,m.I4)(b.toolName,b.toolInput,b.toolInputNormalization).join("\n").slice(0,h.Tb),j=new Date,k=null;try{k=(0,f.createMessage)((0,e.getDbInstance)(),{worktreeId:a.worktreeId,role:"assistant",content:`${b.toolName}: ${i}`.slice(0,h.Tb),summary:`PermissionRequest allow \xb7 tool=${b.toolName} \xb7 prompt_id=${b.promptId??"unknown"}`,messageType:"prompt",promptData:{type:"multiple_choice",question:`Approve ${b.toolName}?`,options:[],status:"answered",answer:"allow",answeredAt:j.toISOString(),answeredBy:"auto",approvalTarget:i},timestamp:j,cliToolId:a.cliToolId,instanceId:a.instanceId})}catch(c){p.warn("permission-request:audit-record-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,toolName:b.toolName,error:c instanceof Error?c.message:String(c)})}k&&(d=a,g=k,Promise.all([c.e(1356),c.e(1503),c.e(1191),c.e(9080),c.e(1719),c.e(2119),c.e(2445),c.e(8728)]).then(c.bind(c,43015)).then(({broadcastMessage:a})=>{a("message",{worktreeId:d.worktreeId,message:g})}).catch(a=>{p.warn("permission-request:audit-broadcast-failed",{worktreeId:d.worktreeId,instanceId:d.instanceId,error:a instanceof Error?a.message:String(a)})}))})(a,b),r}},52277:(a,b,c)=>{c.d(b,{ZS:()=>f,gb:()=>g});var d=c(24455);let e=globalThis.__autoYesPolicySuppressions??(globalThis.__autoYesPolicySuppressions=new Map);function f(a,b,c,g,h=Date.now()){e.set((0,d.v7)(a,b,c),{...g,at:h})}function g(a,b,c){return e.get((0,d.v7)(a,b,c))??null}},75498:(a,b,c)=>{c.d(b,{Lj:()=>f,Tb:()=>e,sD:()=>g});var d=c(68901);let e=2e4;function f(a,b,c){if(!c)return null;if("off"===c.mode)return{reason:"mode-off"};let f=function(a,b){if(0===b.length)return{outcome:"no-match"};let c=a.map(a=>a.length>e?a.slice(0,e):a);for(let a of b){if(a.length>200||!(0,d.P0)(a).valid)return{outcome:"unusable",pattern:a};let b=new RegExp(a);for(let e of c){let c=(0,d.eJ)(b,e);if(null===c)return{outcome:"unusable",pattern:a};if(c)return{outcome:"match",pattern:a}}}return{outcome:"no-match"}}(b,c.denyPatterns);return"match"===f.outcome?{reason:"deny-pattern",pattern:f.pattern}:"unusable"===f.outcome?{reason:"deny-pattern-unusable",pattern:f.pattern}:"safe"===c.mode?"yes_no"===a?null:{reason:"type-not-allowed"}:"allow-listed"===c.mode?c.allowPromptTypes.includes(a)?null:{reason:"type-not-allowed"}:null}function g(a,b){let c=function(a){if("yes_no"===a.type)return"y";if("multiple_choice"===a.type){let b=a.options.find(a=>a.isDefault)??a.options[0];return!b||b.requiresTextInput?null:b.number.toString()}return null}(a);if(null===c)return{answer:null,suppressedBy:null};let d=f(a.type,function(a){let b=[a.question];if(a.approvalTarget&&b.push(a.approvalTarget),"multiple_choice"===a.type)for(let c of a.options)b.push(c.label);else b.push(...a.options);return b}(a),b);return d?{answer:null,suppressedBy:d.reason,pattern:d.pattern}:{answer:c,suppressedBy:null}}},91318:(a,b,c)=>{c.d(b,{ie:()=>j,n:()=>i});var d=c(56791),e=c(88807),f=c(24455);let g=(0,c(72626).h)("auto-yes-policy"),h=new Map;function i(a,b,c){let i=c??b,j=(0,f.v7)(a,b,i),k=Date.now(),l=h.get(j);if(l&&l.expiresAt>k)return l.policy;let m=function(a,b,c){try{let f=(0,d.getActiveTaskForInstance)((0,e.getDbInstance)(),a,b,c);if(!f)return null;return f.contract.autoYes}catch(d){return g.warn("policy-lookup-failed",{worktreeId:a,cliToolId:b,instanceId:c,error:d instanceof Error?d.message:String(d)}),null}}(a,b,i);return h.size>=200&&function(a){for(let[b,c]of h.entries())c.expiresAt<=a&&h.delete(b)}(k),h.set(j,{policy:m,expiresAt:k+5e3}),m}function j(a){h.delete(a)}}};
@@ -1 +1 @@
1
- "use strict";exports.id=3323,exports.ids=[3323],exports.modules={31517:(a,b,c)=>{c.d(b,{DL:()=>j,sD:()=>f});var d=c(2734);let e=(0,c(72626).h)("lib/hooks/stop-history-capture"),f=[150,500,2e3,5e3],g=new Set([d.c]);function h(a){return new Promise(b=>{setTimeout(b,a)})}async function i(a,b,c,d,f,g){let i=Date.now();try{for(let[j,k]of g.entries()){await h(k);let l={};if(await a.captureStructuredHistoryTurn(b.id,c,d,f,l))return e.info("stop-history-capture-deferred-captured",{worktreeId:b.id,cliToolId:c,instanceId:d,attempt:j+1,attempts:g.length,elapsedMs:Date.now()-i}),!0;e.debug("stop-history-capture-deferred-open",{worktreeId:b.id,cliToolId:c,instanceId:d,attempt:j+1,attempts:g.length,outcome:l.outcome??"unavailable",elapsedMs:Date.now()-i})}return e.info("stop-history-capture-deferred-exhausted",{worktreeId:b.id,cliToolId:c,instanceId:d,attempts:g.length,elapsedMs:Date.now()-i}),!1}catch(a){return e.warn("stop-history-capture-deferred-failed",{worktreeId:b.id,cliToolId:c,instanceId:d,error:a instanceof Error?a.message:String(a)}),!1}}async function j(a,b,d,k={}){try{let j=await Promise.all([c.e(1503),c.e(9080),c.e(8800),c.e(1719),c.e(7905),c.e(2119),c.e(2445),c.e(1886),c.e(595),c.e(8918)]).then(c.bind(c,28918));if(!j.isPullTranscriptHistory(b))return{status:"unavailable"};let l={worktreePath:a.path,transcriptPathHint:null},m={};if(await j.captureStructuredHistoryTurn(a.id,b,d,l,m))return{status:"captured"};let n=()=>"not_yet_closed"===m.outcome?Promise.resolve(!0):j.hasStructuredHistoryTranscript(a.id,b,d,l);if(g.has(b)){let c=k.deferredDelaysMs??f;if(0===c.length||!await n())return{status:"unavailable"};let g=i(j,a,b,d,l,c);return e.info("stop-history-capture-deferred",{worktreeId:a.id,cliToolId:b,instanceId:d,delaysMs:c}),{status:"deferred",deferred:g}}let o=k.retryDelayMs??500;if(o<=0||!await n())return{status:"unavailable"};let p=Math.max(1,k.maxAttempts??3);for(let c=2;c<=p;c+=1){await h(o);let f={},g=await j.captureStructuredHistoryTurn(a.id,b,d,l,f);if(e.debug("stop-history-capture-retried",{worktreeId:a.id,cliToolId:b,instanceId:d,attempt:c,maxAttempts:p,captured:g,outcome:f.outcome??"unavailable"}),g)return{status:"captured"}}return{status:"unavailable"}}catch(c){return e.warn("stop-history-capture-failed",{worktreeId:a.id,cliToolId:b,instanceId:d,error:c instanceof Error?c.message:String(c)}),{status:"unavailable"}}}},52767:(a,b,c)=>{c.d(b,{r:()=>i,g:()=>h});var d=c(48524),e=c(87009),f=c(72626);let g=(0,f.h)("lib/tasks/task-transition-service");function h(a,b,c,f){let h=a.transaction(()=>{let g=(0,d.gg)(a,b);if(!g)return null;let h=g.status,i=function(a,b){switch(a){case"pending":switch(b){case"message_sent":return"running";case"send_failed":case"cancel":return"cancelled";default:return null}case"running":switch(b){case"prompt_detected":return"waiting_input";case"agent_idle":return"running";case"verify_started":return"verifying";case"send_failed":return"failed";case"cancel":return"cancelled";default:return null}case"waiting_input":switch(b){case"prompt_answered_auto":case"prompt_answered_human":case"agent_idle":return"running";case"verify_started":return"verifying";case"cancel":return"cancelled";default:return null}case"verifying":switch(b){case"verify_passed":return"succeeded";case"verify_failed":return"failed";case"verify_not_started":return"not_started";case"cancel":return"cancelled";default:return null}case"failed":case"not_started":switch(b){case"message_sent":return"running";case"verify_started":return"verifying";case"cancel":return"cancelled";default:return null}default:return null}}(h,c),j=Date.now(),k=(0,e.P)(a,{taskId:b,event:c,fromStatus:h,toStatus:i,payload:f,createdAt:j});return null===i?{task:g,fromStatus:h,toStatus:null,eventId:k}:{task:(0,d.xZ)(a,b,i,f?.runId===void 0?{}:{lastVerificationRunId:f.runId}),fromStatus:h,toStatus:i,eventId:k}})();return null===h?g.warn("task-event-unknown-task",{taskId:b,event:c}):null===h.toStatus&&g.warn("task-event-rejected",{taskId:b,event:c,fromStatus:h.fromStatus}),h}function i(a,b,c,e,f,i){try{let g=(0,d.MH)(a,b,c,e);if(!g)return null;return h(a,g.id,f,i)}catch(a){return g.warn("task-event-failed",{worktreeId:b,cliToolId:c,instanceId:e,event:f,error:a instanceof Error?a.message:String(a)}),null}}}};
1
+ "use strict";exports.id=3323,exports.ids=[3323],exports.modules={31517:(a,b,c)=>{c.d(b,{DL:()=>j,sD:()=>f});var d=c(2734);let e=(0,c(72626).h)("lib/hooks/stop-history-capture"),f=[150,500,2e3,5e3],g=new Set([d.c]);function h(a){return new Promise(b=>{setTimeout(b,a)})}async function i(a,b,c,d,f,g){let i=Date.now();try{for(let[j,k]of g.entries()){await h(k);let l={};if(await a.captureStructuredHistoryTurn(b.id,c,d,f,l))return e.info("stop-history-capture-deferred-captured",{worktreeId:b.id,cliToolId:c,instanceId:d,attempt:j+1,attempts:g.length,elapsedMs:Date.now()-i}),!0;e.debug("stop-history-capture-deferred-open",{worktreeId:b.id,cliToolId:c,instanceId:d,attempt:j+1,attempts:g.length,outcome:l.outcome??"unavailable",elapsedMs:Date.now()-i})}return e.info("stop-history-capture-deferred-exhausted",{worktreeId:b.id,cliToolId:c,instanceId:d,attempts:g.length,elapsedMs:Date.now()-i}),!1}catch(a){return e.warn("stop-history-capture-deferred-failed",{worktreeId:b.id,cliToolId:c,instanceId:d,error:a instanceof Error?a.message:String(a)}),!1}}async function j(a,b,d,k={}){try{let j=await Promise.all([c.e(1503),c.e(9080),c.e(8800),c.e(1719),c.e(7905),c.e(2119),c.e(2445),c.e(1886),c.e(8728),c.e(8918)]).then(c.bind(c,28918));if(!j.isPullTranscriptHistory(b))return{status:"unavailable"};let l={worktreePath:a.path,transcriptPathHint:null},m={};if(await j.captureStructuredHistoryTurn(a.id,b,d,l,m))return{status:"captured"};let n=()=>"not_yet_closed"===m.outcome?Promise.resolve(!0):j.hasStructuredHistoryTranscript(a.id,b,d,l);if(g.has(b)){let c=k.deferredDelaysMs??f;if(0===c.length||!await n())return{status:"unavailable"};let g=i(j,a,b,d,l,c);return e.info("stop-history-capture-deferred",{worktreeId:a.id,cliToolId:b,instanceId:d,delaysMs:c}),{status:"deferred",deferred:g}}let o=k.retryDelayMs??500;if(o<=0||!await n())return{status:"unavailable"};let p=Math.max(1,k.maxAttempts??3);for(let c=2;c<=p;c+=1){await h(o);let f={},g=await j.captureStructuredHistoryTurn(a.id,b,d,l,f);if(e.debug("stop-history-capture-retried",{worktreeId:a.id,cliToolId:b,instanceId:d,attempt:c,maxAttempts:p,captured:g,outcome:f.outcome??"unavailable"}),g)return{status:"captured"}}return{status:"unavailable"}}catch(c){return e.warn("stop-history-capture-failed",{worktreeId:a.id,cliToolId:b,instanceId:d,error:c instanceof Error?c.message:String(c)}),{status:"unavailable"}}}},52767:(a,b,c)=>{c.d(b,{r:()=>i,g:()=>h});var d=c(48524),e=c(87009),f=c(72626);let g=(0,f.h)("lib/tasks/task-transition-service");function h(a,b,c,f){let h=a.transaction(()=>{let g=(0,d.gg)(a,b);if(!g)return null;let h=g.status,i=function(a,b){switch(a){case"pending":switch(b){case"message_sent":return"running";case"send_failed":case"cancel":return"cancelled";default:return null}case"running":switch(b){case"prompt_detected":return"waiting_input";case"agent_idle":return"running";case"verify_started":return"verifying";case"send_failed":return"failed";case"cancel":return"cancelled";default:return null}case"waiting_input":switch(b){case"prompt_answered_auto":case"prompt_answered_human":case"agent_idle":return"running";case"verify_started":return"verifying";case"cancel":return"cancelled";default:return null}case"verifying":switch(b){case"verify_passed":return"succeeded";case"verify_failed":return"failed";case"verify_not_started":return"not_started";case"cancel":return"cancelled";default:return null}case"failed":case"not_started":switch(b){case"message_sent":return"running";case"verify_started":return"verifying";case"cancel":return"cancelled";default:return null}default:return null}}(h,c),j=Date.now(),k=(0,e.P)(a,{taskId:b,event:c,fromStatus:h,toStatus:i,payload:f,createdAt:j});return null===i?{task:g,fromStatus:h,toStatus:null,eventId:k}:{task:(0,d.xZ)(a,b,i,f?.runId===void 0?{}:{lastVerificationRunId:f.runId}),fromStatus:h,toStatus:i,eventId:k}})();return null===h?g.warn("task-event-unknown-task",{taskId:b,event:c}):null===h.toStatus&&g.warn("task-event-rejected",{taskId:b,event:c,fromStatus:h.fromStatus}),h}function i(a,b,c,e,f,i){try{let g=(0,d.MH)(a,b,c,e);if(!g)return null;return h(a,g.id,f,i)}catch(a){return g.warn("task-event-failed",{worktreeId:b,cliToolId:c,instanceId:e,event:f,error:a instanceof Error?a.message:String(a)}),null}}}};
@@ -1 +1 @@
1
- "use strict";exports.id=3543,exports.ids=[3543],exports.modules={73543:a=>{a.exports=JSON.parse('{"sessions":{"idleAgents":"{count} idle","activeAgents":"{count} active","title":"Sessions","description":"All worktree sessions across repositories.","filterPlaceholder":"Filter by name or repository...","filterAriaLabel":"Filter sessions by name or repository","sortByAriaLabel":"Sort by","sortAscending":"Sort ascending","sortDescending":"Sort descending","loadingAriaLabel":"Loading sessions","refreshError":"Failed to refresh sessions: {message}","loadError":"Failed to load sessions: {message}","noMatching":"No matching sessions found.","empty":"No sessions yet."},"nav":{"home":"Home","chat":"Chat","sessions":"Sessions","repositories":"Repositories","repositoriesShort":"Repos","review":"Review","reviewReport":"Review/Report","more":"More","skills":"Skills"},"repositories":{"empty":"No repositories registered yet.","add":"Add Repository","syncAll":"Sync All","syncing":"Syncing...","addNewTitle":"Add New Repository","localPathTab":"Local Path","cloneUrlTab":"Clone URL","localPathDescription":"Enter the absolute path to a git repository containing worktrees.","localPathLabel":"Repository Path","localPathExample":"Example: {example}","localPathAllowedRoots":"Allowed roots: {roots}","browse":"Browse…","pickerTitle":"Select a repository folder","pickerRootsLabel":"Allowed roots","pickerRecentLabel":"Recently used","pickerSelectHere":"Select this folder","pickerUp":"Up one level","pickerEmpty":"No subfolders here.","pickerTruncated":"Showing the first {limit} folders only.","pickerLoading":"Loading…","pickerWorktreeCount":"{count} worktree(s)","validationGitRepo":"Git repository detected ({count} worktree(s))","validationNotGitRepo":"This folder is not a git repository.","validationNotFound":"This folder does not exist.","validationOutsideRoots":"Outside the allowed roots ({roots}).","scan":"Scan & Add","scanning":"Scanning...","cloneUrlDescription":"Enter a git clone URL to clone a remote repository.","cloneUrlLabel":"Clone URL","cloneUrlHelp":"Supports HTTPS and SSH URLs","clone":"Clone","forkAndClone":"Fork & Add","forkOptionLabel":"Fork before adding (gh repo fork)","forkOptionHelp":"Creates a fork in your GitHub account and clones that (origin = your fork, upstream = original). Requires an authenticated GitHub CLI (gh).","cloning":"Cloning...","cloneSuccess":"Repository cloned successfully","cloneFailed":"Clone failed","pathRequired":"Repository path is required","urlRequired":"Clone URL is required","urlInvalid":"Invalid URL format","loading":"Loading repositories","filterAll":"All ({count})","filterDisabled":"Disabled ({count})","emptyDisabled":"No repositories are excluded from scans.","disableConfirmTitle":"Exclude from scans?","disableConfirmBody":"\\"{name}\\" will no longer be scanned for worktrees.\\n\\nNothing is deleted: its {count} worktree(s) and their chat history, tasks and verification runs stay in the database, and any tmux session running under it keeps running.\\n\\nIts worktrees also stay in the sidebar — use the Visibility toggle to hide them.","disableConfirmAction":"Exclude from scans","disableSuccess":"\\"{name}\\" is excluded from scans.","enableSuccess":"\\"{name}\\" is scanned again ({count} worktree(s)).","duplicateScanRootWarning":"Same git repository as an existing scan root: {paths}. Both will be scanned, and every worktree they share will be registered twice.","duplicateConfirmTitle":"Register a second scan root for the same repository?","duplicateConfirmBody":"\\"{path}\\" is the same git repository as:\\n{paths}\\n\\nBoth roots list the same worktrees, so every sync registers each of them twice and their \\"repository path\\" flips between the roots run to run.\\n\\nThis is allowed — continue if you want to manage these worktrees as separate roots. Otherwise cancel, or use the Scan toggle on the Repositories list to exclude one of them later.","duplicateConfirmAction":"Add anyway","duplicateRowBadge":"Duplicate scan root","duplicateRowDetail":"Same git repository as {paths}. Use the Scan toggle on one of these rows to exclude it from scans."},"cancel":"Cancel","sending":"Sending...","end":"End","ending":"Ending...","retry":"Retry","reload":"Reload","reconnect":"Reconnect","close":"Close","back":"Back","menu":"Menu","sidebar":{"open":"Open sidebar","close":"Close sidebar","branchNavigation":"Branch navigation","branches":"Branches","searchBranches":"Search branches...","noBranchesFound":"No branches found","noBranchesAvailable":"No branches available","loadingBranches":"Loading branches...","branchesLoadFailed":"Failed to load branches","retryLoadBranches":"Retry","dragToReorderGroup":"Drag to reorder group","switchToFlatView":"Switch to flat view","switchToGroupedView":"Switch to grouped view"},"confirmDelete":"Delete \\"{name}\\"?","favorites":{"add":"Add to favorites","remove":"Remove from favorites"},"syncSuccess":"Synced {count} worktrees","syncError":"Sync failed","syncAuthError":"Authentication error","syncButtonLabel":"Sync branches","tooltips":{"viewMode":"Toggle view mode (grouped / flat)","sort":"Sort branches","sync":"Sync worktrees","repositories":"Manage repositories (add / sync)"},"displaySize":{"ariaLabel":"Display size","large":"Large","medium":"Medium","small":"Small","xsmall":"Extra small"},"repoTabBar":{"settingLabel":"Repository tabs","mode":{"always":"Always show","collapsed":"Only when the sidebar is collapsed","hidden":"Hidden"}},"confirmDialog":{"title":"Confirm","confirm":"OK"},"language":"Language","loadingPage":"Loading page","closeNotification":"Close notification","status":{"idle":"Idle","ready":"Ready","running":"Running","generating":"Generating","waiting":"Waiting for response","error":"Error","unknown":"Unknown"},"sort":{"options":"Sort options","updatedAt":"Updated","repositoryName":"Repository","branchName":"Branch","status":"Status","lastSent":"Last Sent"},"branchItem":{"cliToolStatus":"CLI tool status","hasUnread":"Has unread messages","agentExited":"exited"},"connection":{"reconnecting":"Reconnecting","offline":"Offline","reconnectingTooltip":"Re-establishing the live connection (running on polling)","offlineTooltip":"No live connection (running on polling)"},"versionMismatch":{"title":"A new version is running","description":"The server is now on {serverVersion}, but this tab is still on {clientVersion}. Reload to get the latest.","reload":"Reload","dismiss":"Dismiss"},"meta":{"description":"Git worktree management with Claude CLI and tmux sessions"},"attention":{"label":"Needs attention","badgeLabel":"{count} worktrees need your attention"},"agentUpdates":{"title":"Agent CLI versions","description":"Installed versions of the agent CLIs on this machine. The update runs outside the agent pane, so a session that is already open is not interrupted.","installed":"installed {version}","notInstalled":"Not installed","available":"Update available: {version}","dismissed":"Marked as dismissed in codex","update":"Update","updating":"Updating...","running":"Running: {command}","succeeded":"Updated {from} to {to}.","failed":"Update failed: {error}","restartWarning":"These sessions keep the current version until they are restarted: {sessions}","restartNotice":"A session that is already running keeps its current version until it is restarted.","restart":"Restart {alias}","restarted":"Ended. The next message starts it on the new version.","restartError":"Could not restart the session.","loadError":"Could not read the agent CLI versions."},"settings":{"title":"Settings","defaultSurfaceMode":{"title":"Default output surface","description":"Which surface a session\'s output half opens in: the live terminal, or the conversation transcript. You can still switch either way from the session header.","appliesToNew":"Only affects surfaces you have not switched yet. A split or phone tab you already toggled keeps the mode you left it in.","mode":{"terminal":"Terminal","chat":"Chat"},"hint":{"terminal":"The agent\'s terminal, exactly as it is drawn in tmux.","chat":"The conversation transcript, as a message list."},"saving":"Saving...","saved":"Saved","configured":"Configured","usingBuiltIn":"Using the built-in default","saveError":"Could not save.","loadError":"Could not load the setting."},"defaultAgents":{"title":"Default agents for new branches","description":"The agents a newly discovered branch opens with, in order. The first one is the primary — the tab that opens first and the default target for sends.","appliesToNew":"Existing branches are left alone. Their tabs stay exactly as they are.","primary":"primary","installed":"Installed","notInstalled":"Not installed","addLabel":"Available to add","add":"Add","remove":"Remove","moveUp":"Move up","moveDown":"Move down","save":"Save","saving":"Saving...","saved":"Saved","reset":"Reset to default","builtIn":"Built-in default: {agents}","configured":"Configured","usingBuiltIn":"Using the built-in default","range":"Select between {min} and {max} agents.","saveError":"Could not save.","loadError":"Could not load the setting."}}}')}};
1
+ "use strict";exports.id=3543,exports.ids=[3543],exports.modules={73543:a=>{a.exports=JSON.parse('{"sessions":{"idleAgents":"{count} idle","activeAgents":"{count} active","title":"Sessions","description":"All worktree sessions across repositories.","filterPlaceholder":"Filter by name or repository...","filterAriaLabel":"Filter sessions by name or repository","sortByAriaLabel":"Sort by","sortAscending":"Sort ascending","sortDescending":"Sort descending","loadingAriaLabel":"Loading sessions","refreshError":"Failed to refresh sessions: {message}","loadError":"Failed to load sessions: {message}","noMatching":"No matching sessions found.","empty":"No sessions yet.","viewMode":{"groupAriaLabel":"Session layout","list":"List view","tile":"Tile view"},"tileAriaLabel":"Session tile for {branch}","tileInstanceAriaLabel":"Agent instance shown in this tile"},"nav":{"home":"Home","chat":"Chat","sessions":"Sessions","repositories":"Repositories","repositoriesShort":"Repos","review":"Review","reviewReport":"Review/Report","more":"More","skills":"Skills"},"repositories":{"empty":"No repositories registered yet.","add":"Add Repository","syncAll":"Sync All","syncing":"Syncing...","addNewTitle":"Add New Repository","localPathTab":"Local Path","cloneUrlTab":"Clone URL","localPathDescription":"Enter the absolute path to a git repository containing worktrees.","localPathLabel":"Repository Path","localPathExample":"Example: {example}","localPathAllowedRoots":"Allowed roots: {roots}","browse":"Browse…","pickerTitle":"Select a repository folder","pickerRootsLabel":"Allowed roots","pickerRecentLabel":"Recently used","pickerSelectHere":"Select this folder","pickerUp":"Up one level","pickerEmpty":"No subfolders here.","pickerTruncated":"Showing the first {limit} folders only.","pickerLoading":"Loading…","pickerWorktreeCount":"{count} worktree(s)","validationGitRepo":"Git repository detected ({count} worktree(s))","validationNotGitRepo":"This folder is not a git repository.","validationNotFound":"This folder does not exist.","validationOutsideRoots":"Outside the allowed roots ({roots}).","scan":"Scan & Add","scanning":"Scanning...","cloneUrlDescription":"Enter a git clone URL to clone a remote repository.","cloneUrlLabel":"Clone URL","cloneUrlHelp":"Supports HTTPS and SSH URLs","clone":"Clone","forkAndClone":"Fork & Add","forkOptionLabel":"Fork before adding (gh repo fork)","forkOptionHelp":"Creates a fork in your GitHub account and clones that (origin = your fork, upstream = original). Requires an authenticated GitHub CLI (gh).","cloning":"Cloning...","cloneSuccess":"Repository cloned successfully","cloneFailed":"Clone failed","pathRequired":"Repository path is required","urlRequired":"Clone URL is required","urlInvalid":"Invalid URL format","loading":"Loading repositories","filterAll":"All ({count})","filterDisabled":"Disabled ({count})","emptyDisabled":"No repositories are excluded from scans.","disableConfirmTitle":"Exclude from scans?","disableConfirmBody":"\\"{name}\\" will no longer be scanned for worktrees.\\n\\nNothing is deleted: its {count} worktree(s) and their chat history, tasks and verification runs stay in the database, and any tmux session running under it keeps running.\\n\\nIts worktrees also stay in the sidebar — use the Visibility toggle to hide them.","disableConfirmAction":"Exclude from scans","disableSuccess":"\\"{name}\\" is excluded from scans.","enableSuccess":"\\"{name}\\" is scanned again ({count} worktree(s)).","duplicateScanRootWarning":"Same git repository as an existing scan root: {paths}. Both will be scanned, and every worktree they share will be registered twice.","duplicateConfirmTitle":"Register a second scan root for the same repository?","duplicateConfirmBody":"\\"{path}\\" is the same git repository as:\\n{paths}\\n\\nBoth roots list the same worktrees, so every sync registers each of them twice and their \\"repository path\\" flips between the roots run to run.\\n\\nThis is allowed — continue if you want to manage these worktrees as separate roots. Otherwise cancel, or use the Scan toggle on the Repositories list to exclude one of them later.","duplicateConfirmAction":"Add anyway","duplicateRowBadge":"Duplicate scan root","duplicateRowDetail":"Same git repository as {paths}. Use the Scan toggle on one of these rows to exclude it from scans."},"cancel":"Cancel","sending":"Sending...","end":"End","ending":"Ending...","retry":"Retry","reload":"Reload","reconnect":"Reconnect","close":"Close","back":"Back","menu":"Menu","sidebar":{"open":"Open sidebar","close":"Close sidebar","branchNavigation":"Branch navigation","branches":"Branches","searchBranches":"Search branches...","noBranchesFound":"No branches found","noBranchesAvailable":"No branches available","loadingBranches":"Loading branches...","branchesLoadFailed":"Failed to load branches","retryLoadBranches":"Retry","dragToReorderGroup":"Drag to reorder group","switchToFlatView":"Switch to flat view","switchToGroupedView":"Switch to grouped view"},"confirmDelete":"Delete \\"{name}\\"?","favorites":{"add":"Add to favorites","remove":"Remove from favorites"},"syncSuccess":"Synced {count} worktrees","syncError":"Sync failed","syncAuthError":"Authentication error","syncButtonLabel":"Sync branches","tooltips":{"viewMode":"Toggle view mode (grouped / flat)","sort":"Sort branches","sync":"Sync worktrees","repositories":"Manage repositories (add / sync)"},"displaySize":{"ariaLabel":"Display size","large":"Large","medium":"Medium","small":"Small","xsmall":"Extra small"},"repoTabBar":{"settingLabel":"Repository tabs","mode":{"always":"Always show","collapsed":"Only when the sidebar is collapsed","hidden":"Hidden"}},"confirmDialog":{"title":"Confirm","confirm":"OK"},"language":"Language","loadingPage":"Loading page","closeNotification":"Close notification","status":{"idle":"Idle","ready":"Ready","running":"Running","generating":"Generating","waiting":"Waiting for response","error":"Error","unknown":"Unknown"},"sort":{"options":"Sort options","updatedAt":"Updated","repositoryName":"Repository","branchName":"Branch","status":"Status","lastSent":"Last Sent"},"branchItem":{"cliToolStatus":"CLI tool status","hasUnread":"Has unread messages","agentExited":"exited"},"connection":{"reconnecting":"Reconnecting","offline":"Offline","reconnectingTooltip":"Re-establishing the live connection (running on polling)","offlineTooltip":"No live connection (running on polling)"},"versionMismatch":{"title":"A new version is running","description":"The server is now on {serverVersion}, but this tab is still on {clientVersion}. Reload to get the latest.","reload":"Reload","dismiss":"Dismiss"},"meta":{"description":"Git worktree management with Claude CLI and tmux sessions"},"attention":{"label":"Needs attention","badgeLabel":"{count} worktrees need your attention"},"agentUpdates":{"title":"Agent CLI versions","description":"Installed versions of the agent CLIs on this machine. The update runs outside the agent pane, so a session that is already open is not interrupted.","installed":"installed {version}","notInstalled":"Not installed","available":"Update available: {version}","dismissed":"Marked as dismissed in codex","update":"Update","updating":"Updating...","running":"Running: {command}","succeeded":"Updated {from} to {to}.","failed":"Update failed: {error}","restartWarning":"These sessions keep the current version until they are restarted: {sessions}","restartNotice":"A session that is already running keeps its current version until it is restarted.","restart":"Restart {alias}","restarted":"Ended. The next message starts it on the new version.","restartError":"Could not restart the session.","loadError":"Could not read the agent CLI versions."},"settings":{"title":"Settings","defaultSurfaceMode":{"title":"Default output surface","description":"Which surface a session\'s output half opens in: the live terminal, or the conversation transcript. You can still switch either way from the session header.","appliesToNew":"Only affects surfaces you have not switched yet. A split or phone tab you already toggled keeps the mode you left it in.","mode":{"terminal":"Terminal","chat":"Chat"},"hint":{"terminal":"The agent\'s terminal, exactly as it is drawn in tmux.","chat":"The conversation transcript, as a message list."},"saving":"Saving...","saved":"Saved","configured":"Configured","usingBuiltIn":"Using the built-in default","saveError":"Could not save.","loadError":"Could not load the setting."},"defaultAgents":{"title":"Default agents for new branches","description":"The agents a newly discovered branch opens with, in order. The first one is the primary — the tab that opens first and the default target for sends.","appliesToNew":"Existing branches are left alone. Their tabs stay exactly as they are.","primary":"primary","installed":"Installed","notInstalled":"Not installed","addLabel":"Available to add","add":"Add","remove":"Remove","moveUp":"Move up","moveDown":"Move down","save":"Save","saving":"Saving...","saved":"Saved","reset":"Reset to default","builtIn":"Built-in default: {agents}","configured":"Configured","usingBuiltIn":"Using the built-in default","range":"Select between {min} and {max} agents.","saveError":"Could not save.","loadError":"Could not load the setting."}}}')}};