commandmate 0.49.3 → 0.50.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 (877) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +454 -408
  3. package/.next/app-path-routes-manifest.json +19 -13
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/react-loadable-manifest.json +1 -1
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +32 -0
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/capabilities/route.js +1 -1
  19. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/daily-summary/route.js +1 -1
  21. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  22. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  24. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  25. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/hooks/agent-event/route.js +1 -103
  32. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  33. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  35. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  36. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  38. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  39. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/push/escalation/route.js +1 -1
  43. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  44. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  46. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/push/vapid/route.js +1 -1
  48. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  49. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  51. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  52. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/relays/[relayId]/resolve/route.js +1 -1
  54. package/.next/server/app/api/relays/[relayId]/resolve/route.js.nft.json +1 -1
  55. package/.next/server/app/api/relays/[relayId]/resolve/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/relays/[relayId]/route.js +1 -1
  57. package/.next/server/app/api/relays/[relayId]/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.js +2 -2
  62. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/repositories/[id]/role-defaults/route.js +1 -0
  64. package/.next/server/app/api/repositories/[id]/role-defaults/route.js.nft.json +1 -0
  65. package/.next/server/app/api/repositories/[id]/role-defaults/route_client-reference-manifest.js +1 -0
  66. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  68. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  69. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/repositories/clone/route.js +1 -1
  71. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  72. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/repositories/restore/route.js +1 -1
  75. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  76. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/repositories/route.js +1 -1
  78. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  79. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/repositories/scan/route.js +1 -1
  81. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  82. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/repositories/sync/route.js +1 -1
  84. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  85. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/repositories/validate-path/route.js +1 -1
  87. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/roles/[id]/route.js +1 -0
  89. package/.next/server/app/api/roles/[id]/route.js.nft.json +1 -0
  90. package/.next/server/app/api/roles/[id]/route_client-reference-manifest.js +1 -0
  91. package/.next/server/app/api/roles/route.js +1 -0
  92. package/.next/server/app/api/roles/route.js.nft.json +1 -0
  93. package/.next/server/app/api/roles/route_client-reference-manifest.js +1 -0
  94. package/.next/server/app/api/settings/agent-role-defaults/route.js +1 -0
  95. package/.next/server/app/api/settings/agent-role-defaults/route.js.nft.json +1 -0
  96. package/.next/server/app/api/settings/agent-role-defaults/route_client-reference-manifest.js +1 -0
  97. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  98. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  99. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/slash-commands/route.js +1 -1
  108. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  111. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  115. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/verification/runs/route.js +1 -1
  117. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  120. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  123. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  126. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +3 -3
  132. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  133. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  136. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  139. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  145. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  146. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  198. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/instances/roles/route.js +1 -0
  200. package/.next/server/app/api/worktrees/[id]/instances/roles/route.js.nft.json +1 -0
  201. package/.next/server/app/api/worktrees/[id]/instances/roles/route_client-reference-manifest.js +1 -0
  202. package/.next/server/app/api/worktrees/[id]/instances/roles/settle/route.js +1 -0
  203. package/.next/server/app/api/worktrees/[id]/instances/roles/settle/route.js.nft.json +1 -0
  204. package/.next/server/app/api/worktrees/[id]/instances/roles/settle/route_client-reference-manifest.js +1 -0
  205. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +2 -2
  209. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  210. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -1
  233. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  238. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  241. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  243. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  244. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +2 -2
  246. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  247. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
  249. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  250. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  254. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +3 -104
  256. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  257. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  260. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  263. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  266. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  269. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
  272. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  275. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  278. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  279. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  280. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  281. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  283. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  284. package/.next/server/app/api/worktrees/[id]/tasks/route.js +2 -2
  285. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  286. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  287. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -103
  288. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  289. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  290. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  291. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  293. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  294. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  296. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  298. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  299. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
  301. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  302. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  303. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  304. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  305. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  306. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
  307. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  308. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  309. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  310. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  311. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  312. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  313. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  314. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  315. package/.next/server/app/api/worktrees/route.js +1 -1
  316. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  317. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  318. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  319. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  320. package/.next/server/app/more/page.js +1 -1
  321. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  322. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  323. package/.next/server/app/page_client-reference-manifest.js +1 -1
  324. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  325. package/.next/server/app/repositories/page.js +2 -2
  326. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  327. package/.next/server/app/review/page.js +1 -1
  328. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  329. package/.next/server/app/sessions/page.js +1 -1
  330. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  331. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  332. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  333. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  334. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  335. package/.next/server/app/worktrees/[id]/page.js +11 -11
  336. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  337. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  338. package/.next/server/app-paths-manifest.json +19 -13
  339. package/.next/server/chunks/1184.js +5 -0
  340. package/.next/server/chunks/1501.js +5 -5
  341. package/.next/server/chunks/1656.js +2 -2
  342. package/.next/server/chunks/1957.js +2 -2
  343. package/.next/server/chunks/1990.js +103 -0
  344. package/.next/server/chunks/2119.js +1 -1
  345. package/.next/server/chunks/2404.js +1 -1
  346. package/.next/server/chunks/2445.js +1 -1
  347. package/.next/server/chunks/2819.js +1 -0
  348. package/.next/server/chunks/2897.js +1 -1
  349. package/.next/server/chunks/3042.js +2 -0
  350. package/.next/server/chunks/3241.js +1 -1
  351. package/.next/server/chunks/3294.js +3 -0
  352. package/.next/server/chunks/3417.js +1 -1
  353. package/.next/server/chunks/3480.js +1 -1
  354. package/.next/server/chunks/3505.js +2 -6
  355. package/.next/server/chunks/3543.js +1 -1
  356. package/.next/server/chunks/3801.js +2 -2
  357. package/.next/server/chunks/3945.js +1 -1
  358. package/.next/server/chunks/4207.js +1 -1
  359. package/.next/server/chunks/454.js +1 -0
  360. package/.next/server/chunks/4645.js +1 -0
  361. package/.next/server/chunks/4911.js +1 -1
  362. package/.next/server/chunks/5350.js +6 -2
  363. package/.next/server/chunks/5354.js +1 -1
  364. package/.next/server/chunks/5571.js +1 -1
  365. package/.next/server/chunks/6009.js +12 -0
  366. package/.next/server/chunks/6130.js +1 -1
  367. package/.next/server/chunks/6285.js +1 -1
  368. package/.next/server/chunks/6401.js +1 -1
  369. package/.next/server/chunks/6486.js +2 -2
  370. package/.next/server/chunks/6569.js +1 -0
  371. package/.next/server/chunks/6781.js +1 -1
  372. package/.next/server/chunks/6793.js +4 -4
  373. package/.next/server/chunks/696.js +3 -0
  374. package/.next/server/chunks/7023.js +3 -3
  375. package/.next/server/chunks/{9702.js → 7083.js} +1 -1
  376. package/.next/server/chunks/741.js +1 -0
  377. package/.next/server/chunks/7662.js +1 -0
  378. package/.next/server/chunks/7905.js +1 -1
  379. package/.next/server/chunks/8143.js +33 -0
  380. package/.next/server/chunks/8581.js +6 -6
  381. package/.next/server/chunks/8728.js +2 -2
  382. package/.next/server/chunks/8782.js +1 -1
  383. package/.next/server/chunks/8807.js +97 -10
  384. package/.next/server/chunks/8918.js +3 -105
  385. package/.next/server/chunks/8955.js +1 -0
  386. package/.next/server/chunks/923.js +1 -0
  387. package/.next/server/chunks/9390.js +2 -2
  388. package/.next/server/chunks/9627.js +5 -5
  389. package/.next/server/chunks/973.js +1 -0
  390. package/.next/server/chunks/9731.js +3 -3
  391. package/.next/server/middleware-build-manifest.js +1 -1
  392. package/.next/server/middleware-manifest.json +5 -5
  393. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  394. package/.next/server/pages/500.html +1 -1
  395. package/.next/server/server-reference-manifest.json +1 -1
  396. package/.next/static/chunks/2314-2c9d587a27e8f731.js +1 -0
  397. package/.next/static/chunks/2407-ee881c99e218975b.js +1 -0
  398. package/.next/static/chunks/3931-24d7e245a93feb25.js +1 -0
  399. package/.next/static/chunks/4548-9afa02fd18afa6c7.js +1 -0
  400. package/.next/static/chunks/{5794-7975b8e51e731b19.js → 5794-38b3b504b3d97e04.js} +1 -1
  401. package/.next/static/chunks/{6966-d8dc6032410ffaba.js → 6966-dbfa4a43397f8c6d.js} +1 -1
  402. package/.next/static/chunks/7090-28e83f5a0efdb3b4.js +1 -0
  403. package/.next/static/chunks/7229.016d007c467a3600.js +1 -0
  404. package/.next/static/chunks/{8407-35bbfc84793d7004.js → 8407-dd6a8062fc449899.js} +1 -1
  405. package/.next/static/chunks/app/api/agents/update/route-476063c3571b81dd.js +1 -0
  406. package/.next/static/chunks/app/api/agents/versions/route-476063c3571b81dd.js +1 -0
  407. package/.next/static/chunks/app/api/app/release-notes/route-476063c3571b81dd.js +1 -0
  408. package/.next/static/chunks/app/api/app/update/route-476063c3571b81dd.js +1 -0
  409. package/.next/static/chunks/app/api/app/update-check/route-476063c3571b81dd.js +1 -0
  410. package/.next/static/chunks/app/api/auth/login/route-476063c3571b81dd.js +1 -0
  411. package/.next/static/chunks/app/api/auth/logout/route-476063c3571b81dd.js +1 -0
  412. package/.next/static/chunks/app/api/auth/status/route-476063c3571b81dd.js +1 -0
  413. package/.next/static/chunks/app/api/capabilities/route-476063c3571b81dd.js +1 -0
  414. package/.next/static/chunks/app/api/daily-summary/route-476063c3571b81dd.js +1 -0
  415. package/.next/static/chunks/app/api/daily-summary/status/route-476063c3571b81dd.js +1 -0
  416. package/.next/static/chunks/app/api/external-apps/[id]/health/route-476063c3571b81dd.js +1 -0
  417. package/.next/static/chunks/app/api/external-apps/[id]/route-476063c3571b81dd.js +1 -0
  418. package/.next/static/chunks/app/api/external-apps/route-476063c3571b81dd.js +1 -0
  419. package/.next/static/chunks/app/api/fs/browse/route-476063c3571b81dd.js +1 -0
  420. package/.next/static/chunks/app/api/fs/recent-paths/route-476063c3571b81dd.js +1 -0
  421. package/.next/static/chunks/app/api/hooks/agent-event/route-476063c3571b81dd.js +1 -0
  422. package/.next/static/chunks/app/api/hooks/claude-done/route-476063c3571b81dd.js +1 -0
  423. package/.next/static/chunks/app/api/hooks/permission-request/route-476063c3571b81dd.js +1 -0
  424. package/.next/static/chunks/app/api/metrics/vibe/route-476063c3571b81dd.js +1 -0
  425. package/.next/static/chunks/app/api/ollama/models/route-476063c3571b81dd.js +1 -0
  426. package/.next/static/chunks/app/api/push/escalation/route-476063c3571b81dd.js +1 -0
  427. package/.next/static/chunks/app/api/push/subscriptions/route-476063c3571b81dd.js +1 -0
  428. package/.next/static/chunks/app/api/push/vapid/route-476063c3571b81dd.js +1 -0
  429. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-476063c3571b81dd.js +1 -0
  430. package/.next/static/chunks/app/api/relays/[relayId]/resolve/route-476063c3571b81dd.js +1 -0
  431. package/.next/static/chunks/app/api/relays/[relayId]/route-476063c3571b81dd.js +1 -0
  432. package/.next/static/chunks/app/api/relays/route-476063c3571b81dd.js +1 -0
  433. package/.next/static/chunks/app/api/remote/pair/route-476063c3571b81dd.js +1 -0
  434. package/.next/static/chunks/app/api/repositories/[id]/role-defaults/route-476063c3571b81dd.js +1 -0
  435. package/.next/static/chunks/app/api/repositories/[id]/route-476063c3571b81dd.js +1 -0
  436. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-476063c3571b81dd.js +1 -0
  437. package/.next/static/chunks/app/api/repositories/clone/route-476063c3571b81dd.js +1 -0
  438. package/.next/static/chunks/app/api/repositories/excluded/route-476063c3571b81dd.js +1 -0
  439. package/.next/static/chunks/app/api/repositories/restore/route-476063c3571b81dd.js +1 -0
  440. package/.next/static/chunks/app/api/repositories/route-476063c3571b81dd.js +1 -0
  441. package/.next/static/chunks/app/api/repositories/scan/route-476063c3571b81dd.js +1 -0
  442. package/.next/static/chunks/app/api/repositories/sync/route-476063c3571b81dd.js +1 -0
  443. package/.next/static/chunks/app/api/repositories/validate-path/route-476063c3571b81dd.js +1 -0
  444. package/.next/static/chunks/app/api/roles/[id]/route-476063c3571b81dd.js +1 -0
  445. package/.next/static/chunks/app/api/roles/route-476063c3571b81dd.js +1 -0
  446. package/.next/static/chunks/app/api/settings/agent-role-defaults/route-476063c3571b81dd.js +1 -0
  447. package/.next/static/chunks/app/api/settings/default-agents/route-476063c3571b81dd.js +1 -0
  448. package/.next/static/chunks/app/api/settings/default-surface-mode/route-476063c3571b81dd.js +1 -0
  449. package/.next/static/chunks/app/api/sidebar/group-order/route-476063c3571b81dd.js +1 -0
  450. package/.next/static/chunks/app/api/skills/[id]/route-476063c3571b81dd.js +1 -0
  451. package/.next/static/chunks/app/api/skills/installations/route-476063c3571b81dd.js +1 -0
  452. package/.next/static/chunks/app/api/skills/operations/route-476063c3571b81dd.js +1 -0
  453. package/.next/static/chunks/app/api/skills/reindex/route-476063c3571b81dd.js +1 -0
  454. package/.next/static/chunks/app/api/skills/route-476063c3571b81dd.js +1 -0
  455. package/.next/static/chunks/app/api/slash-commands/route-476063c3571b81dd.js +1 -0
  456. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-476063c3571b81dd.js +1 -0
  457. package/.next/static/chunks/app/api/tasks/[taskId]/route-476063c3571b81dd.js +1 -0
  458. package/.next/static/chunks/app/api/templates/[id]/route-476063c3571b81dd.js +1 -0
  459. package/.next/static/chunks/app/api/templates/route-476063c3571b81dd.js +1 -0
  460. package/.next/static/chunks/app/api/verification/runs/[runId]/route-476063c3571b81dd.js +1 -0
  461. package/.next/static/chunks/app/api/verification/runs/route-476063c3571b81dd.js +1 -0
  462. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-476063c3571b81dd.js +1 -0
  463. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-476063c3571b81dd.js +1 -0
  464. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-476063c3571b81dd.js +1 -0
  465. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-476063c3571b81dd.js +1 -0
  466. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-476063c3571b81dd.js +1 -0
  467. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-476063c3571b81dd.js +1 -0
  468. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-476063c3571b81dd.js +1 -0
  469. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-476063c3571b81dd.js +1 -0
  470. package/.next/static/chunks/app/api/worktrees/[id]/env/route-476063c3571b81dd.js +1 -0
  471. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-476063c3571b81dd.js +1 -0
  472. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-476063c3571b81dd.js +1 -0
  473. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-476063c3571b81dd.js +1 -0
  474. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-476063c3571b81dd.js +1 -0
  475. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-476063c3571b81dd.js +1 -0
  476. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-476063c3571b81dd.js +1 -0
  477. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-476063c3571b81dd.js +1 -0
  478. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-476063c3571b81dd.js +1 -0
  479. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-476063c3571b81dd.js +1 -0
  480. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-476063c3571b81dd.js +1 -0
  481. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-476063c3571b81dd.js +1 -0
  482. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-476063c3571b81dd.js +1 -0
  483. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-476063c3571b81dd.js +1 -0
  484. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-476063c3571b81dd.js +1 -0
  485. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-476063c3571b81dd.js +1 -0
  486. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-476063c3571b81dd.js +1 -0
  487. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-476063c3571b81dd.js +1 -0
  488. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-476063c3571b81dd.js +1 -0
  489. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-476063c3571b81dd.js +1 -0
  490. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-476063c3571b81dd.js +1 -0
  491. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-476063c3571b81dd.js +1 -0
  492. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-476063c3571b81dd.js +1 -0
  493. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-476063c3571b81dd.js +1 -0
  494. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-476063c3571b81dd.js +1 -0
  495. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-476063c3571b81dd.js +1 -0
  496. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-476063c3571b81dd.js +1 -0
  497. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-476063c3571b81dd.js +1 -0
  498. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-476063c3571b81dd.js +1 -0
  499. package/.next/static/chunks/app/api/worktrees/[id]/instances/roles/route-476063c3571b81dd.js +1 -0
  500. package/.next/static/chunks/app/api/worktrees/[id]/instances/roles/settle/route-476063c3571b81dd.js +1 -0
  501. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-476063c3571b81dd.js +1 -0
  502. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-476063c3571b81dd.js +1 -0
  503. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-476063c3571b81dd.js +1 -0
  504. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-476063c3571b81dd.js +1 -0
  505. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-476063c3571b81dd.js +1 -0
  506. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-476063c3571b81dd.js +1 -0
  507. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-476063c3571b81dd.js +1 -0
  508. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-476063c3571b81dd.js +1 -0
  509. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-476063c3571b81dd.js +1 -0
  510. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-476063c3571b81dd.js +1 -0
  511. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-476063c3571b81dd.js +1 -0
  512. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-476063c3571b81dd.js +1 -0
  513. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-476063c3571b81dd.js +1 -0
  514. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-476063c3571b81dd.js +1 -0
  515. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-476063c3571b81dd.js +1 -0
  516. package/.next/static/chunks/app/api/worktrees/[id]/route-476063c3571b81dd.js +1 -0
  517. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-476063c3571b81dd.js +1 -0
  518. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-476063c3571b81dd.js +1 -0
  519. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-476063c3571b81dd.js +1 -0
  520. package/.next/static/chunks/app/api/worktrees/[id]/search/route-476063c3571b81dd.js +1 -0
  521. package/.next/static/chunks/app/api/worktrees/[id]/send/route-476063c3571b81dd.js +1 -0
  522. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-476063c3571b81dd.js +1 -0
  523. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-476063c3571b81dd.js +1 -0
  524. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-476063c3571b81dd.js +1 -0
  525. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-476063c3571b81dd.js +1 -0
  526. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-476063c3571b81dd.js +1 -0
  527. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-476063c3571b81dd.js +1 -0
  528. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-476063c3571b81dd.js +1 -0
  529. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-476063c3571b81dd.js +1 -0
  530. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-476063c3571b81dd.js +1 -0
  531. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-476063c3571b81dd.js +1 -0
  532. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-476063c3571b81dd.js +1 -0
  533. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-476063c3571b81dd.js +1 -0
  534. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-476063c3571b81dd.js +1 -0
  535. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-476063c3571b81dd.js +1 -0
  536. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-476063c3571b81dd.js +1 -0
  537. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-476063c3571b81dd.js +1 -0
  538. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-476063c3571b81dd.js +1 -0
  539. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-476063c3571b81dd.js +1 -0
  540. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-476063c3571b81dd.js +1 -0
  541. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-476063c3571b81dd.js +1 -0
  542. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-476063c3571b81dd.js +1 -0
  543. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-476063c3571b81dd.js +1 -0
  544. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-476063c3571b81dd.js +1 -0
  545. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-476063c3571b81dd.js +1 -0
  546. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-476063c3571b81dd.js +1 -0
  547. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-476063c3571b81dd.js +1 -0
  548. package/.next/static/chunks/app/api/worktrees/route-476063c3571b81dd.js +1 -0
  549. package/.next/static/chunks/app/layout-7bf800fcc5e025b1.js +1 -0
  550. package/.next/static/chunks/app/manifest.webmanifest/route-476063c3571b81dd.js +1 -0
  551. package/.next/static/chunks/app/more/{page-ff5af5ca48774c89.js → page-e8f5780f6e4fb657.js} +1 -1
  552. package/.next/static/chunks/app/{page-b4863bfe0452e09d.js → page-869f353a4ac4e15b.js} +1 -1
  553. package/.next/static/chunks/app/proxy/[...path]/route-476063c3571b81dd.js +1 -0
  554. package/.next/static/chunks/app/repositories/page-bedb505687010f18.js +1 -0
  555. package/.next/static/chunks/app/review/page-87c4a9b0de50fa80.js +1 -0
  556. package/.next/static/chunks/app/sessions/{page-c6eb7c02db2f4c80.js → page-82ca46793789fce4.js} +1 -1
  557. package/.next/static/chunks/app/worktrees/[id]/layout-476063c3571b81dd.js +1 -0
  558. package/.next/static/chunks/app/worktrees/[id]/page-570eb79fbbd1a934.js +1 -0
  559. package/.next/static/chunks/{webpack-838df0273b03af19.js → webpack-16b1a3143fa42ca0.js} +1 -1
  560. package/.next/static/css/d4f2c9522cf1b449.css +1 -0
  561. package/.next/static/z4d8-5MaLkoD-4EhueZwk/_buildManifest.js +1 -0
  562. package/.next/trace +14 -13
  563. package/.next/types/app/api/repositories/[id]/role-defaults/route.ts +347 -0
  564. package/.next/types/app/api/roles/[id]/route.ts +347 -0
  565. package/.next/types/app/api/roles/route.ts +347 -0
  566. package/.next/types/app/api/settings/agent-role-defaults/route.ts +347 -0
  567. package/.next/types/app/api/worktrees/[id]/instances/roles/route.ts +347 -0
  568. package/.next/types/app/api/worktrees/[id]/instances/roles/settle/route.ts +347 -0
  569. package/.next/types/routes.d.ts +7 -1
  570. package/.next/types/validator.ts +54 -0
  571. package/dist/cli/commands/instances.d.ts +1 -0
  572. package/dist/cli/commands/instances.d.ts.map +1 -1
  573. package/dist/cli/commands/instances.js +290 -33
  574. package/dist/cli/commands/message-dispatch.d.ts +25 -3
  575. package/dist/cli/commands/message-dispatch.d.ts.map +1 -1
  576. package/dist/cli/commands/message-dispatch.js +26 -6
  577. package/dist/cli/commands/relays.d.ts +5 -0
  578. package/dist/cli/commands/relays.d.ts.map +1 -1
  579. package/dist/cli/commands/relays.js +37 -1
  580. package/dist/cli/commands/roles.d.ts +11 -0
  581. package/dist/cli/commands/roles.d.ts.map +1 -0
  582. package/dist/cli/commands/roles.js +392 -0
  583. package/dist/cli/commands/send.d.ts.map +1 -1
  584. package/dist/cli/commands/send.js +526 -38
  585. package/dist/cli/docs/agent-operations.d.ts +1 -1
  586. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  587. package/dist/cli/docs/agent-operations.js +91 -3
  588. package/dist/cli/index.d.ts +4 -0
  589. package/dist/cli/index.d.ts.map +1 -1
  590. package/dist/cli/index.js +6 -0
  591. package/dist/cli/types/api-responses.d.ts +54 -0
  592. package/dist/cli/types/api-responses.d.ts.map +1 -1
  593. package/dist/cli/types/index.d.ts +38 -0
  594. package/dist/cli/types/index.d.ts.map +1 -1
  595. package/dist/cli/types/index.js +15 -1
  596. package/dist/cli/utils/agent-instances.d.ts +29 -1
  597. package/dist/cli/utils/agent-instances.d.ts.map +1 -1
  598. package/dist/cli/utils/agent-instances.js +67 -7
  599. package/dist/cli/utils/agent-roles.d.ts +75 -0
  600. package/dist/cli/utils/agent-roles.d.ts.map +1 -0
  601. package/dist/cli/utils/agent-roles.js +238 -0
  602. package/dist/cli/utils/api-client-errors.d.ts +23 -1
  603. package/dist/cli/utils/api-client-errors.d.ts.map +1 -1
  604. package/dist/cli/utils/api-client-errors.js +14 -2
  605. package/dist/cli/utils/api-client.d.ts +8 -0
  606. package/dist/cli/utils/api-client.d.ts.map +1 -1
  607. package/dist/cli/utils/api-client.js +13 -1
  608. package/dist/cli/utils/role-failure.d.ts +31 -0
  609. package/dist/cli/utils/role-failure.d.ts.map +1 -0
  610. package/dist/cli/utils/role-failure.js +90 -0
  611. package/dist/cli/utils/role-input.d.ts +16 -0
  612. package/dist/cli/utils/role-input.d.ts.map +1 -0
  613. package/dist/cli/utils/role-input.js +78 -0
  614. package/dist/cli/utils/security-logger.d.ts +17 -0
  615. package/dist/cli/utils/security-logger.d.ts.map +1 -1
  616. package/dist/cli/utils/security-logger.js +44 -5
  617. package/dist/lib/detection/tools/verified-against.d.ts +16 -0
  618. package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
  619. package/dist/lib/detection/tools/verified-against.js +16 -0
  620. package/dist/lib/session/send-attempt-types.d.ts +4 -0
  621. package/dist/lib/session/send-attempt-types.d.ts.map +1 -1
  622. package/dist/lib/verification/verify-config.d.ts +22 -0
  623. package/dist/lib/verification/verify-config.d.ts.map +1 -1
  624. package/dist/lib/verification/verify-config.js +32 -2
  625. package/dist/server/locales/en/worktree.json +25 -6
  626. package/dist/server/locales/ja/worktree.json +25 -6
  627. package/dist/server/src/config/safe-directory.js +30 -0
  628. package/dist/server/src/lib/agent-roles/adapters.js +174 -0
  629. package/dist/server/src/lib/agent-roles/artifacts.js +638 -0
  630. package/dist/server/src/lib/agent-roles/composition.js +222 -0
  631. package/dist/server/src/lib/agent-roles/fingerprint.js +21 -0
  632. package/dist/server/src/lib/agent-roles/jsonc.js +85 -0
  633. package/dist/server/src/lib/agent-roles/launch-errors.js +58 -0
  634. package/dist/server/src/lib/agent-roles/pane-env.js +63 -0
  635. package/dist/server/src/lib/agent-roles/resolve.js +375 -0
  636. package/dist/server/src/lib/agent-roles/toml-basic.js +140 -0
  637. package/dist/server/src/lib/agent-roles/unicode.js +16 -0
  638. package/dist/server/src/lib/agent-roles/validation.js +61 -0
  639. package/dist/server/src/lib/cli-tools/antigravity.js +39 -6
  640. package/dist/server/src/lib/cli-tools/base.js +63 -5
  641. package/dist/server/src/lib/cli-tools/claude-auto-default-nudge.js +141 -0
  642. package/dist/server/src/lib/cli-tools/claude.js +7 -1
  643. package/dist/server/src/lib/cli-tools/codex.js +134 -21
  644. package/dist/server/src/lib/cli-tools/command-code.js +24 -1
  645. package/dist/server/src/lib/cli-tools/copilot.js +36 -7
  646. package/dist/server/src/lib/cli-tools/gemini.js +37 -3
  647. package/dist/server/src/lib/cli-tools/launch-answer-skips.js +76 -0
  648. package/dist/server/src/lib/cli-tools/opencode-v2.js +10 -0
  649. package/dist/server/src/lib/cli-tools/opencode.js +58 -7
  650. package/dist/server/src/lib/cli-tools/submit-composer-read.js +24 -4
  651. package/dist/server/src/lib/cli-tools/vibe-local.js +25 -1
  652. package/dist/server/src/lib/db/agent-instances-db.js +53 -0
  653. package/dist/server/src/lib/db/agent-roles-db.js +409 -0
  654. package/dist/server/src/lib/db/agent-session-cost-sampler.js +3 -2
  655. package/dist/server/src/lib/db/db-instance.js +7 -37
  656. package/dist/server/src/lib/db/migrations/index.js +4 -0
  657. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  658. package/dist/server/src/lib/db/migrations/v64-agent-roles.js +123 -0
  659. package/dist/server/src/lib/db/migrations/v65-agent-instance-creation-keys.js +42 -0
  660. package/dist/server/src/lib/db/relay-db.js +35 -0
  661. package/dist/server/src/lib/detection/cli-patterns.js +13 -3
  662. package/dist/server/src/lib/detection/model-info-extractor.js +1 -1
  663. package/dist/server/src/lib/detection/tools/claude/patterns.js +76 -0
  664. package/dist/server/src/lib/detection/tools/codex/cli-patterns.js +5 -0
  665. package/dist/server/src/lib/detection/tools/codex/detect.js +5 -1
  666. package/dist/server/src/lib/detection/tools/codex/patterns.js +52 -2
  667. package/dist/server/src/lib/detection/tools/codex/prompt.js +23 -3
  668. package/dist/server/src/lib/detection/tools/opencode/detect.js +30 -15
  669. package/dist/server/src/lib/detection/tools/opencode/patterns.js +268 -7
  670. package/dist/server/src/lib/detection/tools/opencode/readiness.js +16 -7
  671. package/dist/server/src/lib/detection/tools/opencode-v2/detect.js +51 -15
  672. package/dist/server/src/lib/detection/tools/opencode-v2/patterns.js +195 -11
  673. package/dist/server/src/lib/detection/tools/run-detection.js +5 -2
  674. package/dist/server/src/lib/detection/tools/verified-against.js +16 -0
  675. package/dist/server/src/lib/detection/tools/vibe-local/readiness.js +22 -0
  676. package/dist/server/src/lib/git/git-common-dir.js +192 -0
  677. package/dist/server/src/lib/hooks/hook-settings-generator.js +8 -2
  678. package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +31 -1
  679. package/dist/server/src/lib/hooks/sources/launch-command.js +31 -8
  680. package/dist/server/src/lib/hooks/sources/opencode/client.js +20 -0
  681. package/dist/server/src/lib/hooks/sources/opencode-v2/client.js +24 -0
  682. package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +208 -35
  683. package/dist/server/src/lib/hooks/sources/opencode-v2/secrets.js +7 -1
  684. package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +117 -2
  685. package/dist/server/src/lib/job-executor.js +18 -1
  686. package/dist/server/src/lib/polling/response-checker-extraction-steps.js +58 -4
  687. package/dist/server/src/lib/polling/response-checker.js +32 -7
  688. package/dist/server/src/lib/relay/relay-delivery-block.js +150 -0
  689. package/dist/server/src/lib/relay/relay-delivery.js +59 -2
  690. package/dist/server/src/lib/response-cleaner.js +13 -3
  691. package/dist/server/src/lib/response-extractor.js +38 -3
  692. package/dist/server/src/lib/session/agent-session-lifecycle.js +9 -1
  693. package/dist/server/src/lib/session/claude-executor.js +13 -1
  694. package/dist/server/src/lib/session/claude-session.js +109 -13
  695. package/dist/server/src/lib/session/instance-input-lock.js +93 -4
  696. package/dist/server/src/lib/session/role-launch.js +722 -0
  697. package/dist/server/src/lib/session/send-attempt-state.js +7 -0
  698. package/dist/server/src/lib/session/send-user-message.js +6 -0
  699. package/dist/server/src/lib/session/session-generation-archive.js +7 -8
  700. package/dist/server/src/lib/session/session-launch-flight.js +33 -1
  701. package/dist/server/src/lib/session/worktree-session-reconcile.js +5 -0
  702. package/dist/server/src/lib/test-run-detection.js +53 -0
  703. package/dist/server/src/lib/tmux/read-mode.js +4 -0
  704. package/dist/server/src/lib/tmux/session-hook-scripts.js +36 -4
  705. package/dist/server/src/lib/tui-accumulator.js +14 -5
  706. package/dist/server/src/lib/verification/env-clean-gate.js +117 -12
  707. package/dist/server/src/lib/verification/gate-runner.js +9 -8
  708. package/dist/server/src/lib/verification/verify-config.js +32 -2
  709. package/dist/server/src/types/agent-roles.js +56 -0
  710. package/dist/types/agent-roles.d.ts +351 -0
  711. package/dist/types/agent-roles.d.ts.map +1 -0
  712. package/dist/types/agent-roles.js +56 -0
  713. package/docs/en/user-guide/webapp-guide.md +16 -0
  714. package/package.json +2 -1
  715. package/release-notes/0.50.0.json +113 -0
  716. package/.next/server/chunks/1308.js +0 -1
  717. package/.next/server/chunks/4490.js +0 -1
  718. package/.next/server/chunks/4936.js +0 -1
  719. package/.next/server/chunks/610.js +0 -1
  720. package/.next/server/chunks/6119.js +0 -1
  721. package/.next/server/chunks/7491.js +0 -3
  722. package/.next/server/chunks/7926.js +0 -1
  723. package/.next/server/chunks/9360.js +0 -2
  724. package/.next/server/chunks/9584.js +0 -1
  725. package/.next/static/LNfVZiq6FZwKsV7L9Mi6M/_buildManifest.js +0 -1
  726. package/.next/static/chunks/2407-87ec01332344ec2b.js +0 -1
  727. package/.next/static/chunks/344-e1cefd00787060e4.js +0 -1
  728. package/.next/static/chunks/3931-3ef48b8d97357282.js +0 -1
  729. package/.next/static/chunks/7229.7f0f5a7032b612b4.js +0 -1
  730. package/.next/static/chunks/8165-263172c17ae8e8c3.js +0 -1
  731. package/.next/static/chunks/app/api/agents/update/route-96fc12d400b49b13.js +0 -1
  732. package/.next/static/chunks/app/api/agents/versions/route-96fc12d400b49b13.js +0 -1
  733. package/.next/static/chunks/app/api/app/release-notes/route-96fc12d400b49b13.js +0 -1
  734. package/.next/static/chunks/app/api/app/update/route-96fc12d400b49b13.js +0 -1
  735. package/.next/static/chunks/app/api/app/update-check/route-96fc12d400b49b13.js +0 -1
  736. package/.next/static/chunks/app/api/auth/login/route-96fc12d400b49b13.js +0 -1
  737. package/.next/static/chunks/app/api/auth/logout/route-96fc12d400b49b13.js +0 -1
  738. package/.next/static/chunks/app/api/auth/status/route-96fc12d400b49b13.js +0 -1
  739. package/.next/static/chunks/app/api/capabilities/route-96fc12d400b49b13.js +0 -1
  740. package/.next/static/chunks/app/api/daily-summary/route-96fc12d400b49b13.js +0 -1
  741. package/.next/static/chunks/app/api/daily-summary/status/route-96fc12d400b49b13.js +0 -1
  742. package/.next/static/chunks/app/api/external-apps/[id]/health/route-96fc12d400b49b13.js +0 -1
  743. package/.next/static/chunks/app/api/external-apps/[id]/route-96fc12d400b49b13.js +0 -1
  744. package/.next/static/chunks/app/api/external-apps/route-96fc12d400b49b13.js +0 -1
  745. package/.next/static/chunks/app/api/fs/browse/route-96fc12d400b49b13.js +0 -1
  746. package/.next/static/chunks/app/api/fs/recent-paths/route-96fc12d400b49b13.js +0 -1
  747. package/.next/static/chunks/app/api/hooks/agent-event/route-96fc12d400b49b13.js +0 -1
  748. package/.next/static/chunks/app/api/hooks/claude-done/route-96fc12d400b49b13.js +0 -1
  749. package/.next/static/chunks/app/api/hooks/permission-request/route-96fc12d400b49b13.js +0 -1
  750. package/.next/static/chunks/app/api/metrics/vibe/route-96fc12d400b49b13.js +0 -1
  751. package/.next/static/chunks/app/api/ollama/models/route-96fc12d400b49b13.js +0 -1
  752. package/.next/static/chunks/app/api/push/escalation/route-96fc12d400b49b13.js +0 -1
  753. package/.next/static/chunks/app/api/push/subscriptions/route-96fc12d400b49b13.js +0 -1
  754. package/.next/static/chunks/app/api/push/vapid/route-96fc12d400b49b13.js +0 -1
  755. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-96fc12d400b49b13.js +0 -1
  756. package/.next/static/chunks/app/api/relays/[relayId]/resolve/route-96fc12d400b49b13.js +0 -1
  757. package/.next/static/chunks/app/api/relays/[relayId]/route-96fc12d400b49b13.js +0 -1
  758. package/.next/static/chunks/app/api/relays/route-96fc12d400b49b13.js +0 -1
  759. package/.next/static/chunks/app/api/remote/pair/route-96fc12d400b49b13.js +0 -1
  760. package/.next/static/chunks/app/api/repositories/[id]/route-96fc12d400b49b13.js +0 -1
  761. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-96fc12d400b49b13.js +0 -1
  762. package/.next/static/chunks/app/api/repositories/clone/route-96fc12d400b49b13.js +0 -1
  763. package/.next/static/chunks/app/api/repositories/excluded/route-96fc12d400b49b13.js +0 -1
  764. package/.next/static/chunks/app/api/repositories/restore/route-96fc12d400b49b13.js +0 -1
  765. package/.next/static/chunks/app/api/repositories/route-96fc12d400b49b13.js +0 -1
  766. package/.next/static/chunks/app/api/repositories/scan/route-96fc12d400b49b13.js +0 -1
  767. package/.next/static/chunks/app/api/repositories/sync/route-96fc12d400b49b13.js +0 -1
  768. package/.next/static/chunks/app/api/repositories/validate-path/route-96fc12d400b49b13.js +0 -1
  769. package/.next/static/chunks/app/api/settings/default-agents/route-96fc12d400b49b13.js +0 -1
  770. package/.next/static/chunks/app/api/settings/default-surface-mode/route-96fc12d400b49b13.js +0 -1
  771. package/.next/static/chunks/app/api/sidebar/group-order/route-96fc12d400b49b13.js +0 -1
  772. package/.next/static/chunks/app/api/skills/[id]/route-96fc12d400b49b13.js +0 -1
  773. package/.next/static/chunks/app/api/skills/installations/route-96fc12d400b49b13.js +0 -1
  774. package/.next/static/chunks/app/api/skills/operations/route-96fc12d400b49b13.js +0 -1
  775. package/.next/static/chunks/app/api/skills/reindex/route-96fc12d400b49b13.js +0 -1
  776. package/.next/static/chunks/app/api/skills/route-96fc12d400b49b13.js +0 -1
  777. package/.next/static/chunks/app/api/slash-commands/route-96fc12d400b49b13.js +0 -1
  778. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-96fc12d400b49b13.js +0 -1
  779. package/.next/static/chunks/app/api/tasks/[taskId]/route-96fc12d400b49b13.js +0 -1
  780. package/.next/static/chunks/app/api/templates/[id]/route-96fc12d400b49b13.js +0 -1
  781. package/.next/static/chunks/app/api/templates/route-96fc12d400b49b13.js +0 -1
  782. package/.next/static/chunks/app/api/verification/runs/[runId]/route-96fc12d400b49b13.js +0 -1
  783. package/.next/static/chunks/app/api/verification/runs/route-96fc12d400b49b13.js +0 -1
  784. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-96fc12d400b49b13.js +0 -1
  785. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-96fc12d400b49b13.js +0 -1
  786. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-96fc12d400b49b13.js +0 -1
  787. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-96fc12d400b49b13.js +0 -1
  788. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-96fc12d400b49b13.js +0 -1
  789. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-96fc12d400b49b13.js +0 -1
  790. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-96fc12d400b49b13.js +0 -1
  791. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-96fc12d400b49b13.js +0 -1
  792. package/.next/static/chunks/app/api/worktrees/[id]/env/route-96fc12d400b49b13.js +0 -1
  793. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-96fc12d400b49b13.js +0 -1
  794. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-96fc12d400b49b13.js +0 -1
  795. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-96fc12d400b49b13.js +0 -1
  796. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-96fc12d400b49b13.js +0 -1
  797. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-96fc12d400b49b13.js +0 -1
  798. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-96fc12d400b49b13.js +0 -1
  799. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-96fc12d400b49b13.js +0 -1
  800. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-96fc12d400b49b13.js +0 -1
  801. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-96fc12d400b49b13.js +0 -1
  802. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-96fc12d400b49b13.js +0 -1
  803. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-96fc12d400b49b13.js +0 -1
  804. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-96fc12d400b49b13.js +0 -1
  805. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-96fc12d400b49b13.js +0 -1
  806. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-96fc12d400b49b13.js +0 -1
  807. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-96fc12d400b49b13.js +0 -1
  808. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-96fc12d400b49b13.js +0 -1
  809. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-96fc12d400b49b13.js +0 -1
  810. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-96fc12d400b49b13.js +0 -1
  811. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-96fc12d400b49b13.js +0 -1
  812. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-96fc12d400b49b13.js +0 -1
  813. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-96fc12d400b49b13.js +0 -1
  814. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-96fc12d400b49b13.js +0 -1
  815. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-96fc12d400b49b13.js +0 -1
  816. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-96fc12d400b49b13.js +0 -1
  817. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-96fc12d400b49b13.js +0 -1
  818. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-96fc12d400b49b13.js +0 -1
  819. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-96fc12d400b49b13.js +0 -1
  820. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-96fc12d400b49b13.js +0 -1
  821. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-96fc12d400b49b13.js +0 -1
  822. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-96fc12d400b49b13.js +0 -1
  823. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-96fc12d400b49b13.js +0 -1
  824. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-96fc12d400b49b13.js +0 -1
  825. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-96fc12d400b49b13.js +0 -1
  826. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-96fc12d400b49b13.js +0 -1
  827. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-96fc12d400b49b13.js +0 -1
  828. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-96fc12d400b49b13.js +0 -1
  829. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-96fc12d400b49b13.js +0 -1
  830. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-96fc12d400b49b13.js +0 -1
  831. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-96fc12d400b49b13.js +0 -1
  832. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-96fc12d400b49b13.js +0 -1
  833. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-96fc12d400b49b13.js +0 -1
  834. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-96fc12d400b49b13.js +0 -1
  835. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-96fc12d400b49b13.js +0 -1
  836. package/.next/static/chunks/app/api/worktrees/[id]/route-96fc12d400b49b13.js +0 -1
  837. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-96fc12d400b49b13.js +0 -1
  838. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-96fc12d400b49b13.js +0 -1
  839. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-96fc12d400b49b13.js +0 -1
  840. package/.next/static/chunks/app/api/worktrees/[id]/search/route-96fc12d400b49b13.js +0 -1
  841. package/.next/static/chunks/app/api/worktrees/[id]/send/route-96fc12d400b49b13.js +0 -1
  842. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-96fc12d400b49b13.js +0 -1
  843. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-96fc12d400b49b13.js +0 -1
  844. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-96fc12d400b49b13.js +0 -1
  845. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-96fc12d400b49b13.js +0 -1
  846. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-96fc12d400b49b13.js +0 -1
  847. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-96fc12d400b49b13.js +0 -1
  848. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-96fc12d400b49b13.js +0 -1
  849. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-96fc12d400b49b13.js +0 -1
  850. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-96fc12d400b49b13.js +0 -1
  851. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-96fc12d400b49b13.js +0 -1
  852. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-96fc12d400b49b13.js +0 -1
  853. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-96fc12d400b49b13.js +0 -1
  854. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-96fc12d400b49b13.js +0 -1
  855. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-96fc12d400b49b13.js +0 -1
  856. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-96fc12d400b49b13.js +0 -1
  857. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-96fc12d400b49b13.js +0 -1
  858. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-96fc12d400b49b13.js +0 -1
  859. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-96fc12d400b49b13.js +0 -1
  860. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-96fc12d400b49b13.js +0 -1
  861. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-96fc12d400b49b13.js +0 -1
  862. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-96fc12d400b49b13.js +0 -1
  863. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-96fc12d400b49b13.js +0 -1
  864. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-96fc12d400b49b13.js +0 -1
  865. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-96fc12d400b49b13.js +0 -1
  866. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-96fc12d400b49b13.js +0 -1
  867. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-96fc12d400b49b13.js +0 -1
  868. package/.next/static/chunks/app/api/worktrees/route-96fc12d400b49b13.js +0 -1
  869. package/.next/static/chunks/app/layout-b9d8aef70e4f17b2.js +0 -1
  870. package/.next/static/chunks/app/manifest.webmanifest/route-96fc12d400b49b13.js +0 -1
  871. package/.next/static/chunks/app/proxy/[...path]/route-96fc12d400b49b13.js +0 -1
  872. package/.next/static/chunks/app/repositories/page-71f5a5ac29b0370d.js +0 -1
  873. package/.next/static/chunks/app/review/page-ff3efb96fdf9bb4b.js +0 -1
  874. package/.next/static/chunks/app/worktrees/[id]/layout-96fc12d400b49b13.js +0 -1
  875. package/.next/static/chunks/app/worktrees/[id]/page-f6a151304860b549.js +0 -1
  876. package/.next/static/css/c1e307d05daf93b6.css +0 -1
  877. /package/.next/static/{LNfVZiq6FZwKsV7L9Mi6M → z4d8-5MaLkoD-4EhueZwk}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=9731,exports.ids=[9731],exports.modules={12693:(a,b,c)=>{c.r(b),c.d(b,{CLIToolManager:()=>bh});var d=c(89731),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,d){await (0,f.R7)({worktreeId:a,worktreePath:b,instanceId:c,model:d})}async sendMessage(a,b,c){await (0,f.pU)(a,b,c)}supportsImage(){return!0}async sendMessageWithImage(a,b,c,d){await this.sendMessage(a,this.imageMessageBody(b,c),d)}imageMessageBody(a,b){let c=`
2
- ![](${b})`;return a?`${a}${c}`:c}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(4405),j=c(93997),k=c(54490),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(69130),w=c(77093),x=c(49973);let y=(0,q.h)("cli-tools/codex"),z="codex";function A(){return{screen:null,attempts:0}}class B extends d.Mj{async launchSession(a,b,c){await this.requireInstalled();let{sessionName:d,exists:e,live:f}=await this.resolveLaunchPane(a,b,c,{logger:y,liveAction:"codex-session-exists",relaunchAction:"codex-session-relaunch"});if(!f){(0,t.Fq)({worktreeId:a,cliToolId:r.c1,instanceId:c});try{let f=(0,t.wK)({target:{worktreeId:a,cliToolId:r.c1,instanceId:c},executablePath:this.command,worktreePath:b});e||await this.createLaunchPane(d,b);let g=async()=>{(0,t.Fq)({worktreeId:a,cliToolId:r.c1,instanceId:c}),await this.typeLaunchLines(d,[(0,v.Y)(f)]),await new Promise(a=>setTimeout(a,3e3))};await this.typeLaunchLines(d,[(0,v.Y)(f)]),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(d,{relaunch:g,trustHooks:(0,s.dO)(b)}),y.info("started-codex-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to start Codex session: ${a}`)}}}async waitForReady(a,b){let c=b?.trustHooks??!1,d=!1,e=!1,f=A(),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=(0,x.TO)(),t=await (0,h.Xg)(a,50),v=(0,k.aJ)(t),w=(0,k.E6)(v);if(("hooks-review"===w||"hooks-list"===w||"hooks-detail"===w)&&await this.answerCodexHooksScreen(a,w,f,c,s)){await new Promise(a=>setTimeout(a,u.CV));continue}if((0,k.zZ)(v))return void y.info("codex-prompt-detected");if(j&&!m&&b?.relaunch&&null!==(0,l.GE)(v,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)(z),y.info("codex-update-lock-released",{sessionName:a})),y.info("codex-relaunched-after-update",{sessionName:a,policy:g}),await b.relaunch();continue}let A=(0,k.Qh)(v);if("update"===A){if(j=!0,null===i){await new Promise(a=>setTimeout(a,1e3));continue}if(!d){let b=i;b!==n.update||(0,p.mf)(z)?b===n.update&&(q=!0):(b=n["skip-until-next-version"],y.warn("codex-update-dialog-yielded-to-running-update",{sessionName:a,policy:g,requestedKey:i,key:b}));let c=b,e=await (0,x.x7)(a,s,()=>this.isActiveDialogStill(a,"update"),()=>(0,h.V1)(a,c,!1));if(!e.answered){q&&(q=!1,(0,p.lM)(z)),y.info("codex-update-dialog-answer-skipped",{sessionName:a,reason:e.reason});continue}d=!0,b===n.update&&(r=Math.max(r,o+1+120)),y.info("codex-update-dialog-answered",{sessionName:a,policy:g,key:b}),await new Promise(a=>setTimeout(a,u.CV));continue}}if("press-enter"===A){let b=await (0,x.x7)(a,s,()=>this.isActiveDialogStill(a,"press-enter"),()=>(0,h.ds)(a,"Enter"));if(!b.answered){y.info("codex-notification-answer-skipped",{sessionName:a,reason:b.reason});continue}y.info("dismissed-codex-notification"),await new Promise(a=>setTimeout(a,u.CV));continue}if("trust"===A&&!e){let b=await (0,x.x7)(a,s,()=>this.isActiveDialogStill(a,"trust"),()=>(0,h.V1)(a,"1",!1));if(!b.answered){y.info("codex-trust-dialog-answer-skipped",{sessionName:a,reason:b.reason});continue}e=!0,y.info("auto-trusted-folder-for-codex"),await new Promise(a=>setTimeout(a,u.CV));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}y.info("codex-prompt-detection")}finally{q&&(q=!1,(0,p.lM)(z),y.warn("codex-update-lock-released-unfinished",{sessionName:a}))}}async isActiveDialogStill(a,b){return(0,k.Qh)((0,k.aJ)(await (0,h.Xg)(a,50)))===b}async answerCodexHooksScreen(a,b,c,d,e){if(c.screen!==b&&(c.screen=b,c.attempts=0),c.attempts>=3)return y.warn("codex-hooks-screen-unresponsive",{sessionName:a,screen:b,trust:d}),!1;let f=c.attempts+1,g=await (0,x.x7)(a,e,async()=>(0,k.E6)((0,k.aJ)(await (0,h.Xg)(a,50)))===b,()=>this.sendCodexHooksScreenKey(a,b,f,d));return g.answered?c.attempts=f:y.info("codex-hooks-screen-answer-skipped",{sessionName:a,screen:b,reason:g.reason}),!0}async sendCodexHooksScreenKey(a,b,c,d){if("hooks-review"===b){let b=1===c?d?"2":"3":"1";await (0,h.V1)(a,b,!1),y.info("codex-hooks-review-answered",{sessionName:a,key:b,attempt:c,trust:d});return}if(d){await (0,h.V1)(a,"t",!1,{literal:!0}),y.info("codex-hooks-screen-trusted",{sessionName:a,screen:b,attempt:c});return}await (0,h.ds)(a,"Escape"),y.info("codex-hooks-screen-escaped",{sessionName:a,screen:b,attempt:c})}async waitForPrompt(a){let b=Date.now(),c=A(),d=null;for(;Date.now()-b<15e3;){try{let b=(0,x.TO)(),e=await (0,h.Xg)(a,50),f=(0,k.aJ)(e),g=(0,k.E6)(f);if("hooks-review"===g||"hooks-list"===g||"hooks-detail"===g){if(null===d){let b=await (0,h.nS)(a);d=null!==b&&(0,s.dO)(b)}await this.answerCodexHooksScreen(a,g,c,d,b)}else if((0,k.zZ)(f))return}catch{}await new Promise(a=>setTimeout(a,500))}throw y.info("codex-prompt-not-detected"),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);await this.requireSession("Codex",a,c,{relaunch:!0});try{await this.waitForPrompt(d),await (0,i.FW)({sessionName:d,message:b,cliToolId:"codex",composer:this.describeComposer(),awaitTypedBody:!0}),(0,j.gm)(d),y.info("sent-message-to-codex-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to send message to Codex: ${a}`,{cause:b})}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:y,stoppedAction:"stopped-codex-session",requestExit:async a=>{await (0,h.ds)(a,"C-d"),await new Promise(a=>setTimeout(a,u.Zf))}})}constructor(...a){super(...a),this.id="codex",this.name="Codex CLI",this.command="codex"}}var C=c(23365),D=c(76877),E=c(48217);let F=(0,q.h)("cli-tools/gemini");class G extends d.Mj{async launchSession(a,b,c){await this.requireInstalled();let{sessionName:d,exists:e,live:f}=await this.resolveLaunchPane(a,b,c,{logger:F,liveAction:"gemini-session-exists",relaunchAction:"gemini-session-relaunch"});if(!f){(0,t.Fq)({worktreeId:a,cliToolId:r.o,instanceId:c});try{e||await this.createLaunchPane(d,b);let f=(0,t.wK)({target:{worktreeId:a,cliToolId:r.o,instanceId:c},executablePath:this.command,worktreePath:b});(0,E.du)(d);try{await this.typeLaunchLines(d,[(0,v.Y)(f)]),await new Promise(a=>setTimeout(a,6e3)),await this.waitForReady(d)}finally{(0,E.FG)(d)}F.info("started-gemini-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to start Gemini session: ${a}`)}}}async waitForReady(a){let b=!1,c=null,d=new Set;for(let e=0;e<30;e++){try{let e=(0,x.KC)(),f=await (0,h.Xg)(a,C.H),g=(0,k.aJ)(f);if(k.wN.test(g))return void F.info("gemini-prompt-detected");if(!b){let f=(0,D.CZ)(D.g1,g);if("press"===f.action){let d=await (0,x.x7)(a,e,async()=>{let b=(0,D.CZ)(D.g1,(0,k.aJ)(await (0,h.Xg)(a,C.H)));return"press"===b.action&&b.key===f.key},()=>(0,h.ds)(a,f.key),{mode:"exclusive"});d.answered?(b=!0,c=Date.now(),(0,E._F)(a,c),F.info("auto-trusted-folder-for-gemini")):F.info("gemini-trust-answer-skipped",{sessionName:a,reason:d.reason})}else{let b=(0,D.oy)(D.g1,f);b&&"absent"!==f.action&&!d.has(f.reason)&&(d.add(f.reason),F.warn(b.event,{sessionName:a,...b.fields}))}}}catch(b){F.debug("gemini-ready-capture-failed",{sessionName:a,error:(0,w.u1)(b)})}await new Promise(a=>setTimeout(a,1e3))}if(null!==c){let a=5e3-(Date.now()-c);a>0&&await new Promise(b=>setTimeout(b,a))}F.info("gemini-prompt-detection")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,h.Xg)(a,C.H),c=(0,k.aJ)(b);if(k.wN.test(c))return}catch(b){F.debug("gemini-prompt-capture-failed",{sessionName:a,error:(0,w.u1)(b)})}await new Promise(a=>setTimeout(a,500))}throw F.info("gemini-prompt-not-detected"),Error("Gemini prompt not ready: timed out waiting for the input prompt before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Gemini",a,c,{relaunch:!0});try{await this.waitForPrompt(d),await (0,i.FW)({sessionName:d,message:b,cliToolId:"gemini",composer:this.describeComposer()}),(0,j.gm)(d),F.info("sent-message-to-gemini-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to send message to Gemini: ${a}`,{cause:b})}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:F,stoppedAction:"stopped-gemini-session",requestExit:async a=>{await (0,h.ds)(a,"C-c"),await new Promise(a=>setTimeout(a,u.Is)),await (0,h.V1)(a,"/quit",!0),await new Promise(a=>setTimeout(a,u.Zf))}})}constructor(...a){super(...a),this.id="gemini",this.name="Gemini CLI",this.command="gemini"}}var H=c(15194),I=c(51297),J=c(95595);let K=/^ctx:\d+%\s*[>❯]/,L=/^ctx:\d+%\s*[>❯]\s*$/,M=[/^\s*─{3,}\s*$/,/^\s*✦\s.*│/,/^\s*ESC: stop\s*$/];function N(a){let b=(0,I.aJ)(a).split("\n"),c=-1;for(let a=b.length-1;a>=0;a--)if(K.test(b[a])){c=a;break}if(c<0)return!1;let d=b.slice(c+1).filter(a=>""!==a.trim()).some(a=>!M.some(b=>b.test(a)));if(L.test(b[c])&&!d)return!0;if(!d)return!1;let e=(0,J.WC)(a,"vibe-local");return!e.hasActivePrompt&&(0,J.f8)(e)}var O=c(72312),P=c(88807),Q=c(56791);let R=(0,q.h)("cli-tools/vibe-local");class S extends d.Mj{async launchSession(a,b,c){await this.requireInstalled();let{sessionName:d,exists:e,live:f}=await this.resolveLaunchPane(a,b,c,{logger:R,liveAction:"vibe-local-session-exists",relaunchAction:"vibe-local-session-relaunch"});if(!f){(0,t.Fq)({worktreeId:a,cliToolId:this.id,instanceId:c});try{e||await this.createLaunchPane(d,b);let c="vibe-local -y";try{let b=(0,P.getDbInstance)(),d=(0,Q.getWorktreeById)(b,a);d?.vibeLocalModel&&H.QP.test(d.vibeLocalModel)&&(c+=` -m ${d.vibeLocalModel}`);let e=d?.vibeLocalContextWindow;(0,H.FV)(e)&&(c+=` --context-window ${Number(e)}`)}catch{}await this.typeLaunchLines(d,[(0,v.Y)(c)]),await new Promise(a=>setTimeout(a,5e3)),R.info("started-vibe-local-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to start Vibe Local session: ${a}`)}}}async sendMessage(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Vibe Local",a,c,{relaunch:!0});try{await this.waitForPrompt(d),await (0,i.FW)({sessionName:d,message:b,cliToolId:"vibe-local",composer:this.describeComposer(),interEnterWaitMs:u.PY,readiness:{label:"Vibe Local",isReady:N}}),(0,j.gm)(d),R.info("sent-message-to-vibe-local-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to send message to Vibe Local: ${a}`,{cause:b})}}async waitForPrompt(a){let b=Date.now()+15e3,c=(0,O.uo)();for(;Date.now()<b;){let d=!1;try{let e=await (0,O.IS)(()=>(0,h.Xg)(a,200),b);if(null===e)break;if(N(e))return;d=c.observe(function(a){let b=(0,J.WC)(a,"vibe-local");return b.hasActivePrompt&&!(0,J.f8)(b)}(e))}catch(b){c.reset(),R.debug("vibe-local-prompt-capture-failed",{sessionName:a,error:(0,w.u1)(b)})}if(d)throw R.warn("vibe-local-prompt-wait-dialog",{sessionName:a,reads:c.reads}),(0,O.cA)(a,"Vibe Local");let e=b-Date.now();if(e<=0)break;await new Promise(a=>setTimeout(a,Math.min(500,e)))}throw R.info("vibe-local-prompt-not-detected"),Error("Vibe Local prompt not ready: timed out waiting for the input prompt before sending")}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:R,stoppedAction:"stopped-vibe-local-session",requestExit:async a=>{await (0,h.ds)(a,"C-c"),await new Promise(a=>setTimeout(a,u.Is)),await (0,h.ds)(a,"C-c"),await new Promise(a=>setTimeout(a,u.Zf))}})}constructor(...a){super(...a),this.id="vibe-local",this.name="Vibe Local",this.command="vibe-local"}}var T=c(90580),U=c(87673),V=c(7321),W=c(81776),X=c(56263),Y=c(21758),Z=c(54633),$=c(78099);let _=(0,q.h)("cli-tools/copilot"),aa=O.yp,ab=new Set(["model","agent","theme","permissions","skills","mcp","settings","statusline","subagents","resume","session"]),ac=/^[>❯](?:\s|$)/,ad=/^\s*\S\s+Loading:/;function ae(a,b){let c=b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),d=[RegExp(`^\\s*●\\s+Model changed from .+ to ${c}(?=\\s|$)`),RegExp(`^\\s*●\\s+Switched model to:\\s*${c}\\s*$`)],e=RegExp(`^\\s*✗\\s+Model "${c}" is \\S`),f={switched:0,rejected:[]};for(let b of(0,k.aJ)(a).split("\n"))d.some(a=>a.test(b))?f.switched++:e.test(b)&&f.rejected.push(b.trim().replace(/^✗\s+/,""));return f}function af(a,b){if(!a.isCurrent())throw Error(`Session ${a.sessionName} was handed to another writer before ${b}; input lock lost, nothing was typed (Issue #3945).`)}async function ag(a,b,c){try{await (0,h.V1)(a,b,!0)}catch(a){throw a?.delivery!=="not-started"&&(0,x.kJ)(c),a}}function ah(a){let b=(0,k.aJ)(a).split("\n");for(let a=b.length-1;a>=0;a--){let c=b[a].trim().replace(/\s{2,}/g," ");if(""!==c)return JSON.stringify(c.length>80?`${c.slice(0,80)}…`:c)}return"an empty pane"}async function ai(a){try{await (0,U.H0)(a,"copilot")}catch(a){if(a.code===V.a9)throw a}}function aj(a){throw _.warn("input-recheck-prompt-waiting",{sessionName:a,cliToolId:"copilot",confirmedMs:aa}),Object.assign(Error(`A prompt dialog stayed open in session ${a} for ${aa}ms while the copilot composer was awaited (re-checked under the input lock); nothing was typed (Issue #4067).`),{code:V.a9})}class ak extends d.Mj{async isInstalled(){return await (0,W.B0)()!==null}launchExecutable(a){return"path"===a.source?this.command:Y.nL}async launchSession(a,b,c){let d=await (0,W.B0)();if(!d)throw(0,$.Tl)(this);let{sessionName:e,exists:f,live:g}=await this.resolveLaunchPane(a,b,c,{logger:_,liveAction:"copilot-session-exists",relaunchAction:"copilot-session-relaunch"});if(!g){(0,t.Fq)({worktreeId:a,cliToolId:Z.V,instanceId:c});try{let g=(0,t.wK)({target:{worktreeId:a,cliToolId:Z.V,instanceId:c},executablePath:this.launchExecutable(d),worktreePath:b});f||await this.createLaunchPane(e,b),(0,E.du)(e);try{await this.typeLaunchLines(e,[(0,v.Y)(g)]),await this.waitForReady(e)}finally{(0,E.FG)(e)}_.info("started-copilot-session",{executableSource:d.source,version:d.version})}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to start Copilot session: ${a}`)}}}async answerFolderTrustDialog(a,b,c){if(!(0,k.Rx)(b))return!1;let d=await (0,x.x7)(a,c,async()=>(0,k.Rx)((0,k.aJ)(await (0,h.Xg)(a,50))),()=>(0,h.V1)(a,k.oD,!1));return d.answered?((0,E._F)(a),(0,j.gm)(a),_.info("copilot-folder-trust-answered"),!0):(_.info("copilot-folder-trust-answer-skipped",{reason:d.reason}),!1)}isComposerDrawn(a){let b=a.split("\n");for(let a=1;a<b.length-1;a++)if(ac.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=(0,x.TO)(),d=await (0,h.Xg)(a,50),e=(0,k.aJ)(d);if(this.isComposerDrawn(e))return void _.info("copilot-prompt-detected");!b&&await this.answerFolderTrustDialog(a,e,c)&&(b=!0)}catch{}await new Promise(a=>setTimeout(a,1e3))}_.info("copilot-prompt-detection-timeout")}async waitForPrompt(a,b=15e3,c="composer"){let d=Date.now()+b,e=!1,f="",g=(0,O.uo)();for(;Date.now()<d;){try{let b=(0,x.TO)(),i=await (0,O.IS)(()=>(0,h.Xg)(a,50),d);if(null===i)break;if(f=(0,k.aJ)(i),this.isReadyFor(c,f))return{ready:!0,output:f};if(!e&&await this.answerFolderTrustDialog(a,f,b)&&(e=!0),g.observe(this.isRefusableDialog(i,f)))return _.info("copilot-prompt-wait-dialog",{until:c,reads:g.reads,bottomRow:ah(f)}),{ready:!1,output:f,dialog:!0}}catch{g.reset()}let b=d-Date.now();if(b<=0)break;await new Promise(a=>setTimeout(a,Math.min(500,b)))}return _.info("copilot-prompt-not-detected",{until:c,bottomRow:ah(f)}),{ready:!1,output:f}}isRefusableDialog(a,b){return!((0,k.Rx)(b)||this.isReadyFor("composer",b))&&(0,J.WC)(a,"copilot").hasActivePrompt}isReadyFor(a,b){if(!k.Du.test(b))return!1;let c=b.split("\n");return!function(a){for(let b=a.length-1;b>=0;b--)if(""!==a[b].trim())return ad.test(a[b]);return!1}(c)&&("composer"===a||"idle"===(0,k.Wn)(c))}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 _.info("copilot-selection-list-detected"),!0}catch{}}return _.info("copilot-selection-list-not-detected-timeout"),!1}async sendMessage(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Copilot",a,c,{relaunch:!0});try{let a=this.extractSlashCommand(b);if(a&&ab.has(a)){await (0,x.hC)(d,async c=>{await (0,x.KA)(c);let e=await this.waitForPrompt(d);if(e.dialog&&aj(d),await (0,U.H0)(d,"copilot"),!e.ready)throw _.warn("copilot-selection-list-not-sent:prompt-not-ready",{command:a,bottomRow:ah(e.output)}),Error("copilot prompt not ready within 15000ms, so the selection-list command was not sent; nothing was typed");af(c,"the selection-list command"),(0,x.dy)(),await ag(d,b,c),await this.waitForSelectionList(d)}),(0,j.gm)(d),_.info("sent-selection-list-command-to-copilot",{command:a});return}let c=await this.waitForPrompt(d);if(!c.ready)throw c.dialog&&aj(d),await ai(d),_.warn("copilot-message-not-sent:prompt-not-ready",{bottomRow:ah(c.output)}),Error("copilot prompt not ready within 15000ms, so the message was not sent; nothing was typed");await (0,i.FW)({sessionName:d,message:b,cliToolId:"copilot",composer:this.describeComposer(),textInputWaitMs:X.L1,verifyDelayMs:X.wp,readiness:this.inputReadiness}),(0,j.gm)(d),_.info("sent-message-to-copilot-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to send message to Copilot: ${a}`,{cause:b})}}async sendModelCommand(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Copilot",a,c,{relaunch:!1});try{await (0,x.hC)(d,a=>this.switchModelUnderInputLock(d,b,a))}catch(d){let a=(0,w.u1)(d),c=d?.code;throw Object.assign(Error(`Failed to switch Copilot model to ${b}: ${a}`),"string"==typeof c?{code:c}:{})}}async switchModelUnderInputLock(a,b,c){await (0,x.KA)(c);let d=await this.waitForPrompt(a,X.pL,"idle");if(!d.ready)throw d.dialog&&aj(a),_.warn("copilot-model-switch-not-idle",{model:b,bottomRow:ah(d.output)}),Error(`copilot did not become idle within ${X.pL}ms, so /model was not sent`);let e=ae(d.output,b);await (0,U.H0)(a,"copilot"),af(c,"/model"),await ag(a,`/model ${b}`,c);let f=await this.waitForModelSwitchOutcome(a,b,e);if((0,j.gm)(a),"rejected"===f.kind)throw _.warn("copilot-model-rejected",{model:b,reason:f.reason}),Error(`copilot refused it: ${f.reason}`);if("pending"===f.kind)throw _.warn("copilot-model-switch-unconfirmed",{model:b,bottomRow:f.bottomRow}),Error(`copilot printed no answer to /model within ${X.pL}ms; the switch may still take effect, and nothing further was typed`);_.info("copilot-model-switched",{model:b})}async waitForModelSwitchOutcome(a,b,c){let d=Date.now(),e="";for(;Date.now()-d<X.pL;){await new Promise(a=>setTimeout(a,250));try{e=await (0,h.Xg)(a,50)}catch{continue}let d=function(a,b,c){let d=ae(b,c);return d.rejected.length>a.rejected.length?{kind:"rejected",reason:d.rejected[d.rejected.length-1]}:d.switched>a.switched?{kind:"switched"}:{kind:"pending"}}(c,e,b);if("pending"!==d.kind)return d}return{kind:"pending",bottomRow:ah(e)}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:_,stoppedAction:"stopped-copilot-session",requestExit:async a=>{await (0,h.ds)(a,"C-c"),await new Promise(a=>setTimeout(a,u.Is)),await (0,h.V1)(a,"/exit",!1),await new Promise(a=>setTimeout(a,X.L1)),await (0,h.KB)(a,["Enter"]),await new Promise(a=>setTimeout(a,u.Rk))}})}constructor(...a){super(...a),this.id="copilot",this.name="Copilot",this.command="copilot",this.inputReadiness={label:"copilot",isReady:a=>this.isReadyFor("composer",(0,k.aJ)(a))}}}var al=c(61878),am=c(69082),an=c(83406);let ao=(0,q.h)("cli-tools/antigravity"),ap=/\?\s+for\s+shortcuts/;function aq(a){if(null===a)return{screen:"no-capture",screenTail:[]};let b=(0,k.aJ)(a).split("\n").map(a=>a.trimEnd()).filter(a=>""!==a.trim()),c=(0,al.zJ)(a,"antigravity").lastLines;return{screen:0===b.length?"blank":(0,am.VI)(c)?"trust-dialog":as(a)?"ready":"other",screenTail:b.slice(-5).map(a=>a.slice(0,160))}}function ar(a,b,c){let d=(0,D.oy)(D.z0,b);!d||"absent"===b.action||"press"===b.action||c.has(b.reason)||(c.add(b.reason),ao.warn(d.event,{sessionName:a,...d.fields}))}function as(a){let b=(0,al.zJ)(a,"antigravity");if(k.kT.test(b.lastLines)||am.wf.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&&(!!ap.test(c)||!(0,k.ut)("antigravity",b.lastLines))}class at extends d.Mj{async launchSession(a,b,c,d){await this.requireInstalled();let{sessionName:e,exists:f,live:g}=await this.resolveLaunchPane(a,b,c,{logger:ao,liveAction:"antigravity-session-exists",relaunchAction:"antigravity-session-relaunch"});if(!g){(0,t.Fq)({worktreeId:a,cliToolId:r.F0,instanceId:c});try{let g=(0,t.wK)({target:{worktreeId:a,cliToolId:r.F0,instanceId:c},executablePath:this.command,worktreePath:b}),h=d?`${g} --model '${d.replace(/'/g,"'\\''")}'`:g;f||await this.createLaunchPane(e,b),(0,an.zu)(e);try{await this.typeLaunchLines(e,[(0,v.Y)(h)]),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(e)}finally{(0,an.F1)(e)}ao.info("started-antigravity-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to start Antigravity session: ${a}`)}}}async waitForReady(a){let b;(0,an.R6)(a);let c=!1,d=new Set,e=null,f=0;for(let g=0;g<30;g++){try{let b=(0,x.TO)(),f=await (0,h.Xg)(a,50),g=(0,k.aJ)(f);if(e=f,as(g))return void ao.info("antigravity-prompt-detected");if(!c){let e=(0,D.CZ)(D.z0,g);if("press"===e.action&&!(0,an.jI)(a)){let d=e.key,f=await (0,x.x7)(a,b,()=>this.isTrustPressStill(a,d),()=>(0,h.ds)(a,d));if(f.answered){c=!0,ao.info("auto-trusted-folder-for-antigravity"),await new Promise(a=>setTimeout(a,500));continue}ao.info("antigravity-trust-answer-skipped",{sessionName:a,reason:f.reason})}ar(a,e,d)}}catch(a){f++,b=(0,w.u1)(a)}await new Promise(a=>setTimeout(a,1e3))}c||(0,an.Qn)(a),ao.info("antigravity-prompt-detection-timeout",{sessionName:a,attempts:30,trustDialogHandled:c,...c?{}:{reason:"startup-trust-unhandled"},...aq(e),captureErrors:f,...void 0!==b?{lastCaptureError:b}:{}})}async isTrustPressStill(a,b){let c=(0,k.aJ)(await (0,h.Xg)(a,50)),d=(0,D.CZ)(D.z0,c);return"press"===d.action&&d.key===b}async waitForPrompt(a){let b,c=Date.now(),d=c+((0,an.Dc)(a)?6e4:15e3),e=new Set,f=null,g=0;for(;Date.now()<d;){try{let b=(0,x.TO)(),c=await (0,h.Xg)(a,50),g=(0,k.aJ)(c);if(f=c,as(g))return void(0,an.R6)(a);let i=(0,am.VI)((0,al.zJ)(g,"antigravity").lastLines)?(0,D.CZ)(D.z0,g):null;null!==i&&"press"!==i.action&&(0,an.Dc)(a)&&ar(a,i,e);let j=i?.action==="press"?i.key:null,l=null!==j&&(0,an.Dc)(a)?await (0,x.x7)(a,b,()=>this.isTrustPressStill(a,j),async()=>!!(0,an.qT)(a)&&(await (0,h.ds)(a,j),!0)):null;if(null===l||l.answered||ao.info("antigravity-trust-answer-skipped",{sessionName:a,reason:l.reason,afterLaunchWindow:!0}),l?.answered===!0&&l.value){ao.info("auto-trusted-folder-for-antigravity",{sessionName:a,afterLaunchWindow:!0}),d=Math.max(d,Date.now()+15e3),await new Promise(a=>setTimeout(a,500));continue}}catch(a){g++,b=(0,w.u1)(a)}await new Promise(a=>setTimeout(a,500))}let i=(0,an.Dc)(a),j=aq(f);ao.info("antigravity-prompt-not-ready",{sessionName:a,waitedMs:Date.now()-c,...i?{reason:"startup-trust-unhandled"}:{},...j,captureErrors:g,...void 0!==b?{lastCaptureError:b}:{}});let l="trust-dialog"===j.screen?' (the folder-trust confirmation "Do you trust the contents of this project?" is on screen and needs an answer)':i?" (startup-trust-unhandled: agy had not shown its folder-trust confirmation when the launch window ended, and it has not appeared since)":"";throw Error(`Antigravity prompt not ready: timed out waiting for the input prompt before sending${l}`)}async sendMessage(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Antigravity",a,c,{relaunch:!0});try{await this.waitForPrompt(d),await (0,i.FW)({sessionName:d,message:b,cliToolId:"antigravity",composer:this.describeComposer()}),(0,j.gm)(d),ao.info("sent-message-to-antigravity-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to send message to Antigravity: ${a}`,{cause:b})}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:ao,stoppedAction:"stopped-antigravity-session",requestExit:async a=>{await (0,h.ds)(a,"C-d"),await new Promise(a=>setTimeout(a,u.Zf))},afterKill:a=>{(0,j.gm)(a),(0,an.R6)(a)}})}constructor(...a){super(...a),this.id="antigravity",this.name="Antigravity CLI",this.command="agy"}}var au=c(99702),av=c(28862),aw=c(35566),ax=c(2669);let ay=(0,q.h)("cli-tools/command-code"),az=["--trust","--skip-onboarding","--no-auto-update"];function aA(a){let b=a.split("\n");return!(0>(0,k.I$)(b))&&!k.k0.test((0,k.aJ)(a))}class aB extends d.Mj{navigationKeys(){return{keys:e.G2,leaderKey:null}}async launchSession(a,b,c){await this.requireInstalled();let{sessionName:d,exists:e,live:f}=await this.resolveLaunchPane(a,b,c,{logger:ay,liveAction:"command-code-session-exists",relaunchAction:"command-code-session-relaunch"});if(!f){(0,t.Fq)({worktreeId:a,cliToolId:av.k,instanceId:c}),this.composerPendingSince.set(d,Date.now());try{var g;e||await this.createLaunchPane(d,b);let f=(g={target:{worktreeId:a,cliToolId:av.k,instanceId:c},executablePath:this.command,worktreePath:b},[(0,t.wK)(g),...az].join(" "));await this.typeLaunchLines(d,[(0,v.Y)(f)]),await new Promise(a=>setTimeout(a,u.yO)),await this.waitForReady(d),ay.info("started-command-code-session")}catch(a){throw this.composerPendingSince.delete(d),Error(`Failed to start Command Code session: ${(0,w.u1)(a)}`)}}}async waitForReady(a){for(let b=0;b<30;b++){try{let b=await (0,h.Xg)(a,50);if(aA(b)){this.composerPendingSince.delete(a),ay.info("command-code-prompt-detected");return}}catch{}await new Promise(a=>setTimeout(a,1e3))}ay.info("command-code-prompt-detection-timeout")}async waitForPrompt(a,b,c){let d=Date.now(),e=0;for(;Date.now()-d<15e3;){let d=!1;try{let b=await (0,h.Xg)(a,50);if(!(d=null!==(0,aw.V)(b))&&aA(b))return void this.composerPendingSince.delete(a)}catch{}if((e=d?e+1:0)>=2)throw ay.info("command-code-plan-review-blocks-send",{sessionName:a}),Object.assign(Error((0,au.VY)(b,c)),{code:V.Le});await new Promise(a=>setTimeout(a,500))}let f=this.composerPendingSince.get(a);if(void 0!==f){let b=Date.now()-f;if(b<=12e4)throw ay.info("command-code-session-still-starting",{sessionName:a,sinceLaunchMs:b}),new ax.Sr(this.name,a,b);this.composerPendingSince.delete(a)}throw ay.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);await this.requireSession("Command Code",a,c,{relaunch:!0});try{await this.waitForPrompt(d,a,c),await (0,i.FW)({sessionName:d,message:b,cliToolId:"command-code",composer:this.describeComposer()}),(0,j.gm)(d),ay.info("sent-message-to-command-code-session")}catch(b){if((0,ax.wQ)(b))throw b;let a=Error(`Failed to send message to Command Code: ${(0,w.u1)(b)}`,{cause:b});if(b?.code===V.Le)throw Object.assign(a,{code:V.Le});throw a}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:ay,stoppedAction:"stopped-command-code-session",requestExit:async a=>{await (0,h.V1)(a,"/exit",!1),await new Promise(a=>setTimeout(a,u.pL)),await (0,h.KB)(a,["Enter"]),await new Promise(a=>setTimeout(a,u.Zf))},afterKill:a=>{this.composerPendingSince.delete(a),(0,j.gm)(a)}})}constructor(...a){super(...a),this.id="command-code",this.name="Command Code CLI",this.command="commandcode",this.composerPendingSince=new Map}}var aC=c(79646),aD=c(28354),aE=c(16983),aF=c(46684),aG=c(34114),aH=c(62887),aI=c(72272),aJ=c(49154),aK=c(40255),aL=c(95375),aM=c(27870),aN=c(57510),aO=c(90488),aP=c(51719),aQ=c(83738),aR=c(26945),aS=c(38892),aT=c(16100),aU=c(71193);let aV=(0,q.h)("lib/hooks/sources/opencode-v2/ingest");async function aW(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(3480),c.e(5456),c.e(2710),c.e(1501),c.e(6486),c.e(6781)]).then(c.bind(c,16781))]),g=d(),h=e(g,a.worktreeId)??null;if(!h)return void aV.info("opencode-v2-stop-unresolved-target",{worktreeId:a.worktreeId});await f(g,h,aU.B,b)}async function aX(a,b,c){let d=(0,aR.bH)(a),e=(0,aS.X3)(a);if(null===d||null===e)return null;let f=await (0,aG.$F)(d,e,b),g=f?.find(a=>(0,aN.Qd)(a)&&a.id===c);return(0,aN.Qd)(g)?g:null}async function aY(a,b,c){let d=(0,aQ.hl)(b.raw,b.receivedAt);if(!d)return aV.info("opencode-v2-permission-unparsed",{worktreeId:a.worktreeId,instanceId:c}),!1;let e=await (0,aI.t)(aT.Wp,a,d,aT.Wp.parsePermissionRequest(b.raw));return aV.info("opencode-v2-permission-decided",{worktreeId:a.worktreeId,instanceId:c,decisionId:d.id,behavior:e.behavior,reason:e.reason,delivered:e.delivered,settled:e.settled}),e.settled}async function aZ(a,b,c){let d=(0,aQ.rk)(b.raw);if(d)return d;let e=(0,aP.DH)(b.raw),f=(0,aP.lx)(b.raw);if(null===e||null===f)return null;let g=await c(a,f,e);return g?(0,aQ.rk)(g):null}async function a$(a,b,c=aW,d=aX){let e=a.instanceId??aU.B;try{let f=(0,aL.classifyAgentEventDelivery)({worktreeId:a.worktreeId,cliToolId:aU.B,instanceId:e,event:b.event,detail:b.detail,sessionId:b.conversationId,at:b.receivedAt,identity:aT.Wp.eventIdentityOf(b.raw),identityKind:aT.Wp.capabilities.eventIdentity});if(f.duplicate)return void aV.info("opencode-v2-event-duplicate-dropped",{worktreeId:a.worktreeId,instanceId:e,event:b.event,detail:b.detail,by:f.by});let g={event:b.event,at:b.receivedAt,detail:b.detail?.slice(0,aH.h9)??null,sessionId:b.conversationId,message:null,model:b.model},h={sessionStartMayArriveLate:!1};if("notification"===b.event&&b.detail===aP.xz){g.decisionId=(0,aP.DH)(b.raw);let c=(0,aQ.vF)(b.raw);g.toolName=c?.toolName??(0,aP.Dg)(b.raw),g.decisionPatterns=c?.patterns??null,g.message=(0,aQ.s8)(b.raw)?.slice(0,aM.lY)??null,g.promptSettled=await aY(a,b,e),(0,aL.recordAgentEvent)(a.worktreeId,aU.B,e,g,h)}else if("notification"===b.event&&b.detail===aP.er)g.decisionId=(0,aP.DH)(b.raw),g.promptSettled=!0,(0,aL.recordAgentEvent)(a.worktreeId,aU.B,e,g,h),g.decisionId&&(0,aK.L0)({worktreeId:a.worktreeId,cliToolId:aU.B,instanceId:e},g.decisionId);else if("notification"===b.event&&b.detail===aP.Ai){let c=await aZ(a,b,d);g.message=c?.questions[0]?.question.slice(0,aM.lY)??null,(0,aL.recordAgentEvent)(a.worktreeId,aU.B,e,g,h),c&&(0,aL.recordAskUserQuestion)(a.worktreeId,aU.B,e,c,b.receivedAt),(0,aL.reportQuestionPending)(a.worktreeId,aU.B,e,{toolName:aJ.GF,decisionId:(0,aP.DH)(b.raw),detail:aP.Ai},b.receivedAt),aV.info("opencode-v2-question-recorded",{worktreeId:a.worktreeId,instanceId:e,decisionId:(0,aP.DH)(b.raw),parsed:null!==c,questionCount:c?.questions.length??0}),await (0,aO.Vo)(a,e,g.message,b.receivedAt)}else"stop"===b.event?(b.detail===aP.dA&&(g.message=(0,aP.ZL)(b.raw)?.slice(0,aM.lY)??null,aV.error("opencode-v2-turn-failed",{worktreeId:a.worktreeId,instanceId:e,sessionId:b.conversationId,message:g.message})),(0,aL.recordAgentEvent)(a.worktreeId,aU.B,e,g,h),await c(a,e)):(0,aL.recordAgentEvent)(a.worktreeId,aU.B,e,g,h);aV.info("opencode-v2-event-received",{worktreeId:a.worktreeId,instanceId:e,type:(0,aP.Cr)(b.raw),event:b.event,detail:b.detail})}catch(c){aV.error("opencode-v2-event-ingest-failed",{worktreeId:a.worktreeId,instanceId:e,event:b.event,error:c instanceof Error?c.message:String(c)})}}var a_=c(32301);let a0=(0,q.h)("lib/hooks/sources/opencode-v2/runtime"),a1=[0,500,1e3,2e3];function a2(a,b){return{worktreeId:a,cliToolId:aU.B,instanceId:b}}function a3(a){return a instanceof Error?a.message:String(a)}async function a4(a,b){try{let c=await (0,aR.ui)(a,b);if(null===c)return null;return(0,aS.OC)(a),c}catch(b){return a0.warn("opencode-v2-server-reserve-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:a3(b)}),null}}async function a5(a,b){let c=(0,aS.X3)(a);return null!==c&&"healthy"===(await (0,aG.tJ)(b,c)).kind}async function a6(a){try{let b=(0,aR.bH)(a);if(null===b)return!1;if((0,a_.yw)(a))return!0;let c=!1;for(let d of a1)if(d>0&&await new Promise(a=>setTimeout(a,d)),await a5(a,b)){c=!0;break}if(!c)return a0.info("opencode-v2-server-not-reachable",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b}),!1;return await aT.Wp.subscribe(a,b=>{a$(a,b)}),a0.info("opencode-v2-event-stream-attached",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b}),!0}catch(b){return a0.warn("opencode-v2-event-stream-attach-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:a3(b)}),!1}}async function a7(a,b){try{if((0,a_.yw)(a))return!0;let c=await (0,aR.Lv)(a,b,b=>a5(a,b));if(null===c)return!1;return await a6(a)}catch(b){return a0.warn("opencode-v2-event-stream-resume-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:a3(b)}),!1}}async function a8(a){try{await (0,a_.VV)(a)}catch(b){a0.warn("opencode-v2-subscription-close-failed",{worktreeId:a.worktreeId,error:a3(b)})}try{(0,aR.OZ)(a)}catch(b){a0.warn("opencode-v2-port-forget-failed",{worktreeId:a.worktreeId,error:a3(b)})}try{(0,aS.Nc)(a)}catch(b){a0.warn("opencode-v2-password-remove-failed",{worktreeId:a.worktreeId,error:a3(b)})}}var a9=c(93949),ba=c(18140);let bb=(0,q.h)("cli-tools/opencode-v2"),bc=(0,aD.promisify)(aC.execFile),bd=aE.xT,be=/^\/\S+$/,bf=[...e.qD,e.Mx,...e.TM,"a","l","m"];class bg extends d.Mj{navigationKeys(){return{keys:bf,leaderKey:e.Mx}}async isInstalled(){return null!==(await (0,ba.Qq)()).executable}async isRunning(a,b){let c=this.getSessionName(a,b),d=await (0,h.N)(c);return d&&this.resumeInBackground(a,c,b),d}resumeInBackground(a,b,c){let d=a2(a,c);if((0,a_.yw)(d))return;let e=Date.now(),f=this.resumeAttemptedAt.get(b);void 0!==f&&e-f<3e4||(this.resumeAttemptedAt.set(b,e),(async()=>{try{let a=await (0,h.nS)(b);if(null===a)return;await a7(d,a)}catch(a){bb.debug("opencode-v2-lazy-resume-failed",{error:(0,w.u1)(a)})}})())}async launchSession(a,b,c){let d=(await (0,ba.Qq)()).executable;if(!d)throw(0,$.Tl)(this);let e=this.getSessionName(a,c),f=a2(a,c),g={windowWidth:(0,aF.r)({warnSidebar:!1}),windowHeight:aE.xT},i=await (0,h.N)(e);if(i){if(await this.reconcileExistingSession(e,b,g),await this.isToolLive(e,{confirm:!0})){await a7(f,b),bb.info("opencode-v2-session-exists");return}bb.warn("opencode-v2-session-relaunch",{sessionName:e}),await a8(f)}(0,t.Fq)(f);try{i||await this.createLaunchPane(e,b);try{await bc("tmux",["resize-window","-t",(0,h.lA)(e),"-x",String(g.windowWidth),"-y",String(g.windowHeight)])}catch{}let j=await a4(f,b);null===j&&bb.warn("opencode-v2-launch-without-server",{worktreeId:a,instanceId:c});let k=(0,t.wK)({target:f,executablePath:d.path,worktreePath:b});await this.typeLaunchLines(e,[(0,v.Y)(k)]),await this.waitForReady(e),await a6(f),bb.info("started-opencode-v2-session")}catch(a){throw Error(`Failed to start OpenCode V2 session: ${(0,w.u1)(a)}`)}}async waitForReady(a){for(let b=0;b<60;b++){try{let c=(0,k.aJ)(await (0,h.Xg)(a,bd));if((0,k.Ok)(c))return bb.info("opencode-v2-composer-detected",{attempt:b}),!0}catch{}await new Promise(a=>setTimeout(a,500))}return bb.info("opencode-v2-ready-detection-timeout"),!1}async waitForComposer(a){let b=Date.now()+u.D1;for(;;){let c=null;try{let b=(0,k.aJ)(await (0,h.Xg)(a,bd));if(c=(0,k.dF)(b),null===c&&(0,k.Ok)(b))return}catch{}if(null!==c)throw Error(`OpenCode V2 composer not available: the "${c}" dialog is open. Close it (esc) or finish the choice, then send again`);if(Date.now()>=b)break;await new Promise(a=>setTimeout(a,500))}throw Error("OpenCode V2 composer not ready: timed out waiting for it before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("OpenCode V2",a,c,{relaunch:!0});try{await this.waitForComposer(d),await (0,i.FW)({sessionName:d,message:be.test(b)?`${b} `:b,cliToolId:aU.B,composer:this.describeComposer()}),(0,j.gm)(d),bb.info("sent-message-to-opencode-v2-session")}catch(a){throw Error(`Failed to send message to OpenCode V2: ${(0,w.u1)(a)}`,{cause:a})}}async killSession(a,b){let c=this.getSessionName(a,b),d=a2(a,b),e=(0,aR.bH)(d);try{if(await (0,h.N)(c)){await (0,h.V1)(c,a9.M0,!1),await new Promise(a=>setTimeout(a,u.pL)),await (0,h.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,u.Lw));let a=await (0,a9.rY)({sessionAlive:()=>(0,h.N)(c),portAnswering:null===e?null:async()=>"unreachable"!==(await (0,aG.tJ)(e,"")).kind});a.ok||(bb.info("opencode-v2-graceful-exit-postcondition-unmet",{sessionName:c,reason:a.reason,...null!==e?{port:e}:{}}),await (0,h.fY)(c))}else await (0,h.fY)(c);(0,j.gm)(c),this.resumeAttemptedAt.delete(c),bb.info("stopped-opencode-v2-session")}catch(a){throw bb.error("session:stop-failed",{error:(0,w.u1)(a)}),a}finally{await a8(d)}}constructor(...a){super(...a),this.id=aU.B,this.name="OpenCode V2",this.command=aU.V,this.resumeAttemptedAt=new Map}}class bh{constructor(){this.tools=new Map,this.tools.set("claude",new g),this.tools.set("codex",new B),this.tools.set("gemini",new G),this.tools.set("vibe-local",new S),this.tools.set("opencode",new T.Ui),this.tools.set("copilot",new ak),this.tools.set("antigravity",new at),this.tools.set("command-code",new aB),this.tools.set("opencode-v2",new bg)}static getInstance(){return bh.instance||(bh.instance=new bh),bh.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(3480),c.e(8728),c.e(1601),c.e(8918),c.e(610),c.e(1656),c.e(5220)]).then(c.bind(c,95220));e(a,b,d)}}},17287:(a,b,c)=>{c.d(b,{CD:()=>g,nL:()=>f});var d=c(24455);let e=(0,c(36925).v)("__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},35566:(a,b,c)=>{c.d(b,{V:()=>l});var d=c(51297),e=c(91478);let f=/^\s*type \+ enter to comment\b/i,g=/^\s*enter to pin\s*·\s*esc discard\s*$/i,h=/^\s*↑\/↓ choose\s*·\s*enter to run\s*$/i,i=/^\s*❯ +(?:Submit review\b|Approve\s+ctrl\+a\b|Cancel\s+esc\b)/im,j=/^\s*REVIEW\s+(\d+)\s+pending comments?\b/im,k=/\(•\)\s+with\s+\d+\s+comments?\s+as\s+notes/i;function l(a){if(!a)return null;let b=(0,d.aJ)(a.replace(/\r\n/g,"\n")).split("\n").filter(a=>""!==a.trim()).slice(-15);if(0===b.length)return null;let c=b.join("\n"),l=j.exec(c),m=l?Number(l[1]):0;if((0,e.a9)(c))return{phase:"approve-choice",pendingComments:m,approveChoice:k.test(c)?"with-comments":"discard-comments"};if(!(0,e.tH)(c))return null;let n=b[b.length-1],o="unknown";return i.test(c)||h.test(n)?o="action-focus":g.test(n)?o="comment-box":f.test(n)&&(o="body"),{phase:o,pendingComments:m,approveChoice:null}}},39333:(a,b,c)=>{c.d(b,{$Y:()=>h,Bg:()=>j,Fg:()=>e,HB:()=>g,df:()=>i,f9:()=>d});let d=[".png",".jpg",".jpeg",".gif",".webp",".svg"],e=0x1400000,f=[{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 g(a){return a?a.startsWith(".")?a.toLowerCase():"."+a.toLowerCase():""}function h(a){let b=g(a),c=f.find(a=>a.extension===b);return c?.mimeType||"application/octet-stream"}function i(a){if(!a)return!1;let b=g(a);return d.includes(b)}function j(a,b){if(b.length>e)return{valid:!1,error:`File size exceeds ${e/1024/1024}MB limit`,reason:"too-large"};if(".svg"===g(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=g(a),d=f.find(a=>a.extension===c);if(!d?.magicBytes)return".svg"===c;let e=d.magicBytesOffset||0;return!(b.length<e+d.magicBytes.length)&&d.magicBytes.every((a,c)=>b[e+c]===a)}(a,b)?{valid:!1,error:"Invalid image magic bytes"}:{valid:!0}}d.filter(a=>".svg"!==a).map(a=>h(a)).filter(a=>"application/octet-stream"!==a).join(",")},46684:(a,b,c)=>{c.d(b,{r:()=>f});var d=c(16983);let e=(0,c(72626).h)("cli-tools/opencode-pane-width");function f(a){let b=process.env[d.ao],c=(0,d._u)(),f=b?.trim(),g=void 0!==f&&(!/^\d+$/.test(f)||Number.parseInt(f,10)!==c);return void 0!==b&&g?e.warn("opencode-pane-width-rejected",{requested:b,applied:c}):a.warnSidebar&&c>=d.Lg&&e.warn("opencode-pane-width-sidebar-visible",{width:c,sidebarMinWidth:d.Lg}),c}},48217:(a,b,c)=>{c.d(b,{FG:()=>h,_F:()=>j,du:()=>g,mN:()=>i,to:()=>k});var d=c(36925);let e=(0,d.v)("__launchWindows",()=>new Map),f=(0,d.v)("__launchDialogPresses",()=>new Map);function g(a){e.set(a,(e.get(a)??0)+1),f.delete(a)}function h(a){let b=e.get(a)??0;b<=1?e.delete(a):e.set(a,b-1)}function i(a){return e.has(a)}function j(a,b=Date.now()){f.set(a,b)}function k(a,b=Date.now()){let c=f.get(a);return void 0!==c&&b-c<3e4}},53554:(a,b,c)=>{function d(a){let b="[^\\S\\n]";return RegExp(`(?:^${b}*|\xb7${b}*|${b}{2})${a}(?:${b}\\([^()\\n]{1,32}\\))?(?:${b}*\xb7|${b}{2}|${b}*$)`,"i")}c.d(b,{h:()=>g});let e={key:"BTab",cycle:["default","plan","autopilot"],indicators:[{mode:"autopilot",pattern:d("autopilot")},{mode:"plan",pattern:d("plan(?:[^\\S\\n]mode)?")}],tailRows:2,noteId:null},f={claude:{key:"BTab",cycle:["auto","manual","accept-edits","plan"],indicators:[{mode:"accept-edits",pattern:/⏵⏵\s*accept edits on\b/},{mode:"auto",pattern:/⏵⏵\s*auto mode on\b/},{mode:"plan",pattern:/⏸\s*plan mode on\b/},{mode:"manual",pattern:/⏸\s*manual mode on\b/}],tailRows:3,noteId:null},"command-code":{key:"BTab",cycle:["default","accept-edits","plan"],indicators:[{mode:"accept-edits",pattern:/»\s*accept edits on\b/},{mode:"bypass",pattern:/»\s*permission bypass on\b/},{mode:"dont-ask",pattern:/»\s*don't-ask on\b/},{mode:"plan",pattern:/^[^\S\n]*plan mode\b/},{mode:"default",pattern:/\?\s+for\s+shortcuts\b/}],tailRows:4,noteId:null},codex:{key:"BTab",cycle:["default","plan"],indicators:[{mode:"plan",pattern:/\bPlan mode\s*\(shift\+tab to cycle\)/i}],tailRows:3,noteId:"codexModelCoupled"},copilot:e,antigravity:{key:"BTab",cycle:["default","accept-edits","plan"],indicators:[{mode:"accept-edits",pattern:d("accept-edits")},{mode:"plan",pattern:d("plan(?:[^\\S\\n]mode)?")}],tailRows:2,noteId:null},"opencode-v2":{key:"BTab",cycle:["build","plan"],indicators:[{mode:"build",pattern:/^[^\S\n]*┃[^\S\n]+Build[^\S\n]·[^\S\n]/},{mode:"plan",pattern:/^[^\S\n]*┃[^\S\n]+Plan[^\S\n]·[^\S\n]/}],tailRows:4,noteId:"opencodeAgentSwitch"}};function g(a){return f[a]??null}Object.keys(f)},70849:(a,b,c)=>{c.d(b,{LQ:()=>k,SW:()=>l});var d=c(72626),e=c(84574),f=c(95375),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:()=>j});var d=c(72626),e=c(40255),f=c(50474),g=c(25071),h=c(17287);let i=(0,d.h)("lib/hooks/permission-adjudication");async function j(a,b,d,k,l="event"){let m=b.instanceId??b.cliToolId,n={worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:m},{resolvePermissionRequest:o}=await Promise.all([c.e(3241),c.e(6119)]).then(c.bind(c,43241)),p=o(n,k),q="allow"===p.behavior?{kind:"allowOnce"}:{kind:"abstain"};if("abstain"===q.kind){let c=(0,f.y_)(a);c.safe||i.warn("permission-request-abstain-blocks-agent",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:m,toolName:k?.toolName??null,decisionId:d.id,reason:p.reason,consequence:c.summary,blocksForMs:c.blocksForMs})}let r=(0,e.qu)(n,d.id,{outcome:"allow"===p.behavior?"allow":"abstained",..."policy-suppressed"===p.reason&&p.suppressedBy?{withholdReason:p.suppressedBy}:{},promptType:"multiple_choice"}),{delivery:s}=await (0,g.GW)(a,b,d,q),t=s?.delivered===!0,u=t&&a.capabilities.permissionReplyReleasesPrompt;return(0,h.nL)(b.worktreeId,b.cliToolId,b.instanceId,{decisionId:d.id,toolName:k?.toolName??null,behavior:"allow"===p.behavior?"allow":null,reason:p.reason,delivered:t,releasedPrompt:u,trigger:l,at:d.askedAt}),(0,e.YF)(r,{delivered:t,settled:u}),i.info("permission-decision-adjudicated",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:m,decisionId:d.id,toolName:k?.toolName??null,behavior:p.behavior,reason:p.reason,suppressedBy:p.suppressedBy,delivered:t,settled:u,trigger:l}),{decisionId:d.id,behavior:"allow"===p.behavior?"allow":null,reason:p.reason,delivered:t,settled:u}}},72312:(a,b,c)=>{c.d(b,{IS:()=>g,cA:()=>h,uo:()=>f,yp:()=>e});var d=c(7321);let e=2e3;function f(){let a=null,b=0;return{observe:(c,d=Date.now())=>c?(a??=d,++b>=2&&d-a>=e):(a=null,b=0,!1),reset(){a=null,b=0},get reads(){return b}}}async function g(a,b){let c,d,e=b-Date.now();if(e<=0)return null;let f=a();f.catch(()=>void 0);try{d=await Promise.race([f,new Promise(a=>{c=setTimeout(()=>a(null),e)})])}catch(a){if(Date.now()>b)return null;throw a}finally{void 0!==c&&clearTimeout(c)}return Date.now()>b?null:d}function h(a,b){return Object.assign(Error(`A prompt dialog stayed open in session ${a} for ${e}ms while the ${b} input prompt was awaited (re-checked under the input lock); nothing was typed (Issue #4084).`),{code:d.a9})}},76877:(a,b,c)=>{c.d(b,{CZ:()=>k,O5:()=>m,g1:()=>f,oy:()=>n,yN:()=>l,z0:()=>g});var d=c(54490),e=c(69082);let f={id:"gemini-folder-trust",question:/Do you trust (?:the files in )?this folder\?/,signature:/\bTrust folder\b|\bDon't trust\b/,cursorRow:/^[\s│]*●\s*(\S.*?)[\s│]*$/,optionRow:/^[\s│]*(?:\S\s+)?\d\.\s+(?:Trust folder|Trust parent folder|Don't trust)\b/,minOptionRows:2,optionsWithin:8,dismissedRow:/restarting to apply the trust changes/,safeRow:/^1\.\s+Trust folder\b/,key:"Enter",liveRows:30,declaredIn:"src/lib/cli-tools/launch-dialog.ts (GEMINI_TRUST_LAUNCH_DIALOG)"},g={id:"antigravity-folder-trust",question:e.wf,signature:/\bYes, I trust this folder\b/,optionRow:/^\s*(?:\S\s+)?(?:Yes, I trust this folder|No, exit)\s*$/,minOptionRows:2,optionsWithin:4,cursorRow:/^\s*>\s+(\S.*?)\s*$/,safeRow:/^Yes, I trust this folder$/,key:"Enter",liveRows:12,declaredIn:"src/lib/cli-tools/launch-dialog.ts (ANTIGRAVITY_TRUST_LAUNCH_DIALOG)"};function h(a,b){return(0,d.aJ)(a).split("\n").map(a=>a.trimEnd()).filter(a=>""!==a.trim()).slice(-b)}function i(a,b){if(!a.dismissedRow)return b;for(let c=b.length-1;c>=0;c--)if(a.dismissedRow.test(b[c]))return b.slice(c+1);return b}function j(a,b){for(let c=b.length-1;c>=0;c--){if(!a.question.test(b[c]))continue;let d=function(a,b,c){let d=Math.min(b.length-1,c+a.optionsWithin);for(let e=c+1;e<=d;e++){if(!a.optionRow.test(b[e]))continue;let c=[];for(let d=e;d<b.length&&a.optionRow.test(b[d]);d++)c.push(b[d]);return c.length>=a.minOptionRows?c:null}return null}(a,b,c);if(d)return d}return null}function k(a,b){let c=i(a,h(b,a.liveRows)),d=j(a,c);if(!d)return c.some(b=>a.signature.test(b))?{action:"unrecognized",reason:"question-not-found"}:{action:"absent"};let e=[];for(let b of d){let c=a.cursorRow.exec(b);c&&e.push(c[1])}if(0===e.length)return{action:"unrecognized",reason:"cursor-not-found"};if(e.length>1)return{action:"unrecognized",reason:"multiple-cursors"};let f=e[0];return a.safeRow.test(f)?{action:"press",key:a.key}:{action:"hold",reason:"cursor-off-safe-row",cursorLabel:f.slice(0,80)}}function l(a,b){return null!==j(a,i(a,h(b,a.liveRows)))}function m(a,b){return null!==j(a,h(b,a.liveRows))}function n(a,b){return"absent"===b.action||"press"===b.action?null:"hold"===b.action?{event:"launch-dialog-held",fields:{dialog:a.id,...b}}:{event:"launch-dialog-unrecognized",fields:{dialog:a.id,...b,hint:`the dialog's wording or cursor drawing may have changed; compare the screen with ${a.declaredIn}`}}}},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","opencode-v2":"Install with: npm install -g @opencode/cli",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,b){var c,d;return new e.lU(a.name,(c=a,d=b,`${c.name} (${c.command}) is not installed or not in PATH. `+(d?`${d} `:"")+`${f[c.id]}`))}},83406:(a,b,c)=>{c.d(b,{Dc:()=>m,F1:()=>j,Qn:()=>l,R6:()=>r,Ug:()=>k,bO:()=>p,jI:()=>o,qT:()=>n,vj:()=>q,zu:()=>i});var d=c(36925);let e=(0,d.v)("__antigravityStartupTrustPending",()=>new Map),f=(0,d.v)("__antigravityStartupWindows",()=>new Map),g=(0,d.v)("__antigravityStartupTrustHolds",()=>new Set),h=(0,d.v)("__antigravityStartupTrustClaims",()=>new Map);function i(a){f.set(a,(f.get(a)??0)+1)}function j(a){let b=f.get(a)??0;b<=1?f.delete(a):f.set(a,b-1)}function k(a){return f.has(a)}function l(a,b=Date.now()){e.set(a,b)}function m(a){return e.has(a)}function n(a,b=Date.now()){if(g.has(a))return!1;let c=e.delete(a);return c&&h.set(a,b),c}function o(a){return g.has(a)}function p(a,b,c=Date.now()){let d=h.get(a);return void 0!==d&&c-d<b}function q(a){return g.add(a),()=>{g.delete(a)}}function r(a){e.delete(a)}},89731:(a,b,c)=>{c.d(b,{Mj:()=>G,Km:()=>H});var d=c(79646),e=c(28354),f=c(40964),g=c(79892),h=c(96463),i=c(56717),j=c(23365),k=c(53554),l=c(93949),m=c(91536),n=c(50945),o=c(78099);let p=new Set;var q=c(51297),r=c(87447),s=c(45567),t=c(72626),u=c(77093),v=c(8953),w=c(20610),x=c(16983),y=c(56588),z=c(77662),A=c(46689);let B=(0,e.promisify)(d.exec),C=(0,t.h)("cli-tools/base"),D=RegExp(`${s.ZM}=(?:'([^']*)'|"([^"]*)"|(\\S+))`,"g"),E=new Set,F=new Set;class G{async isInstalled(){try{return await B(`which ${this.command}`,{timeout:5e3}),!0}catch{return!1}}getSessionName(a,b){return(0,f.mf)(this.id,a,b)}async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async startSession(a,b,c,d){let e=null;try{e=this.getSessionName(a,c)}catch{}let f=()=>this.startSessionOnce(a,b,c,d);return null===e?f():(0,z.fb)(e,this.name,f,{cliToolId:this.id,model:d})}async startSessionOnce(a,b,d,e){let f=(0,y.Hb)();try{await (0,y.PS)(f,()=>this.launchSession(a,b,d,e))}catch(b){var g;throw this.takeAdoptionMark(a,d),g={worktreeId:a,cliToolId:this.id,instanceId:d,toolName:this.name},Promise.all([c.e(1356),c.e(1191),c.e(3480)]).then(c.bind(c,81099)).then(({notifySessionStartFailurePush:a})=>a({...g,error:b})).catch(()=>{}),b}finally{(0,y.O5)(a,this.id,d,f)}let h=this.takeAdoptionMark(a,d);null!==h&&await this.warnIfHookUrlIsStale(a,h,d)}async reconcileExistingSession(a,b,c){await (0,h.St)(a,b),E.add(a),await (0,g.zT)(a,c)}takeAdoptionMark(a,b){try{let c=this.getSessionName(a,b);return E.delete(c)?c:null}catch{return null}}async warnIfHookUrlIsStale(a,b,d){if(!F.has(b))try{let f=await (0,g.Xg)(b,{startLine:-x.eu});F.add(b);let h=function(a){let b=null;for(let c of(0,q.aJ)(a).matchAll(D)){let a=c[1]??c[2]??c[3]??null;a&&(b=a)}return b}(f);if(null===h)return;let i=function(a){try{let b=new URL(a);if(""!==b.port)return Number(b.port);return"https:"===b.protocol?443:80}catch{return null}}(h),j=(0,r.D0)();if(null===i||i===j)return;C.warn("session:hook-url-stale",{cliToolId:this.id,sessionName:b,sessionPort:i,serverPort:j});var e={worktreeId:a,cliToolId:this.id,instanceId:d,toolName:this.name,sessionPort:i,serverPort:j};let k=[e.worktreeId,e.instanceId??e.cliToolId,e.sessionPort,e.serverPort].join(":");p.has(k)||(p.add(k),Promise.all([c.e(1356),c.e(1191),c.e(3480)]).then(c.bind(c,81099)).then(({notifyStaleHookUrlPush:a})=>a(e)).catch(()=>{}))}catch(b){C.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,i.gc)(this.id)}gracefulExitSequence(){return(0,l.JV)(this.id)}captureSpec(){return(0,j.y)(this.id)}livenessSpec(){return(0,m.H7)(this.id)}async isToolLive(a,b){let c=this.livenessSpec(),d=await (0,n.Q)(a,c);if(d.alive)return!0;if(!b?.confirm)return!1;await new Promise(a=>setTimeout(a,w.kZ));let e=await (0,n.Q)(a,c);return e.alive?(C.info("session:liveness-confirm-recovered",{cliToolId:this.id,firstReason:d.reason}),!0):(C.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 C.warn("session:relaunch-skipped-no-path",{cliToolId:this.id,worktreeId:a});C.info("session:relaunch-before-send",{cliToolId:this.id,sessionName:c}),await this.startSession(a,d,b)}async requireSession(a,b,c,d){let e=this.getSessionName(b,c);if(await (0,z.Vk)(e,this.name),!await (0,g.N)(e))throw Error(`${a} session ${e} does not exist. Start the session first.`);d.relaunch&&await this.relaunchIfToolExited(b,c)}async requireInstalled(){if(!await this.isInstalled())throw(0,o.Tl)(this)}async resolveLaunchPane(a,b,c,d){let e=this.getSessionName(a,c),f=await (0,g.N)(e);if(f){if(await this.reconcileExistingSession(e,b),await this.isToolLive(e,{confirm:!0}))return d.logger.info(d.liveAction),{sessionName:e,exists:f,live:!0};d.logger.warn(d.relaunchAction,{sessionName:e})}return{sessionName:e,exists:f,live:!1}}async typeLaunchLines(a,b){await (0,A.$)(a,b)}async createLaunchPane(a,b){await (0,g.jw)({sessionName:a,workingDirectory:b}),await new Promise(a=>setTimeout(a,w.Uc))}async requestExitAndKill(a,b,c){let d=this.getSessionName(a,b);try{await (0,g.N)(d)&&await c.requestExit(d);let a=await (0,g.fY)(d);c.afterKill?.(d),a&&c.logger.info(c.stoppedAction)}catch(a){throw c.logger.error("session:stop-failed",{error:(0,u.u1)(a)}),a}}navigationKeys(){return{keys:v.qD,leaderKey:null}}agentModeSpec(){return(0,k.h)(this.id)}}function H(a,b,c){a instanceof G&&a.warnIfRunningSessionHookUrlIsStale(b,c).catch(()=>{})}},90580:(a,b,c)=>{c.d(b,{Ui:()=>aJ,TZ:()=>aI});var d=c(89731),e=c(8953),f=c(79892),g=c(54490),h=c(4405),i=c(51297),j=c(95595),k=c(47893),l=c(14453);let m=/^Ask anything(?:\.\.\.|…)(?:[^\S\n]+"[^"\n]*")?$/;function n(a){let b=(0,i.aJ)(a);if(k.LO.test(b))return!1;let c=(0,j.WC)(a,"opencode");if(c.hasActivePrompt||"waiting"===c.status)return!1;let d=(0,l.$O)(b.split("\n"));return null!==d&&0!==d.length&&d.every(a=>""===a||m.test(a))}var o=c(72312),p=c(20029),q=c(93997),r=c(29021),s=c(21820),t=c(33873),u=c(8004),v=c(72626);let w=(0,v.h)("cli-tools/opencode-config"),x=/^[a-zA-Z0-9._:/-]{1,100}$/,y=/^[a-zA-Z0-9._:/@-]{1,200}$/,z="CM_OPENCODE_LOCAL_PROVIDER_CONFIG",A="OPENCODE_CONFIG",B=["opencode.json","opencode.jsonc",t.join(".opencode","opencode.json"),t.join(".opencode","opencode.jsonc")],C=["opencode.json","opencode.jsonc"];async function D(){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 w.warn("ollama-api-returned"),{};let e=await d.text();if(e.length>1048576)return w.warn("ollama-api-response"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.models))return w.warn("invalid-ollama-api"),{};for(let b of f.models.slice(0,100))"string"==typeof b?.name&&x.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?w.warn("ollama-api-timeout"):w.warn("failed-to-fetch")}return a}async function E(){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 w.warn("lm-studio-api"),{};let e=await d.text();if(e.length>1048576)return w.warn("lm-studio-api"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.data))return w.warn("invalid-lm-studio"),{};for(let b of f.data.slice(0,100))"string"==typeof b?.id&&y.test(b.id)&&(a[b.id]={name:b.id})}catch(a){a instanceof Error&&"AbortError"===a.name?w.warn("lm-studio-api"):w.warn("failed-to-fetch")}return a}function F(a=process.env){let b=t.join(s.homedir(),".config");return t.join((0,u.T)(a.XDG_CONFIG_HOME,b,"XDG_CONFIG_HOME"),"opencode")}async function G(){let[a,b]=await Promise.all([D(),E()]),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 H(a){let b=function(a=process.env){let b=(a[z]??"").trim().toLowerCase();return"worktree"===b||"project"===b?"worktree":"global"===b||"user"===b?"global":(""!==b&&"off"!==b&&"0"!==b&&"false"!==b&&"none"!==b&&w.warn("opencode-config-mode-unrecognised",{variable:z,value:b}),"off")}();if("off"===b)return{written:!1,configPath:null,reason:"disabled"};let c="worktree"===b?function(a){let b=t.resolve(a);try{if(!r.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 r.realpathSync(b)}(a):null,d=function(a,b=process.env){if(""!==(b[A]??"").trim())return`env:${A}`;if(null!==a)for(let b of B){let c=t.join(a,b);if(r.existsSync(c))return c}let c=F(b);for(let a of C){let b=t.join(c,a);if(r.existsSync(b))return b}return null}(c);if(null!==d)return w.info("opencode-config-generation-skipped",{mode:b,owned:d}),{written:!1,configPath:null,reason:"existing-config"};let e=c??F(),f=t.join(e,"opencode.json"),g=await G();if(0===Object.keys(g).length)return{written:!1,configPath:null,reason:"no-providers"};try{"global"===b&&r.mkdirSync(e,{recursive:!0}),r.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 w.warn("failed-to-write-opencodejson:error-insta"),{written:!1,configPath:null,reason:"write-failed"}}return w.info("opencode-config-generated",{mode:b,configPath:f}),{written:!0,configPath:f,reason:"written"}}var I=c(16983),J=c(46684),K=c(79646),L=c(28354),M=c(39333),N=c(1305),O=c(49791),P=c(62887),Q=c(72272),R=c(49154),S=c(40255),T=c(95375),U=c(27870),V=c(57510),W=c(70096),X=c(75356),Y=c(98211),Z=c(90488),$=c(85322);let _=(0,v.h)("lib/hooks/sources/opencode/ingest");async function aa(a,b,c){let d=(0,W.VM)($.k),e=(0,Y.Lu)(b.raw,b.receivedAt);if(!e)return _.info("opencode-permission-unparsed",{worktreeId:a.worktreeId,instanceId:c}),!1;let f=await (0,Q.t)(d,a,e,d.parsePermissionRequest(b.raw));return _.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 ab(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(3480),c.e(5456),c.e(2710),c.e(1501),c.e(6486),c.e(6781)]).then(c.bind(c,16781))]),g=d(),h=e(g,a.worktreeId)??null;if(!h)return void _.info("opencode-stop-unresolved-target",{worktreeId:a.worktreeId});let i=await f(g,h,$.k,b);_.info("opencode-stop-applied",{worktreeId:a.worktreeId,instanceId:b,taskId:i.taskId,taskEventApplied:i.taskEventApplied,verificationRunId:i.verificationRunId})}async function ac(a,b){let c=a.instanceId??$.k;try{let d=(0,W.VM)($.k),e=(0,T.classifyAgentEventDelivery)({worktreeId:a.worktreeId,cliToolId:$.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 _.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,P.h9)??null,sessionId:b.conversationId,message:(function(a){let b=(0,V.Qd)(a.raw.properties)?a.raw.properties:{};if(a.detail===X.aF)return(0,V.NZ)(b,["metadata","command"])??(0,V.O2)(b,"permission");if(a.detail===X.Tm){let a=b.questions;return Array.isArray(a)&&(0,V.Qd)(a[0])?(0,V.O2)(a[0],"question"):null}return a.detail===X.vE?(0,V.NZ)(b,["error","data","message"])??(0,V.NZ)(b,["error","name"]):null})(b)?.slice(0,U.lY)??null,model:b.model},g={sessionStartMayArriveLate:d.capabilities.sessionStartMayArriveLate};if("notification"===b.event&&b.detail===X.aF){f.decisionId=(0,V.O2)((0,V.Qd)(b.raw.properties)?b.raw.properties:{},"id");let d=(0,Y.LF)(b.raw,b.receivedAt);f.toolName=d?.toolName??null,f.decisionPatterns=d?.patterns??null,f.promptSettled=await aa(a,b,c),(0,T.recordAgentEvent)(a.worktreeId,$.k,c,f,g);return}if("notification"===b.event&&b.detail===X.C8){f.decisionId=(0,X.Mn)(b.raw),f.promptSettled=!!(0,W.VM)($.k).capabilities.permissionReplyReleasesPrompt||(_.info("opencode-permission-reply-not-releasing",{worktreeId:a.worktreeId,instanceId:c,reason:"capability-permissionReplyReleasesPrompt-false"}),!1),(0,T.recordAgentEvent)(a.worktreeId,$.k,c,f,g),f.decisionId&&(0,S.L0)({worktreeId:a.worktreeId,cliToolId:$.k,instanceId:c},f.decisionId),_.info("opencode-permission-reply-observed",{worktreeId:a.worktreeId,instanceId:c,decisionId:f.decisionId,released:f.promptSettled});return}if((0,T.recordAgentEvent)(a.worktreeId,$.k,c,f,g),"notification"===b.event&&b.detail===X.Tm){let d=(0,W.VM)($.k).parseQuestion(b.raw);d&&((0,T.recordAskUserQuestion)(a.worktreeId,$.k,c,d,b.receivedAt),(0,T.reportQuestionPending)(a.worktreeId,$.k,c,{toolName:R.GF,decisionId:d.promptId,detail:X.Tm},b.receivedAt),_.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,Z.Vo)(a,c,f.message??null,b.receivedAt);return}if("stop"===b.event)return void await ab(a,c);"notification"===b.event&&b.detail===X.vE&&await (0,Z.dJ)(a,c,(0,V.NZ)((0,V.Qd)(b.raw.properties)?b.raw.properties:{},["error","name"]),f.message??null,b.conversationId,b.receivedAt),_.info("opencode-event-received",{worktreeId:a.worktreeId,instanceId:c,event:b.event,detail:b.detail})}catch(d){_.error("opencode-event-ingest-failed",{worktreeId:a.worktreeId,instanceId:c,event:b.event,error:d instanceof Error?d.message:String(d)})}}var ad=c(84574),ae=c(85965),af=c(33198);let ag=(0,v.h)("lib/hooks/sources/opencode/runtime");function ah(a,b){return{worktreeId:a,cliToolId:"opencode",instanceId:b}}async function ai(a,b){try{return await (0,ad.CU)(a,b)}catch(b){return ag.warn("opencode-port-reserve-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),null}}let aj=[0,500,1e3,2e3,4e3];async function ak(a,b){for(let[c,d]of aj.entries()){d>0&&await new Promise(a=>setTimeout(a,d));let e=await (0,O.sc)(b);if("healthy"===e.kind)return c>0&&ag.info("opencode-server-reachable-after-retry",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,attempt:c}),e.health;if("rejected"===e.kind){ag.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 al(a){try{let b=(0,ad.hC)(a);if(null===b)return!1;if((0,af.wb)(a))return!0;let c=await ak(a,b);if(!c)return ag.info("opencode-server-not-reachable",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,attempts:aj.length}),!1;await ae.cC.subscribe(a,b=>{ac(a,b)});let d=await am(a);return ag.info("opencode-event-stream-attached",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,version:c.version,activity:d}),!0}catch(b){return ag.warn("opencode-event-stream-attach-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),!1}}async function am(a){let b=null;try{b=await ae.cC.probeActivity(a)}catch(b){ag.debug("opencode-activity-probe-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)})}return(0,af.yn)(a,b,Date.now()),b}async function an(a,b){try{if((0,af.wb)(a))return!0;let c=await (0,ad.jp)(a,b);if(null===c)return!1;return await al(a)}catch(b){return ag.warn("opencode-event-stream-resume-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),!1}}async function ao(a){let b=a.instanceId??a.cliToolId;try{let c=(0,ad.hC)(a);if(null===c)return!1;let d=(0,af.lf)(a);if("live"!==d.state)return ag.info("opencode-abort-skipped-not-live",{worktreeId:a.worktreeId,instanceId:b,port:c,liveness:d.state}),!1;let e=(0,af.ym)(a);if(null===e)return ag.info("opencode-abort-skipped-no-session",{worktreeId:a.worktreeId,instanceId:b,port:c}),!1;let f=(0,af.H1)(a,e,2e3);if(!await (0,O.UR)(c,e))return f.cancel(),ag.warn("opencode-abort-rejected",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e}),!1;if(!await f.seen)return ag.warn("opencode-abort-unconfirmed",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e,timeoutMs:2e3}),!1;return ag.info("opencode-abort-confirmed",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e}),!0}catch(c){return ag.warn("opencode-abort-failed",{worktreeId:a.worktreeId,instanceId:b,error:c instanceof Error?c.message:String(c)}),!1}}async function ap(a){try{await (0,af.FN)(a),(0,ad.kE)(a)}catch(b){ag.warn("opencode-event-stream-release-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)})}}var aq=c(18529),ar=c(70849),as=c(27939),at=c(93949),au=c(20610),av=c(78099),aw=c(18140),ax=c(79748);let ay=/^timestamp=(\S+)/,az=/no such column: ?[A-Za-z0-9_.]*/;async function aA(a,b){let c;try{c=await (0,ax.open)(a,"r");let{size:d}=await c.stat(),e=Math.min(d,b),f=d-e,g=Buffer.alloc(e);await c.read(g,0,e,f);let h=g.toString("utf8");return f>0&&(h=h.slice(h.indexOf("\n")+1)),h}catch{return null}finally{await c?.close().catch(()=>{})}}async function aB(a,b=function(){let a=process.env.XDG_DATA_HOME||(0,t.join)((0,s.homedir)(),".local","share");return(0,t.join)(a,"opencode","log","opencode.log")}()){let c=await aA(b,262144);if(null===c)return null;let d=a-1e3;for(let a of c.split("\n")){let b=ay.exec(a);if(!b)continue;let c=Date.parse(b[1]);if(Number.isNaN(c)||c<d)continue;let e=az.exec(a);if(e)return e[0]}return null}var aC=c(69130),aD=c(77093),aE=c(49973);let aF=(0,v.h)("cli-tools/opencode"),aG=(0,L.promisify)(K.execFile),aH=[0,50,100,200];function aI(a,b){return a?`${a}
1
+ "use strict";exports.id=9731,exports.ids=[9731],exports.modules={4952:(a,b,c)=>{c.d(b,{$y:()=>i,gJ:()=>h});var d=c(79646),e=c(40964),f=c(82484),g=c(95953);function h(a){return(0,f.V)()?(0,g.D2)(process.env):function(a,b=process.env){let c=a=>new Promise(b=>{(0,d.execFile)("tmux",["show-environment",...a],{timeout:5e3},(a,c,d)=>{if(!a){let a=c.replace(/\n$/,""),d=a.indexOf("=");b(a.startsWith("-")||-1===d?{kind:"absent"}:{kind:"set",value:a.slice(d+1)});return}let e=String(d);b(/no server running|error connecting/i.test(e)?{kind:"no-server"}:{kind:"absent"})})});return async d=>{let e=await c(["-t",`=${a}`,d]);if("set"===e.kind)return e.value;let f=await c(["-g",d]);return"set"===f.kind?f.value:"no-server"===f.kind?b[d]:void 0}}((0,e.mf)(a.cliToolId,a.worktreeId,a.instanceId))}function i(a,b,c,d){return(0,g.vz)(b,{worktreePath:d,readEnv:h({worktreeId:a,cliToolId:b,instanceId:c})})}},12693:(a,b,c)=>{c.r(b),c.d(b,{CLIToolManager:()=>bp});var d=c(89731),e=c(97179),f=c(8953),g=c(57905);class h extends d.Mj{navigationKeys(){return{keys:f.pU,leaderKey:null}}async isInstalled(){return await (0,g.zw)()}async isRunning(a,b){return await (0,g.Yq)(a,b)}async launchSession(a,b,c,d){let f=(0,g.R7)({worktreeId:a,worktreePath:b,instanceId:c,model:d});await (0,e.g8)(this.getSessionName(a,c),f),await f}async sendMessage(a,b,c){await (0,g.pU)(a,b,c)}supportsImage(){return!0}async sendMessageWithImage(a,b,c,d){await this.sendMessage(a,this.imageMessageBody(b,c),d)}imageMessageBody(a,b){let c=`
2
+ ![](${b})`;return a?`${a}${c}`:c}async killSession(a,b){await (0,g.VU)(a,b)}constructor(...a){super(...a),this.id="claude",this.name="Claude Code",this.command="claude"}}var i=c(79892),j=c(4405),k=c(93997),l=c(30741),m=c(11472);let n=["skip","skip-until-next-version","update","ask"],o=Object.freeze({update:"1",skip:"2","skip-until-next-version":"3",ask:null});function p(a){if("string"!=typeof a)return null;let b=a.trim().toLowerCase();return"string"==typeof b&&n.includes(b)?b:null}c(68847);var q=c(61260);c(48800);var r=c(72626),s=c(96898),t=c(22354),u=c(99432),v=c(1305),w=c(20610),x=c(69130),y=c(77093),z=c(49973);let A=(0,r.h)("cli-tools/codex");function B(){return new Promise(a=>setTimeout(a,1e3))}let C="codex";function D(a){return"hooks-review"===a||"hooks-list"===a||"hooks-detail"===a||"hooks-settled"===a}function E(){return{screen:null,attempts:0,skips:(0,s.YT)()}}class F extends d.Mj{async launchSession(a,b,c){await this.requireInstalled();let{sessionName:d,exists:e,live:f}=await this.resolveLaunchPane(a,b,c,{logger:A,liveAction:"codex-session-exists",relaunchAction:"codex-session-relaunch"});if(!f){(0,v.Fq)({worktreeId:a,cliToolId:t.c1,instanceId:c});try{let f=(0,v.wK)({target:{worktreeId:a,cliToolId:t.c1,instanceId:c},executablePath:this.command,worktreePath:b});e||await this.createLaunchPane(d,b);let g=async()=>{(0,v.Fq)({worktreeId:a,cliToolId:t.c1,instanceId:c}),await this.typeLaunchLines(d,[(0,x.Y)(f)]),await new Promise(a=>setTimeout(a,3e3))};await this.typeLaunchLines(d,[(0,x.Y)(f)]),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(d,{relaunch:g,trustHooks:(0,u.dO)(b)}),A.info("started-codex-session")}catch(b){let a=(0,y.u1)(b);throw Error(`Failed to start Codex session: ${a}`)}}}async waitForReady(a,b){let c=b?.trustHooks??!1,d=!1,e=!1,f=0,g=E(),h=(0,s.YT)(),j=function(a){let b=p(void 0);if(null!==b)return b;let c=p(((void 0)??process.env).CM_CODEX_UPDATE_DIALOG);return null!==c?c:"skip-until-next-version"}(),k=o[j],n=!1,r=!1,t=!1,u=30;try{for(let p=0;p<u;p++){try{let v=(0,z.TO)(),x=await (0,i.Xg)(a,50),y=(0,l.aJ)(x),E=(0,l.E6)(y);if(D(E)&&await this.answerCodexHooksScreen(a,E,y,g,c,v)){await new Promise(a=>setTimeout(a,w.CV));continue}if((0,l.zZ)(y))return void A.info("codex-prompt-detected");if(n&&!r&&b?.relaunch&&null!==(0,m.GE)(y,this.livenessSpec())){r=!0,u=Math.max(u,p+1+30),e=!1,g.screen=null,g.attempts=0,t&&(t=!1,(0,q.lM)(C),A.info("codex-update-lock-released",{sessionName:a})),A.info("codex-relaunched-after-update",{sessionName:a,policy:j}),await b.relaunch();continue}let F=(0,l.Qh)(y);if("update"===F){if(n=!0,null===k){await new Promise(a=>setTimeout(a,1e3));continue}if(!d){let b=k;b!==o.update||(0,q.mf)(C)?b===o.update&&(t=!0):(b=o["skip-until-next-version"],A.warn("codex-update-dialog-yielded-to-running-update",{sessionName:a,policy:j,requestedKey:k,key:b}));let c=b,e=(0,z.nF)(a),f=await (0,z.x7)(a,v,()=>this.isActiveDialogStill(a,"update"),()=>(0,i.V1)(a,c,!1),{repeatScope:h});if(!f.answered){t&&(t=!1,(0,q.lM)(C)),(0,s.mG)(A,h,"codex-update-dialog-answer-skipped",{sessionName:a,reason:f.reason},e),await B();continue}(0,s.cu)(h,"codex-update-dialog-answer-skipped"),d=!0,b===o.update&&(u=Math.max(u,p+1+120)),A.info("codex-update-dialog-answered",{sessionName:a,policy:j,key:b}),await new Promise(a=>setTimeout(a,w.CV));continue}}if("press-enter"===F){let b=(0,z.nF)(a),c=await (0,z.x7)(a,v,()=>this.isActiveDialogStill(a,"press-enter"),()=>(0,i.ds)(a,"Enter"),{repeatScope:h});if(!c.answered){(0,s.mG)(A,h,"codex-notification-answer-skipped",{sessionName:a,reason:c.reason},b),await B();continue}(0,s.cu)(h,"codex-notification-answer-skipped"),A.info("dismissed-codex-notification"),await new Promise(a=>setTimeout(a,w.CV));continue}if("trust"===F&&!e){let b=(0,z.nF)(a),c=await (0,z.x7)(a,v,()=>this.isActiveDialogStill(a,"trust"),()=>(0,i.V1)(a,"1",!1),{repeatScope:h});if(!c.answered){(0,s.mG)(A,h,"codex-trust-dialog-answer-skipped",{sessionName:a,reason:c.reason},b),await B();continue}(0,s.cu)(h,"codex-trust-dialog-answer-skipped"),e=!0,A.info("auto-trusted-folder-for-codex"),await new Promise(a=>setTimeout(a,w.CV));continue}if("trust"===F&&f<3&&1===(0,l.n1)(y)){let b=(0,z.nF)(a),c=await (0,z.x7)(a,v,async()=>{let b=(0,l.aJ)(await (0,i.Xg)(a,50));return"trust"===(0,l.Qh)(b)&&1===(0,l.n1)(b)},()=>(0,i.ds)(a,"Enter"),{repeatScope:h});if(!c.answered){(0,s.mG)(A,h,"codex-trust-dialog-answer-skipped",{sessionName:a,reason:c.reason},b),await B();continue}(0,s.cu)(h,"codex-trust-dialog-answer-skipped"),f++,A.info("auto-trusted-folder-for-codex",{confirmedWith:"Enter",attempt:f}),await new Promise(a=>setTimeout(a,w.CV));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}A.info("codex-prompt-detection")}finally{t&&(t=!1,(0,q.lM)(C),A.warn("codex-update-lock-released-unfinished",{sessionName:a}))}}async isActiveDialogStill(a,b){return(0,l.Qh)((0,l.aJ)(await (0,i.Xg)(a,50)))===b}async answerCodexHooksScreen(a,b,c,d,e,f){if(d.screen!==b&&(d.screen=b,d.attempts=0,(0,s.cu)(d.skips,"codex-hooks-screen-answer-skipped")),d.attempts>=3)return A.warn("codex-hooks-screen-unresponsive",{sessionName:a,screen:b,trust:e}),!1;let g=d.attempts+1,h=(0,z.nF)(a),j=await (0,z.x7)(a,f,async()=>{let d=(0,l.aJ)(await (0,i.Xg)(a,50));return(0,l.E6)(d)===b&&(0,l.n1)(d)===(0,l.n1)(c)},()=>this.sendCodexHooksScreenKey(a,b,c,g,e),{repeatScope:d.skips});return j.answered?(d.attempts=g,(0,s.cu)(d.skips,"codex-hooks-screen-answer-skipped")):(0,s.mG)(A,d.skips,"codex-hooks-screen-answer-skipped",{sessionName:a,screen:b,reason:j.reason},h),!0}async sendCodexHooksScreenKey(a,b,c,d,e){if("hooks-review"===b){let b=(0,l.n1)(c);if(null!==b){let c=e?"2":"3";String(b)===c?(await (0,i.ds)(a,"Enter"),A.info("codex-hooks-review-confirmed",{sessionName:a,key:c,attempt:d,trust:e})):(await (0,i.V1)(a,c,!1),A.info("codex-hooks-review-cursor-moved",{sessionName:a,key:c,attempt:d,trust:e}));return}let f=1===d?e?"2":"3":"1";await (0,i.V1)(a,f,!1),A.info("codex-hooks-review-answered",{sessionName:a,key:f,attempt:d,trust:e});return}if(e&&"hooks-settled"!==b){await (0,i.V1)(a,"t",!1,{literal:!0}),A.info("codex-hooks-screen-trusted",{sessionName:a,screen:b,attempt:d});return}await (0,i.ds)(a,"Escape"),A.info("codex-hooks-screen-escaped",{sessionName:a,screen:b,attempt:d})}async waitForPrompt(a){let b=Date.now(),c=E(),d=null,e=null,f=null;for(;Date.now()-b<15e3;){try{let b=(0,z.TO)(),g=await (0,i.Xg)(a,50),h=(0,l.aJ)(g),j=(0,l.E6)(h);if(e=D(j)?j:null,f=(0,l.Qh)(h),D(j)){if(null===d){let b=await (0,i.nS)(a);d=null!==b&&(0,u.dO)(b)}await this.answerCodexHooksScreen(a,j,h,c,d,b)}else if((0,l.zZ)(h))return}catch{}await new Promise(a=>setTimeout(a,500))}if(A.info("codex-prompt-not-detected"),null!==e){let a=0===c.attempts&&null!==c.skips.last?`got no key (${c.skips.last})`:"did not respond to its keys";throw Error(`Codex prompt not ready: codex's hook review (${e}) ${a}. Answer it in the terminal, or set CM_CODEX_HOOK_TRUST=bypass`)}throw Error("Codex prompt not ready: timed out waiting for the input prompt before sending"+(null===f?"":` (the ${f} dialog is open: answer it in the terminal)`))}async sendMessage(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Codex",a,c,{relaunch:!0});try{await this.waitForPrompt(d),await (0,j.FW)({sessionName:d,message:b,cliToolId:"codex",composer:this.describeComposer(),awaitTypedBody:!0}),(0,k.gm)(d),A.info("sent-message-to-codex-session")}catch(b){let a=(0,y.u1)(b);throw Error(`Failed to send message to Codex: ${a}`,{cause:b})}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:A,stoppedAction:"stopped-codex-session",requestExit:async a=>{await (0,i.ds)(a,"C-d"),await new Promise(a=>setTimeout(a,w.Zf))}})}constructor(...a){super(...a),this.id="codex",this.name="Codex CLI",this.command="codex"}}var G=c(23365),H=c(76877),I=c(95595),J=c(48217);let K=(0,r.h)("cli-tools/gemini"),L=/^[\s│]*How would you like to authenticate\b/m;class M extends d.Mj{async launchSession(a,b,c){await this.requireInstalled();let{sessionName:d,exists:e,live:f}=await this.resolveLaunchPane(a,b,c,{logger:K,liveAction:"gemini-session-exists",relaunchAction:"gemini-session-relaunch"});if(!f){(0,v.Fq)({worktreeId:a,cliToolId:t.o,instanceId:c});try{e||await this.createLaunchPane(d,b);let f=(0,v.wK)({target:{worktreeId:a,cliToolId:t.o,instanceId:c},executablePath:this.command,worktreePath:b});(0,J.du)(d);try{await this.typeLaunchLines(d,[(0,x.Y)(f)]),await new Promise(a=>setTimeout(a,6e3)),await this.waitForReady(d)}finally{(0,J.FG)(d)}K.info("started-gemini-session")}catch(b){let a=(0,y.u1)(b);throw Error(`Failed to start Gemini session: ${a}`)}}}async waitForReady(a){let b=!1,c=null,d=new Set,e=(0,s.YT)();for(let f=0;f<30;f++){try{let f=(0,z.KC)(),g=await (0,i.Xg)(a,G.H),h=(0,l.aJ)(g);if(l.wN.test(h))return void K.info("gemini-prompt-detected");if(!b){let g=(0,H.CZ)(H.g1,h);if("press"===g.action){let d=(0,z.nF)(a),h=await (0,z.x7)(a,f,async()=>{let b=(0,H.CZ)(H.g1,(0,l.aJ)(await (0,i.Xg)(a,G.H)));return"press"===b.action&&b.key===g.key},()=>(0,i.ds)(a,g.key),{mode:"exclusive",repeatScope:e});h.answered?(b=!0,c=Date.now(),(0,J._F)(a,c),K.info("auto-trusted-folder-for-gemini")):(0,s.mG)(K,e,"gemini-trust-answer-skipped",{sessionName:a,reason:h.reason},d)}else{let b=(0,H.oy)(H.g1,g);b&&"absent"!==g.action&&!d.has(g.reason)&&(d.add(g.reason),K.warn(b.event,{sessionName:a,...b.fields}))}}}catch(b){K.debug("gemini-ready-capture-failed",{sessionName:a,error:(0,y.u1)(b)})}await new Promise(a=>setTimeout(a,1e3))}if(null!==c){let a=5e3-(Date.now()-c);a>0&&await new Promise(b=>setTimeout(b,a))}K.info("gemini-prompt-detection")}async waitForPrompt(a){let b=Date.now(),c=null;for(;Date.now()-b<15e3;){try{let b=await (0,i.Xg)(a,G.H),d=(0,l.aJ)(b);if(c=d,l.wN.test(d))return}catch(b){c=null,K.debug("gemini-prompt-capture-failed",{sessionName:a,error:(0,y.u1)(b)})}await new Promise(a=>setTimeout(a,500))}throw K.info("gemini-prompt-not-detected"),Error(`Gemini prompt not ready: timed out waiting for the input prompt before sending (${function(a){if(null===a)return"the pane could not be read";if((0,H.yN)(H.g1,a))return"the folder-trust dialog is open: answer it in the terminal";if(L.test(a))return"the sign-in picker is open: answer it in the terminal";let b=(0,I.WC)(a,"gemini");return b.hasActivePrompt?"a prompt dialog is open: answer it in the terminal":(0,I.f8)(b)?"a turn is still being generated":"no input prompt on the pane: gemini may still be starting"}(c)})`)}async sendMessage(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Gemini",a,c,{relaunch:!0});try{await this.waitForPrompt(d),await (0,j.FW)({sessionName:d,message:b,cliToolId:"gemini",composer:this.describeComposer()}),(0,k.gm)(d),K.info("sent-message-to-gemini-session")}catch(b){let a=(0,y.u1)(b);throw Error(`Failed to send message to Gemini: ${a}`,{cause:b})}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:K,stoppedAction:"stopped-gemini-session",requestExit:async a=>{await (0,i.ds)(a,"C-c"),await new Promise(a=>setTimeout(a,w.Is)),await (0,i.V1)(a,"/quit",!0),await new Promise(a=>setTimeout(a,w.Zf))}})}constructor(...a){super(...a),this.id="gemini",this.name="Gemini CLI",this.command="gemini"}}var N=c(15194),O=c(51297);let P=/^ctx:\d+%\s*[>❯]/,Q=/^ctx:\d+%\s*[>❯]\s*$/,R=[/^\s*─{3,}\s*$/,/^\s*✦\s.*│/,/^\s*ESC: stop\s*$/];function S(a){return R.some(b=>b.test(a))}function T(a){let b=(0,O.aJ)(a).split("\n"),c=-1;for(let a=b.length-1;a>=0;a--)if(P.test(b[a])){c=a;break}if(c<0)return!1;let d=b.slice(c+1).filter(a=>""!==a.trim()).some(a=>!S(a));if(Q.test(b[c])&&!d)return!0;if(!d)return!1;let e=(0,I.WC)(a,"vibe-local");return!e.hasActivePrompt&&(0,I.f8)(e)}var U=c(72312),V=c(88807),W=c(56791);let X=(0,r.h)("cli-tools/vibe-local");function Y(a){let b=(0,I.WC)(a,"vibe-local");return b.hasActivePrompt&&!(0,I.f8)(b)}class Z extends d.Mj{async launchSession(a,b,c){await this.requireInstalled();let{sessionName:d,exists:e,live:f}=await this.resolveLaunchPane(a,b,c,{logger:X,liveAction:"vibe-local-session-exists",relaunchAction:"vibe-local-session-relaunch"});if(!f){(0,v.Fq)({worktreeId:a,cliToolId:this.id,instanceId:c});try{e||await this.createLaunchPane(d,b);let c="vibe-local -y";try{let b=(0,V.getDbInstance)(),d=(0,W.getWorktreeById)(b,a);d?.vibeLocalModel&&N.QP.test(d.vibeLocalModel)&&(c+=` -m ${d.vibeLocalModel}`);let e=d?.vibeLocalContextWindow;(0,N.FV)(e)&&(c+=` --context-window ${Number(e)}`)}catch{}await this.typeLaunchLines(d,[(0,x.Y)(c)]),await new Promise(a=>setTimeout(a,5e3)),X.info("started-vibe-local-session")}catch(b){let a=(0,y.u1)(b);throw Error(`Failed to start Vibe Local session: ${a}`)}}}async sendMessage(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Vibe Local",a,c,{relaunch:!0});try{await this.waitForPrompt(d),await (0,j.FW)({sessionName:d,message:b,cliToolId:"vibe-local",composer:this.describeComposer(),interEnterWaitMs:w.PY,readiness:{label:"Vibe Local",isReady:T}}),(0,k.gm)(d),X.info("sent-message-to-vibe-local-session")}catch(b){let a=(0,y.u1)(b);throw Error(`Failed to send message to Vibe Local: ${a}`,{cause:b})}}async waitForPrompt(a){let b=Date.now()+15e3,c=(0,U.uo)(),d=null;for(;Date.now()<b;){let e=!1;try{let f=await (0,U.IS)(()=>(0,i.Xg)(a,200),b);if(null===f)break;if(d=f,T(f))return;e=c.observe(Y(f))}catch(b){d=null,c.reset(),X.debug("vibe-local-prompt-capture-failed",{sessionName:a,error:(0,y.u1)(b)})}if(e)throw X.warn("vibe-local-prompt-wait-dialog",{sessionName:a,reads:c.reads}),(0,U.cA)(a,"Vibe Local");let f=b-Date.now();if(f<=0)break;await new Promise(a=>setTimeout(a,Math.min(500,f)))}throw X.info("vibe-local-prompt-not-detected"),Error(`Vibe Local prompt not ready: timed out waiting for the input prompt before sending (${function(a){if(null===a)return"the pane could not be read";if(Y(a))return"a prompt dialog is open: answer it in the terminal";switch(function(a){let b=(0,O.aJ)(a).split("\n"),c=-1;for(let a=b.length-1;a>=0;a--)if(P.test(b[a])){c=a;break}return c<0?"no-input-row":b.slice(c+1).some(a=>""!==a.trim()&&!S(a))?"output-below-input-row":"input-row-holds-text"}(a)){case"no-input-row":return"no input row on the pane: vibe-local may still be starting";case"input-row-holds-text":return"the input row still holds text";case"output-below-input-row":return"output is drawn below the newest input row: vibe-local may still be starting or working"}}(d)})`)}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:X,stoppedAction:"stopped-vibe-local-session",requestExit:async a=>{await (0,i.ds)(a,"C-c"),await new Promise(a=>setTimeout(a,w.Is)),await (0,i.ds)(a,"C-c"),await new Promise(a=>setTimeout(a,w.Zf))}})}constructor(...a){super(...a),this.id="vibe-local",this.name="Vibe Local",this.command="vibe-local"}}var $=c(90580),_=c(87673),aa=c(7321),ab=c(81776),ac=c(56263),ad=c(21758),ae=c(54633),af=c(78099);let ag=(0,r.h)("cli-tools/copilot"),ah=U.yp,ai=new Set(["model","agent","theme","permissions","skills","mcp","settings","statusline","subagents","resume","session"]),aj=/^[>❯](?:\s|$)/,ak=/^\s*\S\s+Loading:/;function al(a,b){let c=b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),d=[RegExp(`^\\s*●\\s+Model changed from .+ to ${c}(?=\\s|$)`),RegExp(`^\\s*●\\s+Switched model to:\\s*${c}\\s*$`)],e=RegExp(`^\\s*✗\\s+Model "${c}" is \\S`),f={switched:0,rejected:[]};for(let b of(0,l.aJ)(a).split("\n"))d.some(a=>a.test(b))?f.switched++:e.test(b)&&f.rejected.push(b.trim().replace(/^✗\s+/,""));return f}function am(a,b){if(!a.isCurrent())throw Error(`Session ${a.sessionName} was handed to another writer before ${b}; input lock lost, nothing was typed (Issue #3945).`)}async function an(a,b,c){try{await (0,i.V1)(a,b,!0)}catch(a){throw a?.delivery!=="not-started"&&(0,z.kJ)(c),a}}function ao(a){let b=(0,l.aJ)(a).split("\n");for(let a=b.length-1;a>=0;a--){let c=b[a].trim().replace(/\s{2,}/g," ");if(""!==c)return JSON.stringify(c.length>80?`${c.slice(0,80)}…`:c)}return"an empty pane"}function ap(a){return""===a?"the pane could not be read":"no composer on the pane: copilot may still be starting"}async function aq(a){try{await (0,_.H0)(a,"copilot")}catch(a){if(a.code===aa.a9)throw a}}function ar(a){throw ag.warn("input-recheck-prompt-waiting",{sessionName:a,cliToolId:"copilot",confirmedMs:ah}),Object.assign(Error(`A prompt dialog stayed open in session ${a} for ${ah}ms while the copilot composer was awaited (re-checked under the input lock); nothing was typed (Issue #4067).`),{code:aa.a9})}class as extends d.Mj{async isInstalled(){return await (0,ab.B0)()!==null}launchExecutable(a){return"path"===a.source?this.command:ad.nL}async launchSession(a,b,c){let d=await (0,ab.B0)();if(!d)throw(0,af.Tl)(this);let{sessionName:e,exists:f,live:g}=await this.resolveLaunchPane(a,b,c,{logger:ag,liveAction:"copilot-session-exists",relaunchAction:"copilot-session-relaunch"});if(!g){(0,v.Fq)({worktreeId:a,cliToolId:ae.V,instanceId:c});try{let g=(0,v.wK)({target:{worktreeId:a,cliToolId:ae.V,instanceId:c},executablePath:this.launchExecutable(d),worktreePath:b});f||await this.createLaunchPane(e,b),(0,J.du)(e);try{await this.typeLaunchLines(e,[(0,x.Y)(g)]),await this.waitForReady(e)}finally{(0,J.FG)(e)}ag.info("started-copilot-session",{executableSource:d.source,version:d.version})}catch(b){let a=(0,y.u1)(b);throw Error(`Failed to start Copilot session: ${a}`)}}}async answerFolderTrustDialog(a,b,c,d){if(!(0,l.Rx)(b))return!1;let e=(0,z.nF)(a),f=await (0,z.x7)(a,c,async()=>(0,l.Rx)((0,l.aJ)(await (0,i.Xg)(a,50))),()=>(0,i.V1)(a,l.oD,!1),{repeatScope:d});return f.answered?((0,J._F)(a),(0,k.gm)(a),ag.info("copilot-folder-trust-answered"),!0):((0,s.mG)(ag,d,"copilot-folder-trust-answer-skipped",{sessionName:a,reason:f.reason},e),!1)}isComposerDrawn(a){let b=a.split("\n");for(let a=1;a<b.length-1;a++)if(aj.test(b[a])&&l.A.test(b[a-1].trimEnd())&&l.A.test(b[a+1].trimEnd()))return!0;return!1}async waitForReady(a){let b=!1,c=(0,s.YT)();for(let d=0;d<30;d++){try{let d=(0,z.TO)(),e=await (0,i.Xg)(a,50),f=(0,l.aJ)(e);if(this.isComposerDrawn(f))return void ag.info("copilot-prompt-detected");!b&&await this.answerFolderTrustDialog(a,f,d,c)&&(b=!0)}catch{}await new Promise(a=>setTimeout(a,1e3))}ag.info("copilot-prompt-detection-timeout")}async waitForPrompt(a,b=15e3,c="composer"){let d=Date.now()+b,e=!1,f="",g=!1,h=(0,s.YT)(),j=(0,U.uo)();for(;Date.now()<d;){try{let b=(0,z.TO)();g=!0;let k=await (0,U.IS)(()=>(0,i.Xg)(a,50),d);if(null===k)break;if(g=!1,f=(0,l.aJ)(k),this.isReadyFor(c,f))return{ready:!0,output:f};if(!e&&await this.answerFolderTrustDialog(a,f,b,h)&&(e=!0),j.observe(this.isRefusableDialog(k,f)))return ag.info("copilot-prompt-wait-dialog",{until:c,reads:j.reads,bottomRow:ao(f)}),{ready:!1,output:f,dialog:!0}}catch{j.reset()}let b=d-Date.now();if(b<=0)break;await new Promise(a=>setTimeout(a,Math.min(500,b)))}return g&&(f=""),ag.info("copilot-prompt-not-detected",{until:c,bottomRow:ao(f)}),{ready:!1,output:f}}isRefusableDialog(a,b){return!((0,l.Rx)(b)||this.isReadyFor("composer",b))&&(0,I.WC)(a,"copilot").hasActivePrompt}isReadyFor(a,b){if(!l.Du.test(b))return!1;let c=b.split("\n");return!function(a){for(let b=a.length-1;b>=0;b--)if(""!==a[b].trim())return ak.test(a[b]);return!1}(c)&&("composer"===a||"idle"===(0,l.Wn)(c))}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,i.Xg)(a,50),c=(0,l.aJ)(b);if((0,l.gT)(c.split("\n")))return ag.info("copilot-selection-list-detected"),!0}catch{}}return ag.info("copilot-selection-list-not-detected-timeout"),!1}async sendMessage(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Copilot",a,c,{relaunch:!0});try{let a=this.extractSlashCommand(b);if(a&&ai.has(a)){await (0,z.hC)(d,async c=>{await (0,z.KA)(c);let e=await this.waitForPrompt(d);if(e.dialog&&ar(d),await (0,_.H0)(d,"copilot"),!e.ready)throw ag.warn("copilot-selection-list-not-sent:prompt-not-ready",{command:a,bottomRow:ao(e.output)}),Error(`copilot prompt not ready within 15000ms, so the selection-list command was not sent; nothing was typed (${ap(e.output)})`);am(c,"the selection-list command"),(0,z.dy)(),await an(d,b,c),await this.waitForSelectionList(d)}),(0,k.gm)(d),ag.info("sent-selection-list-command-to-copilot",{command:a});return}let c=await this.waitForPrompt(d);if(!c.ready)throw c.dialog&&ar(d),await aq(d),ag.warn("copilot-message-not-sent:prompt-not-ready",{bottomRow:ao(c.output)}),Error(`copilot prompt not ready within 15000ms, so the message was not sent; nothing was typed (${ap(c.output)})`);await (0,j.FW)({sessionName:d,message:b,cliToolId:"copilot",composer:this.describeComposer(),textInputWaitMs:ac.L1,verifyDelayMs:ac.wp,readiness:this.inputReadiness}),(0,k.gm)(d),ag.info("sent-message-to-copilot-session")}catch(b){let a=(0,y.u1)(b);throw Error(`Failed to send message to Copilot: ${a}`,{cause:b})}}async sendModelCommand(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Copilot",a,c,{relaunch:!1});try{await (0,z.hC)(d,a=>this.switchModelUnderInputLock(d,b,a))}catch(d){let a=(0,y.u1)(d),c=d?.code;throw Object.assign(Error(`Failed to switch Copilot model to ${b}: ${a}`),"string"==typeof c?{code:c}:{})}}async switchModelUnderInputLock(a,b,c){await (0,z.KA)(c);let d=await this.waitForPrompt(a,ac.pL,"idle");if(!d.ready)throw d.dialog&&ar(a),ag.warn("copilot-model-switch-not-idle",{model:b,bottomRow:ao(d.output)}),Error(`copilot did not become idle within ${ac.pL}ms, so /model was not sent`);let e=al(d.output,b);await (0,_.H0)(a,"copilot"),am(c,"/model"),await an(a,`/model ${b}`,c);let f=await this.waitForModelSwitchOutcome(a,b,e);if((0,k.gm)(a),"rejected"===f.kind)throw ag.warn("copilot-model-rejected",{model:b,reason:f.reason}),Error(`copilot refused it: ${f.reason}`);if("pending"===f.kind)throw ag.warn("copilot-model-switch-unconfirmed",{model:b,bottomRow:f.bottomRow}),Error(`copilot printed no answer to /model within ${ac.pL}ms; the switch may still take effect, and nothing further was typed`);ag.info("copilot-model-switched",{model:b})}async waitForModelSwitchOutcome(a,b,c){let d=Date.now(),e="";for(;Date.now()-d<ac.pL;){await new Promise(a=>setTimeout(a,250));try{e=await (0,i.Xg)(a,50)}catch{continue}let d=function(a,b,c){let d=al(b,c);return d.rejected.length>a.rejected.length?{kind:"rejected",reason:d.rejected[d.rejected.length-1]}:d.switched>a.switched?{kind:"switched"}:{kind:"pending"}}(c,e,b);if("pending"!==d.kind)return d}return{kind:"pending",bottomRow:ao(e)}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:ag,stoppedAction:"stopped-copilot-session",requestExit:async a=>{await (0,i.ds)(a,"C-c"),await new Promise(a=>setTimeout(a,w.Is)),await (0,i.V1)(a,"/exit",!1),await new Promise(a=>setTimeout(a,ac.L1)),await (0,i.KB)(a,["Enter"]),await new Promise(a=>setTimeout(a,w.Rk))}})}constructor(...a){super(...a),this.id="copilot",this.name="Copilot",this.command="copilot",this.inputReadiness={label:"copilot",isReady:a=>this.isReadyFor("composer",(0,l.aJ)(a))}}}var at=c(61878),au=c(69082),av=c(83406);let aw=(0,r.h)("cli-tools/antigravity"),ax=/\?\s+for\s+shortcuts/;function ay(a){if(null===a)return{screen:"no-capture",screenTail:[]};let b=(0,l.aJ)(a).split("\n").map(a=>a.trimEnd()).filter(a=>""!==a.trim()),c=(0,at.zJ)(a,"antigravity").lastLines;return{screen:0===b.length?"blank":(0,au.VI)(c)?"trust-dialog":aA(a)?"ready":"other",screenTail:b.slice(-5).map(a=>a.slice(0,160))}}function az(a,b,c){let d=(0,H.oy)(H.z0,b);!d||"absent"===b.action||"press"===b.action||c.has(b.reason)||(c.add(b.reason),aw.warn(d.event,{sessionName:a,...d.fields}))}function aA(a){let b=(0,at.zJ)(a,"antigravity");if(l.kT.test(b.lastLines)||au.wf.test(b.lastLines))return!1;let c=function(a){let b=a.map(a=>a.trim()),c=a=>a>=0&&l.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||!l.lE.test(b[e]))?null:c(d(e-1))?f:null}(b.contentLines);return null!==c&&(!!ax.test(c)||!(0,l.ut)("antigravity",b.lastLines))}class aB extends d.Mj{async launchSession(a,b,c,d){await this.requireInstalled();let{sessionName:e,exists:f,live:g}=await this.resolveLaunchPane(a,b,c,{logger:aw,liveAction:"antigravity-session-exists",relaunchAction:"antigravity-session-relaunch"});if(!g){(0,v.Fq)({worktreeId:a,cliToolId:t.F0,instanceId:c});try{let g=(0,v.wK)({target:{worktreeId:a,cliToolId:t.F0,instanceId:c},executablePath:this.command,worktreePath:b}),h=d?`${g} --model '${d.replace(/'/g,"'\\''")}'`:g;f||await this.createLaunchPane(e,b),(0,av.zu)(e);try{await this.typeLaunchLines(e,[(0,x.Y)(h)]),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(e)}finally{(0,av.F1)(e)}aw.info("started-antigravity-session")}catch(b){let a=(0,y.u1)(b);throw Error(`Failed to start Antigravity session: ${a}`)}}}async waitForReady(a){let b;(0,av.R6)(a);let c=!1,d=(0,s.YT)(),e=new Set,f=null,g=0;for(let h=0;h<30;h++){try{let b=(0,z.TO)(),g=await (0,i.Xg)(a,50),h=(0,l.aJ)(g);if(f=g,aA(h))return void aw.info("antigravity-prompt-detected");if(!c){let f=(0,H.CZ)(H.z0,h);if("press"===f.action&&!(0,av.jI)(a)){let e=f.key,g=(0,z.nF)(a),h=await (0,z.x7)(a,b,()=>this.isTrustPressStill(a,e),()=>(0,i.ds)(a,e),{repeatScope:d});if(h.answered){c=!0,aw.info("auto-trusted-folder-for-antigravity"),await new Promise(a=>setTimeout(a,500));continue}(0,s.mG)(aw,d,"antigravity-trust-answer-skipped",{sessionName:a,reason:h.reason},g)}az(a,f,e)}}catch(a){g++,b=(0,y.u1)(a)}await new Promise(a=>setTimeout(a,1e3))}c||(0,av.Qn)(a),aw.info("antigravity-prompt-detection-timeout",{sessionName:a,attempts:30,trustDialogHandled:c,...c?{}:{reason:"startup-trust-unhandled"},...ay(f),captureErrors:g,...void 0!==b?{lastCaptureError:b}:{}})}async isTrustPressStill(a,b){let c=(0,l.aJ)(await (0,i.Xg)(a,50)),d=(0,H.CZ)(H.z0,c);return"press"===d.action&&d.key===b}async waitForPrompt(a){let b,c=Date.now(),d=c+((0,av.Dc)(a)?6e4:15e3),e=new Set,f=(0,s.YT)(),g=null,h=0;for(;Date.now()<d;){try{let b=(0,z.TO)(),c=await (0,i.Xg)(a,50),h=(0,l.aJ)(c);if(g=c,aA(h))return void(0,av.R6)(a);let j=(0,au.VI)((0,at.zJ)(h,"antigravity").lastLines)?(0,H.CZ)(H.z0,h):null;null!==j&&"press"!==j.action&&(0,av.Dc)(a)&&az(a,j,e);let k=j?.action==="press"?j.key:null,m=(0,z.nF)(a),n=null!==k&&(0,av.Dc)(a)?await (0,z.x7)(a,b,()=>this.isTrustPressStill(a,k),async()=>!!(0,av.qT)(a)&&(await (0,i.ds)(a,k),!0),{repeatScope:f}):null;if(null===n||n.answered||(0,s.mG)(aw,f,"antigravity-trust-answer-skipped",{sessionName:a,reason:n.reason,afterLaunchWindow:!0},m),n?.answered===!0&&(0,s.cu)(f,"antigravity-trust-answer-skipped"),n?.answered===!0&&n.value){aw.info("auto-trusted-folder-for-antigravity",{sessionName:a,afterLaunchWindow:!0}),d=Math.max(d,Date.now()+15e3),await new Promise(a=>setTimeout(a,500));continue}}catch(a){h++,b=(0,y.u1)(a)}await new Promise(a=>setTimeout(a,500))}let j=(0,av.Dc)(a),k=ay(g);aw.info("antigravity-prompt-not-ready",{sessionName:a,waitedMs:Date.now()-c,...j?{reason:"startup-trust-unhandled"}:{},...k,captureErrors:h,...void 0!==b?{lastCaptureError:b}:{}});let m="trust-dialog"===k.screen?` (the folder-trust confirmation "Do you trust the contents of this project?" is on screen and needs an answer${null===f.last?"":`; its Enter was not sent: ${f.last}`})`:j?" (startup-trust-unhandled: agy had not shown its folder-trust confirmation when the launch window ended, and it has not appeared since)":` (${function(a){if(null===a)return"the pane could not be read";let b=(0,I.WC)(a,"antigravity");return b.hasActivePrompt?"a prompt dialog is open: answer it in the terminal":(0,I.f8)(b)?"a turn is still being generated":"no input prompt on the pane: agy may still be starting"}(g)})`;throw Error(`Antigravity prompt not ready: timed out waiting for the input prompt before sending${m}`)}async sendMessage(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Antigravity",a,c,{relaunch:!0});try{await this.waitForPrompt(d),await (0,j.FW)({sessionName:d,message:b,cliToolId:"antigravity",composer:this.describeComposer()}),(0,k.gm)(d),aw.info("sent-message-to-antigravity-session")}catch(b){let a=(0,y.u1)(b);throw Error(`Failed to send message to Antigravity: ${a}`,{cause:b})}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:aw,stoppedAction:"stopped-antigravity-session",requestExit:async a=>{await (0,i.ds)(a,"C-d"),await new Promise(a=>setTimeout(a,w.Zf))},afterKill:a=>{(0,k.gm)(a),(0,av.R6)(a)}})}constructor(...a){super(...a),this.id="antigravity",this.name="Antigravity CLI",this.command="agy"}}var aC=c(99702),aD=c(28862),aE=c(35566),aF=c(2669);let aG=(0,r.h)("cli-tools/command-code"),aH=["--trust","--skip-onboarding","--no-auto-update"];function aI(a){let b=a.split("\n");return!(0>(0,l.I$)(b))&&!l.k0.test((0,l.aJ)(a))}class aJ extends d.Mj{navigationKeys(){return{keys:f.G2,leaderKey:null}}async launchSession(a,b,c){await this.requireInstalled();let{sessionName:d,exists:e,live:f}=await this.resolveLaunchPane(a,b,c,{logger:aG,liveAction:"command-code-session-exists",relaunchAction:"command-code-session-relaunch"});if(!f){(0,v.Fq)({worktreeId:a,cliToolId:aD.k,instanceId:c}),this.composerPendingSince.set(d,Date.now());try{var g;e||await this.createLaunchPane(d,b);let f=(g={target:{worktreeId:a,cliToolId:aD.k,instanceId:c},executablePath:this.command,worktreePath:b},[(0,v.wK)(g),...aH].join(" "));await this.typeLaunchLines(d,[(0,x.Y)(f)]),await new Promise(a=>setTimeout(a,w.yO)),await this.waitForReady(d),aG.info("started-command-code-session")}catch(a){throw this.composerPendingSince.delete(d),Error(`Failed to start Command Code session: ${(0,y.u1)(a)}`)}}}async waitForReady(a){for(let b=0;b<30;b++){try{let b=await (0,i.Xg)(a,50);if(aI(b)){this.composerPendingSince.delete(a),aG.info("command-code-prompt-detected");return}}catch{}await new Promise(a=>setTimeout(a,1e3))}aG.info("command-code-prompt-detection-timeout")}async waitForPrompt(a,b,c){let d=Date.now(),e=0,f=null;for(;Date.now()-d<15e3;){let d=!1;try{let b=await (0,i.Xg)(a,50);if(f=b,!(d=null!==(0,aE.V)(b))&&aI(b))return void this.composerPendingSince.delete(a)}catch{f=null}if((e=d?e+1:0)>=2)throw aG.info("command-code-plan-review-blocks-send",{sessionName:a}),Object.assign(Error((0,aC.VY)(b,c)),{code:aa.Le});await new Promise(a=>setTimeout(a,500))}let g=this.composerPendingSince.get(a);if(void 0!==g){let b=Date.now()-g;if(b<=12e4)throw aG.info("command-code-session-still-starting",{sessionName:a,sinceLaunchMs:b}),new aF.Sr(this.name,a,b);this.composerPendingSince.delete(a)}throw aG.info("command-code-prompt-not-ready"),Error(`Command Code prompt not ready: timed out waiting for the composer before sending (${function(a){if(null===a)return"the pane could not be read";if(null!==(0,aE.V)(a))return"the plan review is open: answer it in the terminal";let b=(0,I.WC)(a,"command-code");return(0,I.f8)(b)||l.k0.test((0,l.aJ)(a))?"a turn is still being generated":b.hasActivePrompt||"waiting"===b.status?"a dialog is open: answer it in the terminal":"no composer on the pane: command code may still be starting"}(f)})`)}async sendMessage(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Command Code",a,c,{relaunch:!0});try{await this.waitForPrompt(d,a,c),await (0,j.FW)({sessionName:d,message:b,cliToolId:"command-code",composer:this.describeComposer()}),(0,k.gm)(d),aG.info("sent-message-to-command-code-session")}catch(b){if((0,aF.wQ)(b))throw b;let a=Error(`Failed to send message to Command Code: ${(0,y.u1)(b)}`,{cause:b});if(b?.code===aa.Le)throw Object.assign(a,{code:aa.Le});throw a}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:aG,stoppedAction:"stopped-command-code-session",requestExit:async a=>{await (0,i.V1)(a,"/exit",!1),await new Promise(a=>setTimeout(a,w.pL)),await (0,i.KB)(a,["Enter"]),await new Promise(a=>setTimeout(a,w.Zf))},afterKill:a=>{this.composerPendingSince.delete(a),(0,k.gm)(a)}})}constructor(...a){super(...a),this.id="command-code",this.name="Command Code CLI",this.command="commandcode",this.composerPendingSince=new Map}}var aK=c(79646),aL=c(28354),aM=c(16983),aN=c(46684),aO=c(34114),aP=c(62887),aQ=c(72272),aR=c(49154),aS=c(40255),aT=c(95375),aU=c(27870),aV=c(57510),aW=c(90488),aX=c(51719),aY=c(83738),aZ=c(26945),a$=c(38892),a_=c(16100),a0=c(71193);let a1=(0,r.h)("lib/hooks/sources/opencode-v2/ingest");async function a2(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(6569),c.e(5456),c.e(2710),c.e(1501),c.e(6486),c.e(6781)]).then(c.bind(c,16781))]),g=d(),h=e(g,a.worktreeId)??null;if(!h)return void a1.info("opencode-v2-stop-unresolved-target",{worktreeId:a.worktreeId});await f(g,h,a0.B,b)}async function a3(a,b,c){let d=(0,aZ.bH)(a),e=(0,a$.X3)(a);if(null===d||null===e)return null;let f=await (0,aO.$F)(d,e,b),g=f?.find(a=>(0,aV.Qd)(a)&&a.id===c);return(0,aV.Qd)(g)?g:null}async function a4(a,b,c){let d=(0,aY.hl)(b.raw,b.receivedAt);if(!d)return a1.info("opencode-v2-permission-unparsed",{worktreeId:a.worktreeId,instanceId:c}),!1;let e=await (0,aQ.t)(a_.Wp,a,d,a_.Wp.parsePermissionRequest(b.raw));return a1.info("opencode-v2-permission-decided",{worktreeId:a.worktreeId,instanceId:c,decisionId:d.id,behavior:e.behavior,reason:e.reason,delivered:e.delivered,settled:e.settled}),e.settled}async function a5(a,b,c){let d=(0,aY.rk)(b.raw);if(d)return d;let e=(0,aX.DH)(b.raw),f=(0,aX.lx)(b.raw);if(null===e||null===f)return null;let g=await c(a,f,e);return g?(0,aY.rk)(g):null}async function a6(a,b,c=a2,d=a3){let e=a.instanceId??a0.B;try{let f=(0,aT.classifyAgentEventDelivery)({worktreeId:a.worktreeId,cliToolId:a0.B,instanceId:e,event:b.event,detail:b.detail,sessionId:b.conversationId,at:b.receivedAt,identity:a_.Wp.eventIdentityOf(b.raw),identityKind:a_.Wp.capabilities.eventIdentity});if(f.duplicate)return void a1.info("opencode-v2-event-duplicate-dropped",{worktreeId:a.worktreeId,instanceId:e,event:b.event,detail:b.detail,by:f.by});let g={event:b.event,at:b.receivedAt,detail:b.detail?.slice(0,aP.h9)??null,sessionId:b.conversationId,message:null,model:b.model},h={sessionStartMayArriveLate:!1};if("notification"===b.event&&b.detail===aX.xz){g.decisionId=(0,aX.DH)(b.raw);let c=(0,aY.vF)(b.raw);g.toolName=c?.toolName??(0,aX.Dg)(b.raw),g.decisionPatterns=c?.patterns??null,g.message=(0,aY.s8)(b.raw)?.slice(0,aU.lY)??null,g.promptSettled=await a4(a,b,e),(0,aT.recordAgentEvent)(a.worktreeId,a0.B,e,g,h)}else if("notification"===b.event&&b.detail===aX.er)g.decisionId=(0,aX.DH)(b.raw),g.promptSettled=!0,(0,aT.recordAgentEvent)(a.worktreeId,a0.B,e,g,h),g.decisionId&&(0,aS.L0)({worktreeId:a.worktreeId,cliToolId:a0.B,instanceId:e},g.decisionId);else if("notification"===b.event&&b.detail===aX.Ai){let c=await a5(a,b,d);g.message=c?.questions[0]?.question.slice(0,aU.lY)??null,(0,aT.recordAgentEvent)(a.worktreeId,a0.B,e,g,h),c&&(0,aT.recordAskUserQuestion)(a.worktreeId,a0.B,e,c,b.receivedAt),(0,aT.reportQuestionPending)(a.worktreeId,a0.B,e,{toolName:aR.GF,decisionId:(0,aX.DH)(b.raw),detail:aX.Ai},b.receivedAt),a1.info("opencode-v2-question-recorded",{worktreeId:a.worktreeId,instanceId:e,decisionId:(0,aX.DH)(b.raw),parsed:null!==c,questionCount:c?.questions.length??0}),await (0,aW.Vo)(a,e,g.message,b.receivedAt)}else"stop"===b.event?(b.detail===aX.dA&&(g.message=(0,aX.ZL)(b.raw)?.slice(0,aU.lY)??null,a1.error("opencode-v2-turn-failed",{worktreeId:a.worktreeId,instanceId:e,sessionId:b.conversationId,message:g.message})),(0,aT.recordAgentEvent)(a.worktreeId,a0.B,e,g,h),await c(a,e)):(0,aT.recordAgentEvent)(a.worktreeId,a0.B,e,g,h);a1.info("opencode-v2-event-received",{worktreeId:a.worktreeId,instanceId:e,type:(0,aX.Cr)(b.raw),event:b.event,detail:b.detail})}catch(c){a1.error("opencode-v2-event-ingest-failed",{worktreeId:a.worktreeId,instanceId:e,event:b.event,error:c instanceof Error?c.message:String(c)})}}var a7=c(32301);let a8=(0,r.h)("lib/hooks/sources/opencode-v2/runtime"),a9=[0,500,1e3,2e3];function ba(a,b){return{worktreeId:a,cliToolId:a0.B,instanceId:b}}function bb(a){return a instanceof Error?a.message:String(a)}async function bc(a,b){try{let c=await (0,aZ.ui)(a,b);if(null===c)return null;return(0,a$.OC)(a),c}catch(b){return a8.warn("opencode-v2-server-reserve-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:bb(b)}),null}}async function bd(a,b){let c=(0,a$.X3)(a);return null!==c&&"healthy"===(await (0,aO.tJ)(b,c)).kind}async function be(a){try{let b=(0,aZ.bH)(a);if(null===b)return!1;if((0,a7.yw)(a))return!0;let c=!1;for(let d of a9)if(d>0&&await new Promise(a=>setTimeout(a,d)),await bd(a,b)){c=!0;break}if(!c)return a8.info("opencode-v2-server-not-reachable",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b}),!1;return await a_.Wp.subscribe(a,b=>{a6(a,b)}),a8.info("opencode-v2-event-stream-attached",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b}),!0}catch(b){return a8.warn("opencode-v2-event-stream-attach-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:bb(b)}),!1}}async function bf(a,b){try{if((0,a7.yw)(a))return!0;let c=await (0,aZ.Lv)(a,b,b=>bd(a,b));if(null===c)return!1;return await be(a)}catch(b){return a8.warn("opencode-v2-event-stream-resume-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:bb(b)}),!1}}async function bg(a){try{await (0,a7.VV)(a)}catch(b){a8.warn("opencode-v2-subscription-close-failed",{worktreeId:a.worktreeId,error:bb(b)})}try{(0,aZ.OZ)(a)}catch(b){a8.warn("opencode-v2-port-forget-failed",{worktreeId:a.worktreeId,error:bb(b)})}try{(0,a$.Nc)(a)}catch(b){a8.warn("opencode-v2-password-remove-failed",{worktreeId:a.worktreeId,error:bb(b)})}}var bh=c(93949),bi=c(18140);let bj=(0,r.h)("cli-tools/opencode-v2"),bk=(0,aL.promisify)(aK.execFile),bl=aM.xT,bm=/^\/\S+$/,bn=[...f.qD,f.Mx,...f.TM,"a","l","m"];class bo extends d.Mj{navigationKeys(){return{keys:bn,leaderKey:f.Mx}}async isInstalled(){return null!==(await (0,bi.Qq)()).executable}async isRunning(a,b){let c=this.getSessionName(a,b),d=await (0,i.N)(c);return d&&this.resumeInBackground(a,c,b),d}resumeInBackground(a,b,c){let d=ba(a,c);if((0,a7.yw)(d))return;let e=Date.now(),f=this.resumeAttemptedAt.get(b);void 0!==f&&e-f<3e4||(this.resumeAttemptedAt.set(b,e),(async()=>{try{let a=await (0,i.nS)(b);if(null===a)return;await bf(d,a)}catch(a){bj.debug("opencode-v2-lazy-resume-failed",{error:(0,y.u1)(a)})}})())}async launchSession(a,b,c){let d=(await (0,bi.Qq)()).executable;if(!d)throw(0,af.Tl)(this);let e=this.getSessionName(a,c),f=ba(a,c),g={windowWidth:(0,aN.r)({warnSidebar:!1}),windowHeight:aM.xT},h=await (0,i.N)(e);if(h){if(await this.reconcileExistingSession(e,b,g),await this.isToolLive(e,{confirm:!0})){await bf(f,b),bj.info("opencode-v2-session-exists");return}bj.warn("opencode-v2-session-relaunch",{sessionName:e}),await bg(f)}(0,v.Fq)(f);try{h||await this.createLaunchPane(e,b);try{await bk("tmux",["resize-window","-t",(0,i.lA)(e),"-x",String(g.windowWidth),"-y",String(g.windowHeight)])}catch{}let j=await bc(f,b);null===j&&bj.warn("opencode-v2-launch-without-server",{worktreeId:a,instanceId:c});let k=(0,v.wK)({target:f,executablePath:d.path,worktreePath:b});await this.typeLaunchLines(e,[(0,x.Y)(k)]),await this.waitForReady(e),await be(f),bj.info("started-opencode-v2-session")}catch(a){throw Error(`Failed to start OpenCode V2 session: ${(0,y.u1)(a)}`)}}async readServerConfig(a,b,c){let d=ba(a,c),e=(0,aZ.bH)(d),f=(0,a$.X3)(d);return null===e||null===f?null:(0,aO.wB)(e,f,b)}async waitForReady(a){for(let b=0;b<60;b++){try{let c=(0,l.aJ)(await (0,i.Xg)(a,bl));if((0,l.Ok)(c))return bj.info("opencode-v2-composer-detected",{attempt:b}),!0}catch{}await new Promise(a=>setTimeout(a,500))}return bj.info("opencode-v2-ready-detection-timeout"),!1}async waitForComposer(a){let b=Date.now()+w.D1;for(;;){let c=null;try{let b=(0,l.aJ)(await (0,i.Xg)(a,bl));if(c=(0,l.dF)(b),null===c&&(0,l.Ok)(b))return}catch{}if(null!==c)throw Error(`OpenCode V2 composer not available: the "${c}" dialog is open. Close it (esc) or finish the choice, then send again`);if(Date.now()>=b)break;await new Promise(a=>setTimeout(a,500))}throw Error("OpenCode V2 composer not ready: timed out waiting for it before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("OpenCode V2",a,c,{relaunch:!0});try{await this.waitForComposer(d),await (0,j.FW)({sessionName:d,message:bm.test(b)?`${b} `:b,cliToolId:a0.B,composer:this.describeComposer()}),(0,k.gm)(d),bj.info("sent-message-to-opencode-v2-session")}catch(a){throw Error(`Failed to send message to OpenCode V2: ${(0,y.u1)(a)}`,{cause:a})}}async killSession(a,b){let c=this.getSessionName(a,b),d=ba(a,b),e=(0,aZ.bH)(d);try{if(await (0,i.N)(c)){await (0,i.V1)(c,bh.M0,!1),await new Promise(a=>setTimeout(a,w.pL)),await (0,i.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,w.Lw));let a=await (0,bh.rY)({sessionAlive:()=>(0,i.N)(c),portAnswering:null===e?null:async()=>"unreachable"!==(await (0,aO.tJ)(e,"")).kind});a.ok||(bj.info("opencode-v2-graceful-exit-postcondition-unmet",{sessionName:c,reason:a.reason,...null!==e?{port:e}:{}}),await (0,i.fY)(c))}else await (0,i.fY)(c);(0,k.gm)(c),this.resumeAttemptedAt.delete(c),bj.info("stopped-opencode-v2-session")}catch(a){throw bj.error("session:stop-failed",{error:(0,y.u1)(a)}),a}finally{await bg(d)}}constructor(...a){super(...a),this.id=a0.B,this.name="OpenCode V2",this.command=a0.V,this.resumeAttemptedAt=new Map}}class bp{constructor(){this.tools=new Map,this.tools.set("claude",new h),this.tools.set("codex",new F),this.tools.set("gemini",new M),this.tools.set("vibe-local",new Z),this.tools.set("opencode",new $.Ui),this.tools.set("copilot",new as),this.tools.set("antigravity",new aB),this.tools.set("command-code",new aJ),this.tools.set("opencode-v2",new bo)}static getInstance(){return bp.instance||(bp.instance=new bp),bp.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(8728),c.e(6569),c.e(1990),c.e(1601),c.e(8918),c.e(1656),c.e(5220)]).then(c.bind(c,95220));e(a,b,d)}}},17287:(a,b,c)=>{c.d(b,{CD:()=>g,nL:()=>f});var d=c(24455);let e=(0,c(36925).v)("__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},35566:(a,b,c)=>{c.d(b,{V:()=>l});var d=c(51297),e=c(91478);let f=/^\s*type \+ enter to comment\b/i,g=/^\s*enter to pin\s*·\s*esc discard\s*$/i,h=/^\s*↑\/↓ choose\s*·\s*enter to run\s*$/i,i=/^\s*❯ +(?:Submit review\b|Approve\s+ctrl\+a\b|Cancel\s+esc\b)/im,j=/^\s*REVIEW\s+(\d+)\s+pending comments?\b/im,k=/\(•\)\s+with\s+\d+\s+comments?\s+as\s+notes/i;function l(a){if(!a)return null;let b=(0,d.aJ)(a.replace(/\r\n/g,"\n")).split("\n").filter(a=>""!==a.trim()).slice(-15);if(0===b.length)return null;let c=b.join("\n"),l=j.exec(c),m=l?Number(l[1]):0;if((0,e.a9)(c))return{phase:"approve-choice",pendingComments:m,approveChoice:k.test(c)?"with-comments":"discard-comments"};if(!(0,e.tH)(c))return null;let n=b[b.length-1],o="unknown";return i.test(c)||h.test(n)?o="action-focus":g.test(n)?o="comment-box":f.test(n)&&(o="body"),{phase:o,pendingComments:m,approveChoice:null}}},39333:(a,b,c)=>{c.d(b,{$Y:()=>h,Bg:()=>j,Fg:()=>e,HB:()=>g,df:()=>i,f9:()=>d});let d=[".png",".jpg",".jpeg",".gif",".webp",".svg"],e=0x1400000,f=[{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 g(a){return a?a.startsWith(".")?a.toLowerCase():"."+a.toLowerCase():""}function h(a){let b=g(a),c=f.find(a=>a.extension===b);return c?.mimeType||"application/octet-stream"}function i(a){if(!a)return!1;let b=g(a);return d.includes(b)}function j(a,b){if(b.length>e)return{valid:!1,error:`File size exceeds ${e/1024/1024}MB limit`,reason:"too-large"};if(".svg"===g(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=g(a),d=f.find(a=>a.extension===c);if(!d?.magicBytes)return".svg"===c;let e=d.magicBytesOffset||0;return!(b.length<e+d.magicBytes.length)&&d.magicBytes.every((a,c)=>b[e+c]===a)}(a,b)?{valid:!1,error:"Invalid image magic bytes"}:{valid:!0}}d.filter(a=>".svg"!==a).map(a=>h(a)).filter(a=>"application/octet-stream"!==a).join(",")},46684:(a,b,c)=>{c.d(b,{r:()=>f});var d=c(16983);let e=(0,c(72626).h)("cli-tools/opencode-pane-width");function f(a){let b=process.env[d.ao],c=(0,d._u)(),f=b?.trim(),g=void 0!==f&&(!/^\d+$/.test(f)||Number.parseInt(f,10)!==c);return void 0!==b&&g?e.warn("opencode-pane-width-rejected",{requested:b,applied:c}):a.warnSidebar&&c>=d.Lg&&e.warn("opencode-pane-width-sidebar-visible",{width:c,sidebarMinWidth:d.Lg}),c}},48217:(a,b,c)=>{c.d(b,{FG:()=>h,_F:()=>j,du:()=>g,mN:()=>i,to:()=>k});var d=c(36925);let e=(0,d.v)("__launchWindows",()=>new Map),f=(0,d.v)("__launchDialogPresses",()=>new Map);function g(a){e.set(a,(e.get(a)??0)+1),f.delete(a)}function h(a){let b=e.get(a)??0;b<=1?e.delete(a):e.set(a,b-1)}function i(a){return e.has(a)}function j(a,b=Date.now()){f.set(a,b)}function k(a,b=Date.now()){let c=f.get(a);return void 0!==c&&b-c<3e4}},53554:(a,b,c)=>{function d(a){let b="[^\\S\\n]";return RegExp(`(?:^${b}*|\xb7${b}*|${b}{2})${a}(?:${b}\\([^()\\n]{1,32}\\))?(?:${b}*\xb7|${b}{2}|${b}*$)`,"i")}c.d(b,{h:()=>g});let e={key:"BTab",cycle:["default","plan","autopilot"],indicators:[{mode:"autopilot",pattern:d("autopilot")},{mode:"plan",pattern:d("plan(?:[^\\S\\n]mode)?")}],tailRows:2,noteId:null},f={claude:{key:"BTab",cycle:["auto","manual","accept-edits","plan"],indicators:[{mode:"accept-edits",pattern:/⏵⏵\s*accept edits on\b/},{mode:"auto",pattern:/⏵⏵\s*auto mode on\b/},{mode:"plan",pattern:/⏸\s*plan mode on\b/},{mode:"manual",pattern:/⏸\s*manual mode on\b/}],tailRows:3,noteId:null},"command-code":{key:"BTab",cycle:["default","accept-edits","plan"],indicators:[{mode:"accept-edits",pattern:/»\s*accept edits on\b/},{mode:"bypass",pattern:/»\s*permission bypass on\b/},{mode:"dont-ask",pattern:/»\s*don't-ask on\b/},{mode:"plan",pattern:/^[^\S\n]*plan mode\b/},{mode:"default",pattern:/\?\s+for\s+shortcuts\b/}],tailRows:4,noteId:null},codex:{key:"BTab",cycle:["default","plan"],indicators:[{mode:"plan",pattern:/\bPlan mode\s*\(shift\+tab to cycle\)/i}],tailRows:3,noteId:"codexModelCoupled"},copilot:e,antigravity:{key:"BTab",cycle:["default","accept-edits","plan"],indicators:[{mode:"accept-edits",pattern:d("accept-edits")},{mode:"plan",pattern:d("plan(?:[^\\S\\n]mode)?")}],tailRows:2,noteId:null},"opencode-v2":{key:"BTab",cycle:["build","plan"],indicators:[{mode:"build",pattern:/^[^\S\n]*┃[^\S\n]+Build[^\S\n]·[^\S\n]/},{mode:"plan",pattern:/^[^\S\n]*┃[^\S\n]+Plan[^\S\n]·[^\S\n]/}],tailRows:4,noteId:"opencodeAgentSwitch"}};function g(a){return f[a]??null}Object.keys(f)},70849:(a,b,c)=>{c.d(b,{LQ:()=>k,SW:()=>l});var d=c(72626),e=c(84574),f=c(95375),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:()=>j});var d=c(72626),e=c(40255),f=c(50474),g=c(25071),h=c(17287);let i=(0,d.h)("lib/hooks/permission-adjudication");async function j(a,b,d,k,l="event"){let m=b.instanceId??b.cliToolId,n={worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:m},{resolvePermissionRequest:o}=await c.e(3241).then(c.bind(c,43241)),p=o(n,k),q="allow"===p.behavior?{kind:"allowOnce"}:{kind:"abstain"};if("abstain"===q.kind){let c=(0,f.y_)(a);c.safe||i.warn("permission-request-abstain-blocks-agent",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:m,toolName:k?.toolName??null,decisionId:d.id,reason:p.reason,consequence:c.summary,blocksForMs:c.blocksForMs})}let r=(0,e.qu)(n,d.id,{outcome:"allow"===p.behavior?"allow":"abstained",..."policy-suppressed"===p.reason&&p.suppressedBy?{withholdReason:p.suppressedBy}:{},promptType:"multiple_choice"}),{delivery:s}=await (0,g.GW)(a,b,d,q),t=s?.delivered===!0,u=t&&a.capabilities.permissionReplyReleasesPrompt;return(0,h.nL)(b.worktreeId,b.cliToolId,b.instanceId,{decisionId:d.id,toolName:k?.toolName??null,behavior:"allow"===p.behavior?"allow":null,reason:p.reason,delivered:t,releasedPrompt:u,trigger:l,at:d.askedAt}),(0,e.YF)(r,{delivered:t,settled:u}),i.info("permission-decision-adjudicated",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:m,decisionId:d.id,toolName:k?.toolName??null,behavior:p.behavior,reason:p.reason,suppressedBy:p.suppressedBy,delivered:t,settled:u,trigger:l}),{decisionId:d.id,behavior:"allow"===p.behavior?"allow":null,reason:p.reason,delivered:t,settled:u}}},72312:(a,b,c)=>{c.d(b,{IS:()=>g,cA:()=>h,uo:()=>f,yp:()=>e});var d=c(7321);let e=2e3;function f(){let a=null,b=0;return{observe:(c,d=Date.now())=>c?(a??=d,++b>=2&&d-a>=e):(a=null,b=0,!1),reset(){a=null,b=0},get reads(){return b}}}async function g(a,b){let c,d,e=b-Date.now();if(e<=0)return null;let f=a();f.catch(()=>void 0);try{d=await Promise.race([f,new Promise(a=>{c=setTimeout(()=>a(null),e)})])}catch(a){if(Date.now()>b)return null;throw a}finally{void 0!==c&&clearTimeout(c)}return Date.now()>b?null:d}function h(a,b){return Object.assign(Error(`A prompt dialog stayed open in session ${a} for ${e}ms while the ${b} input prompt was awaited (re-checked under the input lock); nothing was typed (Issue #4084).`),{code:d.a9})}},76877:(a,b,c)=>{c.d(b,{CZ:()=>k,O5:()=>m,g1:()=>f,oy:()=>n,yN:()=>l,z0:()=>g});var d=c(30741),e=c(69082);let f={id:"gemini-folder-trust",question:/Do you trust (?:the files in )?this folder\?/,signature:/\bTrust folder\b|\bDon't trust\b/,cursorRow:/^[\s│]*●\s*(\S.*?)[\s│]*$/,optionRow:/^[\s│]*(?:\S\s+)?\d\.\s+(?:Trust folder|Trust parent folder|Don't trust)\b/,minOptionRows:2,optionsWithin:8,dismissedRow:/restarting to apply the trust changes/,safeRow:/^1\.\s+Trust folder\b/,key:"Enter",liveRows:30,declaredIn:"src/lib/cli-tools/launch-dialog.ts (GEMINI_TRUST_LAUNCH_DIALOG)"},g={id:"antigravity-folder-trust",question:e.wf,signature:/\bYes, I trust this folder\b/,optionRow:/^\s*(?:\S\s+)?(?:Yes, I trust this folder|No, exit)\s*$/,minOptionRows:2,optionsWithin:4,cursorRow:/^\s*>\s+(\S.*?)\s*$/,safeRow:/^Yes, I trust this folder$/,key:"Enter",liveRows:12,declaredIn:"src/lib/cli-tools/launch-dialog.ts (ANTIGRAVITY_TRUST_LAUNCH_DIALOG)"};function h(a,b){return(0,d.aJ)(a).split("\n").map(a=>a.trimEnd()).filter(a=>""!==a.trim()).slice(-b)}function i(a,b){if(!a.dismissedRow)return b;for(let c=b.length-1;c>=0;c--)if(a.dismissedRow.test(b[c]))return b.slice(c+1);return b}function j(a,b){for(let c=b.length-1;c>=0;c--){if(!a.question.test(b[c]))continue;let d=function(a,b,c){let d=Math.min(b.length-1,c+a.optionsWithin);for(let e=c+1;e<=d;e++){if(!a.optionRow.test(b[e]))continue;let c=[];for(let d=e;d<b.length&&a.optionRow.test(b[d]);d++)c.push(b[d]);return c.length>=a.minOptionRows?c:null}return null}(a,b,c);if(d)return d}return null}function k(a,b){let c=i(a,h(b,a.liveRows)),d=j(a,c);if(!d)return c.some(b=>a.signature.test(b))?{action:"unrecognized",reason:"question-not-found"}:{action:"absent"};let e=[];for(let b of d){let c=a.cursorRow.exec(b);c&&e.push(c[1])}if(0===e.length)return{action:"unrecognized",reason:"cursor-not-found"};if(e.length>1)return{action:"unrecognized",reason:"multiple-cursors"};let f=e[0];return a.safeRow.test(f)?{action:"press",key:a.key}:{action:"hold",reason:"cursor-off-safe-row",cursorLabel:f.slice(0,80)}}function l(a,b){return null!==j(a,i(a,h(b,a.liveRows)))}function m(a,b){return null!==j(a,h(b,a.liveRows))}function n(a,b){return"absent"===b.action||"press"===b.action?null:"hold"===b.action?{event:"launch-dialog-held",fields:{dialog:a.id,...b}}:{event:"launch-dialog-unrecognized",fields:{dialog:a.id,...b,hint:`the dialog's wording or cursor drawing may have changed; compare the screen with ${a.declaredIn}`}}}},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","opencode-v2":"Install with: npm install -g @opencode/cli",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,b){var c,d;return new e.lU(a.name,(c=a,d=b,`${c.name} (${c.command}) is not installed or not in PATH. `+(d?`${d} `:"")+`${f[c.id]}`))}},83406:(a,b,c)=>{c.d(b,{Dc:()=>m,F1:()=>j,Qn:()=>l,R6:()=>r,Ug:()=>k,bO:()=>p,jI:()=>o,qT:()=>n,vj:()=>q,zu:()=>i});var d=c(36925);let e=(0,d.v)("__antigravityStartupTrustPending",()=>new Map),f=(0,d.v)("__antigravityStartupWindows",()=>new Map),g=(0,d.v)("__antigravityStartupTrustHolds",()=>new Set),h=(0,d.v)("__antigravityStartupTrustClaims",()=>new Map);function i(a){f.set(a,(f.get(a)??0)+1)}function j(a){let b=f.get(a)??0;b<=1?f.delete(a):f.set(a,b-1)}function k(a){return f.has(a)}function l(a,b=Date.now()){e.set(a,b)}function m(a){return e.has(a)}function n(a,b=Date.now()){if(g.has(a))return!1;let c=e.delete(a);return c&&h.set(a,b),c}function o(a){return g.has(a)}function p(a,b,c=Date.now()){let d=h.get(a);return void 0!==d&&c-d<b}function q(a){return g.add(a),()=>{g.delete(a)}}function r(a){e.delete(a)}},89731:(a,b,c)=>{c.d(b,{Mj:()=>I,Km:()=>J});var d=c(79646),e=c(28354),f=c(40964),g=c(79892),h=c(96463),i=c(56717),j=c(23365),k=c(53554),l=c(93949),m=c(91536),n=c(50945),o=c(78099);let p=new Set;var q=c(51297),r=c(87447),s=c(45567),t=c(72626),u=c(77093),v=c(8953),w=c(20610),x=c(16983),y=c(56588),z=c(77662),A=c(86009),B=c(4952),C=c(46689);let D=(0,e.promisify)(d.exec),E=(0,t.h)("cli-tools/base"),F=RegExp(`${s.ZM}=(?:'([^']*)'|"([^"]*)"|(\\S+))`,"g"),G=new Set,H=new Set;class I{async isInstalled(){try{return await D(`which ${this.command}`,{timeout:5e3}),!0}catch{return!1}}getSessionName(a,b){return(0,f.mf)(this.id,a,b)}async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async startSession(a,b,c,d){let e=null;try{e=this.getSessionName(a,c)}catch{}let f=e=>this.startSessionOnce(a,b,c,d,e);if(null===e)return f(null);let g=e,h=a=>a?.refusal&&(0,z.NW)(g)?Promise.reject(a.refusal):(0,z.fb)(g,this.name,()=>f(a),{cliToolId:this.id,model:d,injectionFingerprint:null===a||a.refusal?void 0:a.injectionFingerprint}),i={worktreeId:a,cliToolId:this.id,instanceId:c},j=(0,A.hL)(i),k=(0,A.jJ)(i,b,(0,B.gJ)(i));return k instanceof Promise?k.then(a=>((0,A.hA)(i,j),h(a))):h(k)}async startSessionOnce(a,b,d,e,f=null){let g=(0,y.Hb)();try{await (0,y.PS)(g,()=>null===f?this.launchSession(a,b,d,e):(0,A.F8)(f,()=>this.launchSessionWithRole(a,b,d,e)))}catch(b){var h;throw this.takeAdoptionMark(a,d),h={worktreeId:a,cliToolId:this.id,instanceId:d,toolName:this.name},Promise.all([c.e(1356),c.e(1191),c.e(3480)]).then(c.bind(c,81099)).then(({notifySessionStartFailurePush:a})=>a({...h,error:b})).catch(()=>{}),b}finally{(0,y.O5)(a,this.id,d,g)}let i=this.takeAdoptionMark(a,d);null!==i&&await this.warnIfHookUrlIsStale(a,i,d)}async launchSessionWithRole(a,b,c,d){let e=this.getSessionName(a,c),f=(0,A.Bi)();if(null!==f&&!(await (0,g.N)(e)&&await this.isToolLive(e,{confirm:!0})))throw f;await this.launchSession(a,b,c,d),await (0,A.PV)({isAlive:()=>this.isToolLive(e),capture:()=>(0,g.Xg)(e,200),kill:()=>this.killSession(a,c),readServerConfig:()=>this.readServerConfig(a,b,c)})}async readServerConfig(a,b,c){return null}async reconcileExistingSession(a,b,c){await (0,h.St)(a,b),G.add(a),await (0,g.zT)(a,c)}takeAdoptionMark(a,b){try{let c=this.getSessionName(a,b);return G.delete(c)?c:null}catch{return null}}async warnIfHookUrlIsStale(a,b,d){if(!H.has(b))try{let f=await (0,g.Xg)(b,{startLine:-x.eu});H.add(b);let h=function(a){let b=null;for(let c of(0,q.aJ)(a).matchAll(F)){let a=c[1]??c[2]??c[3]??null;a&&(b=a)}return b}(f);if(null===h)return;let i=function(a){try{let b=new URL(a);if(""!==b.port)return Number(b.port);return"https:"===b.protocol?443:80}catch{return null}}(h),j=(0,r.D0)();if(null===i||i===j)return;E.warn("session:hook-url-stale",{cliToolId:this.id,sessionName:b,sessionPort:i,serverPort:j});var e={worktreeId:a,cliToolId:this.id,instanceId:d,toolName:this.name,sessionPort:i,serverPort:j};let k=[e.worktreeId,e.instanceId??e.cliToolId,e.sessionPort,e.serverPort].join(":");p.has(k)||(p.add(k),Promise.all([c.e(1356),c.e(1191),c.e(3480)]).then(c.bind(c,81099)).then(({notifyStaleHookUrlPush:a})=>a(e)).catch(()=>{}))}catch(b){E.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,i.gc)(this.id)}gracefulExitSequence(){return(0,l.JV)(this.id)}captureSpec(){return(0,j.y)(this.id)}livenessSpec(){return(0,m.H7)(this.id)}async isToolLive(a,b){let c=this.livenessSpec(),d=await (0,n.Q)(a,c);if(d.alive)return!0;if(!b?.confirm)return!1;await new Promise(a=>setTimeout(a,w.kZ));let e=await (0,n.Q)(a,c);return e.alive?(E.info("session:liveness-confirm-recovered",{cliToolId:this.id,firstReason:d.reason}),!0):(E.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 E.warn("session:relaunch-skipped-no-path",{cliToolId:this.id,worktreeId:a});E.info("session:relaunch-before-send",{cliToolId:this.id,sessionName:c}),await this.startSession(a,d,b)}async requireSession(a,b,c,d){let e=this.getSessionName(b,c);if(await (0,z.Vk)(e,this.name),!await (0,g.N)(e))throw Error(`${a} session ${e} does not exist. Start the session first.`);d.relaunch&&await this.relaunchIfToolExited(b,c)}async requireInstalled(){if(!await this.isInstalled())throw(0,o.Tl)(this)}async resolveLaunchPane(a,b,c,d){let e=this.getSessionName(a,c),f=await (0,g.N)(e);if(f){if(await this.reconcileExistingSession(e,b),await this.isToolLive(e,{confirm:!0}))return d.logger.info(d.liveAction),{sessionName:e,exists:f,live:!0};d.logger.warn(d.relaunchAction,{sessionName:e})}return{sessionName:e,exists:f,live:!1}}async typeLaunchLines(a,b){await (0,C.$)(a,b)}async createLaunchPane(a,b){await (0,g.jw)({sessionName:a,workingDirectory:b}),await new Promise(a=>setTimeout(a,w.Uc))}async requestExitAndKill(a,b,c){let d=this.getSessionName(a,b);try{await (0,g.N)(d)&&await c.requestExit(d);let a=await (0,g.fY)(d);c.afterKill?.(d),a&&c.logger.info(c.stoppedAction)}catch(a){throw c.logger.error("session:stop-failed",{error:(0,u.u1)(a)}),a}}navigationKeys(){return{keys:v.qD,leaderKey:null}}agentModeSpec(){return(0,k.h)(this.id)}}function J(a,b,c){a instanceof I&&a.warnIfRunningSessionHookUrlIsStale(b,c).catch(()=>{})}},90580:(a,b,c)=>{c.d(b,{Ui:()=>aM,TZ:()=>aL});var d=c(89731),e=c(8953),f=c(79892),g=c(30741),h=c(4405),i=c(31840),j=c(51297),k=c(95595),l=c(47893),m=c(14453);let n=/^Ask anything(?:\.\.\.|…)(?:[^\S\n]+"[^"\n]*")?$/;function o(a){let b=(0,j.aJ)(a);if(l.LO.test(b))return"dialog";let c=(0,k.WC)(a,"opencode");if(c.hasActivePrompt||"waiting"===c.status)return"dialog";let d=(0,m.$O)(b.split("\n"));return null===d||0===d.length?"no-input-box":d.every(a=>""===a||n.test(a))?null:"input-box-holds-text"}function p(a){return null===o(a)}var q=c(72312),r=c(20029),s=c(93997),t=c(29021),u=c(21820),v=c(33873),w=c(8004),x=c(72626);let y=(0,x.h)("cli-tools/opencode-config"),z=/^[a-zA-Z0-9._:/-]{1,100}$/,A=/^[a-zA-Z0-9._:/@-]{1,200}$/,B="CM_OPENCODE_LOCAL_PROVIDER_CONFIG",C="OPENCODE_CONFIG",D=["opencode.json","opencode.jsonc",v.join(".opencode","opencode.json"),v.join(".opencode","opencode.jsonc")],E=["opencode.json","opencode.jsonc"];async function F(){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 y.warn("ollama-api-returned"),{};let e=await d.text();if(e.length>1048576)return y.warn("ollama-api-response"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.models))return y.warn("invalid-ollama-api"),{};for(let b of f.models.slice(0,100))"string"==typeof b?.name&&z.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?y.warn("ollama-api-timeout"):y.warn("failed-to-fetch")}return a}async function G(){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 y.warn("lm-studio-api"),{};let e=await d.text();if(e.length>1048576)return y.warn("lm-studio-api"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.data))return y.warn("invalid-lm-studio"),{};for(let b of f.data.slice(0,100))"string"==typeof b?.id&&A.test(b.id)&&(a[b.id]={name:b.id})}catch(a){a instanceof Error&&"AbortError"===a.name?y.warn("lm-studio-api"):y.warn("failed-to-fetch")}return a}function H(a=process.env){let b=v.join(u.homedir(),".config");return v.join((0,w.TR)(a.XDG_CONFIG_HOME,b,"XDG_CONFIG_HOME"),"opencode")}async function I(){let[a,b]=await Promise.all([F(),G()]),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 J(a){let b=function(a=process.env){let b=(a[B]??"").trim().toLowerCase();return"worktree"===b||"project"===b?"worktree":"global"===b||"user"===b?"global":(""!==b&&"off"!==b&&"0"!==b&&"false"!==b&&"none"!==b&&y.warn("opencode-config-mode-unrecognised",{variable:B,value:b}),"off")}();if("off"===b)return{written:!1,configPath:null,reason:"disabled"};let c="worktree"===b?function(a){let b=v.resolve(a);try{if(!t.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 t.realpathSync(b)}(a):null,d=function(a,b=process.env){if(""!==(b[C]??"").trim())return`env:${C}`;if(null!==a)for(let b of D){let c=v.join(a,b);if(t.existsSync(c))return c}let c=H(b);for(let a of E){let b=v.join(c,a);if(t.existsSync(b))return b}return null}(c);if(null!==d)return y.info("opencode-config-generation-skipped",{mode:b,owned:d}),{written:!1,configPath:null,reason:"existing-config"};let e=c??H(),f=v.join(e,"opencode.json"),g=await I();if(0===Object.keys(g).length)return{written:!1,configPath:null,reason:"no-providers"};try{"global"===b&&t.mkdirSync(e,{recursive:!0}),t.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 y.warn("failed-to-write-opencodejson:error-insta"),{written:!1,configPath:null,reason:"write-failed"}}return y.info("opencode-config-generated",{mode:b,configPath:f}),{written:!0,configPath:f,reason:"written"}}var K=c(16983),L=c(46684),M=c(79646),N=c(28354),O=c(39333),P=c(1305),Q=c(49791),R=c(62887),S=c(72272),T=c(49154),U=c(40255),V=c(95375),W=c(27870),X=c(57510),Y=c(70096),Z=c(75356),$=c(98211),_=c(90488),aa=c(85322);let ab=(0,x.h)("lib/hooks/sources/opencode/ingest");async function ac(a,b,c){let d=(0,Y.VM)(aa.k),e=(0,$.Lu)(b.raw,b.receivedAt);if(!e)return ab.info("opencode-permission-unparsed",{worktreeId:a.worktreeId,instanceId:c}),!1;let f=await (0,S.t)(d,a,e,d.parsePermissionRequest(b.raw));return ab.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 ad(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(6569),c.e(5456),c.e(2710),c.e(1501),c.e(6486),c.e(6781)]).then(c.bind(c,16781))]),g=d(),h=e(g,a.worktreeId)??null;if(!h)return void ab.info("opencode-stop-unresolved-target",{worktreeId:a.worktreeId});let i=await f(g,h,aa.k,b);ab.info("opencode-stop-applied",{worktreeId:a.worktreeId,instanceId:b,taskId:i.taskId,taskEventApplied:i.taskEventApplied,verificationRunId:i.verificationRunId})}async function ae(a,b){let c=a.instanceId??aa.k;try{let d=(0,Y.VM)(aa.k),e=(0,V.classifyAgentEventDelivery)({worktreeId:a.worktreeId,cliToolId:aa.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 ab.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,R.h9)??null,sessionId:b.conversationId,message:(function(a){let b=(0,X.Qd)(a.raw.properties)?a.raw.properties:{};if(a.detail===Z.aF)return(0,X.NZ)(b,["metadata","command"])??(0,X.O2)(b,"permission");if(a.detail===Z.Tm){let a=b.questions;return Array.isArray(a)&&(0,X.Qd)(a[0])?(0,X.O2)(a[0],"question"):null}return a.detail===Z.vE?(0,X.NZ)(b,["error","data","message"])??(0,X.NZ)(b,["error","name"]):null})(b)?.slice(0,W.lY)??null,model:b.model},g={sessionStartMayArriveLate:d.capabilities.sessionStartMayArriveLate};if("notification"===b.event&&b.detail===Z.aF){f.decisionId=(0,X.O2)((0,X.Qd)(b.raw.properties)?b.raw.properties:{},"id");let d=(0,$.LF)(b.raw,b.receivedAt);f.toolName=d?.toolName??null,f.decisionPatterns=d?.patterns??null,f.promptSettled=await ac(a,b,c),(0,V.recordAgentEvent)(a.worktreeId,aa.k,c,f,g);return}if("notification"===b.event&&b.detail===Z.C8){f.decisionId=(0,Z.Mn)(b.raw),f.promptSettled=!!(0,Y.VM)(aa.k).capabilities.permissionReplyReleasesPrompt||(ab.info("opencode-permission-reply-not-releasing",{worktreeId:a.worktreeId,instanceId:c,reason:"capability-permissionReplyReleasesPrompt-false"}),!1),(0,V.recordAgentEvent)(a.worktreeId,aa.k,c,f,g),f.decisionId&&(0,U.L0)({worktreeId:a.worktreeId,cliToolId:aa.k,instanceId:c},f.decisionId),ab.info("opencode-permission-reply-observed",{worktreeId:a.worktreeId,instanceId:c,decisionId:f.decisionId,released:f.promptSettled});return}if((0,V.recordAgentEvent)(a.worktreeId,aa.k,c,f,g),"notification"===b.event&&b.detail===Z.Tm){let d=(0,Y.VM)(aa.k).parseQuestion(b.raw);d&&((0,V.recordAskUserQuestion)(a.worktreeId,aa.k,c,d,b.receivedAt),(0,V.reportQuestionPending)(a.worktreeId,aa.k,c,{toolName:T.GF,decisionId:d.promptId,detail:Z.Tm},b.receivedAt),ab.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,_.Vo)(a,c,f.message??null,b.receivedAt);return}if("stop"===b.event)return void await ad(a,c);"notification"===b.event&&b.detail===Z.vE&&await (0,_.dJ)(a,c,(0,X.NZ)((0,X.Qd)(b.raw.properties)?b.raw.properties:{},["error","name"]),f.message??null,b.conversationId,b.receivedAt),ab.info("opencode-event-received",{worktreeId:a.worktreeId,instanceId:c,event:b.event,detail:b.detail})}catch(d){ab.error("opencode-event-ingest-failed",{worktreeId:a.worktreeId,instanceId:c,event:b.event,error:d instanceof Error?d.message:String(d)})}}var af=c(84574),ag=c(85965),ah=c(33198);let ai=(0,x.h)("lib/hooks/sources/opencode/runtime");function aj(a,b){return{worktreeId:a,cliToolId:"opencode",instanceId:b}}async function ak(a,b){try{return await (0,af.CU)(a,b)}catch(b){return ai.warn("opencode-port-reserve-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),null}}let al=[0,500,1e3,2e3,4e3];async function am(a,b){for(let[c,d]of al.entries()){d>0&&await new Promise(a=>setTimeout(a,d));let e=await (0,Q.sc)(b);if("healthy"===e.kind)return c>0&&ai.info("opencode-server-reachable-after-retry",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,attempt:c}),e.health;if("rejected"===e.kind){ai.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 an(a){try{let b=(0,af.hC)(a);if(null===b)return!1;if((0,ah.wb)(a))return!0;let c=await am(a,b);if(!c)return ai.info("opencode-server-not-reachable",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,attempts:al.length}),!1;await ag.cC.subscribe(a,b=>{ae(a,b)});let d=await ao(a);return ai.info("opencode-event-stream-attached",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,version:c.version,activity:d}),!0}catch(b){return ai.warn("opencode-event-stream-attach-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),!1}}async function ao(a){let b=null;try{b=await ag.cC.probeActivity(a)}catch(b){ai.debug("opencode-activity-probe-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)})}return(0,ah.yn)(a,b,Date.now()),b}async function ap(a,b){try{if((0,ah.wb)(a))return!0;let c=await (0,af.jp)(a,b);if(null===c)return!1;return await an(a)}catch(b){return ai.warn("opencode-event-stream-resume-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),!1}}async function aq(a){let b=a.instanceId??a.cliToolId;try{let c=(0,af.hC)(a);if(null===c)return!1;let d=(0,ah.lf)(a);if("live"!==d.state)return ai.info("opencode-abort-skipped-not-live",{worktreeId:a.worktreeId,instanceId:b,port:c,liveness:d.state}),!1;let e=(0,ah.ym)(a);if(null===e)return ai.info("opencode-abort-skipped-no-session",{worktreeId:a.worktreeId,instanceId:b,port:c}),!1;let f=(0,ah.H1)(a,e,2e3);if(!await (0,Q.UR)(c,e))return f.cancel(),ai.warn("opencode-abort-rejected",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e}),!1;if(!await f.seen)return ai.warn("opencode-abort-unconfirmed",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e,timeoutMs:2e3}),!1;return ai.info("opencode-abort-confirmed",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e}),!0}catch(c){return ai.warn("opencode-abort-failed",{worktreeId:a.worktreeId,instanceId:b,error:c instanceof Error?c.message:String(c)}),!1}}async function ar(a){try{await (0,ah.FN)(a),(0,af.kE)(a)}catch(b){ai.warn("opencode-event-stream-release-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)})}}var as=c(86009),at=c(18529),au=c(70849),av=c(27939),aw=c(93949),ax=c(20610),ay=c(78099),az=c(18140),aA=c(79748);let aB=/^timestamp=(\S+)/,aC=/no such column: ?[A-Za-z0-9_.]*/;async function aD(a,b){let c;try{c=await (0,aA.open)(a,"r");let{size:d}=await c.stat(),e=Math.min(d,b),f=d-e,g=Buffer.alloc(e);await c.read(g,0,e,f);let h=g.toString("utf8");return f>0&&(h=h.slice(h.indexOf("\n")+1)),h}catch{return null}finally{await c?.close().catch(()=>{})}}async function aE(a,b=function(){let a=process.env.XDG_DATA_HOME||(0,v.join)((0,u.homedir)(),".local","share");return(0,v.join)(a,"opencode","log","opencode.log")}()){let c=await aD(b,262144);if(null===c)return null;let d=a-1e3;for(let a of c.split("\n")){let b=aB.exec(a);if(!b)continue;let c=Date.parse(b[1]);if(Number.isNaN(c)||c<d)continue;let e=aC.exec(a);if(e)return e[0]}return null}var aF=c(69130),aG=c(77093),aH=c(49973);let aI=(0,x.h)("cli-tools/opencode"),aJ=(0,N.promisify)(M.execFile),aK=[0,50,100,200];function aL(a,b){return a?`${a}
3
3
 
4
- [添付画像: ${b}]`:`[添付画像: ${b}]`}class aJ extends d.Mj{navigationKeys(){return{keys:e.sM,leaderKey:e.Mx}}async isInstalled(){return null!==(await (0,aw.$s)()).executable}async launchSession(a,b,c){let d=await (0,aw.$s)(),e=d.executable;if(!e)throw(0,av.Tl)(this,(0,aw.mV)(d));let g=this.getSessionName(a,c),h=ah(a,c),i=(0,J.r)({warnSidebar:!0}),j=await (0,f.N)(g);if(j){if(await this.reconcileExistingSession(g,b,{windowWidth:i,windowHeight:I.xT}),await this.isToolLive(g,{confirm:!0})){await an(h,b),aF.info("opencode-session-exists");return}aF.warn("opencode-session-relaunch",{sessionName:g}),await ap(h)}(0,N.Fq)(h);try{await H(b),j||await this.createLaunchPane(g,b);try{await aG("tmux",["resize-window","-t",(0,f.lA)(g),"-x",String(i),"-y",String(I.xT)])}catch{}await ai(h,b);let d=(0,N.wK)({target:h,executablePath:e.path,worktreePath:b}),k=(0,as.pr)(h,b),l=null===k?d:(0,as.XO)(d,k);null!==k&&aF.info("opencode-session-resumed",{worktreeId:a,instanceId:c??this.id,sessionId:k});let m=Date.now();if(await this.typeLaunchLines(g,[(0,aC.Y)(l)]),await this.waitForReady(g),!await al(h)&&null!==(0,ad.hC)(h)){let b=await aB(m);if(null!==b)throw aF.warn("opencode-shared-data-conflict",{worktreeId:a,finding:b}),Error(`OpenCode 1.x could not open its data (opencode log: "${b}"). OpenCode 1.x and OpenCode V2 share ~/.local/share/opencode/opencode.db, and V2 has changed tables 1.x still uses. Use only OpenCode V2, or give OpenCode 1.x a data directory of its own (docs/user-guide/cli-setup-guide.md, "OpenCode (1.x) and OpenCode V2").`)}aF.info("started-opencode-session")}catch(b){let a=(0,aD.u1)(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 aF.info("opencode-composer-detected",{attempt:b}),!0;if(g.LO.test(c))return aF.info("opencode-overlay-detected",{attempt:b}),!0}catch{}await new Promise(a=>setTimeout(a,500))}return aF.info("opencode-ready-detection-timeout"),!1}async trySendViaServer(a,b,c,d){let e=await this.dispatchViaServer(a,b,c);return"delivered"===e||("skipped"!==e&&(0,aE.sK)(e),"unknown"===e&&void 0!==d&&(d.unknown=!0),!1)}async dispatchViaServer(a,b,c){let d=a.instanceId??a.cliToolId,e=!1;try{let f=(0,ad.hC)(a);if(null===f)return"skipped";let g=(0,af.lf)(a);if("live"!==g.state)return aF.info("opencode-send-skipped-not-live",{worktreeId:a.worktreeId,instanceId:d,port:f,liveness:g.state}),"skipped";let h=(0,af.ym)(a);if(null===h)return aF.info("opencode-send-skipped-no-session",{worktreeId:a.worktreeId,instanceId:d,port:f}),"skipped";let i=[{type:"text",text:b}];void 0!==c&&i.push({type:"file",mime:(0,M.$Y)((0,t.extname)(c)),filename:(0,t.basename)(c),url:(0,O.fy)(c)});let j=(0,O.CH)(),k=(0,aq.QH)((0,aq.Q1)(a));(0,aE.FU)(),e=!0;let l=await (0,O.wZ)(f,h,j,i,k);if("rejected"===l)return"not_sent";if("unknown"===l)return"unknown";let m=await this.verifyPostedMessage(f,h,j,b);if("found"!==m)return aF.warn("opencode-send-unverified",{worktreeId:a.worktreeId,instanceId:d,port:f,sessionId:h,messageId:j,hasImage:void 0!==c}),"missing"===m?"not_sent":"unknown";return aF.info("opencode-send-delivered-via-api",{worktreeId:a.worktreeId,instanceId:d,port:f,sessionId:h,messageId:j,hasImage:void 0!==c}),"delivered"}catch(b){if((0,aE.fi)(b))throw b;return aF.warn("opencode-send-api-failed",{worktreeId:a.worktreeId,instanceId:d,error:(0,aD.u1)(b)}),e?"unknown":"skipped"}}async verifyPostedMessage(a,b,c,d){for(let e of aH){e>0&&await new Promise(a=>setTimeout(a,e));let f=await (0,O.ep)(a,b,c);if("found"===f.kind)return f.texts.includes(d)?"found":"mismatch";if("missing"===f.kind)return"missing"}return"unknown"}async sendMessage(a,b,c){await this.sendMessageAfterDispatch(a,b,c,{unknown:!1})}async sendMessageAfterDispatch(a,b,c,d){let e=this.getSessionName(a,c);try{await this.requireSession("OpenCode",a,c,{relaunch:!0})}catch(a){throw this.keepUnknownDispatch(a,d,e)??a}if(await this.trySendViaServer(ah(a,c),b,void 0,d))return void(0,q.gm)(e);try{await this.waitForPrompt(e),await (0,h.FW)({sessionName:e,message:b,cliToolId:"opencode",composer:this.describeComposer(),readiness:{label:"OpenCode",isReady:n}}),(0,q.gm)(e),aF.info("sent-message-to-opencode-session")}catch(c){let a=(0,aD.u1)(c),b=this.keepUnknownDispatch(c,d,e);if(b)throw b;throw Error(`Failed to send message to OpenCode: ${a}`,{cause:c})}}keepUnknownDispatch(a,b,c){if(!b.unknown)return null;let d=(0,p.Nq)(a);return"not-sent"!==d.state?null:(aF.warn("opencode-send-not-typed-after-unknown-dispatch",{sessionName:c,reason:d.reason}),Error(`Failed to send message to OpenCode: the keyboard fallback typed nothing (${d.reason}), but an earlier server dispatch may have delivered the message (Issue #4040)`,{cause:a}))}async waitForPrompt(a){let b=Date.now()+15e3,c=(0,o.uo)();for(;Date.now()<b;){let d=null;try{let e=await (0,o.IS)(()=>(0,f.Xg)(a,50),b);if(null===e)break;if(n(e))return;let g=(0,j.WC)(e,"opencode");c.observe(!(0,j.f8)(g)&&(g.hasActivePrompt||"waiting"===g.status))&&(aF.warn("opencode-prompt-wait-dialog",{sessionName:a,reads:c.reads,reason:g.reason}),d=g.hasActivePrompt?(0,o.cA)(a,"OpenCode"):Error(`OpenCode prompt not ready: a dialog or overlay (${g.reason}) stayed up for ${o.yp}ms before sending; nothing was typed (Issue #4084)`))}catch(b){c.reset(),aF.debug("opencode-prompt-capture-failed",{sessionName:a,error:(0,aD.u1)(b)})}if(d)throw d;let e=b-Date.now();if(e<=0)break;await new Promise(a=>setTimeout(a,Math.min(500,e)))}throw aF.info("opencode-prompt-not-detected"),Error("OpenCode prompt not ready: timed out waiting for the input prompt before sending")}supportsImage(){return!0}async sendMessageWithImage(a,b,c,d){let e=this.getSessionName(a,d);await this.requireSession("OpenCode",a,d,{relaunch:!1});let f=ah(a,d),g={unknown:!1};if(await this.trySendViaServer(f,b,c,g))return void(0,q.gm)(e);aF.info("opencode-image-degraded-to-path",{worktreeId:a,instanceId:d??this.id}),await this.sendMessageAfterDispatch(a,aI(b,c),d,g)}async killSession(a,b){let c=this.getSessionName(a,b),d=ah(a,b),e=(0,ad.hC)(d),g=await (0,ar.LQ)(d).catch(()=>null);g&&!g.captured&&aF.info("opencode-session-capture-skipped",{sessionName:c,reason:g.skipped}),await ap(d);try{if(await (0,f.N)(c)){await (0,f.V1)(c,"/exit",!1),await new Promise(a=>setTimeout(a,au.pL)),await (0,f.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,au.KI));let a=await (0,at.rY)({sessionAlive:()=>(0,f.N)(c),portAnswering:null===e?null:async()=>await (0,O.Ok)(e)!==null});a.ok||(aF.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,q.gm)(c),aF.info("stopped-opencode-session")}catch(a){throw aF.error("session:stop-failed",{error:(0,aD.u1)(a)}),a}}async interrupt(a,b){let c=this.getSessionName(a,b);if(await ao(ah(a,b))){(0,q.gm)(c),aF.info("opencode-interrupt-aborted-via-api");return}await (0,f.ds)(c,"Escape"),await new Promise(a=>setTimeout(a,au.os)),await (0,f.ds)(c,"Escape"),(0,q.gm)(c),aF.info("opencode-interrupt-sent")}constructor(...a){super(...a),this.id="opencode",this.name="OpenCode",this.command="opencode"}}},93949:(a,b,c)=>{c.d(b,{JV:()=>j,M0:()=>g,rY:()=>l});var d=c(56263),e=c(20610),f=c(86069);let g="/exit",h={keys:[(0,f.IS)("C-d")],exitWaitMs:e.Zf,ownsLoopbackServer:!1},i={claude:h,codex:h,antigravity:h,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},"opencode-v2":{keys:[(0,f.iF)(g,e.pL),(0,f.IS)("Enter")],exitWaitMs:e.Lw,ownsLoopbackServer:!0}};function j(a){return i[a]??h}let k=a=>new Promise(b=>setTimeout(b,a));async function l(a){let b=Math.max(1,a.attempts??1),c=a.intervalMs??0,d=a.sleep??k,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}}}};
4
+ [添付画像: ${b}]`:`[添付画像: ${b}]`}class aM extends d.Mj{navigationKeys(){return{keys:e.sM,leaderKey:e.Mx}}async isInstalled(){return null!==(await (0,az.$s)()).executable}async launchSession(a,b,c){let d=await (0,az.$s)(),e=d.executable;if(!e)throw(0,ay.Tl)(this,(0,az.mV)(d));let g=this.getSessionName(a,c),h=aj(a,c),i=(0,L.r)({warnSidebar:!0}),j=await (0,f.N)(g);if(j){if(await this.reconcileExistingSession(g,b,{windowWidth:i,windowHeight:K.xT}),await this.isToolLive(g,{confirm:!0})){await ap(h,b),aI.info("opencode-session-exists");return}aI.warn("opencode-session-relaunch",{sessionName:g}),await ar(h)}(0,P.Fq)(h);try{await J(b),j||await this.createLaunchPane(g,b);try{await aJ("tmux",["resize-window","-t",(0,f.lA)(g),"-x",String(i),"-y",String(K.xT)])}catch{}await ak(h,b);let d=(0,P.wK)({target:h,executablePath:e.path,worktreePath:b}),k=(0,av.pr)(h,b),l=null===k?d:(0,av.XO)(d,k);null!==k&&((0,as.eE)(h),aI.info("opencode-session-resumed",{worktreeId:a,instanceId:c??this.id,sessionId:k}));let m=Date.now();if(await this.typeLaunchLines(g,[(0,aF.Y)(l)]),await this.waitForReady(g),!await an(h)&&null!==(0,af.hC)(h)){let b=await aE(m);if(null!==b)throw aI.warn("opencode-shared-data-conflict",{worktreeId:a,finding:b}),Error(`OpenCode 1.x could not open its data (opencode log: "${b}"). OpenCode 1.x and OpenCode V2 share ~/.local/share/opencode/opencode.db, and V2 has changed tables 1.x still uses. Use only OpenCode V2, or give OpenCode 1.x a data directory of its own (docs/user-guide/cli-setup-guide.md, "OpenCode (1.x) and OpenCode V2").`)}aI.info("started-opencode-session")}catch(b){let a=(0,aG.u1)(b);throw Error(`Failed to start OpenCode session: ${a}`)}}async readServerConfig(a,b,c){let d=(0,af.hC)(aj(a,c));return null===d?null:(0,Q.am)(d)}async waitForReady(a){let b=(0,q.uo)();for(let c=0;c<60;c++){try{let d=await (0,f.Xg)(a,50),e=(0,g.aJ)(d);if(null!==(0,g.T2)(e))return aI.info("opencode-composer-detected",{attempt:c}),!0;if(g.LO.test(e))return aI.info("opencode-overlay-detected",{attempt:c}),!0;if(b.observe(null!==(0,i.G4)(d)))return aI.info("opencode-launch-dialog-confirmed",{attempt:c,reads:b.reads}),!0}catch{b.reset()}await new Promise(a=>setTimeout(a,500))}return aI.info("opencode-ready-detection-timeout"),!1}async trySendViaServer(a,b,c,d){let e=await this.dispatchViaServer(a,b,c);return"delivered"===e||("skipped"!==e&&(0,aH.sK)(e),"unknown"===e&&void 0!==d&&(d.unknown=!0),!1)}async dispatchViaServer(a,b,c){let d=a.instanceId??a.cliToolId,e=!1;try{let f=(0,af.hC)(a);if(null===f)return"skipped";let g=(0,ah.lf)(a);if("live"!==g.state)return aI.info("opencode-send-skipped-not-live",{worktreeId:a.worktreeId,instanceId:d,port:f,liveness:g.state}),"skipped";let h=(0,ah.ym)(a);if(null===h)return aI.info("opencode-send-skipped-no-session",{worktreeId:a.worktreeId,instanceId:d,port:f}),"skipped";let i=[{type:"text",text:b}];void 0!==c&&i.push({type:"file",mime:(0,O.$Y)((0,v.extname)(c)),filename:(0,v.basename)(c),url:(0,Q.fy)(c)});let j=(0,Q.CH)(),k=(0,at.QH)((0,at.Q1)(a));(0,aH.FU)(),e=!0;let l=await (0,Q.wZ)(f,h,j,i,k);if("rejected"===l)return"not_sent";if("unknown"===l)return"unknown";let m=await this.verifyPostedMessage(f,h,j,b);if("found"!==m)return aI.warn("opencode-send-unverified",{worktreeId:a.worktreeId,instanceId:d,port:f,sessionId:h,messageId:j,hasImage:void 0!==c}),"missing"===m?"not_sent":"unknown";return aI.info("opencode-send-delivered-via-api",{worktreeId:a.worktreeId,instanceId:d,port:f,sessionId:h,messageId:j,hasImage:void 0!==c}),"delivered"}catch(b){if((0,aH.fi)(b))throw b;return aI.warn("opencode-send-api-failed",{worktreeId:a.worktreeId,instanceId:d,error:(0,aG.u1)(b)}),e?"unknown":"skipped"}}async verifyPostedMessage(a,b,c,d){for(let e of aK){e>0&&await new Promise(a=>setTimeout(a,e));let f=await (0,Q.ep)(a,b,c);if("found"===f.kind)return f.texts.includes(d)?"found":"mismatch";if("missing"===f.kind)return"missing"}return"unknown"}async sendMessage(a,b,c){await this.sendMessageAfterDispatch(a,b,c,{unknown:!1})}async sendMessageAfterDispatch(a,b,c,d){let e=this.getSessionName(a,c);try{await this.requireSession("OpenCode",a,c,{relaunch:!0})}catch(a){throw this.keepUnknownDispatch(a,d,e)??a}if(await this.trySendViaServer(aj(a,c),b,void 0,d))return void(0,s.gm)(e);try{await this.waitForPrompt(e),await (0,h.FW)({sessionName:e,message:b,cliToolId:"opencode",composer:this.describeComposer(),readiness:{label:"OpenCode",isReady:p}}),(0,s.gm)(e),aI.info("sent-message-to-opencode-session")}catch(c){let a=(0,aG.u1)(c),b=this.keepUnknownDispatch(c,d,e);if(b)throw b;throw Error(`Failed to send message to OpenCode: ${a}`,{cause:c})}}keepUnknownDispatch(a,b,c){if(!b.unknown)return null;let d=(0,r.Nq)(a);return"not-sent"!==d.state?null:(aI.warn("opencode-send-not-typed-after-unknown-dispatch",{sessionName:c,reason:d.reason}),Error(`Failed to send message to OpenCode: the keyboard fallback typed nothing (${d.reason}), but an earlier server dispatch may have delivered the message (Issue #4040)`,{cause:a}))}async waitForPrompt(a){let b=Date.now()+15e3,c=(0,q.uo)(),d=null;for(;Date.now()<b;){let e=null;try{let g=await (0,q.IS)(()=>(0,f.Xg)(a,50),b);if(d=g,null===g)break;if(p(g))return;let h=(0,k.WC)(g,"opencode");c.observe(!(0,k.f8)(h)&&(h.hasActivePrompt||"waiting"===h.status))&&(aI.warn("opencode-prompt-wait-dialog",{sessionName:a,reads:c.reads,reason:h.reason}),e=h.hasActivePrompt?(0,q.cA)(a,"OpenCode"):Error(`OpenCode prompt not ready: a dialog or overlay (${h.reason}) stayed up for ${q.yp}ms before sending; nothing was typed (Issue #4084)`))}catch(b){d=null,c.reset(),aI.debug("opencode-prompt-capture-failed",{sessionName:a,error:(0,aG.u1)(b)})}if(e)throw e;let g=b-Date.now();if(g<=0)break;await new Promise(a=>setTimeout(a,Math.min(500,g)))}throw aI.info("opencode-prompt-not-detected"),Error(`OpenCode prompt not ready: timed out waiting for the input prompt before sending (${function(a){if(null===a)return"the pane could not be read";switch(o(a)){case"dialog":return"a dialog or overlay is open: answer it in the terminal";case"input-box-holds-text":return"the input box still holds text";default:return"no input box on the pane: opencode may still be starting"}}(d)})`)}supportsImage(){return!0}async sendMessageWithImage(a,b,c,d){let e=this.getSessionName(a,d);await this.requireSession("OpenCode",a,d,{relaunch:!1});let f=aj(a,d),g={unknown:!1};if(await this.trySendViaServer(f,b,c,g))return void(0,s.gm)(e);aI.info("opencode-image-degraded-to-path",{worktreeId:a,instanceId:d??this.id}),await this.sendMessageAfterDispatch(a,aL(b,c),d,g)}async killSession(a,b){let c=this.getSessionName(a,b),d=aj(a,b),e=(0,af.hC)(d),g=await (0,au.LQ)(d).catch(()=>null);g&&!g.captured&&aI.info("opencode-session-capture-skipped",{sessionName:c,reason:g.skipped}),await ar(d);try{if(await (0,f.N)(c)){await (0,f.V1)(c,"/exit",!1),await new Promise(a=>setTimeout(a,ax.pL)),await (0,f.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,ax.KI));let a=await (0,aw.rY)({sessionAlive:()=>(0,f.N)(c),portAnswering:null===e?null:async()=>await (0,Q.Ok)(e)!==null});a.ok||(aI.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,s.gm)(c),aI.info("stopped-opencode-session")}catch(a){throw aI.error("session:stop-failed",{error:(0,aG.u1)(a)}),a}}async interrupt(a,b){let c=this.getSessionName(a,b);if(await aq(aj(a,b))){(0,s.gm)(c),aI.info("opencode-interrupt-aborted-via-api");return}await (0,f.ds)(c,"Escape"),await new Promise(a=>setTimeout(a,ax.os)),await (0,f.ds)(c,"Escape"),(0,s.gm)(c),aI.info("opencode-interrupt-sent")}constructor(...a){super(...a),this.id="opencode",this.name="OpenCode",this.command="opencode"}}},93949:(a,b,c)=>{c.d(b,{JV:()=>j,M0:()=>g,rY:()=>l});var d=c(56263),e=c(20610),f=c(86069);let g="/exit",h={keys:[(0,f.IS)("C-d")],exitWaitMs:e.Zf,ownsLoopbackServer:!1},i={claude:h,codex:h,antigravity:h,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},"opencode-v2":{keys:[(0,f.iF)(g,e.pL),(0,f.IS)("Enter")],exitWaitMs:e.Lw,ownsLoopbackServer:!0}};function j(a){return i[a]??h}let k=a=>new Promise(b=>setTimeout(b,a));async function l(a){let b=Math.max(1,a.attempts??1),c=a.intervalMs??0,d=a.sleep??k,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}}}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-838df0273b03af19.js","static/chunks/4bd1b696-100b9d70ed4e49c1.js","static/chunks/1255-a85690d352f4f8fd.js","static/chunks/main-app-5d631b93b1219836.js"],rootMainFilesTree:{},pages:{"/_app":["static/chunks/webpack-838df0273b03af19.js","static/chunks/framework-eaf13c96191cb608.js","static/chunks/main-37ca13e38030fe8b.js","static/chunks/pages/_app-4b3fb5e477a0267f.js"],"/_error":["static/chunks/webpack-838df0273b03af19.js","static/chunks/framework-eaf13c96191cb608.js","static/chunks/main-37ca13e38030fe8b.js","static/chunks/pages/_error-c970d8b55ace1b48.js"]},ampFirstPages:[]},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-16b1a3143fa42ca0.js","static/chunks/4bd1b696-100b9d70ed4e49c1.js","static/chunks/1255-a85690d352f4f8fd.js","static/chunks/main-app-5d631b93b1219836.js"],rootMainFilesTree:{},pages:{"/_app":["static/chunks/webpack-16b1a3143fa42ca0.js","static/chunks/framework-eaf13c96191cb608.js","static/chunks/main-37ca13e38030fe8b.js","static/chunks/pages/_app-4b3fb5e477a0267f.js"],"/_error":["static/chunks/webpack-16b1a3143fa42ca0.js","static/chunks/framework-eaf13c96191cb608.js","static/chunks/main-37ca13e38030fe8b.js","static/chunks/pages/_error-c970d8b55ace1b48.js"]},ampFirstPages:[]},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
@@ -17,11 +17,11 @@
17
17
  "wasm": [],
18
18
  "assets": [],
19
19
  "env": {
20
- "__NEXT_BUILD_ID": "LNfVZiq6FZwKsV7L9Mi6M",
21
- "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "xEnixD5udDCOZNezIMo+XyN4QpYm7ow4f4oHHfxgDis=",
22
- "__NEXT_PREVIEW_MODE_ID": "86359e476c251a6de6a645ab3730da04",
23
- "__NEXT_PREVIEW_MODE_SIGNING_KEY": "a289416a0314a2d914317657ee20b52fca0675fbe002403fc400135904bacef2",
24
- "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "77c757c0bea502915e69ab3c413116a61dca8a50e763af7e78cb52855b92046f"
20
+ "__NEXT_BUILD_ID": "z4d8-5MaLkoD-4EhueZwk",
21
+ "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "/iG//wyqhKRENU3dRcZugr3pk6j4NOMV6cpT8XL4d7k=",
22
+ "__NEXT_PREVIEW_MODE_ID": "3234fd288ede7133bfe1a816d608b82f",
23
+ "__NEXT_PREVIEW_MODE_SIGNING_KEY": "20a91c3fa990524f4520f5cba4a6e8feeda96b1a48bf42e85f1284b19dfcba18",
24
+ "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "cff28f8970ad99d25c9903b909d3cc64ed8db29bfa0d60fc5515288865bdf6ec"
25
25
  }
26
26
  }
27
27
  },
@@ -1 +1 @@
1
- self.__REACT_LOADABLE_MANIFEST='{"../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs -> ./chunks/mermaid-parser.core/architecture-PBZL5I3N.mjs":{"id":43389,"files":["static/chunks/3389.ba28c369d5fd285d.js"]},"../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs -> ./chunks/mermaid-parser.core/gitGraph-HDMCJU4V.mjs":{"id":51394,"files":["static/chunks/1394.ee511cecae812ccb.js"]},"../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs -> ./chunks/mermaid-parser.core/info-3K5VOQVL.mjs":{"id":65202,"files":["static/chunks/5202.7d64195cbab813a6.js"]},"../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs -> ./chunks/mermaid-parser.core/packet-RMMSAZCW.mjs":{"id":59775,"files":["static/chunks/9775.a8d4731819f32478.js"]},"../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs -> ./chunks/mermaid-parser.core/pie-UPGHQEXC.mjs":{"id":27968,"files":["static/chunks/7968.b3d37fbbecf5664e.js"]},"../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs -> ./chunks/mermaid-parser.core/radar-KQ55EAFF.mjs":{"id":90577,"files":["static/chunks/577.0af2b2fa2b043810.js"]},"../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs -> ./chunks/mermaid-parser.core/treemap-KZPCXAKY.mjs":{"id":12466,"files":["static/chunks/2466.813e7474cc702f5c.js"]},"../node_modules/mermaid/dist/chunks/mermaid.core/chunk-7R4GIKGN.mjs -> katex":{"id":84739,"files":["static/chunks/d3ac728e.5f6e6d9311df141b.js"]},"../node_modules/mermaid/dist/chunks/mermaid.core/chunk-GLR3WWYH.mjs -> ./cose-bilkent-S5V4N54A.mjs":{"id":51345,"files":["static/chunks/90542734.c2386877103b1d80.js","static/chunks/1345.7503fa6b29b871de.js"]},"../node_modules/mermaid/dist/chunks/mermaid.core/chunk-GLR3WWYH.mjs -> ./dagre-KLK3FWXG.mjs":{"id":80282,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/3237.94c29281d9ec122e.js","static/chunks/1464.09cd37fee202ec4b.js","static/chunks/282.a1013532fd9a61b4.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/architectureDiagram-2XIMDMQ5.mjs":{"id":80070,"files":["static/chunks/90542734.c2386877103b1d80.js","static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/4290.c06dbe243819fea0.js","static/chunks/70.1b01cf72ef152ebb.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/blockDiagram-WCTKOSBZ.mjs":{"id":75222,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/3237.94c29281d9ec122e.js","static/chunks/5222.39e2034d3fce233c.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/c4Diagram-IC4MRINW.mjs":{"id":64378,"files":["static/chunks/4378.30a4e65db2d8c71b.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/classDiagram-VBA2DB6C.mjs":{"id":54384,"files":["static/chunks/6690.a55d53ee0693a21a.js","static/chunks/4384.0454992d5b8c885f.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/classDiagram-v2-RAHNMMFH.mjs":{"id":57528,"files":["static/chunks/6690.a55d53ee0693a21a.js","static/chunks/7528.a4b80119f4aa37c7.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/diagram-E7M64L7V.mjs":{"id":15146,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/4290.c06dbe243819fea0.js","static/chunks/5146.e5666bf9cd8ace31.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/diagram-IFDJBPK2.mjs":{"id":7318,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/4290.c06dbe243819fea0.js","static/chunks/7318.ca42d44599533a47.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/diagram-P4PSJMXO.mjs":{"id":28871,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/4290.c06dbe243819fea0.js","static/chunks/8871.5b1a67427b25ab0c.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/erDiagram-INFDFZHY.mjs":{"id":18923,"files":["static/chunks/8923.a9bfb5c9dae0a653.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/flowDiagram-PKNHOUZH.mjs":{"id":34943,"files":["static/chunks/4943.1300b9bbd8ca6846.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/ganttDiagram-A5KZAMGK.mjs":{"id":64489,"files":["static/chunks/4489.b5d699c8c24e75f9.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/gitGraphDiagram-K3NZZRJ6.mjs":{"id":77318,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/4290.c06dbe243819fea0.js","static/chunks/4937.4bc1a01e597e4966.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/infoDiagram-LFFYTUFH.mjs":{"id":75142,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/4290.c06dbe243819fea0.js","static/chunks/5142.1305911c3f99a90d.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/ishikawaDiagram-PHBUUO56.mjs":{"id":67295,"files":["static/chunks/7295.6e760de741e69d78.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/journeyDiagram-4ABVD52K.mjs":{"id":32311,"files":["static/chunks/2311.db2c5912f71d40fb.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/kanban-definition-K7BYSVSG.mjs":{"id":65694,"files":["static/chunks/5694.dda65070757534df.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/mindmap-definition-YRQLILUH.mjs":{"id":22601,"files":["static/chunks/2601.17b50928bf38c193.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/pieDiagram-SKSYHLDU.mjs":{"id":62935,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/4290.c06dbe243819fea0.js","static/chunks/2935.c6f0bf2fa2767553.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/quadrantDiagram-337W2JSQ.mjs":{"id":37732,"files":["static/chunks/7732.ba6419e9f3d62177.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/requirementDiagram-Z7DCOOCP.mjs":{"id":3862,"files":["static/chunks/3862.4bbe8bd40d770a1d.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/sankeyDiagram-WA2Y5GQK.mjs":{"id":22789,"files":["static/chunks/2789.d4f15555df3ca5b6.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/sequenceDiagram-2WXFIKYE.mjs":{"id":60886,"files":["static/chunks/2ff9d716.fcad4dc87234c8d8.js","static/chunks/8706.108a69de11de19c7.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/stateDiagram-RAJIS63D.mjs":{"id":97095,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/3237.94c29281d9ec122e.js","static/chunks/1464.09cd37fee202ec4b.js","static/chunks/9076.d3e3a7f356a416ba.js","static/chunks/7095.87323a4fdf426341.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/stateDiagram-v2-FVOUBMTO.mjs":{"id":6596,"files":["static/chunks/9076.d3e3a7f356a416ba.js","static/chunks/6596.78e45c31f50e3e5c.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/timeline-definition-YZTLITO2.mjs":{"id":79775,"files":["static/chunks/2156.f667232f18272330.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/vennDiagram-LZ73GAT5.mjs":{"id":38339,"files":["static/chunks/8339.855133c9f5c0be46.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/xychartDiagram-JWTSCODW.mjs":{"id":52918,"files":["static/chunks/2918.cfd6cee82abd3c55.js"]},"app/worktrees/[id]/terminal/page.tsx -> @/components/Terminal":{"id":27229,"files":["static/css/6ef2fa08dd043252.css","static/chunks/30d07d85.85dcdd0af8338499.js","static/chunks/7229.7f0f5a7032b612b4.js"]},"components/worktree/FilePanelContent.tsx -> @/components/worktree/HtmlPreview":{"id":530,"files":["static/chunks/530.578854fdd5d91542.js"]},"components/worktree/FilePanelContent.tsx -> @/components/worktree/MarkdownEditor":{"id":42717,"files":["static/chunks/2717.1583400c272dc1d9.js"]},"components/worktree/FilePanelContent.tsx -> @/components/worktree/PdfPreview":{"id":27307,"files":[]},"components/worktree/FileViewer.tsx -> @/components/worktree/MarkdownEditor":{"id":42717,"files":["static/chunks/2717.1583400c272dc1d9.js"]},"components/worktree/MermaidCodeBlock.tsx -> ./MermaidDiagram":{"id":90953,"files":["static/chunks/af7f6608.a62718fb6038c35a.js","static/chunks/1111.1b653d4a9816a0a7.js","static/chunks/953.31c52a251deda22d.js"]}}';
1
+ self.__REACT_LOADABLE_MANIFEST='{"../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs -> ./chunks/mermaid-parser.core/architecture-PBZL5I3N.mjs":{"id":43389,"files":["static/chunks/3389.ba28c369d5fd285d.js"]},"../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs -> ./chunks/mermaid-parser.core/gitGraph-HDMCJU4V.mjs":{"id":51394,"files":["static/chunks/1394.ee511cecae812ccb.js"]},"../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs -> ./chunks/mermaid-parser.core/info-3K5VOQVL.mjs":{"id":65202,"files":["static/chunks/5202.7d64195cbab813a6.js"]},"../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs -> ./chunks/mermaid-parser.core/packet-RMMSAZCW.mjs":{"id":59775,"files":["static/chunks/9775.a8d4731819f32478.js"]},"../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs -> ./chunks/mermaid-parser.core/pie-UPGHQEXC.mjs":{"id":27968,"files":["static/chunks/7968.b3d37fbbecf5664e.js"]},"../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs -> ./chunks/mermaid-parser.core/radar-KQ55EAFF.mjs":{"id":90577,"files":["static/chunks/577.0af2b2fa2b043810.js"]},"../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs -> ./chunks/mermaid-parser.core/treemap-KZPCXAKY.mjs":{"id":12466,"files":["static/chunks/2466.813e7474cc702f5c.js"]},"../node_modules/mermaid/dist/chunks/mermaid.core/chunk-7R4GIKGN.mjs -> katex":{"id":84739,"files":["static/chunks/d3ac728e.5f6e6d9311df141b.js"]},"../node_modules/mermaid/dist/chunks/mermaid.core/chunk-GLR3WWYH.mjs -> ./cose-bilkent-S5V4N54A.mjs":{"id":51345,"files":["static/chunks/90542734.c2386877103b1d80.js","static/chunks/1345.7503fa6b29b871de.js"]},"../node_modules/mermaid/dist/chunks/mermaid.core/chunk-GLR3WWYH.mjs -> ./dagre-KLK3FWXG.mjs":{"id":80282,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/3237.94c29281d9ec122e.js","static/chunks/1464.09cd37fee202ec4b.js","static/chunks/282.a1013532fd9a61b4.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/architectureDiagram-2XIMDMQ5.mjs":{"id":80070,"files":["static/chunks/90542734.c2386877103b1d80.js","static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/4290.c06dbe243819fea0.js","static/chunks/70.1b01cf72ef152ebb.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/blockDiagram-WCTKOSBZ.mjs":{"id":75222,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/3237.94c29281d9ec122e.js","static/chunks/5222.39e2034d3fce233c.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/c4Diagram-IC4MRINW.mjs":{"id":64378,"files":["static/chunks/4378.30a4e65db2d8c71b.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/classDiagram-VBA2DB6C.mjs":{"id":54384,"files":["static/chunks/6690.a55d53ee0693a21a.js","static/chunks/4384.0454992d5b8c885f.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/classDiagram-v2-RAHNMMFH.mjs":{"id":57528,"files":["static/chunks/6690.a55d53ee0693a21a.js","static/chunks/7528.a4b80119f4aa37c7.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/diagram-E7M64L7V.mjs":{"id":15146,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/4290.c06dbe243819fea0.js","static/chunks/5146.e5666bf9cd8ace31.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/diagram-IFDJBPK2.mjs":{"id":7318,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/4290.c06dbe243819fea0.js","static/chunks/7318.ca42d44599533a47.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/diagram-P4PSJMXO.mjs":{"id":28871,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/4290.c06dbe243819fea0.js","static/chunks/8871.5b1a67427b25ab0c.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/erDiagram-INFDFZHY.mjs":{"id":18923,"files":["static/chunks/8923.a9bfb5c9dae0a653.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/flowDiagram-PKNHOUZH.mjs":{"id":34943,"files":["static/chunks/4943.1300b9bbd8ca6846.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/ganttDiagram-A5KZAMGK.mjs":{"id":64489,"files":["static/chunks/4489.b5d699c8c24e75f9.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/gitGraphDiagram-K3NZZRJ6.mjs":{"id":77318,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/4290.c06dbe243819fea0.js","static/chunks/4937.4bc1a01e597e4966.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/infoDiagram-LFFYTUFH.mjs":{"id":75142,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/4290.c06dbe243819fea0.js","static/chunks/5142.1305911c3f99a90d.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/ishikawaDiagram-PHBUUO56.mjs":{"id":67295,"files":["static/chunks/7295.6e760de741e69d78.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/journeyDiagram-4ABVD52K.mjs":{"id":32311,"files":["static/chunks/2311.db2c5912f71d40fb.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/kanban-definition-K7BYSVSG.mjs":{"id":65694,"files":["static/chunks/5694.dda65070757534df.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/mindmap-definition-YRQLILUH.mjs":{"id":22601,"files":["static/chunks/2601.17b50928bf38c193.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/pieDiagram-SKSYHLDU.mjs":{"id":62935,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/4290.c06dbe243819fea0.js","static/chunks/2935.c6f0bf2fa2767553.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/quadrantDiagram-337W2JSQ.mjs":{"id":37732,"files":["static/chunks/7732.ba6419e9f3d62177.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/requirementDiagram-Z7DCOOCP.mjs":{"id":3862,"files":["static/chunks/3862.4bbe8bd40d770a1d.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/sankeyDiagram-WA2Y5GQK.mjs":{"id":22789,"files":["static/chunks/2789.d4f15555df3ca5b6.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/sequenceDiagram-2WXFIKYE.mjs":{"id":60886,"files":["static/chunks/2ff9d716.fcad4dc87234c8d8.js","static/chunks/8706.108a69de11de19c7.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/stateDiagram-RAJIS63D.mjs":{"id":97095,"files":["static/chunks/3480.2e21f62e5e9d3ba5.js","static/chunks/3237.94c29281d9ec122e.js","static/chunks/1464.09cd37fee202ec4b.js","static/chunks/9076.d3e3a7f356a416ba.js","static/chunks/7095.87323a4fdf426341.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/stateDiagram-v2-FVOUBMTO.mjs":{"id":6596,"files":["static/chunks/9076.d3e3a7f356a416ba.js","static/chunks/6596.78e45c31f50e3e5c.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/timeline-definition-YZTLITO2.mjs":{"id":79775,"files":["static/chunks/2156.f667232f18272330.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/vennDiagram-LZ73GAT5.mjs":{"id":38339,"files":["static/chunks/8339.855133c9f5c0be46.js"]},"../node_modules/mermaid/dist/mermaid.core.mjs -> ./chunks/mermaid.core/xychartDiagram-JWTSCODW.mjs":{"id":52918,"files":["static/chunks/2918.cfd6cee82abd3c55.js"]},"app/worktrees/[id]/terminal/page.tsx -> @/components/Terminal":{"id":27229,"files":["static/css/6ef2fa08dd043252.css","static/chunks/30d07d85.85dcdd0af8338499.js","static/chunks/7229.016d007c467a3600.js"]},"components/worktree/FilePanelContent.tsx -> @/components/worktree/HtmlPreview":{"id":530,"files":["static/chunks/530.578854fdd5d91542.js"]},"components/worktree/FilePanelContent.tsx -> @/components/worktree/MarkdownEditor":{"id":42717,"files":["static/chunks/2717.1583400c272dc1d9.js"]},"components/worktree/FilePanelContent.tsx -> @/components/worktree/PdfPreview":{"id":27307,"files":[]},"components/worktree/FileViewer.tsx -> @/components/worktree/MarkdownEditor":{"id":42717,"files":["static/chunks/2717.1583400c272dc1d9.js"]},"components/worktree/MermaidCodeBlock.tsx -> ./MermaidDiagram":{"id":90953,"files":["static/chunks/af7f6608.a62718fb6038c35a.js","static/chunks/1111.1b653d4a9816a0a7.js","static/chunks/953.31c52a251deda22d.js"]}}';
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-838df0273b03af19.js" defer=""></script><script src="/_next/static/chunks/framework-eaf13c96191cb608.js" defer=""></script><script src="/_next/static/chunks/main-37ca13e38030fe8b.js" defer=""></script><script src="/_next/static/chunks/pages/_app-4b3fb5e477a0267f.js" defer=""></script><script src="/_next/static/chunks/pages/_error-c970d8b55ace1b48.js" defer=""></script><script src="/_next/static/LNfVZiq6FZwKsV7L9Mi6M/_buildManifest.js" defer=""></script><script src="/_next/static/LNfVZiq6FZwKsV7L9Mi6M/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"LNfVZiq6FZwKsV7L9Mi6M","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-16b1a3143fa42ca0.js" defer=""></script><script src="/_next/static/chunks/framework-eaf13c96191cb608.js" defer=""></script><script src="/_next/static/chunks/main-37ca13e38030fe8b.js" defer=""></script><script src="/_next/static/chunks/pages/_app-4b3fb5e477a0267f.js" defer=""></script><script src="/_next/static/chunks/pages/_error-c970d8b55ace1b48.js" defer=""></script><script src="/_next/static/z4d8-5MaLkoD-4EhueZwk/_buildManifest.js" defer=""></script><script src="/_next/static/z4d8-5MaLkoD-4EhueZwk/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"z4d8-5MaLkoD-4EhueZwk","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"xEnixD5udDCOZNezIMo+XyN4QpYm7ow4f4oHHfxgDis="}
1
+ {"node":{},"edge":{},"encryptionKey":"/iG//wyqhKRENU3dRcZugr3pk6j4NOMV6cpT8XL4d7k="}
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2314],{4023:(e,t,n)=>{n.d(t,{ME:()=>o,c$:()=>i,pd:()=>r,vz:()=>s}),n(95704);let r=16384,s=64,o="Idempotency-Key",i="X-Expected-Role-Name"},73372:(e,t,n)=>{n.d(t,{B1:()=>o,IR:()=>v,JJ:()=>l,Mq:()=>d,Zj:()=>c,cj:()=>s,jD:()=>u,pF:()=>f,t1:()=>y});var r=n(4023);let s=15e3;function o(e){return!(e.status>=400&&e.status<500)}function i(e){return"object"==typeof e&&null!==e}async function a(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),s);try{var o;let r=await fetch(e,{...t,signal:n.signal}),s=await r.json();if(r.ok&&i(s)&&!0===s.success)return{ok:!0,data:s};let a=i(s)?s:{};return{ok:!1,status:null!=(o=r.status)?o:0,error:a.error,message:"string"==typeof a.message?a.message:void 0,body:s}}catch(e){return{ok:!1,status:0}}finally{clearTimeout(r)}}function l(e){try{return e()}catch(e){return Promise.resolve({ok:!1,status:0})}}function u(e,t,n,r){return l(()=>{let s=JSON.stringify(n);return void 0===s?Promise.resolve({ok:!1,status:0}):a(e,{method:t,headers:{"Content-Type":"application/json",...r},body:s})})}let c={list:()=>a("/api/roles"),get:e=>l(()=>a("/api/roles/".concat(encodeURIComponent(e)))),create:e=>u("/api/roles","POST",e),update:(e,t)=>l(()=>u("/api/roles/".concat(encodeURIComponent(e)),"PUT",t)),remove:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return l(()=>a("/api/roles/".concat(encodeURIComponent(e)).concat(t.force?"?force=true":""),{method:"DELETE"}))},systemDefaults:()=>a("/api/settings/agent-role-defaults"),setSystemDefault:(e,t)=>u("/api/settings/agent-role-defaults","PUT",{cliToolId:e,roleId:t}),repositoryDefaults:e=>l(()=>a("/api/repositories/".concat(encodeURIComponent(e),"/role-defaults"))),setRepositoryDefault:(e,t,n)=>l(()=>u("/api/repositories/".concat(encodeURIComponent(e),"/role-defaults"),"PUT",{cliToolId:t,role:n})),instanceSettings:e=>a("/api/worktrees/".concat(e,"/instances/roles")),setInstanceRole:(e,t,n,r)=>u("/api/worktrees/".concat(e,"/instances/roles"),"PUT",{instanceId:t,role:n,...void 0===r?{}:{expectedRosterRevision:r}}),createInstance:(e,t)=>u("/api/worktrees/".concat(e,"/instances/roles"),"POST",t)};function f(e){var t;return"role_in_use"===e.error&&i(e.body)&&null!=(t=e.body.references)?t:null}async function d(e,t,n){let o,i=new AbortController,a=setTimeout(()=>i.abort(),s),l=()=>{clearTimeout(a),i.abort()};try{o=await fetch("/api/worktrees/".concat(e),{method:"PATCH",headers:{"Content-Type":"application/json",[r.ME]:n},body:JSON.stringify(t),signal:i.signal})}catch(e){return clearTimeout(a),{kind:"unknown"}}return o.ok?{kind:"saved",abandon:l,readBody:async()=>{try{let e=await o.json();return{roster:Array.isArray(null==e?void 0:e.agentInstances)?e.agentInstances:void 0,revision:"string"==typeof(null==e?void 0:e.rosterRevision)?e.rosterRevision:void 0}}catch(e){return null}finally{clearTimeout(a)}}}:(l(),409===o.status)?{kind:"conflict"}:o.status>=500?{kind:"unknown"}:{kind:"refused"}}async function p(e){let t=new AbortController,n=setTimeout(()=>t.abort(),s);try{let n=await fetch("/api/worktrees/".concat(e),{signal:t.signal});if(!n.ok)return null;let r=await n.json();return i(r)?r:null}catch(e){return null}finally{clearTimeout(n)}}async function y(e){let t=await p(e);return t&&"string"==typeof t.rosterRevision&&Array.isArray(t.agentInstances)?{roster:t.agentInstances.map(e=>{let{id:t,cliTool:n,alias:r,order:s}=e;return{id:t,cliTool:n,alias:r,order:s}}),revision:t.rosterRevision}:null}async function v(e){let t=await p(e);if(!t||!i(t.sessionStatusByInstance))return null;let n={};for(let[e,r]of Object.entries(t.sessionStatusByInstance))i(r)&&!0===r.isRunning&&(n[e]=!0);return n}},92314:(e,t,n)=>{n.d(t,{Dv:()=>g,E$:()=>p,I2:()=>y,ON:()=>E,P3:()=>k,SP:()=>w,Uk:()=>l,b9:()=>d,eD:()=>v,qp:()=>f,vX:()=>m,w_:()=>c});var r=n(12115),s=n(73372);let o=new Map;function i(e){let t=o.get(e);return t||(t={settings:null,snapshot:null,listeners:new Set,inFlight:null,rerun:!1,version:0,stale:!1},o.set(e,t)),t}function a(e){e.listeners.forEach(e=>e())}function l(e){return e.map((e,t)=>({id:e.instanceId,cliTool:e.cliToolId,alias:e.alias,order:t}))}function u(e,t){e.version+=1,e.stale=!1,e.settings=t,e.snapshot={roster:l(t.instances),revision:t.rosterRevision},a(e)}async function c(e,t){let n=i(e),r=n.version,o=await t();return o.ok?n.version===r?(u(n,o.data),{ok:!0,settings:o.data}):{ok:!0,settings:await g(e)}:(0,s.B1)(o)?(d(e),{...o,outcomeUnknown:!0,settings:await g(e)}):o}function f(e){let t=i(e),n=t.version;return()=>t.version!==n}function d(e){let t=o.get(e);t&&(t.version+=1,t.snapshot=null)}async function p(e){let t=i(e);for(let n=0;n<3&&!t.snapshot;n+=1){let n=t.version,r=await (0,s.t1)(e);if(!r)return null;if(t.version===n)return t.version+=1,t.snapshot=r,r}return t.snapshot}function y(e,t,n){let r=i(e);r.version+=1,r.snapshot=n?{roster:t,revision:n}:null,r.listeners.size>0&&g(e)}function v(e){let t=i(e);if(t.inFlight)return t.rerun=!0,t.inFlight;let n=async()=>{try{let r=null;do{var n;t.rerun=!1;let o=t.version,i=await s.Zj.instanceSettings(e);i.ok&&(n=i.data,"object"==typeof n&&null!==n&&"string"==typeof n.rosterRevision&&Array.isArray(n.instances)&&Array.isArray(n.toolDefaults))?t.version===o?(u(t,i.data),r=i.data):t.rerun=!0:r=null}while(t.rerun);return r}finally{t.inFlight=null}};return t.inFlight=n(),t.inFlight}async function g(e){let t=await v(e);if(!t){let t=i(e);t.stale=!0,a(t)}return t}function w(){o.forEach((e,t)=>{e.listeners.size>0&&g(t)})}let h=new Set;function k(){w(),h.forEach(e=>e())}function m(e){(0,r.useEffect)(()=>(h.add(e),window.addEventListener("focus",e),()=>{h.delete(e),window.removeEventListener("focus",e)}),[e])}function E(e,t){let n=(0,r.useCallback)(t=>{let n=i(e);return n.listeners.add(t),()=>{n.listeners.delete(t)}},[e]),s=(0,r.useSyncExternalStore)(n,()=>{var t,n;return null!=(n=null==(t=o.get(e))?void 0:t.settings)?n:null},()=>null),a=(0,r.useSyncExternalStore)(n,()=>{var t,n;return null!=(n=null==(t=o.get(e))?void 0:t.stale)&&n},()=>!1),l=(0,r.useRef)(null);return(0,r.useEffect)(()=>{let n=l.current;l.current={worktreeId:e,refreshKey:t},null!==n&&n.worktreeId===e&&n.refreshKey!==t?g(e):v(e)},[e,t]),(0,r.useEffect)(()=>{let t=()=>{v(e)};return window.addEventListener("focus",t),()=>window.removeEventListener("focus",t)},[e]),{settings:s,stale:a,refresh:(0,r.useCallback)(()=>g(e),[e])}}}}]);