commandmate 0.46.0 → 0.47.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 (743) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +417 -410
  3. package/.next/app-path-routes-manifest.json +22 -21
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +12 -12
  6. package/.next/react-loadable-manifest.json +2 -2
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +8 -0
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/update/route.js +4 -2
  14. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/capabilities/route.js +1 -1
  20. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/daily-summary/route.js +1 -1
  22. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  23. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  25. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  26. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  33. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  34. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/hooks/claude-done/route.js +9 -9
  36. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  37. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  39. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  40. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/push/escalation/route.js +1 -7
  44. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  45. package/.next/server/app/api/push/escalation/route_client-reference-manifest.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 -7
  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/route.js +1 -1
  54. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  55. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  59. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  60. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/repositories/clone/route.js +1 -1
  62. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  63. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/restore/route.js +1 -1
  66. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  67. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/route.js +1 -1
  69. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  70. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/repositories/scan/route.js +1 -1
  72. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  73. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/repositories/sync/route.js +1 -1
  75. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  76. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  79. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  80. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  96. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  97. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  99. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  100. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  102. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  103. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  108. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  111. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  114. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  119. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  147. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  150. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  153. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/logs/route.js +9 -9
  156. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  164. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  167. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -0
  172. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -0
  173. package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -0
  174. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  177. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  180. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  183. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  186. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  189. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  193. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
  195. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  196. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/terminal/route.js +2 -2
  210. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  211. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  232. package/.next/server/app/api/worktrees/route.js +1 -1
  233. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  234. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  235. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  236. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  238. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  239. package/.next/server/app/page_client-reference-manifest.js +1 -1
  240. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  241. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  242. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  243. package/.next/server/app/sessions/page.js +1 -1
  244. package/.next/server/app/sessions/page.js.nft.json +1 -1
  245. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  246. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  247. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  248. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  249. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  250. package/.next/server/app/worktrees/[id]/page.js +11 -11
  251. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  252. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  253. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  254. package/.next/server/app-paths-manifest.json +22 -21
  255. package/.next/server/chunks/1210.js +1 -1
  256. package/.next/server/chunks/1501.js +2 -2
  257. package/.next/server/chunks/1559.js +1 -1
  258. package/.next/server/chunks/1601.js +7 -0
  259. package/.next/server/chunks/1836.js +1 -0
  260. package/.next/server/chunks/1945.js +14 -0
  261. package/.next/server/chunks/2119.js +1 -1
  262. package/.next/server/chunks/2404.js +1 -1
  263. package/.next/server/chunks/2422.js +1 -0
  264. package/.next/server/chunks/2445.js +1 -1
  265. package/.next/server/chunks/2460.js +1 -1
  266. package/.next/server/chunks/2534.js +1 -1
  267. package/.next/server/chunks/3241.js +1 -1
  268. package/.next/server/chunks/{3077.js → 4194.js} +12 -12
  269. package/.next/server/chunks/4207.js +1 -1
  270. package/.next/server/chunks/4248.js +1 -1
  271. package/.next/server/chunks/5209.js +1 -1
  272. package/.next/server/chunks/5292.js +3 -3
  273. package/.next/server/chunks/5595.js +1 -1
  274. package/.next/server/chunks/5845.js +1 -1
  275. package/.next/server/chunks/6130.js +1 -1
  276. package/.next/server/chunks/6401.js +1 -1
  277. package/.next/server/chunks/{2283.js → 6486.js} +7 -7
  278. package/.next/server/chunks/6722.js +1 -1
  279. package/.next/server/chunks/6781.js +1 -1
  280. package/.next/server/chunks/6793.js +2 -2
  281. package/.next/server/chunks/7166.js +19 -0
  282. package/.next/server/chunks/7905.js +1 -1
  283. package/.next/server/chunks/8581.js +12 -12
  284. package/.next/server/chunks/8728.js +2 -2
  285. package/.next/server/chunks/8791.js +1 -1
  286. package/.next/server/chunks/8918.js +6 -6
  287. package/.next/server/chunks/9199.js +1 -0
  288. package/.next/server/chunks/936.js +1 -0
  289. package/.next/server/chunks/9390.js +1 -1
  290. package/.next/server/chunks/9540.js +1 -0
  291. package/.next/server/chunks/9627.js +3 -2
  292. package/.next/server/chunks/9731.js +3 -3
  293. package/.next/server/middleware-build-manifest.js +1 -1
  294. package/.next/server/middleware-manifest.json +5 -5
  295. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  296. package/.next/server/pages/500.html +1 -1
  297. package/.next/server/server-reference-manifest.json +1 -1
  298. package/.next/static/chunks/{2407-acb644c5487e1720.js → 2407-b2f524f99f7fc353.js} +1 -1
  299. package/.next/static/chunks/{2717.21abf5b6bbd45520.js → 2717.1583400c272dc1d9.js} +1 -1
  300. package/.next/static/chunks/5371-a549a0d2c2044d41.js +1 -0
  301. package/.next/static/chunks/5794-80ac3f06f098ea29.js +1 -0
  302. package/.next/static/chunks/602-1c1488959215e140.js +1 -0
  303. package/.next/static/chunks/{8407-9a72e6f07c5d5458.js → 8407-155f84e5ba05f1d5.js} +1 -1
  304. package/.next/static/chunks/9079-24f9fa549ed298f1.js +1 -0
  305. package/.next/static/chunks/app/api/agents/update/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  306. package/.next/static/chunks/app/api/agents/versions/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  307. package/.next/static/chunks/app/api/app/release-notes/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  308. package/.next/static/chunks/app/api/app/update/route-c81284a9d8b35304.js +1 -0
  309. package/.next/static/chunks/app/api/app/update-check/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
  310. package/.next/static/chunks/app/api/auth/login/route-c81284a9d8b35304.js +1 -0
  311. package/.next/static/chunks/app/api/auth/logout/route-c81284a9d8b35304.js +1 -0
  312. package/.next/static/chunks/app/api/auth/status/route-c81284a9d8b35304.js +1 -0
  313. package/.next/static/chunks/app/api/capabilities/route-c81284a9d8b35304.js +1 -0
  314. package/.next/static/chunks/app/api/daily-summary/route-c81284a9d8b35304.js +1 -0
  315. package/.next/static/chunks/app/api/daily-summary/status/route-c81284a9d8b35304.js +1 -0
  316. package/.next/static/chunks/app/api/external-apps/[id]/health/route-c81284a9d8b35304.js +1 -0
  317. package/.next/static/chunks/app/api/external-apps/[id]/route-c81284a9d8b35304.js +1 -0
  318. package/.next/static/chunks/app/api/external-apps/route-c81284a9d8b35304.js +1 -0
  319. package/.next/static/chunks/app/api/fs/browse/route-c81284a9d8b35304.js +1 -0
  320. package/.next/static/chunks/app/api/fs/recent-paths/route-c81284a9d8b35304.js +1 -0
  321. package/.next/static/chunks/app/api/hooks/agent-event/route-c81284a9d8b35304.js +1 -0
  322. package/.next/static/chunks/app/api/hooks/claude-done/route-c81284a9d8b35304.js +1 -0
  323. package/.next/static/chunks/app/api/hooks/permission-request/route-c81284a9d8b35304.js +1 -0
  324. package/.next/static/chunks/app/api/metrics/vibe/route-c81284a9d8b35304.js +1 -0
  325. package/.next/static/chunks/app/api/ollama/models/route-c81284a9d8b35304.js +1 -0
  326. package/.next/static/chunks/app/api/push/escalation/route-c81284a9d8b35304.js +1 -0
  327. package/.next/static/chunks/app/api/push/subscriptions/route-c81284a9d8b35304.js +1 -0
  328. package/.next/static/chunks/app/api/push/vapid/route-c81284a9d8b35304.js +1 -0
  329. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-c81284a9d8b35304.js +1 -0
  330. package/.next/static/chunks/app/api/relays/route-c81284a9d8b35304.js +1 -0
  331. package/.next/static/chunks/app/api/remote/pair/route-c81284a9d8b35304.js +1 -0
  332. package/.next/static/chunks/app/api/repositories/[id]/route-c81284a9d8b35304.js +1 -0
  333. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-c81284a9d8b35304.js +1 -0
  334. package/.next/static/chunks/app/api/repositories/clone/route-c81284a9d8b35304.js +1 -0
  335. package/.next/static/chunks/app/api/repositories/excluded/route-c81284a9d8b35304.js +1 -0
  336. package/.next/static/chunks/app/api/repositories/restore/route-c81284a9d8b35304.js +1 -0
  337. package/.next/static/chunks/app/api/repositories/route-c81284a9d8b35304.js +1 -0
  338. package/.next/static/chunks/app/api/repositories/scan/route-c81284a9d8b35304.js +1 -0
  339. package/.next/static/chunks/app/api/repositories/sync/route-c81284a9d8b35304.js +1 -0
  340. package/.next/static/chunks/app/api/repositories/validate-path/route-c81284a9d8b35304.js +1 -0
  341. package/.next/static/chunks/app/api/settings/default-agents/route-c81284a9d8b35304.js +1 -0
  342. package/.next/static/chunks/app/api/settings/default-surface-mode/route-c81284a9d8b35304.js +1 -0
  343. package/.next/static/chunks/app/api/sidebar/group-order/route-c81284a9d8b35304.js +1 -0
  344. package/.next/static/chunks/app/api/skills/[id]/route-c81284a9d8b35304.js +1 -0
  345. package/.next/static/chunks/app/api/skills/installations/route-c81284a9d8b35304.js +1 -0
  346. package/.next/static/chunks/app/api/skills/operations/route-c81284a9d8b35304.js +1 -0
  347. package/.next/static/chunks/app/api/skills/reindex/route-c81284a9d8b35304.js +1 -0
  348. package/.next/static/chunks/app/api/skills/route-c81284a9d8b35304.js +1 -0
  349. package/.next/static/chunks/app/api/slash-commands/route-c81284a9d8b35304.js +1 -0
  350. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-c81284a9d8b35304.js +1 -0
  351. package/.next/static/chunks/app/api/tasks/[taskId]/route-c81284a9d8b35304.js +1 -0
  352. package/.next/static/chunks/app/api/templates/[id]/route-c81284a9d8b35304.js +1 -0
  353. package/.next/static/chunks/app/api/templates/route-c81284a9d8b35304.js +1 -0
  354. package/.next/static/chunks/app/api/verification/runs/[runId]/route-c81284a9d8b35304.js +1 -0
  355. package/.next/static/chunks/app/api/verification/runs/route-c81284a9d8b35304.js +1 -0
  356. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-c81284a9d8b35304.js +1 -0
  357. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-c81284a9d8b35304.js +1 -0
  358. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-c81284a9d8b35304.js +1 -0
  359. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-c81284a9d8b35304.js +1 -0
  360. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-c81284a9d8b35304.js +1 -0
  361. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-c81284a9d8b35304.js +1 -0
  362. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-c81284a9d8b35304.js +1 -0
  363. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-c81284a9d8b35304.js +1 -0
  364. package/.next/static/chunks/app/api/worktrees/[id]/env/route-c81284a9d8b35304.js +1 -0
  365. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-c81284a9d8b35304.js +1 -0
  366. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-c81284a9d8b35304.js +1 -0
  367. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-c81284a9d8b35304.js +1 -0
  368. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-c81284a9d8b35304.js +1 -0
  369. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-c81284a9d8b35304.js +1 -0
  370. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-c81284a9d8b35304.js +1 -0
  371. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-c81284a9d8b35304.js +1 -0
  372. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-c81284a9d8b35304.js +1 -0
  373. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-c81284a9d8b35304.js +1 -0
  374. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-c81284a9d8b35304.js +1 -0
  375. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-c81284a9d8b35304.js +1 -0
  376. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-c81284a9d8b35304.js +1 -0
  377. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-c81284a9d8b35304.js +1 -0
  378. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-c81284a9d8b35304.js +1 -0
  379. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-c81284a9d8b35304.js +1 -0
  380. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-c81284a9d8b35304.js +1 -0
  381. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-c81284a9d8b35304.js +1 -0
  382. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-c81284a9d8b35304.js +1 -0
  383. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-c81284a9d8b35304.js +1 -0
  384. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-c81284a9d8b35304.js +1 -0
  385. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-c81284a9d8b35304.js +1 -0
  386. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-c81284a9d8b35304.js +1 -0
  387. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-c81284a9d8b35304.js +1 -0
  388. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-c81284a9d8b35304.js +1 -0
  389. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-c81284a9d8b35304.js +1 -0
  390. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-c81284a9d8b35304.js +1 -0
  391. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-c81284a9d8b35304.js +1 -0
  392. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-c81284a9d8b35304.js +1 -0
  393. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-c81284a9d8b35304.js +1 -0
  394. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-c81284a9d8b35304.js +1 -0
  395. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-c81284a9d8b35304.js +1 -0
  396. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-c81284a9d8b35304.js +1 -0
  397. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-c81284a9d8b35304.js +1 -0
  398. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-c81284a9d8b35304.js +1 -0
  399. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-c81284a9d8b35304.js +1 -0
  400. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-c81284a9d8b35304.js +1 -0
  401. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-c81284a9d8b35304.js +1 -0
  402. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-c81284a9d8b35304.js +1 -0
  403. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-c81284a9d8b35304.js +1 -0
  404. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-c81284a9d8b35304.js +1 -0
  405. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-c81284a9d8b35304.js +1 -0
  406. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-c81284a9d8b35304.js +1 -0
  407. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-c81284a9d8b35304.js +1 -0
  408. package/.next/static/chunks/app/api/worktrees/[id]/route-c81284a9d8b35304.js +1 -0
  409. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-c81284a9d8b35304.js +1 -0
  410. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-c81284a9d8b35304.js +1 -0
  411. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-c81284a9d8b35304.js +1 -0
  412. package/.next/static/chunks/app/api/worktrees/[id]/search/route-c81284a9d8b35304.js +1 -0
  413. package/.next/static/chunks/app/api/worktrees/[id]/send/route-c81284a9d8b35304.js +1 -0
  414. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-c81284a9d8b35304.js +1 -0
  415. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-c81284a9d8b35304.js +1 -0
  416. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-c81284a9d8b35304.js +1 -0
  417. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-c81284a9d8b35304.js +1 -0
  418. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-c81284a9d8b35304.js +1 -0
  419. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-c81284a9d8b35304.js +1 -0
  420. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-c81284a9d8b35304.js +1 -0
  421. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-c81284a9d8b35304.js +1 -0
  422. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-c81284a9d8b35304.js +1 -0
  423. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-c81284a9d8b35304.js +1 -0
  424. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-c81284a9d8b35304.js +1 -0
  425. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-c81284a9d8b35304.js +1 -0
  426. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-c81284a9d8b35304.js +1 -0
  427. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-c81284a9d8b35304.js +1 -0
  428. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-c81284a9d8b35304.js +1 -0
  429. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-c81284a9d8b35304.js +1 -0
  430. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-c81284a9d8b35304.js +1 -0
  431. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-c81284a9d8b35304.js +1 -0
  432. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-c81284a9d8b35304.js +1 -0
  433. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-c81284a9d8b35304.js +1 -0
  434. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-c81284a9d8b35304.js +1 -0
  435. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-c81284a9d8b35304.js +1 -0
  436. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-c81284a9d8b35304.js +1 -0
  437. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-c81284a9d8b35304.js +1 -0
  438. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-c81284a9d8b35304.js +1 -0
  439. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-c81284a9d8b35304.js +1 -0
  440. package/.next/static/chunks/app/api/worktrees/route-c81284a9d8b35304.js +1 -0
  441. package/.next/static/chunks/app/layout-419eaf7de340f4ab.js +1 -0
  442. package/.next/static/chunks/app/manifest.webmanifest/route-c81284a9d8b35304.js +1 -0
  443. package/.next/static/chunks/app/proxy/[...path]/route-c81284a9d8b35304.js +1 -0
  444. package/.next/static/chunks/app/sessions/page-e02f1adb1d1c1ccc.js +1 -0
  445. package/.next/static/chunks/app/worktrees/[id]/layout-c81284a9d8b35304.js +1 -0
  446. package/.next/static/chunks/app/worktrees/[id]/page-45294052ee3032f1.js +1 -0
  447. package/.next/static/chunks/{webpack-c0b821f340afdebf.js → webpack-468b7b33030234b3.js} +1 -1
  448. package/.next/trace +13 -13
  449. package/.next/types/app/api/worktrees/[id]/prompt-response/strict/route.ts +347 -0
  450. package/.next/types/routes.d.ts +2 -1
  451. package/.next/types/validator.ts +9 -0
  452. package/dist/cli/commands/auto-yes.d.ts +19 -0
  453. package/dist/cli/commands/auto-yes.d.ts.map +1 -1
  454. package/dist/cli/commands/auto-yes.js +45 -0
  455. package/dist/cli/commands/instances.d.ts.map +1 -1
  456. package/dist/cli/commands/instances.js +23 -18
  457. package/dist/cli/commands/ls.d.ts +15 -1
  458. package/dist/cli/commands/ls.d.ts.map +1 -1
  459. package/dist/cli/commands/ls.js +39 -3
  460. package/dist/cli/commands/prompt.d.ts +42 -0
  461. package/dist/cli/commands/prompt.d.ts.map +1 -0
  462. package/dist/cli/commands/prompt.js +211 -0
  463. package/dist/cli/commands/relays.d.ts.map +1 -1
  464. package/dist/cli/commands/relays.js +13 -1
  465. package/dist/cli/commands/respond-strict.d.ts +31 -0
  466. package/dist/cli/commands/respond-strict.d.ts.map +1 -0
  467. package/dist/cli/commands/respond-strict.js +214 -0
  468. package/dist/cli/commands/respond.d.ts.map +1 -1
  469. package/dist/cli/commands/respond.js +38 -0
  470. package/dist/cli/commands/send.d.ts.map +1 -1
  471. package/dist/cli/commands/send.js +41 -5
  472. package/dist/cli/commands/start.d.ts.map +1 -1
  473. package/dist/cli/commands/start.js +2 -1
  474. package/dist/cli/commands/status.d.ts.map +1 -1
  475. package/dist/cli/commands/status.js +18 -0
  476. package/dist/cli/commands/wait.d.ts +21 -1
  477. package/dist/cli/commands/wait.d.ts.map +1 -1
  478. package/dist/cli/commands/wait.js +113 -12
  479. package/dist/cli/docs/agent-operations.d.ts +1 -1
  480. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  481. package/dist/cli/docs/agent-operations.js +63 -1
  482. package/dist/cli/program.d.ts.map +1 -1
  483. package/dist/cli/program.js +6 -2
  484. package/dist/cli/types/api-responses.d.ts +62 -6
  485. package/dist/cli/types/api-responses.d.ts.map +1 -1
  486. package/dist/cli/types/index.d.ts +30 -0
  487. package/dist/cli/types/index.d.ts.map +1 -1
  488. package/dist/cli/types/index.js +12 -1
  489. package/dist/cli/utils/api-client.d.ts +13 -1
  490. package/dist/cli/utils/api-client.d.ts.map +1 -1
  491. package/dist/cli/utils/api-client.js +10 -2
  492. package/dist/cli/utils/daemon-factory.d.ts.map +1 -1
  493. package/dist/cli/utils/daemon-factory.js +3 -1
  494. package/dist/cli/utils/daemon.d.ts +38 -1
  495. package/dist/cli/utils/daemon.d.ts.map +1 -1
  496. package/dist/cli/utils/daemon.js +161 -8
  497. package/dist/cli/utils/paths.d.ts +12 -0
  498. package/dist/cli/utils/paths.d.ts.map +1 -1
  499. package/dist/cli/utils/paths.js +17 -0
  500. package/dist/lib/polling/auto-yes-suppression-reason.d.ts +55 -1
  501. package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -1
  502. package/dist/lib/polling/auto-yes-suppression-reason.js +20 -0
  503. package/dist/lib/prompt-observation/kinds.d.ts +101 -0
  504. package/dist/lib/prompt-observation/kinds.d.ts.map +1 -0
  505. package/dist/lib/prompt-observation/kinds.js +123 -0
  506. package/dist/lib/prompt-observation/types.d.ts +271 -0
  507. package/dist/lib/prompt-observation/types.d.ts.map +1 -0
  508. package/dist/lib/prompt-observation/types.js +14 -0
  509. package/dist/lib/session/send-attempt-types.d.ts +66 -0
  510. package/dist/lib/session/send-attempt-types.d.ts.map +1 -0
  511. package/dist/lib/session/send-attempt-types.js +17 -0
  512. package/dist/server/locales/en/worktree.json +4 -0
  513. package/dist/server/locales/ja/worktree.json +4 -0
  514. package/dist/server/server.js +20 -1
  515. package/dist/server/src/config/auto-yes-config.js +11 -0
  516. package/dist/server/src/lib/assistant-response-saver.js +13 -0
  517. package/dist/server/src/lib/auto-yes-lifecycle.js +28 -2
  518. package/dist/server/src/lib/auto-yes-poller.js +593 -78
  519. package/dist/server/src/lib/auto-yes-shutdown-record.js +257 -0
  520. package/dist/server/src/lib/auto-yes-state.js +197 -4
  521. package/dist/server/src/lib/cli-tools/antigravity-startup-trust.js +135 -0
  522. package/dist/server/src/lib/cli-tools/antigravity.js +162 -29
  523. package/dist/server/src/lib/cli-tools/command-code.js +10 -2
  524. package/dist/server/src/lib/cli-tools/copilot.js +21 -10
  525. package/dist/server/src/lib/cli-tools/gemini.js +60 -13
  526. package/dist/server/src/lib/cli-tools/launch-dialog.js +203 -0
  527. package/dist/server/src/lib/cli-tools/launch-window.js +96 -0
  528. package/dist/server/src/lib/conversation-logger.js +14 -2
  529. package/dist/server/src/lib/db/chat-db.js +2 -1
  530. package/dist/server/src/lib/detection/selection-shape.js +35 -1
  531. package/dist/server/src/lib/detection/tools/antigravity/detect.js +38 -9
  532. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +88 -1
  533. package/dist/server/src/lib/detection/tools/antigravity/patterns.js +41 -1
  534. package/dist/server/src/lib/detection/tools/claude/detect.js +60 -0
  535. package/dist/server/src/lib/detection/tools/command-code/selection-shape.js +63 -13
  536. package/dist/server/src/lib/detection/tools/copilot/patterns.js +7 -1
  537. package/dist/server/src/lib/history/user-turn-recorder.js +14 -0
  538. package/dist/server/src/lib/hooks/sources/antigravity/history.js +28 -0
  539. package/dist/server/src/lib/hooks/sources/claude/history.js +7 -0
  540. package/dist/server/src/lib/hooks/sources/codex/history.js +7 -0
  541. package/dist/server/src/lib/hooks/sources/command-code/history.js +7 -0
  542. package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +11 -2
  543. package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +5 -3
  544. package/dist/server/src/lib/hooks/sources/transcript-history.js +34 -0
  545. package/dist/server/src/lib/log-manager.js +7 -2
  546. package/dist/server/src/lib/polling/antigravity-permission-receipts.js +15 -0
  547. package/dist/server/src/lib/polling/antigravity-receipt-episodes.js +281 -0
  548. package/dist/server/src/lib/polling/auto-yes-confirm-page.js +56 -0
  549. package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +8 -1
  550. package/dist/server/src/lib/polling/auto-yes-enter-fallback-state.js +22 -3
  551. package/dist/server/src/lib/polling/auto-yes-policy.js +61 -7
  552. package/dist/server/src/lib/polling/auto-yes-poller-state.js +234 -0
  553. package/dist/server/src/lib/polling/auto-yes-poller-stop-reason.js +50 -0
  554. package/dist/server/src/lib/polling/auto-yes-prompt-suppression.js +220 -5
  555. package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +20 -0
  556. package/dist/server/src/lib/polling/auto-yes-suppression-state.js +10 -0
  557. package/dist/server/src/lib/polling/pending-scraped-response.js +119 -3
  558. package/dist/server/src/lib/polling/poller-owner.js +110 -0
  559. package/dist/server/src/lib/polling/response-checker-dialog-gate.js +2 -2
  560. package/dist/server/src/lib/polling/response-checker.js +211 -39
  561. package/dist/server/src/lib/polling/response-dedup.js +8 -0
  562. package/dist/server/src/lib/polling/response-poller-core.js +226 -75
  563. package/dist/server/src/lib/polling/structured-history-gate.js +20 -1
  564. package/dist/server/src/lib/prompt-answer-sender.js +59 -12
  565. package/dist/server/src/lib/prompt-observation/kinds.js +123 -0
  566. package/dist/server/src/lib/prompt-observation/types.js +14 -0
  567. package/dist/server/src/lib/push/prompt-push-gate.js +195 -3
  568. package/dist/server/src/lib/push/waiting-push-notifier.js +74 -7
  569. package/dist/server/src/lib/realtime/terminal-broadcast.js +14 -0
  570. package/dist/server/src/lib/relay/relay-delivery-claims.js +46 -0
  571. package/dist/server/src/lib/relay/relay-delivery.js +76 -30
  572. package/dist/server/src/lib/schedule-manager.js +28 -0
  573. package/dist/server/src/lib/session/chat-turn-progress.js +57 -6
  574. package/dist/server/src/lib/session/cli-session.js +38 -3
  575. package/dist/server/src/lib/session/current-output-builder.js +19 -0
  576. package/dist/server/src/lib/session/send-attempt-state.js +155 -0
  577. package/dist/server/src/lib/session/send-attempt-types.js +17 -0
  578. package/dist/server/src/lib/session/send-user-message.js +46 -0
  579. package/dist/server/src/lib/session/worktree-session-reconcile.js +85 -11
  580. package/dist/server/src/lib/timer-manager.js +7 -0
  581. package/dist/server/src/lib/tmux/session-created-signal.js +76 -0
  582. package/dist/server/src/lib/tmux/tmux-capture-cache.js +58 -6
  583. package/dist/server/src/lib/tmux/tmux.js +28 -2
  584. package/dist/server/src/lib/verification/env-clean-gate.js +30 -2
  585. package/dist/server/src/lib/verification/scope-gate-format.js +100 -0
  586. package/dist/server/src/lib/verification/scope-gate-glob.js +185 -0
  587. package/dist/server/src/lib/verification/scope-gate.js +19 -271
  588. package/dist/server/src/lib/ws-server.js +48 -6
  589. package/docs/en/user-guide/cli-setup-guide.md +12 -1
  590. package/docs/en/user-guide/webapp-guide.md +2 -0
  591. package/package.json +1 -1
  592. package/release-notes/0.46.1.json +40 -0
  593. package/release-notes/0.47.0.json +118 -0
  594. package/.next/server/chunks/1789.js +0 -1
  595. package/.next/server/chunks/2908.js +0 -1
  596. package/.next/server/chunks/3718.js +0 -1
  597. package/.next/server/chunks/4837.js +0 -14
  598. package/.next/server/chunks/5625.js +0 -25
  599. package/.next/server/chunks/611.js +0 -1
  600. package/.next/server/chunks/850.js +0 -1
  601. package/.next/static/chunks/3201-c01f1feed69020e6.js +0 -1
  602. package/.next/static/chunks/5371-a94ed618148287a0.js +0 -1
  603. package/.next/static/chunks/5794-947fb4934d8be193.js +0 -1
  604. package/.next/static/chunks/602-25e45a2422d2a3ea.js +0 -1
  605. package/.next/static/chunks/app/api/app/update/route-0468c3c4baa46028.js +0 -1
  606. package/.next/static/chunks/app/api/auth/login/route-0468c3c4baa46028.js +0 -1
  607. package/.next/static/chunks/app/api/auth/logout/route-0468c3c4baa46028.js +0 -1
  608. package/.next/static/chunks/app/api/auth/status/route-0468c3c4baa46028.js +0 -1
  609. package/.next/static/chunks/app/api/capabilities/route-0468c3c4baa46028.js +0 -1
  610. package/.next/static/chunks/app/api/daily-summary/route-0468c3c4baa46028.js +0 -1
  611. package/.next/static/chunks/app/api/daily-summary/status/route-0468c3c4baa46028.js +0 -1
  612. package/.next/static/chunks/app/api/external-apps/[id]/health/route-0468c3c4baa46028.js +0 -1
  613. package/.next/static/chunks/app/api/external-apps/[id]/route-0468c3c4baa46028.js +0 -1
  614. package/.next/static/chunks/app/api/external-apps/route-0468c3c4baa46028.js +0 -1
  615. package/.next/static/chunks/app/api/fs/browse/route-0468c3c4baa46028.js +0 -1
  616. package/.next/static/chunks/app/api/fs/recent-paths/route-0468c3c4baa46028.js +0 -1
  617. package/.next/static/chunks/app/api/hooks/agent-event/route-0468c3c4baa46028.js +0 -1
  618. package/.next/static/chunks/app/api/hooks/claude-done/route-0468c3c4baa46028.js +0 -1
  619. package/.next/static/chunks/app/api/hooks/permission-request/route-0468c3c4baa46028.js +0 -1
  620. package/.next/static/chunks/app/api/metrics/vibe/route-0468c3c4baa46028.js +0 -1
  621. package/.next/static/chunks/app/api/ollama/models/route-0468c3c4baa46028.js +0 -1
  622. package/.next/static/chunks/app/api/push/escalation/route-0468c3c4baa46028.js +0 -1
  623. package/.next/static/chunks/app/api/push/subscriptions/route-0468c3c4baa46028.js +0 -1
  624. package/.next/static/chunks/app/api/push/vapid/route-0468c3c4baa46028.js +0 -1
  625. package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-0468c3c4baa46028.js +0 -1
  626. package/.next/static/chunks/app/api/relays/route-0468c3c4baa46028.js +0 -1
  627. package/.next/static/chunks/app/api/remote/pair/route-0468c3c4baa46028.js +0 -1
  628. package/.next/static/chunks/app/api/repositories/[id]/route-0468c3c4baa46028.js +0 -1
  629. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-0468c3c4baa46028.js +0 -1
  630. package/.next/static/chunks/app/api/repositories/clone/route-0468c3c4baa46028.js +0 -1
  631. package/.next/static/chunks/app/api/repositories/excluded/route-0468c3c4baa46028.js +0 -1
  632. package/.next/static/chunks/app/api/repositories/restore/route-0468c3c4baa46028.js +0 -1
  633. package/.next/static/chunks/app/api/repositories/route-0468c3c4baa46028.js +0 -1
  634. package/.next/static/chunks/app/api/repositories/scan/route-0468c3c4baa46028.js +0 -1
  635. package/.next/static/chunks/app/api/repositories/sync/route-0468c3c4baa46028.js +0 -1
  636. package/.next/static/chunks/app/api/repositories/validate-path/route-0468c3c4baa46028.js +0 -1
  637. package/.next/static/chunks/app/api/settings/default-agents/route-0468c3c4baa46028.js +0 -1
  638. package/.next/static/chunks/app/api/settings/default-surface-mode/route-0468c3c4baa46028.js +0 -1
  639. package/.next/static/chunks/app/api/sidebar/group-order/route-0468c3c4baa46028.js +0 -1
  640. package/.next/static/chunks/app/api/skills/[id]/route-0468c3c4baa46028.js +0 -1
  641. package/.next/static/chunks/app/api/skills/installations/route-0468c3c4baa46028.js +0 -1
  642. package/.next/static/chunks/app/api/skills/operations/route-0468c3c4baa46028.js +0 -1
  643. package/.next/static/chunks/app/api/skills/reindex/route-0468c3c4baa46028.js +0 -1
  644. package/.next/static/chunks/app/api/skills/route-0468c3c4baa46028.js +0 -1
  645. package/.next/static/chunks/app/api/slash-commands/route-0468c3c4baa46028.js +0 -1
  646. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-0468c3c4baa46028.js +0 -1
  647. package/.next/static/chunks/app/api/tasks/[taskId]/route-0468c3c4baa46028.js +0 -1
  648. package/.next/static/chunks/app/api/templates/[id]/route-0468c3c4baa46028.js +0 -1
  649. package/.next/static/chunks/app/api/templates/route-0468c3c4baa46028.js +0 -1
  650. package/.next/static/chunks/app/api/verification/runs/[runId]/route-0468c3c4baa46028.js +0 -1
  651. package/.next/static/chunks/app/api/verification/runs/route-0468c3c4baa46028.js +0 -1
  652. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-0468c3c4baa46028.js +0 -1
  653. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-0468c3c4baa46028.js +0 -1
  654. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-0468c3c4baa46028.js +0 -1
  655. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-0468c3c4baa46028.js +0 -1
  656. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-0468c3c4baa46028.js +0 -1
  657. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-0468c3c4baa46028.js +0 -1
  658. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-0468c3c4baa46028.js +0 -1
  659. package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-0468c3c4baa46028.js +0 -1
  660. package/.next/static/chunks/app/api/worktrees/[id]/env/route-0468c3c4baa46028.js +0 -1
  661. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-0468c3c4baa46028.js +0 -1
  662. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-0468c3c4baa46028.js +0 -1
  663. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-0468c3c4baa46028.js +0 -1
  664. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-0468c3c4baa46028.js +0 -1
  665. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-0468c3c4baa46028.js +0 -1
  666. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-0468c3c4baa46028.js +0 -1
  667. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-0468c3c4baa46028.js +0 -1
  668. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-0468c3c4baa46028.js +0 -1
  669. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-0468c3c4baa46028.js +0 -1
  670. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-0468c3c4baa46028.js +0 -1
  671. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-0468c3c4baa46028.js +0 -1
  672. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-0468c3c4baa46028.js +0 -1
  673. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-0468c3c4baa46028.js +0 -1
  674. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-0468c3c4baa46028.js +0 -1
  675. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-0468c3c4baa46028.js +0 -1
  676. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-0468c3c4baa46028.js +0 -1
  677. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-0468c3c4baa46028.js +0 -1
  678. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-0468c3c4baa46028.js +0 -1
  679. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-0468c3c4baa46028.js +0 -1
  680. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-0468c3c4baa46028.js +0 -1
  681. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-0468c3c4baa46028.js +0 -1
  682. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-0468c3c4baa46028.js +0 -1
  683. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-0468c3c4baa46028.js +0 -1
  684. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-0468c3c4baa46028.js +0 -1
  685. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-0468c3c4baa46028.js +0 -1
  686. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-0468c3c4baa46028.js +0 -1
  687. package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-0468c3c4baa46028.js +0 -1
  688. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-0468c3c4baa46028.js +0 -1
  689. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-0468c3c4baa46028.js +0 -1
  690. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-0468c3c4baa46028.js +0 -1
  691. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-0468c3c4baa46028.js +0 -1
  692. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-0468c3c4baa46028.js +0 -1
  693. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-0468c3c4baa46028.js +0 -1
  694. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-0468c3c4baa46028.js +0 -1
  695. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-0468c3c4baa46028.js +0 -1
  696. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-0468c3c4baa46028.js +0 -1
  697. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-0468c3c4baa46028.js +0 -1
  698. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-0468c3c4baa46028.js +0 -1
  699. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-0468c3c4baa46028.js +0 -1
  700. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-0468c3c4baa46028.js +0 -1
  701. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-0468c3c4baa46028.js +0 -1
  702. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-0468c3c4baa46028.js +0 -1
  703. package/.next/static/chunks/app/api/worktrees/[id]/route-0468c3c4baa46028.js +0 -1
  704. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-0468c3c4baa46028.js +0 -1
  705. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-0468c3c4baa46028.js +0 -1
  706. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-0468c3c4baa46028.js +0 -1
  707. package/.next/static/chunks/app/api/worktrees/[id]/search/route-0468c3c4baa46028.js +0 -1
  708. package/.next/static/chunks/app/api/worktrees/[id]/send/route-0468c3c4baa46028.js +0 -1
  709. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-0468c3c4baa46028.js +0 -1
  710. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-0468c3c4baa46028.js +0 -1
  711. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-0468c3c4baa46028.js +0 -1
  712. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-0468c3c4baa46028.js +0 -1
  713. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-0468c3c4baa46028.js +0 -1
  714. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-0468c3c4baa46028.js +0 -1
  715. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-0468c3c4baa46028.js +0 -1
  716. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-0468c3c4baa46028.js +0 -1
  717. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-0468c3c4baa46028.js +0 -1
  718. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-0468c3c4baa46028.js +0 -1
  719. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-0468c3c4baa46028.js +0 -1
  720. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-0468c3c4baa46028.js +0 -1
  721. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-0468c3c4baa46028.js +0 -1
  722. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-0468c3c4baa46028.js +0 -1
  723. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-0468c3c4baa46028.js +0 -1
  724. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-0468c3c4baa46028.js +0 -1
  725. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-0468c3c4baa46028.js +0 -1
  726. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-0468c3c4baa46028.js +0 -1
  727. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-0468c3c4baa46028.js +0 -1
  728. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-0468c3c4baa46028.js +0 -1
  729. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-0468c3c4baa46028.js +0 -1
  730. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-0468c3c4baa46028.js +0 -1
  731. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-0468c3c4baa46028.js +0 -1
  732. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-0468c3c4baa46028.js +0 -1
  733. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-0468c3c4baa46028.js +0 -1
  734. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-0468c3c4baa46028.js +0 -1
  735. package/.next/static/chunks/app/api/worktrees/route-0468c3c4baa46028.js +0 -1
  736. package/.next/static/chunks/app/layout-ae30ce63569c22be.js +0 -1
  737. package/.next/static/chunks/app/manifest.webmanifest/route-0468c3c4baa46028.js +0 -1
  738. package/.next/static/chunks/app/proxy/[...path]/route-0468c3c4baa46028.js +0 -1
  739. package/.next/static/chunks/app/sessions/page-9859ed61e93e6890.js +0 -1
  740. package/.next/static/chunks/app/worktrees/[id]/layout-0468c3c4baa46028.js +0 -1
  741. package/.next/static/chunks/app/worktrees/[id]/page-2eb1d0fd0a077b7e.js +0 -1
  742. /package/.next/static/{zI2nQ6WKboSbFbMF4EtrJ → b5BiQC9F6r_XFPdA9cuSj}/_buildManifest.js +0 -0
  743. /package/.next/static/{zI2nQ6WKboSbFbMF4EtrJ → b5BiQC9F6r_XFPdA9cuSj}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=9731,exports.ids=[9731],exports.modules={8360:(a,b,c)=>{c.r(b),c.d(b,{CLIToolManager:()=>aX});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){let e=`
2
- ![](${c})`,f=b?`${b}${e}`:e;await this.sendMessage(a,f,d)}async killSession(a,b){await (0,f.VU)(a,b)}constructor(...a){super(...a),this.id="claude",this.name="Claude Code",this.command="claude"}}var h=c(79892),i=c(40236),j=c(93997),k=c(61789),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(46749),w=c(77093);let x=(0,q.h)("cli-tools/codex"),y="codex";function z(){return{screen:null,attempts:0}}class A 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:"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 (0,h.V1)(d,(0,v.Y)(f),!0),await new Promise(a=>setTimeout(a,3e3))};await (0,h.V1)(d,(0,v.Y)(f),!0),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(d,{relaunch:g,trustHooks:(0,s.dO)(b)}),x.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=z(),g=function(a){let b=o(void 0);if(null!==b)return b;let c=o(((void 0)??process.env).CM_CODEX_UPDATE_DIALOG);return null!==c?c:"skip-until-next-version"}(),i=n[g],j=!1,m=!1,q=!1,r=30;try{for(let o=0;o<r;o++){try{let s=await (0,h.Xg)(a,50),t=(0,k.aJ)(s),v=(0,k.E6)(t);if(("hooks-review"===v||"hooks-list"===v||"hooks-detail"===v)&&await this.answerCodexHooksScreen(a,v,f,c)){await new Promise(a=>setTimeout(a,u.CV));continue}if((0,k.zZ)(t))return void x.info("codex-prompt-detected");if(j&&!m&&b?.relaunch&&null!==(0,l.GE)(t,this.livenessSpec())){m=!0,r=Math.max(r,o+1+30),e=!1,f.screen=null,f.attempts=0,q&&(q=!1,(0,p.lM)(y),x.info("codex-update-lock-released",{sessionName:a})),x.info("codex-relaunched-after-update",{sessionName:a,policy:g}),await b.relaunch();continue}let w=(0,k.Qh)(t);if("update"===w){if(j=!0,null===i){await new Promise(a=>setTimeout(a,1e3));continue}if(!d){let b=i;b!==n.update||(0,p.mf)(y)?b===n.update&&(q=!0):(b=n["skip-until-next-version"],x.warn("codex-update-dialog-yielded-to-running-update",{sessionName:a,policy:g,requestedKey:i,key:b})),await (0,h.V1)(a,b,!1),d=!0,b===n.update&&(r=Math.max(r,o+1+120)),x.info("codex-update-dialog-answered",{sessionName:a,policy:g,key:b}),await new Promise(a=>setTimeout(a,u.CV));continue}}if("press-enter"===w){await (0,h.ds)(a,"Enter"),x.info("dismissed-codex-notification"),await new Promise(a=>setTimeout(a,u.CV));continue}if("trust"===w&&!e){await (0,h.V1)(a,"1",!1),e=!0,x.info("auto-trusted-folder-for-codex"),await new Promise(a=>setTimeout(a,u.CV));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}x.info("codex-prompt-detection")}finally{q&&(q=!1,(0,p.lM)(y),x.warn("codex-update-lock-released-unfinished",{sessionName:a}))}}async answerCodexHooksScreen(a,b,c,d){if(c.screen!==b&&(c.screen=b,c.attempts=0),c.attempts>=3)return x.warn("codex-hooks-screen-unresponsive",{sessionName:a,screen:b,trust:d}),!1;let e=++c.attempts;if("hooks-review"===b){let b=1===e?d?"2":"3":"1";return await (0,h.V1)(a,b,!1),x.info("codex-hooks-review-answered",{sessionName:a,key:b,attempt:e,trust:d}),!0}return d?(await (0,h.V1)(a,"t",!1,{literal:!0}),x.info("codex-hooks-screen-trusted",{sessionName:a,screen:b,attempt:e})):(await (0,h.ds)(a,"Escape"),x.info("codex-hooks-screen-escaped",{sessionName:a,screen:b,attempt:e})),!0}async waitForPrompt(a){let b=Date.now(),c=z(),d=null;for(;Date.now()-b<15e3;){try{let b=await (0,h.Xg)(a,50),e=(0,k.aJ)(b),f=(0,k.E6)(e);if("hooks-review"===f||"hooks-list"===f||"hooks-detail"===f){if(null===d){let b=await (0,h.nS)(a);d=null!==b&&(0,s.dO)(b)}await this.answerCodexHooksScreen(a,f,c,d)}else if((0,k.zZ)(e))return}catch{}await new Promise(a=>setTimeout(a,500))}throw x.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),x.info("sent-message-to-codex-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to send message to Codex: ${a}`)}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:x,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 B=c(23365);let C=(0,q.h)("cli-tools/gemini");class D 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:C,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});await (0,h.V1)(d,(0,v.Y)(f),!0),await new Promise(a=>setTimeout(a,6e3)),await this.waitForReady(d),C.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;for(let c=0;c<30;c++){try{let c=await (0,h.Xg)(a,B.H),d=(0,k.aJ)(c);if(k.wN.test(d))return void C.info("gemini-prompt-detected");!b&&d.includes("Do you trust this folder?")&&(await (0,h.ds)(a,"Enter"),b=!0,C.info("auto-trusted-folder-for-gemini"))}catch{}await new Promise(a=>setTimeout(a,1e3))}C.info("gemini-prompt-detection")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,h.Xg)(a,B.H),c=(0,k.aJ)(b);if(k.wN.test(c))return}catch{}await new Promise(a=>setTimeout(a,500))}C.info("gemini-prompt-not-detected")}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),C.info("sent-message-to-gemini-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to send message to Gemini: ${a}`)}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:C,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 E=c(15194),F=c(88807),G=c(56791);let H=(0,q.h)("cli-tools/vibe-local");class I 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:H,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,F.getDbInstance)(),d=(0,G.getWorktreeById)(b,a);d?.vibeLocalModel&&E.QP.test(d.vibeLocalModel)&&(c+=` -m ${d.vibeLocalModel}`);let e=d?.vibeLocalContextWindow;(0,E.FV)(e)&&(c+=` --context-window ${Number(e)}`)}catch{}await (0,h.V1)(d,(0,v.Y)(c),!0),await new Promise(a=>setTimeout(a,5e3)),H.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 (0,i.FW)({sessionName:d,message:b,cliToolId:"vibe-local",composer:this.describeComposer(),interEnterWaitMs:u.PY}),(0,j.gm)(d),H.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}`)}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:H,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 J=c(49319),K=c(81776),L=c(56263),M=c(21758),N=c(54633),O=c(78099);let P=(0,q.h)("cli-tools/copilot"),Q=new Set(["model","agent","theme","permissions","skills","mcp","settings","statusline","subagents","resume","session"]),R=/^[>❯](?:\s|$)/,S=/^\s*\S\s+Loading:/;function T(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 U(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"}class V extends d.Mj{async isInstalled(){return await (0,K.B0)()!==null}launchExecutable(a){return"path"===a.source?this.command:M.nL}async launchSession(a,b,c){let d=await (0,K.B0)();if(!d)throw(0,O.Tl)(this);let{sessionName:e,exists:f,live:g}=await this.resolveLaunchPane(a,b,c,{logger:P,liveAction:"copilot-session-exists",relaunchAction:"copilot-session-relaunch"});if(!g){(0,t.Fq)({worktreeId:a,cliToolId:N.V,instanceId:c});try{let g=(0,t.wK)({target:{worktreeId:a,cliToolId:N.V,instanceId:c},executablePath:this.launchExecutable(d),worktreePath:b});f||await this.createLaunchPane(e,b),await (0,h.V1)(e,(0,v.Y)(g),!0),await this.waitForReady(e),P.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){return!!(0,k.Rx)(b)&&(await (0,h.V1)(a,k.oD,!1),(0,j.gm)(a),P.info("copilot-folder-trust-answered"),!0)}isComposerDrawn(a){let b=a.split("\n");for(let a=1;a<b.length-1;a++)if(R.test(b[a])&&k.A.test(b[a-1].trimEnd())&&k.A.test(b[a+1].trimEnd()))return!0;return!1}async waitForReady(a){let b=!1;for(let c=0;c<30;c++){try{let c=await (0,h.Xg)(a,50),d=(0,k.aJ)(c);if(this.isComposerDrawn(d))return void P.info("copilot-prompt-detected");!b&&await this.answerFolderTrustDialog(a,d)&&(b=!0)}catch{}await new Promise(a=>setTimeout(a,1e3))}P.info("copilot-prompt-detection-timeout")}async waitForPrompt(a,b=15e3,c="composer"){let d=Date.now(),e=!1,f="";for(;Date.now()-d<b;){try{let b=await (0,h.Xg)(a,50);if(f=(0,k.aJ)(b),this.isReadyFor(c,f))return{ready:!0,output:f};!e&&await this.answerFolderTrustDialog(a,f)&&(e=!0)}catch{}await new Promise(a=>setTimeout(a,500))}return P.info("copilot-prompt-not-detected",{until:c,bottomRow:U(f)}),{ready:!1,output:f}}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 S.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 P.info("copilot-selection-list-detected"),!0}catch{}}return P.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{await this.waitForPrompt(d);let a=this.extractSlashCommand(b);if(a&&Q.has(a)){await (0,h.V1)(d,b,!0),await this.waitForSelectionList(d),(0,j.gm)(d),P.info("sent-selection-list-command-to-copilot",{command:a});return}await (0,i.FW)({sessionName:d,message:b,cliToolId:"copilot",composer:this.describeComposer(),textInputWaitMs:L.L1,verifyDelayMs:L.wp}),(0,j.gm)(d),P.info("sent-message-to-copilot-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to send message to Copilot: ${a}`)}}async sendModelCommand(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Copilot",a,c,{relaunch:!1});try{let a=await this.waitForPrompt(d,L.pL,"idle");if(!a.ready)throw Error(`copilot did not become idle within ${L.pL}ms, so /model was not sent (bottom row: ${U(a.output)})`);let c=T(a.output,b);await (0,h.V1)(d,`/model ${b}`,!0);let e=await this.waitForModelSwitchOutcome(d,b,c);if((0,j.gm)(d),"rejected"===e.kind)throw P.warn("copilot-model-rejected",{model:b,reason:e.reason}),Error(`copilot refused it: ${e.reason}`);if("pending"===e.kind)throw P.warn("copilot-model-switch-unconfirmed",{model:b,bottomRow:e.bottomRow}),Error(`copilot printed no answer to /model within ${L.pL}ms (bottom row: ${e.bottomRow}); the switch may still take effect, and nothing further was typed`);P.info("copilot-model-switched",{model:b})}catch(c){let a=(0,w.u1)(c);throw Error(`Failed to switch Copilot model to ${b}: ${a}`)}}async waitForModelSwitchOutcome(a,b,c){let d=Date.now(),e="";for(;Date.now()-d<L.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=T(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:U(e)}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:P,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,L.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"}}var W=c(61878);let X=(0,q.h)("cli-tools/antigravity"),Y=/\?\s+for\s+shortcuts/,Z=/Do you trust the contents of this project\?/;function $(a){let b=(0,W.zJ)(a,"antigravity");if(k.kT.test(b.lastLines)||Z.test(b.lastLines))return!1;let c=function(a){let b=a.map(a=>a.trim()),c=a=>a>=0&&k.kn.test(b[a]),d=a=>{let c=a;for(;c>=0&&""===b[c];)c--;return c},e=b.length-1,f="";return(e>=0&&!c(e)&&(f=b[e],e=d(e-1)),!c(e)||(e=d(e-1))<0||!k.lE.test(b[e]))?null:c(d(e-1))?f:null}(b.contentLines);return null!==c&&(!!Y.test(c)||!(0,k.ut)("antigravity",b.lastLines))}class _ extends d.Mj{async launchSession(a,b,c,d){await this.requireInstalled();let{sessionName:e,exists:f,live:g}=await this.resolveLaunchPane(a,b,c,{logger:X,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}),i=d?`${g} --model '${d.replace(/'/g,"'\\''")}'`:g;f||await this.createLaunchPane(e,b),await (0,h.V1)(e,(0,v.Y)(i),!0),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(e),X.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=!1;for(let c=0;c<30;c++){try{let c=await (0,h.Xg)(a,50),d=(0,k.aJ)(c);if($(d))return void X.info("antigravity-prompt-detected");if(!b&&Z.test(d)){await (0,h.ds)(a,"Enter"),b=!0,X.info("auto-trusted-folder-for-antigravity"),await new Promise(a=>setTimeout(a,500));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}X.info("antigravity-prompt-detection-timeout")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,h.Xg)(a,50),c=(0,k.aJ)(b);if($(c))return}catch{}await new Promise(a=>setTimeout(a,500))}throw X.info("antigravity-prompt-not-ready"),Error("Antigravity prompt not ready: timed out waiting for the input prompt before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);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),X.info("sent-message-to-antigravity-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to send message to Antigravity: ${a}`)}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:X,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)}})}constructor(...a){super(...a),this.id="antigravity",this.name="Antigravity CLI",this.command="agy"}}var aa=c(28862),ab=c(35566),ac=c(2669);let ad=(0,q.h)("cli-tools/command-code"),ae=["--trust","--skip-onboarding","--no-auto-update"];function af(a){let b=a.split("\n");return!(0>(0,k.I$)(b))&&!k.k0.test((0,k.aJ)(a))}class ag 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:ad,liveAction:"command-code-session-exists",relaunchAction:"command-code-session-relaunch"});if(!f){(0,t.Fq)({worktreeId:a,cliToolId:aa.k,instanceId:c}),this.composerPendingSince.set(d,Date.now());try{var g;e||await this.createLaunchPane(d,b),await (0,h.V1)(d,(0,v.Y)((g={target:{worktreeId:a,cliToolId:aa.k,instanceId:c},executablePath:this.command,worktreePath:b},[(0,t.wK)(g),...ae].join(" "))),!0),await new Promise(a=>setTimeout(a,u.yO)),await this.waitForReady(d),ad.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(af(b)){this.composerPendingSince.delete(a),ad.info("command-code-prompt-detected");return}}catch{}await new Promise(a=>setTimeout(a,1e3))}ad.info("command-code-prompt-detection-timeout")}async waitForPrompt(a){let b=Date.now(),c=0;for(;Date.now()-b<15e3;){let b=!1;try{let c=await (0,h.Xg)(a,50);if(!(b=null!==(0,ab.V)(c))&&af(c))return void this.composerPendingSince.delete(a)}catch{}if((c=b?c+1:0)>=2)throw ad.info("command-code-plan-review-blocks-send",{sessionName:a}),Error('Command Code is showing a plan review (REVIEW), which takes review comments, not messages. Comment with `commandmate respond <worktree-id> "<text>"`, then `--plan-review submit` (ctrl+r), `--plan-review approve` (ctrl+a) or `--plan-review cancel` (esc).');await new Promise(a=>setTimeout(a,500))}let d=this.composerPendingSince.get(a);if(void 0!==d){let b=Date.now()-d;if(b<=12e4)throw ad.info("command-code-session-still-starting",{sessionName:a,sinceLaunchMs:b}),new ac.Sr(this.name,a,b);this.composerPendingSince.delete(a)}throw ad.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),await (0,i.FW)({sessionName:d,message:b,cliToolId:"command-code",composer:this.describeComposer()}),(0,j.gm)(d),ad.info("sent-message-to-command-code-session")}catch(a){if((0,ac.wQ)(a))throw a;throw Error(`Failed to send message to Command Code: ${(0,w.u1)(a)}`)}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:ad,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 ah=c(79646),ai=c(28354),aj=c(16983),ak=c(46684),al=c(34114),am=c(62887),an=c(72272),ao=c(49154),ap=c(33294),aq=c(27870),ar=c(57510),as=c(90488),at=c(51719),au=c(83738),av=c(26945),aw=c(38892),ax=c(16100),ay=c(71193);let az=(0,q.h)("lib/hooks/sources/opencode-v2/ingest");async function aA(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(2283),c.e(6781)]).then(c.bind(c,16781))]),g=d(),h=e(g,a.worktreeId)??null;if(!h)return void az.info("opencode-v2-stop-unresolved-target",{worktreeId:a.worktreeId});await f(g,h,ay.B,b)}async function aB(a,b,c){let d=(0,av.bH)(a),e=(0,aw.X3)(a);if(null===d||null===e)return null;let f=await (0,al.$F)(d,e,b),g=f?.find(a=>(0,ar.Qd)(a)&&a.id===c);return(0,ar.Qd)(g)?g:null}async function aC(a,b,c){let d=(0,au.hl)(b.raw,b.receivedAt);if(!d)return az.info("opencode-v2-permission-unparsed",{worktreeId:a.worktreeId,instanceId:c}),!1;let e=await (0,an.t)(ax.Wp,a,d,ax.Wp.parsePermissionRequest(b.raw));return az.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 aD(a,b,c){let d=(0,au.rk)(b.raw);if(d)return d;let e=(0,at.DH)(b.raw),f=(0,at.lx)(b.raw);if(null===e||null===f)return null;let g=await c(a,f,e);return g?(0,au.rk)(g):null}async function aE(a,b,c=aA,d=aB){let e=a.instanceId??ay.B;try{let f=(0,ap.classifyAgentEventDelivery)({worktreeId:a.worktreeId,cliToolId:ay.B,instanceId:e,event:b.event,detail:b.detail,sessionId:b.conversationId,at:b.receivedAt,identity:ax.Wp.eventIdentityOf(b.raw),identityKind:ax.Wp.capabilities.eventIdentity});if(f.duplicate)return void az.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,am.h9)??null,sessionId:b.conversationId,message:null,model:b.model},h={sessionStartMayArriveLate:!1};if("notification"===b.event&&b.detail===at.xz){g.decisionId=(0,at.DH)(b.raw);let c=(0,au.vF)(b.raw);g.toolName=c?.toolName??(0,at.Dg)(b.raw),g.decisionPatterns=c?.patterns??null,g.message=(0,au.s8)(b.raw)?.slice(0,aq.lY)??null,g.promptSettled=await aC(a,b,e),(0,ap.recordAgentEvent)(a.worktreeId,ay.B,e,g,h)}else if("notification"===b.event&&b.detail===at.er)g.decisionId=(0,at.DH)(b.raw),g.promptSettled=!0,(0,ap.recordAgentEvent)(a.worktreeId,ay.B,e,g,h);else if("notification"===b.event&&b.detail===at.Ai){let c=await aD(a,b,d);g.message=c?.questions[0]?.question.slice(0,aq.lY)??null,(0,ap.recordAgentEvent)(a.worktreeId,ay.B,e,g,h),c&&(0,ap.recordAskUserQuestion)(a.worktreeId,ay.B,e,c,b.receivedAt),(0,ap.reportQuestionPending)(a.worktreeId,ay.B,e,{toolName:ao.GF,decisionId:(0,at.DH)(b.raw),detail:at.Ai},b.receivedAt),az.info("opencode-v2-question-recorded",{worktreeId:a.worktreeId,instanceId:e,decisionId:(0,at.DH)(b.raw),parsed:null!==c,questionCount:c?.questions.length??0}),await (0,as.Vo)(a,e,g.message,b.receivedAt)}else"stop"===b.event?(b.detail===at.dA&&(g.message=(0,at.ZL)(b.raw)?.slice(0,aq.lY)??null,az.error("opencode-v2-turn-failed",{worktreeId:a.worktreeId,instanceId:e,sessionId:b.conversationId,message:g.message})),(0,ap.recordAgentEvent)(a.worktreeId,ay.B,e,g,h),await c(a,e)):(0,ap.recordAgentEvent)(a.worktreeId,ay.B,e,g,h);az.info("opencode-v2-event-received",{worktreeId:a.worktreeId,instanceId:e,type:(0,at.Cr)(b.raw),event:b.event,detail:b.detail})}catch(c){az.error("opencode-v2-event-ingest-failed",{worktreeId:a.worktreeId,instanceId:e,event:b.event,error:c instanceof Error?c.message:String(c)})}}var aF=c(32301);let aG=(0,q.h)("lib/hooks/sources/opencode-v2/runtime"),aH=[0,500,1e3,2e3];function aI(a,b){return{worktreeId:a,cliToolId:ay.B,instanceId:b}}function aJ(a){return a instanceof Error?a.message:String(a)}async function aK(a,b){try{let c=await (0,av.ui)(a,b);if(null===c)return null;return(0,aw.OC)(a),c}catch(b){return aG.warn("opencode-v2-server-reserve-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:aJ(b)}),null}}async function aL(a,b){let c=(0,aw.X3)(a);return null!==c&&"healthy"===(await (0,al.tJ)(b,c)).kind}async function aM(a){try{let b=(0,av.bH)(a);if(null===b)return!1;if((0,aF.yw)(a))return!0;let c=!1;for(let d of aH)if(d>0&&await new Promise(a=>setTimeout(a,d)),await aL(a,b)){c=!0;break}if(!c)return aG.info("opencode-v2-server-not-reachable",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b}),!1;return await ax.Wp.subscribe(a,b=>{aE(a,b)}),aG.info("opencode-v2-event-stream-attached",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b}),!0}catch(b){return aG.warn("opencode-v2-event-stream-attach-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:aJ(b)}),!1}}async function aN(a,b){try{if((0,aF.yw)(a))return!0;let c=await (0,av.Lv)(a,b,b=>aL(a,b));if(null===c)return!1;return await aM(a)}catch(b){return aG.warn("opencode-v2-event-stream-resume-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:aJ(b)}),!1}}async function aO(a){try{await (0,aF.VV)(a)}catch(b){aG.warn("opencode-v2-subscription-close-failed",{worktreeId:a.worktreeId,error:aJ(b)})}try{(0,av.OZ)(a)}catch(b){aG.warn("opencode-v2-port-forget-failed",{worktreeId:a.worktreeId,error:aJ(b)})}try{(0,aw.Nc)(a)}catch(b){aG.warn("opencode-v2-password-remove-failed",{worktreeId:a.worktreeId,error:aJ(b)})}}var aP=c(93949),aQ=c(18140);let aR=(0,q.h)("cli-tools/opencode-v2"),aS=(0,ai.promisify)(ah.execFile),aT=aj.xT,aU=/^\/\S+$/,aV=[...e.qD,e.Mx,...e.TM,"a","l","m"];class aW extends d.Mj{navigationKeys(){return{keys:aV,leaderKey:e.Mx}}async isInstalled(){return null!==(await (0,aQ.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=aI(a,c);if((0,aF.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 aN(d,a)}catch(a){aR.debug("opencode-v2-lazy-resume-failed",{error:(0,w.u1)(a)})}})())}async launchSession(a,b,c){let d=(await (0,aQ.Qq)()).executable;if(!d)throw(0,O.Tl)(this);let e=this.getSessionName(a,c),f=aI(a,c),g={windowWidth:(0,ak.r)({warnSidebar:!1}),windowHeight:aj.xT},i=await (0,h.N)(e);if(i){if(await this.reconcileExistingSession(e,b,g),await this.isToolLive(e,{confirm:!0})){await aN(f,b),aR.info("opencode-v2-session-exists");return}aR.warn("opencode-v2-session-relaunch",{sessionName:e}),await aO(f)}(0,t.Fq)(f);try{i||await this.createLaunchPane(e,b);try{await aS("tmux",["resize-window","-t",(0,h.lA)(e),"-x",String(g.windowWidth),"-y",String(g.windowHeight)])}catch{}let j=await aK(f,b);null===j&&aR.warn("opencode-v2-launch-without-server",{worktreeId:a,instanceId:c}),await (0,h.V1)(e,(0,v.Y)((0,t.wK)({target:f,executablePath:d.path,worktreePath:b})),!0),await this.waitForReady(e),await aM(f),aR.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,aT));if((0,k.Ok)(c))return aR.info("opencode-v2-composer-detected",{attempt:b}),!0}catch{}await new Promise(a=>setTimeout(a,500))}return aR.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,aT));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:aU.test(b)?`${b} `:b,cliToolId:ay.B,composer:this.describeComposer()}),(0,j.gm)(d),aR.info("sent-message-to-opencode-v2-session")}catch(a){throw Error(`Failed to send message to OpenCode V2: ${(0,w.u1)(a)}`)}}async killSession(a,b){let c=this.getSessionName(a,b),d=aI(a,b),e=(0,av.bH)(d);try{if(await (0,h.N)(c)){await (0,h.V1)(c,aP.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,aP.rY)({sessionAlive:()=>(0,h.N)(c),portAnswering:null===e?null:async()=>"unreachable"!==(await (0,al.tJ)(e,"")).kind});a.ok||(aR.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),aR.info("stopped-opencode-v2-session")}catch(a){throw aR.error("session:stop-failed",{error:(0,w.u1)(a)}),a}finally{await aO(d)}}constructor(...a){super(...a),this.id=ay.B,this.name="OpenCode V2",this.command=ay.V,this.resumeAttemptedAt=new Map}}class aX{constructor(){this.tools=new Map,this.tools.set("claude",new g),this.tools.set("codex",new A),this.tools.set("gemini",new D),this.tools.set("vibe-local",new I),this.tools.set("opencode",new J.Ui),this.tools.set("copilot",new V),this.tools.set("antigravity",new _),this.tools.set("command-code",new ag),this.tools.set("opencode-v2",new aW)}static getInstance(){return aX.instance||(aX.instance=new aX),aX.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(8918),c.e(5595),c.e(611),c.e(5625),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)}}},29169:(a,b,c)=>{c.d(b,{yt:()=>n,tH:()=>o,f_:()=>B,sl:()=>m,a9:()=>k,Dk:()=>A,uG:()=>y});var d=c(51297);let e=/\btype\s+to\s+search\b|\bsearch\s+\w+\s*(?:…|\.\.\.)|(?:^|·)\s*\/\s+search\b/im,f=/^\s*(?:❯ +)?Approve\s+ctrl\+a\b[^\n]*\n\s*(?:❯ +)?Cancel\s+esc\s*$/im,g=/\benter\s+to\s+select\b\s*[·•]\s*esc\s+to\s+cancel\b/i,h=/^\s*(?:press|hit|type)?\s*(?:<)?esc(?:ape)?(?:>)?\s+to\s+(?:close|dismiss|exit)\b[\s.·•]*$/im,i=/^\s*Approve\s+\([• ]\)\s+with\s+\d+\s+comments?\s+as\s+notes\s+\([• ]\)\s+original\s+plan\b/im,j=/(?:^|\n)[ \t]*←\/→\s+choose\s*·\s*enter\s+confirm\s*·\s*esc\s+back\s*$/i;function k(a){return i.test(a)&&j.test(a)}function l(a,b){return a.split("\n").filter(a=>""!==a.trim()).slice(-b).join("\n")}function m(a){return g.test(l(a,1))}function n(a){return h.test(l(a,1))}function o(a){return f.test(l(a,5))}let p=/^\u2500+$/,q="●◉⦿",r=RegExp(`^\\s*([${q}◯○◌⚪✔])\\s+\\S`);function s(a){let b=a.split("|");if(b.length<2)return!1;let c=0,d=0;for(let a of b){let b=r.exec(a);if(null===b)return!1;q.includes(b[1])?c+=1:d+=1}return c>0&&d>0}let t=/\besc\s+to\s+interrupt\b|^[^\S\n]*✻[^\S\n]+\S/im,u=/^[^\S\n]*(?:\u276F[^\S\n]*)?1[.)][^\S\n]+Submit[^\S\n]*$/im,v=/^[^\S\n]*(?:\u276F[^\S\n]*)?2[.)][^\S\n]+Cancel[^\S\n]*$/im,w=/^[^\S\n]*\u2190[^\S\n]+to[^\S\n]+go[^\S\n]+back[^\S\n]+and[^\S\n]+edit[^\S\n]*$/im,x=/have\s+not\s+answered\s+all\s+questions/i;function y(a){if(!a)return null;let b=a.replace(/\r\n/g,"\n").split("\n").map(d.aJ),c=b.length-1;for(;c>=0&&""===b[c].trim();)c-=1;if(c<1)return null;let e=-1;for(let a=c-1;a>=0;a-=1){let c=b[a].trim();if(!(c.length<40)&&p.test(c)){e=a;break}}if(e<0)return null;let f=b.slice(e+1,c+1),g=f.findIndex(a=>""!==a.trim());if(g<0||!s(f[g]))return null;let h=f.join("\n");if(!u.test(h)||!v.test(h)||!w.test(h))return null;let i=f.find(a=>u.test(a));return{hasUnansweredWarning:x.test(h),cursorOnSubmit:void 0!==i&&i.includes("❯")}}let z=/^[^0-9A-Za-z]*([1-9])[.)]\s+\S/;function A(a){let b=C(a);return null!==b&&b.numbers.every((a,b)=>a===b+1)&&1===b.cursorCount?{ruleLineIndex:b.ruleLineIndex,firstLineIndex:b.firstLineIndex,lastLineIndex:b.lastLineIndex,tabLineIndex:b.tabLineIndex,cursorLineIndex:b.cursorLineIndex,cursorOnOptionRow:b.cursorOnOptionRow,optionCount:b.numbers.length}:null}function B(a){return null!==C(a)}function C(a){if(!a)return null;let b=a.replace(/\r\n/g,"\n").split("\n").map(d.aJ),c=b.length-1;for(;c>=0&&""===b[c].trim();)c-=1;if(c<1)return null;let f=-1;for(let a=c-1;a>=0;a-=1){let c=b[a].trim();if(!(c.length<40)&&p.test(c)){f=a;break}}if(f<0)return null;let i=b.slice(f+1,c+1),j=i.join("\n");if(e.test(j)||g.test(j)||h.test(j)||t.test(j))return null;let k=i.findIndex(a=>""!==a.trim());if(k<0||!s(i[k]))return null;let l=[],m=-1;for(let a=k+1;a<i.length;a+=1){let b=z.exec(i[a]);null!==b&&(m<0&&(m=a),l.push(Number(b[1])))}if(l.length<2||!i.slice(k+1,m).some(a=>""!==a.trim()))return null;let n=0,o=-1,q=!1;for(let a=0;a<i.length;a+=1){let b=i[a].split("❯").length-1;0!==b&&(n+=b,o=a,q=z.test(i[a]))}return 0===n?null:{ruleLineIndex:f,firstLineIndex:f+1,lastLineIndex:c,tabLineIndex:f+1+k,numbers:l,cursorCount:n,cursorLineIndex:f+1+o,cursorOnOptionRow:q}}},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(29169);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}},47967:(a,b,c)=>{c.d(b,{Z:()=>h,u:()=>i});var d=c(70605);let e=/ctrl\+[tp]\b/,f=/^\s*╹▀+/,g=/^\s*[┃│]/,h={locate({contentLines:a}){let b=(0,d.Sx)(a),c=-1;for(let d=b;d>=Math.max(0,b-4);d--)if(e.test(a[d])){c=d;break}if(c<0)return null;let h=-1;for(let b=c-1;b>=Math.max(0,c-3);b--)if(f.test(a[b])){h=b;break}if(h<0)return null;let i=h;for(;i-1>=0&&g.test(a[i-1]);)i--;return{start:i,end:b,atBottom:!0}}};function i(a){return{locate({contentLines:b}){let c=(0,d.Sx)(b);for(let d=c;d>=Math.max(0,c-60);d--)if(g.test(b[d])&&a.test(b[d]))return{start:d};return null}}}},49319:(a,b,c)=>{c.d(b,{Ui:()=>az,TZ:()=>ay});var d=c(89731),e=c(8953),f=c(79892),g=c(61789),h=c(40236),i=c(93997),j=c(29021),k=c(21820),l=c(33873),m=c(8004),n=c(72626);let o=(0,n.h)("cli-tools/opencode-config"),p=/^[a-zA-Z0-9._:/-]{1,100}$/,q=/^[a-zA-Z0-9._:/@-]{1,200}$/,r="CM_OPENCODE_LOCAL_PROVIDER_CONFIG",s="OPENCODE_CONFIG",t=["opencode.json","opencode.jsonc",l.join(".opencode","opencode.json"),l.join(".opencode","opencode.jsonc")],u=["opencode.json","opencode.jsonc"];async function v(){let a={};try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch("http://localhost:11434/api/tags",{signal:b.signal}).finally(()=>{clearTimeout(c)});if(!d.ok)return o.warn("ollama-api-returned"),{};let e=await d.text();if(e.length>1048576)return o.warn("ollama-api-response"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.models))return o.warn("invalid-ollama-api"),{};for(let b of f.models.slice(0,100))"string"==typeof b?.name&&p.test(b.name)&&(a[b.name]={name:function(a){let b=String(a.name),c=a.details;if(!c)return b;let d=[b];return"string"==typeof c.parameter_size&&/^[\d.]+[BKMGT]?B?$/i.test(c.parameter_size)&&d.push(c.parameter_size),"string"==typeof c.quantization_level&&/^[A-Z0-9_]{1,20}$/i.test(c.quantization_level)&&d.push(c.quantization_level),d.length>1?`${b} (${d.slice(1).join(", ")})`:b}(b)})}catch(a){a instanceof Error&&"AbortError"===a.name?o.warn("ollama-api-timeout"):o.warn("failed-to-fetch")}return a}async function w(){let a={};try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch("http://localhost:1234/v1/models",{signal:b.signal}).finally(()=>{clearTimeout(c)});if(!d.ok)return o.warn("lm-studio-api"),{};let e=await d.text();if(e.length>1048576)return o.warn("lm-studio-api"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.data))return o.warn("invalid-lm-studio"),{};for(let b of f.data.slice(0,100))"string"==typeof b?.id&&q.test(b.id)&&(a[b.id]={name:b.id})}catch(a){a instanceof Error&&"AbortError"===a.name?o.warn("lm-studio-api"):o.warn("failed-to-fetch")}return a}function x(a=process.env){let b=l.join(k.homedir(),".config");return l.join((0,m.T)(a.XDG_CONFIG_HOME,b,"XDG_CONFIG_HOME"),"opencode")}async function y(){let[a,b]=await Promise.all([v(),w()]),c={};return Object.keys(a).length>0&&(c.ollama={npm:"@ai-sdk/openai-compatible",name:"Ollama (local)",options:{baseURL:"http://localhost:11434/v1"},models:a}),Object.keys(b).length>0&&(c.lmstudio={npm:"@ai-sdk/openai-compatible",name:"LM Studio (local)",options:{baseURL:"http://localhost:1234/v1"},models:b}),c}async function z(a){let b=function(a=process.env){let b=(a[r]??"").trim().toLowerCase();return"worktree"===b||"project"===b?"worktree":"global"===b||"user"===b?"global":(""!==b&&"off"!==b&&"0"!==b&&"false"!==b&&"none"!==b&&o.warn("opencode-config-mode-unrecognised",{variable:r,value:b}),"off")}();if("off"===b)return{written:!1,configPath:null,reason:"disabled"};let c="worktree"===b?function(a){let b=l.resolve(a);try{if(!j.lstatSync(b).isDirectory())throw Error(`Path is not a directory: ${b}`)}catch(a){if("ENOENT"===a.code)throw Error(`Path does not exist: ${b}`);throw a}return j.realpathSync(b)}(a):null,d=function(a,b=process.env){if(""!==(b[s]??"").trim())return`env:${s}`;if(null!==a)for(let b of t){let c=l.join(a,b);if(j.existsSync(c))return c}let c=x(b);for(let a of u){let b=l.join(c,a);if(j.existsSync(b))return b}return null}(c);if(null!==d)return o.info("opencode-config-generation-skipped",{mode:b,owned:d}),{written:!1,configPath:null,reason:"existing-config"};let e=c??x(),f=l.join(e,"opencode.json"),g=await y();if(0===Object.keys(g).length)return{written:!1,configPath:null,reason:"no-providers"};try{"global"===b&&j.mkdirSync(e,{recursive:!0}),j.writeFileSync(f,JSON.stringify({$schema:"https://opencode.ai/config.json",provider:g},null,2),{encoding:"utf-8",flag:"wx"})}catch(a){if("EEXIST"===a.code)return{written:!1,configPath:null,reason:"existing-config"};return o.warn("failed-to-write-opencodejson:error-insta"),{written:!1,configPath:null,reason:"write-failed"}}return o.info("opencode-config-generated",{mode:b,configPath:f}),{written:!0,configPath:f,reason:"written"}}var A=c(16983),B=c(46684),C=c(79646),D=c(28354),E=c(39333),F=c(1305),G=c(49791),H=c(62887),I=c(72272),J=c(49154),K=c(33294),L=c(27870),M=c(57510),N=c(59409),O=c(75356),P=c(98211),Q=c(90488),R=c(85322);let S=(0,n.h)("lib/hooks/sources/opencode/ingest");async function T(a,b,c){let d=(0,N.VM)(R.k),e=(0,P.Lu)(b.raw,b.receivedAt);if(!e)return S.info("opencode-permission-unparsed",{worktreeId:a.worktreeId,instanceId:c}),!1;let f=await (0,I.t)(d,a,e,d.parsePermissionRequest(b.raw));return S.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 U(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(2283),c.e(6781)]).then(c.bind(c,16781))]),g=d(),h=e(g,a.worktreeId)??null;if(!h)return void S.info("opencode-stop-unresolved-target",{worktreeId:a.worktreeId});let i=await f(g,h,R.k,b);S.info("opencode-stop-applied",{worktreeId:a.worktreeId,instanceId:b,taskId:i.taskId,taskEventApplied:i.taskEventApplied,verificationRunId:i.verificationRunId})}async function V(a,b){let c=a.instanceId??R.k;try{let d=(0,N.VM)(R.k),e=(0,K.classifyAgentEventDelivery)({worktreeId:a.worktreeId,cliToolId:R.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 S.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,H.h9)??null,sessionId:b.conversationId,message:(function(a){let b=(0,M.Qd)(a.raw.properties)?a.raw.properties:{};if(a.detail===O.aF)return(0,M.NZ)(b,["metadata","command"])??(0,M.O2)(b,"permission");if(a.detail===O.Tm){let a=b.questions;return Array.isArray(a)&&(0,M.Qd)(a[0])?(0,M.O2)(a[0],"question"):null}return a.detail===O.vE?(0,M.NZ)(b,["error","data","message"])??(0,M.NZ)(b,["error","name"]):null})(b)?.slice(0,L.lY)??null,model:b.model},g={sessionStartMayArriveLate:d.capabilities.sessionStartMayArriveLate};if("notification"===b.event&&b.detail===O.aF){f.decisionId=(0,M.O2)((0,M.Qd)(b.raw.properties)?b.raw.properties:{},"id");let d=(0,P.LF)(b.raw,b.receivedAt);f.toolName=d?.toolName??null,f.decisionPatterns=d?.patterns??null,f.promptSettled=await T(a,b,c),(0,K.recordAgentEvent)(a.worktreeId,R.k,c,f,g);return}if("notification"===b.event&&b.detail===O.C8){f.decisionId=(0,O.Mn)(b.raw),f.promptSettled=!!(0,N.VM)(R.k).capabilities.permissionReplyReleasesPrompt||(S.info("opencode-permission-reply-not-releasing",{worktreeId:a.worktreeId,instanceId:c,reason:"capability-permissionReplyReleasesPrompt-false"}),!1),(0,K.recordAgentEvent)(a.worktreeId,R.k,c,f,g),S.info("opencode-permission-reply-observed",{worktreeId:a.worktreeId,instanceId:c,decisionId:f.decisionId,released:f.promptSettled});return}if((0,K.recordAgentEvent)(a.worktreeId,R.k,c,f,g),"notification"===b.event&&b.detail===O.Tm){let d=(0,N.VM)(R.k).parseQuestion(b.raw);d&&((0,K.recordAskUserQuestion)(a.worktreeId,R.k,c,d,b.receivedAt),(0,K.reportQuestionPending)(a.worktreeId,R.k,c,{toolName:J.GF,decisionId:d.promptId,detail:O.Tm},b.receivedAt),S.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,Q.Vo)(a,c,f.message??null,b.receivedAt);return}if("stop"===b.event)return void await U(a,c);"notification"===b.event&&b.detail===O.vE&&await (0,Q.dJ)(a,c,(0,M.NZ)((0,M.Qd)(b.raw.properties)?b.raw.properties:{},["error","name"]),f.message??null,b.conversationId,b.receivedAt),S.info("opencode-event-received",{worktreeId:a.worktreeId,instanceId:c,event:b.event,detail:b.detail})}catch(d){S.error("opencode-event-ingest-failed",{worktreeId:a.worktreeId,instanceId:c,event:b.event,error:d instanceof Error?d.message:String(d)})}}var W=c(84574),X=c(85965),Y=c(33198);let Z=(0,n.h)("lib/hooks/sources/opencode/runtime");function $(a,b){return{worktreeId:a,cliToolId:"opencode",instanceId:b}}async function _(a,b){try{return await (0,W.CU)(a,b)}catch(b){return Z.warn("opencode-port-reserve-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),null}}let aa=[0,500,1e3,2e3,4e3];async function ab(a,b){for(let[c,d]of aa.entries()){d>0&&await new Promise(a=>setTimeout(a,d));let e=await (0,G.sc)(b);if("healthy"===e.kind)return c>0&&Z.info("opencode-server-reachable-after-retry",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,attempt:c}),e.health;if("rejected"===e.kind){Z.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 ac(a){try{let b=(0,W.hC)(a);if(null===b)return!1;if((0,Y.wb)(a))return!0;let c=await ab(a,b);if(!c)return Z.info("opencode-server-not-reachable",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,attempts:aa.length}),!1;await X.cC.subscribe(a,b=>{V(a,b)});let d=await ad(a);return Z.info("opencode-event-stream-attached",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,version:c.version,activity:d}),!0}catch(b){return Z.warn("opencode-event-stream-attach-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),!1}}async function ad(a){let b=null;try{b=await X.cC.probeActivity(a)}catch(b){Z.debug("opencode-activity-probe-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)})}return(0,Y.yn)(a,b,Date.now()),b}async function ae(a,b){try{if((0,Y.wb)(a))return!0;let c=await (0,W.jp)(a,b);if(null===c)return!1;return await ac(a)}catch(b){return Z.warn("opencode-event-stream-resume-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),!1}}async function af(a){let b=a.instanceId??a.cliToolId;try{let c=(0,W.hC)(a);if(null===c)return!1;let d=(0,Y.lf)(a);if("live"!==d.state)return Z.info("opencode-abort-skipped-not-live",{worktreeId:a.worktreeId,instanceId:b,port:c,liveness:d.state}),!1;let e=(0,Y.ym)(a);if(null===e)return Z.info("opencode-abort-skipped-no-session",{worktreeId:a.worktreeId,instanceId:b,port:c}),!1;let f=(0,Y.H1)(a,e,2e3);if(!await (0,G.UR)(c,e))return f.cancel(),Z.warn("opencode-abort-rejected",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e}),!1;if(!await f.seen)return Z.warn("opencode-abort-unconfirmed",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e,timeoutMs:2e3}),!1;return Z.info("opencode-abort-confirmed",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e}),!0}catch(c){return Z.warn("opencode-abort-failed",{worktreeId:a.worktreeId,instanceId:b,error:c instanceof Error?c.message:String(c)}),!1}}async function ag(a){try{await (0,Y.FN)(a),(0,W.kE)(a)}catch(b){Z.warn("opencode-event-stream-release-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)})}}var ah=c(18529),ai=c(70849),aj=c(27939),ak=c(93949),al=c(20610),am=c(78099),an=c(18140),ao=c(79748);let ap=/^timestamp=(\S+)/,aq=/no such column: ?[A-Za-z0-9_.]*/;async function ar(a,b){let c;try{c=await (0,ao.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 as(a,b=function(){let a=process.env.XDG_DATA_HOME||(0,l.join)((0,k.homedir)(),".local","share");return(0,l.join)(a,"opencode","log","opencode.log")}()){let c=await ar(b,262144);if(null===c)return null;let d=a-1e3;for(let a of c.split("\n")){let b=ap.exec(a);if(!b)continue;let c=Date.parse(b[1]);if(Number.isNaN(c)||c<d)continue;let e=aq.exec(a);if(e)return e[0]}return null}var at=c(46749),au=c(77093);let av=(0,n.h)("cli-tools/opencode"),aw=(0,D.promisify)(C.execFile),ax=[0,50,100,200];function ay(a,b){return a?`${a}
1
+ "use strict";exports.id=9731,exports.ids=[9731],exports.modules={7321:(a,b,c)=>{c.d(b,{L:()=>d});let d="PLAN_REVIEW_SEND_REFUSED"},8360:(a,b,c)=>{c.r(b),c.d(b,{CLIToolManager:()=>a1});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){let e=`
2
+ ![](${c})`,f=b?`${b}${e}`:e;await this.sendMessage(a,f,d)}async killSession(a,b){await (0,f.VU)(a,b)}constructor(...a){super(...a),this.id="claude",this.name="Claude Code",this.command="claude"}}var h=c(79892),i=c(40236),j=c(93997),k=c(42422),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(46749),w=c(77093);let x=(0,q.h)("cli-tools/codex"),y="codex";function z(){return{screen:null,attempts:0}}class A 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:"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 (0,h.V1)(d,(0,v.Y)(f),!0),await new Promise(a=>setTimeout(a,3e3))};await (0,h.V1)(d,(0,v.Y)(f),!0),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(d,{relaunch:g,trustHooks:(0,s.dO)(b)}),x.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=z(),g=function(a){let b=o(void 0);if(null!==b)return b;let c=o(((void 0)??process.env).CM_CODEX_UPDATE_DIALOG);return null!==c?c:"skip-until-next-version"}(),i=n[g],j=!1,m=!1,q=!1,r=30;try{for(let o=0;o<r;o++){try{let s=await (0,h.Xg)(a,50),t=(0,k.aJ)(s),v=(0,k.E6)(t);if(("hooks-review"===v||"hooks-list"===v||"hooks-detail"===v)&&await this.answerCodexHooksScreen(a,v,f,c)){await new Promise(a=>setTimeout(a,u.CV));continue}if((0,k.zZ)(t))return void x.info("codex-prompt-detected");if(j&&!m&&b?.relaunch&&null!==(0,l.GE)(t,this.livenessSpec())){m=!0,r=Math.max(r,o+1+30),e=!1,f.screen=null,f.attempts=0,q&&(q=!1,(0,p.lM)(y),x.info("codex-update-lock-released",{sessionName:a})),x.info("codex-relaunched-after-update",{sessionName:a,policy:g}),await b.relaunch();continue}let w=(0,k.Qh)(t);if("update"===w){if(j=!0,null===i){await new Promise(a=>setTimeout(a,1e3));continue}if(!d){let b=i;b!==n.update||(0,p.mf)(y)?b===n.update&&(q=!0):(b=n["skip-until-next-version"],x.warn("codex-update-dialog-yielded-to-running-update",{sessionName:a,policy:g,requestedKey:i,key:b})),await (0,h.V1)(a,b,!1),d=!0,b===n.update&&(r=Math.max(r,o+1+120)),x.info("codex-update-dialog-answered",{sessionName:a,policy:g,key:b}),await new Promise(a=>setTimeout(a,u.CV));continue}}if("press-enter"===w){await (0,h.ds)(a,"Enter"),x.info("dismissed-codex-notification"),await new Promise(a=>setTimeout(a,u.CV));continue}if("trust"===w&&!e){await (0,h.V1)(a,"1",!1),e=!0,x.info("auto-trusted-folder-for-codex"),await new Promise(a=>setTimeout(a,u.CV));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}x.info("codex-prompt-detection")}finally{q&&(q=!1,(0,p.lM)(y),x.warn("codex-update-lock-released-unfinished",{sessionName:a}))}}async answerCodexHooksScreen(a,b,c,d){if(c.screen!==b&&(c.screen=b,c.attempts=0),c.attempts>=3)return x.warn("codex-hooks-screen-unresponsive",{sessionName:a,screen:b,trust:d}),!1;let e=++c.attempts;if("hooks-review"===b){let b=1===e?d?"2":"3":"1";return await (0,h.V1)(a,b,!1),x.info("codex-hooks-review-answered",{sessionName:a,key:b,attempt:e,trust:d}),!0}return d?(await (0,h.V1)(a,"t",!1,{literal:!0}),x.info("codex-hooks-screen-trusted",{sessionName:a,screen:b,attempt:e})):(await (0,h.ds)(a,"Escape"),x.info("codex-hooks-screen-escaped",{sessionName:a,screen:b,attempt:e})),!0}async waitForPrompt(a){let b=Date.now(),c=z(),d=null;for(;Date.now()-b<15e3;){try{let b=await (0,h.Xg)(a,50),e=(0,k.aJ)(b),f=(0,k.E6)(e);if("hooks-review"===f||"hooks-list"===f||"hooks-detail"===f){if(null===d){let b=await (0,h.nS)(a);d=null!==b&&(0,s.dO)(b)}await this.answerCodexHooksScreen(a,f,c,d)}else if((0,k.zZ)(e))return}catch{}await new Promise(a=>setTimeout(a,500))}throw x.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),x.info("sent-message-to-codex-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to send message to Codex: ${a}`)}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:x,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 B=c(23365),C=c(76877),D=c(48217);let E=(0,q.h)("cli-tools/gemini");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:E,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,D.du)(d);try{await (0,h.V1)(d,(0,v.Y)(f),!0),await new Promise(a=>setTimeout(a,6e3)),await this.waitForReady(d)}finally{(0,D.FG)(d)}E.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=await (0,h.Xg)(a,B.H),f=(0,k.aJ)(e);if(k.wN.test(f))return void E.info("gemini-prompt-detected");if(!b){let e=(0,C.CZ)(C.g1,f);if("press"===e.action)await (0,h.ds)(a,e.key),b=!0,c=Date.now(),(0,D._F)(a,c),E.info("auto-trusted-folder-for-gemini");else{let b=(0,C.oy)(C.g1,e);b&&"absent"!==e.action&&!d.has(e.reason)&&(d.add(e.reason),E.warn(b.event,{sessionName:a,...b.fields}))}}}catch(b){E.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))}E.info("gemini-prompt-detection")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,h.Xg)(a,B.H),c=(0,k.aJ)(b);if(k.wN.test(c))return}catch(b){E.debug("gemini-prompt-capture-failed",{sessionName:a,error:(0,w.u1)(b)})}await new Promise(a=>setTimeout(a,500))}E.info("gemini-prompt-not-detected")}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),E.info("sent-message-to-gemini-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to send message to Gemini: ${a}`)}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:E,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 G=c(15194),H=c(88807),I=c(56791);let J=(0,q.h)("cli-tools/vibe-local");class K 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:J,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,H.getDbInstance)(),d=(0,I.getWorktreeById)(b,a);d?.vibeLocalModel&&G.QP.test(d.vibeLocalModel)&&(c+=` -m ${d.vibeLocalModel}`);let e=d?.vibeLocalContextWindow;(0,G.FV)(e)&&(c+=` --context-window ${Number(e)}`)}catch{}await (0,h.V1)(d,(0,v.Y)(c),!0),await new Promise(a=>setTimeout(a,5e3)),J.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 (0,i.FW)({sessionName:d,message:b,cliToolId:"vibe-local",composer:this.describeComposer(),interEnterWaitMs:u.PY}),(0,j.gm)(d),J.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}`)}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:J,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 L=c(49319),M=c(81776),N=c(56263),O=c(21758),P=c(54633),Q=c(78099);let R=(0,q.h)("cli-tools/copilot"),S=new Set(["model","agent","theme","permissions","skills","mcp","settings","statusline","subagents","resume","session"]),T=/^[>❯](?:\s|$)/,U=/^\s*\S\s+Loading:/;function V(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 W(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"}class X extends d.Mj{async isInstalled(){return await (0,M.B0)()!==null}launchExecutable(a){return"path"===a.source?this.command:O.nL}async launchSession(a,b,c){let d=await (0,M.B0)();if(!d)throw(0,Q.Tl)(this);let{sessionName:e,exists:f,live:g}=await this.resolveLaunchPane(a,b,c,{logger:R,liveAction:"copilot-session-exists",relaunchAction:"copilot-session-relaunch"});if(!g){(0,t.Fq)({worktreeId:a,cliToolId:P.V,instanceId:c});try{let g=(0,t.wK)({target:{worktreeId:a,cliToolId:P.V,instanceId:c},executablePath:this.launchExecutable(d),worktreePath:b});f||await this.createLaunchPane(e,b),(0,D.du)(e);try{await (0,h.V1)(e,(0,v.Y)(g),!0),await this.waitForReady(e)}finally{(0,D.FG)(e)}R.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){return!!(0,k.Rx)(b)&&(await (0,h.V1)(a,k.oD,!1),(0,D._F)(a),(0,j.gm)(a),R.info("copilot-folder-trust-answered"),!0)}isComposerDrawn(a){let b=a.split("\n");for(let a=1;a<b.length-1;a++)if(T.test(b[a])&&k.A.test(b[a-1].trimEnd())&&k.A.test(b[a+1].trimEnd()))return!0;return!1}async waitForReady(a){let b=!1;for(let c=0;c<30;c++){try{let c=await (0,h.Xg)(a,50),d=(0,k.aJ)(c);if(this.isComposerDrawn(d))return void R.info("copilot-prompt-detected");!b&&await this.answerFolderTrustDialog(a,d)&&(b=!0)}catch{}await new Promise(a=>setTimeout(a,1e3))}R.info("copilot-prompt-detection-timeout")}async waitForPrompt(a,b=15e3,c="composer"){let d=Date.now(),e=!1,f="";for(;Date.now()-d<b;){try{let b=await (0,h.Xg)(a,50);if(f=(0,k.aJ)(b),this.isReadyFor(c,f))return{ready:!0,output:f};!e&&await this.answerFolderTrustDialog(a,f)&&(e=!0)}catch{}await new Promise(a=>setTimeout(a,500))}return R.info("copilot-prompt-not-detected",{until:c,bottomRow:W(f)}),{ready:!1,output:f}}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 U.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 R.info("copilot-selection-list-detected"),!0}catch{}}return R.info("copilot-selection-list-not-detected-timeout"),!1}async sendMessage(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Copilot",a,c,{relaunch:!0});try{await this.waitForPrompt(d);let a=this.extractSlashCommand(b);if(a&&S.has(a)){await (0,h.V1)(d,b,!0),await this.waitForSelectionList(d),(0,j.gm)(d),R.info("sent-selection-list-command-to-copilot",{command:a});return}await (0,i.FW)({sessionName:d,message:b,cliToolId:"copilot",composer:this.describeComposer(),textInputWaitMs:N.L1,verifyDelayMs:N.wp}),(0,j.gm)(d),R.info("sent-message-to-copilot-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to send message to Copilot: ${a}`)}}async sendModelCommand(a,b,c){let d=this.getSessionName(a,c);await this.requireSession("Copilot",a,c,{relaunch:!1});try{let a=await this.waitForPrompt(d,N.pL,"idle");if(!a.ready)throw Error(`copilot did not become idle within ${N.pL}ms, so /model was not sent (bottom row: ${W(a.output)})`);let c=V(a.output,b);await (0,h.V1)(d,`/model ${b}`,!0);let e=await this.waitForModelSwitchOutcome(d,b,c);if((0,j.gm)(d),"rejected"===e.kind)throw R.warn("copilot-model-rejected",{model:b,reason:e.reason}),Error(`copilot refused it: ${e.reason}`);if("pending"===e.kind)throw R.warn("copilot-model-switch-unconfirmed",{model:b,bottomRow:e.bottomRow}),Error(`copilot printed no answer to /model within ${N.pL}ms (bottom row: ${e.bottomRow}); the switch may still take effect, and nothing further was typed`);R.info("copilot-model-switched",{model:b})}catch(c){let a=(0,w.u1)(c);throw Error(`Failed to switch Copilot model to ${b}: ${a}`)}}async waitForModelSwitchOutcome(a,b,c){let d=Date.now(),e="";for(;Date.now()-d<N.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=V(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:W(e)}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:R,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,N.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"}}var Y=c(61878),Z=c(69082),$=c(83406);let _=(0,q.h)("cli-tools/antigravity"),aa=/\?\s+for\s+shortcuts/;function ab(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,Y.zJ)(a,"antigravity").lastLines;return{screen:0===b.length?"blank":(0,Z.VI)(c)?"trust-dialog":ad(a)?"ready":"other",screenTail:b.slice(-5).map(a=>a.slice(0,160))}}function ac(a,b,c){let d=(0,C.oy)(C.z0,b);!d||"absent"===b.action||"press"===b.action||c.has(b.reason)||(c.add(b.reason),_.warn(d.event,{sessionName:a,...d.fields}))}function ad(a){let b=(0,Y.zJ)(a,"antigravity");if(k.kT.test(b.lastLines)||Z.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&&(!!aa.test(c)||!(0,k.ut)("antigravity",b.lastLines))}class ae 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:_,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}),i=d?`${g} --model '${d.replace(/'/g,"'\\''")}'`:g;f||await this.createLaunchPane(e,b),(0,$.zu)(e);try{await (0,h.V1)(e,(0,v.Y)(i),!0),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(e)}finally{(0,$.F1)(e)}_.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,$.R6)(a);let c=!1,d=new Set,e=null,f=0;for(let g=0;g<30;g++){try{let b=await (0,h.Xg)(a,50),f=(0,k.aJ)(b);if(e=b,ad(f))return void _.info("antigravity-prompt-detected");if(!c){let b=(0,C.CZ)(C.z0,f);if("press"===b.action&&!(0,$.jI)(a)){await (0,h.ds)(a,b.key),c=!0,_.info("auto-trusted-folder-for-antigravity"),await new Promise(a=>setTimeout(a,500));continue}ac(a,b,d)}}catch(a){f++,b=(0,w.u1)(a)}await new Promise(a=>setTimeout(a,1e3))}c||(0,$.Qn)(a),_.info("antigravity-prompt-detection-timeout",{sessionName:a,attempts:30,trustDialogHandled:c,...c?{}:{reason:"startup-trust-unhandled"},...ab(e),captureErrors:f,...void 0!==b?{lastCaptureError:b}:{}})}async waitForPrompt(a){let b,c=Date.now(),d=c+((0,$.Dc)(a)?6e4:15e3),e=new Set,f=null,g=0;for(;Date.now()<d;){try{let b=await (0,h.Xg)(a,50),c=(0,k.aJ)(b);if(f=b,ad(c))return void(0,$.R6)(a);let g=(0,Z.VI)((0,Y.zJ)(c,"antigravity").lastLines)?(0,C.CZ)(C.z0,c):null;if(null!==g&&"press"!==g.action&&(0,$.Dc)(a)&&ac(a,g,e),g?.action==="press"&&(0,$.qT)(a)){await (0,h.ds)(a,g.key),_.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,$.Dc)(a),j=ab(f);_.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),_.info("sent-message-to-antigravity-session")}catch(b){let a=(0,w.u1)(b);throw Error(`Failed to send message to Antigravity: ${a}`)}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:_,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,$.R6)(a)}})}constructor(...a){super(...a),this.id="antigravity",this.name="Antigravity CLI",this.command="agy"}}var af=c(7321),ag=c(28862),ah=c(35566),ai=c(2669);let aj=(0,q.h)("cli-tools/command-code"),ak=["--trust","--skip-onboarding","--no-auto-update"];function al(a){let b=a.split("\n");return!(0>(0,k.I$)(b))&&!k.k0.test((0,k.aJ)(a))}class am 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:aj,liveAction:"command-code-session-exists",relaunchAction:"command-code-session-relaunch"});if(!f){(0,t.Fq)({worktreeId:a,cliToolId:ag.k,instanceId:c}),this.composerPendingSince.set(d,Date.now());try{var g;e||await this.createLaunchPane(d,b),await (0,h.V1)(d,(0,v.Y)((g={target:{worktreeId:a,cliToolId:ag.k,instanceId:c},executablePath:this.command,worktreePath:b},[(0,t.wK)(g),...ak].join(" "))),!0),await new Promise(a=>setTimeout(a,u.yO)),await this.waitForReady(d),aj.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(al(b)){this.composerPendingSince.delete(a),aj.info("command-code-prompt-detected");return}}catch{}await new Promise(a=>setTimeout(a,1e3))}aj.info("command-code-prompt-detection-timeout")}async waitForPrompt(a){let b=Date.now(),c=0;for(;Date.now()-b<15e3;){let b=!1;try{let c=await (0,h.Xg)(a,50);if(!(b=null!==(0,ah.V)(c))&&al(c))return void this.composerPendingSince.delete(a)}catch{}if((c=b?c+1:0)>=2)throw aj.info("command-code-plan-review-blocks-send",{sessionName:a}),Object.assign(Error('Command Code is showing a plan review (REVIEW), which takes review comments, not messages. Comment with `commandmate respond <worktree-id> "<text>"`, then `--plan-review submit` (ctrl+r), `--plan-review approve` (ctrl+a) or `--plan-review cancel` (esc).'),{code:af.L});await new Promise(a=>setTimeout(a,500))}let d=this.composerPendingSince.get(a);if(void 0!==d){let b=Date.now()-d;if(b<=12e4)throw aj.info("command-code-session-still-starting",{sessionName:a,sinceLaunchMs:b}),new ai.Sr(this.name,a,b);this.composerPendingSince.delete(a)}throw aj.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),await (0,i.FW)({sessionName:d,message:b,cliToolId:"command-code",composer:this.describeComposer()}),(0,j.gm)(d),aj.info("sent-message-to-command-code-session")}catch(b){if((0,ai.wQ)(b))throw b;let a=Error(`Failed to send message to Command Code: ${(0,w.u1)(b)}`);if(b?.code===af.L)throw Object.assign(a,{code:af.L});throw a}}async killSession(a,b){await this.requestExitAndKill(a,b,{logger:aj,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 an=c(79646),ao=c(28354),ap=c(16983),aq=c(46684),ar=c(34114),as=c(62887),at=c(72272),au=c(49154),av=c(33294),aw=c(27870),ax=c(57510),ay=c(90488),az=c(51719),aA=c(83738),aB=c(26945),aC=c(38892),aD=c(16100),aE=c(71193);let aF=(0,q.h)("lib/hooks/sources/opencode-v2/ingest");async function aG(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 aF.info("opencode-v2-stop-unresolved-target",{worktreeId:a.worktreeId});await f(g,h,aE.B,b)}async function aH(a,b,c){let d=(0,aB.bH)(a),e=(0,aC.X3)(a);if(null===d||null===e)return null;let f=await (0,ar.$F)(d,e,b),g=f?.find(a=>(0,ax.Qd)(a)&&a.id===c);return(0,ax.Qd)(g)?g:null}async function aI(a,b,c){let d=(0,aA.hl)(b.raw,b.receivedAt);if(!d)return aF.info("opencode-v2-permission-unparsed",{worktreeId:a.worktreeId,instanceId:c}),!1;let e=await (0,at.t)(aD.Wp,a,d,aD.Wp.parsePermissionRequest(b.raw));return aF.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 aJ(a,b,c){let d=(0,aA.rk)(b.raw);if(d)return d;let e=(0,az.DH)(b.raw),f=(0,az.lx)(b.raw);if(null===e||null===f)return null;let g=await c(a,f,e);return g?(0,aA.rk)(g):null}async function aK(a,b,c=aG,d=aH){let e=a.instanceId??aE.B;try{let f=(0,av.classifyAgentEventDelivery)({worktreeId:a.worktreeId,cliToolId:aE.B,instanceId:e,event:b.event,detail:b.detail,sessionId:b.conversationId,at:b.receivedAt,identity:aD.Wp.eventIdentityOf(b.raw),identityKind:aD.Wp.capabilities.eventIdentity});if(f.duplicate)return void aF.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,as.h9)??null,sessionId:b.conversationId,message:null,model:b.model},h={sessionStartMayArriveLate:!1};if("notification"===b.event&&b.detail===az.xz){g.decisionId=(0,az.DH)(b.raw);let c=(0,aA.vF)(b.raw);g.toolName=c?.toolName??(0,az.Dg)(b.raw),g.decisionPatterns=c?.patterns??null,g.message=(0,aA.s8)(b.raw)?.slice(0,aw.lY)??null,g.promptSettled=await aI(a,b,e),(0,av.recordAgentEvent)(a.worktreeId,aE.B,e,g,h)}else if("notification"===b.event&&b.detail===az.er)g.decisionId=(0,az.DH)(b.raw),g.promptSettled=!0,(0,av.recordAgentEvent)(a.worktreeId,aE.B,e,g,h);else if("notification"===b.event&&b.detail===az.Ai){let c=await aJ(a,b,d);g.message=c?.questions[0]?.question.slice(0,aw.lY)??null,(0,av.recordAgentEvent)(a.worktreeId,aE.B,e,g,h),c&&(0,av.recordAskUserQuestion)(a.worktreeId,aE.B,e,c,b.receivedAt),(0,av.reportQuestionPending)(a.worktreeId,aE.B,e,{toolName:au.GF,decisionId:(0,az.DH)(b.raw),detail:az.Ai},b.receivedAt),aF.info("opencode-v2-question-recorded",{worktreeId:a.worktreeId,instanceId:e,decisionId:(0,az.DH)(b.raw),parsed:null!==c,questionCount:c?.questions.length??0}),await (0,ay.Vo)(a,e,g.message,b.receivedAt)}else"stop"===b.event?(b.detail===az.dA&&(g.message=(0,az.ZL)(b.raw)?.slice(0,aw.lY)??null,aF.error("opencode-v2-turn-failed",{worktreeId:a.worktreeId,instanceId:e,sessionId:b.conversationId,message:g.message})),(0,av.recordAgentEvent)(a.worktreeId,aE.B,e,g,h),await c(a,e)):(0,av.recordAgentEvent)(a.worktreeId,aE.B,e,g,h);aF.info("opencode-v2-event-received",{worktreeId:a.worktreeId,instanceId:e,type:(0,az.Cr)(b.raw),event:b.event,detail:b.detail})}catch(c){aF.error("opencode-v2-event-ingest-failed",{worktreeId:a.worktreeId,instanceId:e,event:b.event,error:c instanceof Error?c.message:String(c)})}}var aL=c(32301);let aM=(0,q.h)("lib/hooks/sources/opencode-v2/runtime"),aN=[0,500,1e3,2e3];function aO(a,b){return{worktreeId:a,cliToolId:aE.B,instanceId:b}}function aP(a){return a instanceof Error?a.message:String(a)}async function aQ(a,b){try{let c=await (0,aB.ui)(a,b);if(null===c)return null;return(0,aC.OC)(a),c}catch(b){return aM.warn("opencode-v2-server-reserve-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:aP(b)}),null}}async function aR(a,b){let c=(0,aC.X3)(a);return null!==c&&"healthy"===(await (0,ar.tJ)(b,c)).kind}async function aS(a){try{let b=(0,aB.bH)(a);if(null===b)return!1;if((0,aL.yw)(a))return!0;let c=!1;for(let d of aN)if(d>0&&await new Promise(a=>setTimeout(a,d)),await aR(a,b)){c=!0;break}if(!c)return aM.info("opencode-v2-server-not-reachable",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b}),!1;return await aD.Wp.subscribe(a,b=>{aK(a,b)}),aM.info("opencode-v2-event-stream-attached",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b}),!0}catch(b){return aM.warn("opencode-v2-event-stream-attach-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:aP(b)}),!1}}async function aT(a,b){try{if((0,aL.yw)(a))return!0;let c=await (0,aB.Lv)(a,b,b=>aR(a,b));if(null===c)return!1;return await aS(a)}catch(b){return aM.warn("opencode-v2-event-stream-resume-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:aP(b)}),!1}}async function aU(a){try{await (0,aL.VV)(a)}catch(b){aM.warn("opencode-v2-subscription-close-failed",{worktreeId:a.worktreeId,error:aP(b)})}try{(0,aB.OZ)(a)}catch(b){aM.warn("opencode-v2-port-forget-failed",{worktreeId:a.worktreeId,error:aP(b)})}try{(0,aC.Nc)(a)}catch(b){aM.warn("opencode-v2-password-remove-failed",{worktreeId:a.worktreeId,error:aP(b)})}}var aV=c(93949),aW=c(18140);let aX=(0,q.h)("cli-tools/opencode-v2"),aY=(0,ao.promisify)(an.execFile),aZ=ap.xT,a$=/^\/\S+$/,a_=[...e.qD,e.Mx,...e.TM,"a","l","m"];class a0 extends d.Mj{navigationKeys(){return{keys:a_,leaderKey:e.Mx}}async isInstalled(){return null!==(await (0,aW.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=aO(a,c);if((0,aL.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 aT(d,a)}catch(a){aX.debug("opencode-v2-lazy-resume-failed",{error:(0,w.u1)(a)})}})())}async launchSession(a,b,c){let d=(await (0,aW.Qq)()).executable;if(!d)throw(0,Q.Tl)(this);let e=this.getSessionName(a,c),f=aO(a,c),g={windowWidth:(0,aq.r)({warnSidebar:!1}),windowHeight:ap.xT},i=await (0,h.N)(e);if(i){if(await this.reconcileExistingSession(e,b,g),await this.isToolLive(e,{confirm:!0})){await aT(f,b),aX.info("opencode-v2-session-exists");return}aX.warn("opencode-v2-session-relaunch",{sessionName:e}),await aU(f)}(0,t.Fq)(f);try{i||await this.createLaunchPane(e,b);try{await aY("tmux",["resize-window","-t",(0,h.lA)(e),"-x",String(g.windowWidth),"-y",String(g.windowHeight)])}catch{}let j=await aQ(f,b);null===j&&aX.warn("opencode-v2-launch-without-server",{worktreeId:a,instanceId:c}),await (0,h.V1)(e,(0,v.Y)((0,t.wK)({target:f,executablePath:d.path,worktreePath:b})),!0),await this.waitForReady(e),await aS(f),aX.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,aZ));if((0,k.Ok)(c))return aX.info("opencode-v2-composer-detected",{attempt:b}),!0}catch{}await new Promise(a=>setTimeout(a,500))}return aX.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,aZ));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:a$.test(b)?`${b} `:b,cliToolId:aE.B,composer:this.describeComposer()}),(0,j.gm)(d),aX.info("sent-message-to-opencode-v2-session")}catch(a){throw Error(`Failed to send message to OpenCode V2: ${(0,w.u1)(a)}`)}}async killSession(a,b){let c=this.getSessionName(a,b),d=aO(a,b),e=(0,aB.bH)(d);try{if(await (0,h.N)(c)){await (0,h.V1)(c,aV.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,aV.rY)({sessionAlive:()=>(0,h.N)(c),portAnswering:null===e?null:async()=>"unreachable"!==(await (0,ar.tJ)(e,"")).kind});a.ok||(aX.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),aX.info("stopped-opencode-v2-session")}catch(a){throw aX.error("session:stop-failed",{error:(0,w.u1)(a)}),a}finally{await aU(d)}}constructor(...a){super(...a),this.id=aE.B,this.name="OpenCode V2",this.command=aE.V,this.resumeAttemptedAt=new Map}}class a1{constructor(){this.tools=new Map,this.tools.set("claude",new g),this.tools.set("codex",new A),this.tools.set("gemini",new F),this.tools.set("vibe-local",new K),this.tools.set("opencode",new L.Ui),this.tools.set("copilot",new X),this.tools.set("antigravity",new ae),this.tools.set("command-code",new am),this.tools.set("opencode-v2",new a0)}static getInstance(){return a1.instance||(a1.instance=new a1),a1.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(5595),c.e(9199),c.e(7166),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}},47967:(a,b,c)=>{c.d(b,{Z:()=>h,u:()=>i});var d=c(70605);let e=/ctrl\+[tp]\b/,f=/^\s*╹▀+/,g=/^\s*[┃│]/,h={locate({contentLines:a}){let b=(0,d.Sx)(a),c=-1;for(let d=b;d>=Math.max(0,b-4);d--)if(e.test(a[d])){c=d;break}if(c<0)return null;let h=-1;for(let b=c-1;b>=Math.max(0,c-3);b--)if(f.test(a[b])){h=b;break}if(h<0)return null;let i=h;for(;i-1>=0&&g.test(a[i-1]);)i--;return{start:i,end:b,atBottom:!0}}};function i(a){return{locate({contentLines:b}){let c=(0,d.Sx)(b);for(let d=c;d>=Math.max(0,c-60);d--)if(g.test(b[d])&&a.test(b[d]))return{start:d};return null}}}},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}},49319:(a,b,c)=>{c.d(b,{Ui:()=>az,TZ:()=>ay});var d=c(89731),e=c(8953),f=c(79892),g=c(42422),h=c(40236),i=c(93997),j=c(29021),k=c(21820),l=c(33873),m=c(8004),n=c(72626);let o=(0,n.h)("cli-tools/opencode-config"),p=/^[a-zA-Z0-9._:/-]{1,100}$/,q=/^[a-zA-Z0-9._:/@-]{1,200}$/,r="CM_OPENCODE_LOCAL_PROVIDER_CONFIG",s="OPENCODE_CONFIG",t=["opencode.json","opencode.jsonc",l.join(".opencode","opencode.json"),l.join(".opencode","opencode.jsonc")],u=["opencode.json","opencode.jsonc"];async function v(){let a={};try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch("http://localhost:11434/api/tags",{signal:b.signal}).finally(()=>{clearTimeout(c)});if(!d.ok)return o.warn("ollama-api-returned"),{};let e=await d.text();if(e.length>1048576)return o.warn("ollama-api-response"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.models))return o.warn("invalid-ollama-api"),{};for(let b of f.models.slice(0,100))"string"==typeof b?.name&&p.test(b.name)&&(a[b.name]={name:function(a){let b=String(a.name),c=a.details;if(!c)return b;let d=[b];return"string"==typeof c.parameter_size&&/^[\d.]+[BKMGT]?B?$/i.test(c.parameter_size)&&d.push(c.parameter_size),"string"==typeof c.quantization_level&&/^[A-Z0-9_]{1,20}$/i.test(c.quantization_level)&&d.push(c.quantization_level),d.length>1?`${b} (${d.slice(1).join(", ")})`:b}(b)})}catch(a){a instanceof Error&&"AbortError"===a.name?o.warn("ollama-api-timeout"):o.warn("failed-to-fetch")}return a}async function w(){let a={};try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch("http://localhost:1234/v1/models",{signal:b.signal}).finally(()=>{clearTimeout(c)});if(!d.ok)return o.warn("lm-studio-api"),{};let e=await d.text();if(e.length>1048576)return o.warn("lm-studio-api"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.data))return o.warn("invalid-lm-studio"),{};for(let b of f.data.slice(0,100))"string"==typeof b?.id&&q.test(b.id)&&(a[b.id]={name:b.id})}catch(a){a instanceof Error&&"AbortError"===a.name?o.warn("lm-studio-api"):o.warn("failed-to-fetch")}return a}function x(a=process.env){let b=l.join(k.homedir(),".config");return l.join((0,m.T)(a.XDG_CONFIG_HOME,b,"XDG_CONFIG_HOME"),"opencode")}async function y(){let[a,b]=await Promise.all([v(),w()]),c={};return Object.keys(a).length>0&&(c.ollama={npm:"@ai-sdk/openai-compatible",name:"Ollama (local)",options:{baseURL:"http://localhost:11434/v1"},models:a}),Object.keys(b).length>0&&(c.lmstudio={npm:"@ai-sdk/openai-compatible",name:"LM Studio (local)",options:{baseURL:"http://localhost:1234/v1"},models:b}),c}async function z(a){let b=function(a=process.env){let b=(a[r]??"").trim().toLowerCase();return"worktree"===b||"project"===b?"worktree":"global"===b||"user"===b?"global":(""!==b&&"off"!==b&&"0"!==b&&"false"!==b&&"none"!==b&&o.warn("opencode-config-mode-unrecognised",{variable:r,value:b}),"off")}();if("off"===b)return{written:!1,configPath:null,reason:"disabled"};let c="worktree"===b?function(a){let b=l.resolve(a);try{if(!j.lstatSync(b).isDirectory())throw Error(`Path is not a directory: ${b}`)}catch(a){if("ENOENT"===a.code)throw Error(`Path does not exist: ${b}`);throw a}return j.realpathSync(b)}(a):null,d=function(a,b=process.env){if(""!==(b[s]??"").trim())return`env:${s}`;if(null!==a)for(let b of t){let c=l.join(a,b);if(j.existsSync(c))return c}let c=x(b);for(let a of u){let b=l.join(c,a);if(j.existsSync(b))return b}return null}(c);if(null!==d)return o.info("opencode-config-generation-skipped",{mode:b,owned:d}),{written:!1,configPath:null,reason:"existing-config"};let e=c??x(),f=l.join(e,"opencode.json"),g=await y();if(0===Object.keys(g).length)return{written:!1,configPath:null,reason:"no-providers"};try{"global"===b&&j.mkdirSync(e,{recursive:!0}),j.writeFileSync(f,JSON.stringify({$schema:"https://opencode.ai/config.json",provider:g},null,2),{encoding:"utf-8",flag:"wx"})}catch(a){if("EEXIST"===a.code)return{written:!1,configPath:null,reason:"existing-config"};return o.warn("failed-to-write-opencodejson:error-insta"),{written:!1,configPath:null,reason:"write-failed"}}return o.info("opencode-config-generated",{mode:b,configPath:f}),{written:!0,configPath:f,reason:"written"}}var A=c(16983),B=c(46684),C=c(79646),D=c(28354),E=c(39333),F=c(1305),G=c(49791),H=c(62887),I=c(72272),J=c(49154),K=c(33294),L=c(27870),M=c(57510),N=c(59409),O=c(75356),P=c(98211),Q=c(90488),R=c(85322);let S=(0,n.h)("lib/hooks/sources/opencode/ingest");async function T(a,b,c){let d=(0,N.VM)(R.k),e=(0,P.Lu)(b.raw,b.receivedAt);if(!e)return S.info("opencode-permission-unparsed",{worktreeId:a.worktreeId,instanceId:c}),!1;let f=await (0,I.t)(d,a,e,d.parsePermissionRequest(b.raw));return S.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 U(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 S.info("opencode-stop-unresolved-target",{worktreeId:a.worktreeId});let i=await f(g,h,R.k,b);S.info("opencode-stop-applied",{worktreeId:a.worktreeId,instanceId:b,taskId:i.taskId,taskEventApplied:i.taskEventApplied,verificationRunId:i.verificationRunId})}async function V(a,b){let c=a.instanceId??R.k;try{let d=(0,N.VM)(R.k),e=(0,K.classifyAgentEventDelivery)({worktreeId:a.worktreeId,cliToolId:R.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 S.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,H.h9)??null,sessionId:b.conversationId,message:(function(a){let b=(0,M.Qd)(a.raw.properties)?a.raw.properties:{};if(a.detail===O.aF)return(0,M.NZ)(b,["metadata","command"])??(0,M.O2)(b,"permission");if(a.detail===O.Tm){let a=b.questions;return Array.isArray(a)&&(0,M.Qd)(a[0])?(0,M.O2)(a[0],"question"):null}return a.detail===O.vE?(0,M.NZ)(b,["error","data","message"])??(0,M.NZ)(b,["error","name"]):null})(b)?.slice(0,L.lY)??null,model:b.model},g={sessionStartMayArriveLate:d.capabilities.sessionStartMayArriveLate};if("notification"===b.event&&b.detail===O.aF){f.decisionId=(0,M.O2)((0,M.Qd)(b.raw.properties)?b.raw.properties:{},"id");let d=(0,P.LF)(b.raw,b.receivedAt);f.toolName=d?.toolName??null,f.decisionPatterns=d?.patterns??null,f.promptSettled=await T(a,b,c),(0,K.recordAgentEvent)(a.worktreeId,R.k,c,f,g);return}if("notification"===b.event&&b.detail===O.C8){f.decisionId=(0,O.Mn)(b.raw),f.promptSettled=!!(0,N.VM)(R.k).capabilities.permissionReplyReleasesPrompt||(S.info("opencode-permission-reply-not-releasing",{worktreeId:a.worktreeId,instanceId:c,reason:"capability-permissionReplyReleasesPrompt-false"}),!1),(0,K.recordAgentEvent)(a.worktreeId,R.k,c,f,g),S.info("opencode-permission-reply-observed",{worktreeId:a.worktreeId,instanceId:c,decisionId:f.decisionId,released:f.promptSettled});return}if((0,K.recordAgentEvent)(a.worktreeId,R.k,c,f,g),"notification"===b.event&&b.detail===O.Tm){let d=(0,N.VM)(R.k).parseQuestion(b.raw);d&&((0,K.recordAskUserQuestion)(a.worktreeId,R.k,c,d,b.receivedAt),(0,K.reportQuestionPending)(a.worktreeId,R.k,c,{toolName:J.GF,decisionId:d.promptId,detail:O.Tm},b.receivedAt),S.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,Q.Vo)(a,c,f.message??null,b.receivedAt);return}if("stop"===b.event)return void await U(a,c);"notification"===b.event&&b.detail===O.vE&&await (0,Q.dJ)(a,c,(0,M.NZ)((0,M.Qd)(b.raw.properties)?b.raw.properties:{},["error","name"]),f.message??null,b.conversationId,b.receivedAt),S.info("opencode-event-received",{worktreeId:a.worktreeId,instanceId:c,event:b.event,detail:b.detail})}catch(d){S.error("opencode-event-ingest-failed",{worktreeId:a.worktreeId,instanceId:c,event:b.event,error:d instanceof Error?d.message:String(d)})}}var W=c(84574),X=c(85965),Y=c(33198);let Z=(0,n.h)("lib/hooks/sources/opencode/runtime");function $(a,b){return{worktreeId:a,cliToolId:"opencode",instanceId:b}}async function _(a,b){try{return await (0,W.CU)(a,b)}catch(b){return Z.warn("opencode-port-reserve-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),null}}let aa=[0,500,1e3,2e3,4e3];async function ab(a,b){for(let[c,d]of aa.entries()){d>0&&await new Promise(a=>setTimeout(a,d));let e=await (0,G.sc)(b);if("healthy"===e.kind)return c>0&&Z.info("opencode-server-reachable-after-retry",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,attempt:c}),e.health;if("rejected"===e.kind){Z.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 ac(a){try{let b=(0,W.hC)(a);if(null===b)return!1;if((0,Y.wb)(a))return!0;let c=await ab(a,b);if(!c)return Z.info("opencode-server-not-reachable",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,attempts:aa.length}),!1;await X.cC.subscribe(a,b=>{V(a,b)});let d=await ad(a);return Z.info("opencode-event-stream-attached",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,version:c.version,activity:d}),!0}catch(b){return Z.warn("opencode-event-stream-attach-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),!1}}async function ad(a){let b=null;try{b=await X.cC.probeActivity(a)}catch(b){Z.debug("opencode-activity-probe-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)})}return(0,Y.yn)(a,b,Date.now()),b}async function ae(a,b){try{if((0,Y.wb)(a))return!0;let c=await (0,W.jp)(a,b);if(null===c)return!1;return await ac(a)}catch(b){return Z.warn("opencode-event-stream-resume-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),!1}}async function af(a){let b=a.instanceId??a.cliToolId;try{let c=(0,W.hC)(a);if(null===c)return!1;let d=(0,Y.lf)(a);if("live"!==d.state)return Z.info("opencode-abort-skipped-not-live",{worktreeId:a.worktreeId,instanceId:b,port:c,liveness:d.state}),!1;let e=(0,Y.ym)(a);if(null===e)return Z.info("opencode-abort-skipped-no-session",{worktreeId:a.worktreeId,instanceId:b,port:c}),!1;let f=(0,Y.H1)(a,e,2e3);if(!await (0,G.UR)(c,e))return f.cancel(),Z.warn("opencode-abort-rejected",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e}),!1;if(!await f.seen)return Z.warn("opencode-abort-unconfirmed",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e,timeoutMs:2e3}),!1;return Z.info("opencode-abort-confirmed",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e}),!0}catch(c){return Z.warn("opencode-abort-failed",{worktreeId:a.worktreeId,instanceId:b,error:c instanceof Error?c.message:String(c)}),!1}}async function ag(a){try{await (0,Y.FN)(a),(0,W.kE)(a)}catch(b){Z.warn("opencode-event-stream-release-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)})}}var ah=c(18529),ai=c(70849),aj=c(27939),ak=c(93949),al=c(20610),am=c(78099),an=c(18140),ao=c(79748);let ap=/^timestamp=(\S+)/,aq=/no such column: ?[A-Za-z0-9_.]*/;async function ar(a,b){let c;try{c=await (0,ao.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 as(a,b=function(){let a=process.env.XDG_DATA_HOME||(0,l.join)((0,k.homedir)(),".local","share");return(0,l.join)(a,"opencode","log","opencode.log")}()){let c=await ar(b,262144);if(null===c)return null;let d=a-1e3;for(let a of c.split("\n")){let b=ap.exec(a);if(!b)continue;let c=Date.parse(b[1]);if(Number.isNaN(c)||c<d)continue;let e=aq.exec(a);if(e)return e[0]}return null}var at=c(46749),au=c(77093);let av=(0,n.h)("cli-tools/opencode"),aw=(0,D.promisify)(C.execFile),ax=[0,50,100,200];function ay(a,b){return a?`${a}
3
3
 
4
- [添付画像: ${b}]`:`[添付画像: ${b}]`}class az extends d.Mj{navigationKeys(){return{keys:e.sM,leaderKey:e.Mx}}async isInstalled(){return null!==(await (0,an.$s)()).executable}async launchSession(a,b,c){let d=await (0,an.$s)(),e=d.executable;if(!e)throw(0,am.Tl)(this,(0,an.mV)(d));let g=this.getSessionName(a,c),h=$(a,c),i=(0,B.r)({warnSidebar:!0}),j=await (0,f.N)(g);if(j){if(await this.reconcileExistingSession(g,b,{windowWidth:i,windowHeight:A.xT}),await this.isToolLive(g,{confirm:!0})){await ae(h,b),av.info("opencode-session-exists");return}av.warn("opencode-session-relaunch",{sessionName:g}),await ag(h)}(0,F.Fq)(h);try{await z(b),j||await this.createLaunchPane(g,b);try{await aw("tmux",["resize-window","-t",(0,f.lA)(g),"-x",String(i),"-y",String(A.xT)])}catch{}await _(h,b);let d=(0,F.wK)({target:h,executablePath:e.path,worktreePath:b}),k=(0,aj.pr)(h,b),l=null===k?d:(0,aj.XO)(d,k);null!==k&&av.info("opencode-session-resumed",{worktreeId:a,instanceId:c??this.id,sessionId:k});let m=Date.now();if(await (0,f.V1)(g,(0,at.Y)(l),!0),await this.waitForReady(g),!await ac(h)&&null!==(0,W.hC)(h)){let b=await as(m);if(null!==b)throw av.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").`)}av.info("started-opencode-session")}catch(b){let a=(0,au.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 av.info("opencode-composer-detected",{attempt:b}),!0;if(g.LO.test(c))return av.info("opencode-overlay-detected",{attempt:b}),!0}catch{}await new Promise(a=>setTimeout(a,500))}return av.info("opencode-ready-detection-timeout"),!1}async trySendViaServer(a,b,c){let d=a.instanceId??a.cliToolId;try{let e=(0,W.hC)(a);if(null===e)return!1;let f=(0,Y.lf)(a);if("live"!==f.state)return av.info("opencode-send-skipped-not-live",{worktreeId:a.worktreeId,instanceId:d,port:e,liveness:f.state}),!1;let g=(0,Y.ym)(a);if(null===g)return av.info("opencode-send-skipped-no-session",{worktreeId:a.worktreeId,instanceId:d,port:e}),!1;let h=[{type:"text",text:b}];void 0!==c&&h.push({type:"file",mime:(0,E.$Y)((0,l.extname)(c)),filename:(0,l.basename)(c),url:(0,G.fy)(c)});let i=(0,G.CH)(),j=(0,ah.QH)((0,ah.Q1)(a));if(!await (0,G.wZ)(e,g,i,h,j))return!1;if(!await this.verifyPostedMessage(e,g,i,b))return av.warn("opencode-send-unverified",{worktreeId:a.worktreeId,instanceId:d,port:e,sessionId:g,messageId:i,hasImage:void 0!==c}),!1;return av.info("opencode-send-delivered-via-api",{worktreeId:a.worktreeId,instanceId:d,port:e,sessionId:g,messageId:i,hasImage:void 0!==c}),!0}catch(b){return av.warn("opencode-send-api-failed",{worktreeId:a.worktreeId,instanceId:d,error:(0,au.u1)(b)}),!1}}async verifyPostedMessage(a,b,c,d){for(let e of ax){e>0&&await new Promise(a=>setTimeout(a,e));let f=await (0,G.ep)(a,b,c);if("found"===f.kind)return f.texts.includes(d);if("missing"===f.kind)break}return!1}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(await this.requireSession("OpenCode",a,c,{relaunch:!0}),await this.trySendViaServer($(a,c),b))return void(0,i.gm)(d);try{await (0,h.FW)({sessionName:d,message:b,cliToolId:"opencode",composer:this.describeComposer()}),(0,i.gm)(d),av.info("sent-message-to-opencode-session")}catch(b){let a=(0,au.u1)(b);throw Error(`Failed to send message to OpenCode: ${a}`)}}supportsImage(){return!0}async sendMessageWithImage(a,b,c,d){let e=this.getSessionName(a,d);await this.requireSession("OpenCode",a,d,{relaunch:!1});let f=$(a,d);if(await this.trySendViaServer(f,b,c))return void(0,i.gm)(e);av.info("opencode-image-degraded-to-path",{worktreeId:a,instanceId:d??this.id}),await this.sendMessage(a,ay(b,c),d)}async killSession(a,b){let c=this.getSessionName(a,b),d=$(a,b),e=(0,W.hC)(d),g=await (0,ai.LQ)(d).catch(()=>null);g&&!g.captured&&av.info("opencode-session-capture-skipped",{sessionName:c,reason:g.skipped}),await ag(d);try{if(await (0,f.N)(c)){await (0,f.V1)(c,"/exit",!1),await new Promise(a=>setTimeout(a,al.pL)),await (0,f.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,al.KI));let a=await (0,ak.rY)({sessionAlive:()=>(0,f.N)(c),portAnswering:null===e?null:async()=>await (0,G.Ok)(e)!==null});a.ok||(av.warn("opencode-graceful-exit-postcondition-failed",{sessionName:c,reason:a.reason,...null!==e?{port:e}:{}}),await (0,f.fY)(c))}else await (0,f.fY)(c);(0,i.gm)(c),av.info("stopped-opencode-session")}catch(a){throw av.error("session:stop-failed",{error:(0,au.u1)(a)}),a}}async interrupt(a,b){let c=this.getSessionName(a,b);if(await af($(a,b))){(0,i.gm)(c),av.info("opencode-interrupt-aborted-via-api");return}await (0,f.ds)(c,"Escape"),await new Promise(a=>setTimeout(a,al.os)),await (0,f.ds)(c,"Escape"),(0,i.gm)(c),av.info("opencode-interrupt-sent")}constructor(...a){super(...a),this.id="opencode",this.name="OpenCode",this.command="opencode"}}},52112:(a,b,c)=>{c.d(b,{H:()=>f});var d=c(61789),e=c(70605);let f={composer:(0,e.lU)({isComposerRow:a=>d.lE.test((0,d._A)(a)),atBottom:({contentLines:a},b)=>!a.slice(b+1).some(a=>{let b=(0,d._A)(a);return d.Ly.test(b)||d.kT.test(b)})}),dialogTop:(0,e.uM)(a=>(0,d.dx)(a)?.start??-1),composerHidesDialogs:!0}},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)},58546:(a,b,c)=>{c.d(b,{R:()=>e});var d=c(47967);let e={composer:d.Z,dialogTop:(0,d.u)(/△ Permission required|┃\s*Questions\s*$/),composerHidesDialogs:!1}},58846:(a,b,c)=>{c.d(b,{j:()=>g});var d=c(94154),e=c(68652),f=c(70605);let g={composer:(0,f.W2)(a=>(0,d.p4)(a)?.openingSeparator??-1),dialogTop:(0,f.o6)({footer:e._,rule:/^─{10,}$/,maxRows:120}),composerHidesDialogs:!0}},61878:(a,b,c)=>{c.d(b,{h9:()=>p,Yc:()=>r,zJ:()=>q,j4:()=>s});var d=c(61789),e=c(68652),f=c(46423),g=c(52112),h=c(58846),i=c(85237),j=c(69130),k=c(83342),l=c(89021),m=c(58546);let n={claude:h.j,codex:i.YH,antigravity:g.H,"command-code":j.E,copilot:k.b,opencode:l.m,"opencode-v2":m.R};var o=c(70605);let p=15;function q(a,b){let c=(0,e.N)((0,d.aJ)(a)),g=c.split("\n"),h=g.length-1;for(;h>=0&&""===g[h].trim();)h--;let i=g.slice(0,h+1);return{raw:a,clean:c,lines:g,contentLines:i,liveRegion:(0,o.BA)(void 0===b?void 0:n[b],b??null,{raw:a,contentLines:i}),lastLines:i.slice(-p).join("\n"),thinkingLines:i.slice(-f.$).join("\n")}}function r(a,b){return a.liveRegion.tool===b?a.liveRegion:(0,o.BA)(n[b],b,{raw:a.raw,contentLines:a.contentLines})}function s(a,b){let c=r(a,b);return c===a.liveRegion?a:{...a,liveRegion:c}}},68652:(a,b,c)=>{c.d(b,{N:()=>h,_:()=>g});let d=/^(?:\s|\x1b\[[0-9;]*m)*Esc\s+to\s+cancel\s*[·•]\s*Tab\s+to\s+amend/i,e=/^(?:\s|\x1b\[[0-9;]*m)*Enter\s+to\s+select\b.*\bnavigate\b/i,f=/^\s*[>❯›]\s*(?:\d{1,2}[.)])?|esc\s+to\s+interrupt|[✻✽✶✢✳⦿◉●⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏]\s+.+…/i;function g(a){return d.test(a)||e.test(a)}function h(a){if(""===a)return"";let b=a.split("\n"),c=-1;for(let a=b.length-1;a>=0;a--)if(g(b[a])){c=a;break}let d=b;return c>=0&&(d=b.slice(c+1).some(a=>f.test(a))?b.slice(c+1):b.slice(0,c+1)),(function(a){let b=[],c=!1;for(let d of a){let a=""===d.trim();a&&c||(b.push(d),c=a)}for(;b.length>0&&""===b[b.length-1].trim();)b.pop();return b})(d).join("\n")}},69130:(a,b,c)=>{c.d(b,{E:()=>g});var d=c(61789),e=c(70605);let f=/^❯\s*\d{1,2}[.)]\s/,g={composer:(0,e.W2)(a=>{let b=(0,d.I$)(a);return b<0||f.test((0,d.aJ)(a[b+1]??""))?-1:b}),dialogTop:(0,e.o6)({footer:a=>/↑\/↓ navigate · enter select/.test(a),rule:/^─{10,}$/,maxRows:120}),composerHidesDialogs:!0}},70605:(a,b,c)=>{function d(a,b){return{tool:a,anchor:"none",startRow:0,composerAtBottom:!1,composerHidesDialogs:!1,lines:b}}function e(a,b,c){let{contentLines:e}=c;if(void 0===a)return d(b,e);let f=a.composer.locate(c);if(null!==f)return{tool:b,anchor:"composer",startRow:f.start,composerEndRow:f.end??f.start,composerAtBottom:f.atBottom??!0,composerHidesDialogs:a.composerHidesDialogs,lines:e.slice(f.start)};let g=a.dialogTop?.locate(c)??null;return null!==g?{tool:b,anchor:"dialog",startRow:g.start,composerAtBottom:!1,composerHidesDialogs:a.composerHidesDialogs,lines:e.slice(g.start)}:d(b,e)}function f(a,b){return b.isPrompt&&b.promptData?.type==="multiple_choice"&&a.composerAtBottom&&a.composerHidesDialogs}function g(a,b){return null!==b&&!!a.composerAtBottom&&("numbered"===b.answerMode||a.composerHidesDialogs)}function h(a){return{locate({contentLines:b}){let c=a(b);return c<0?null:{start:c,end:m(b),atBottom:!0}}}}function i(a){return{locate(b){let{contentLines:c}=b;for(let d=c.length-1;d>=0;d--)if(a.isComposerRow(c[d]))return{start:d,end:d,atBottom:a.atBottom(b,d)};return null}}}function j(a){return{locate({contentLines:b}){let c=a(b);return c<0?null:{start:c}}}}c.d(b,{$$:()=>g,BA:()=>e,Sx:()=>m,W2:()=>h,lU:()=>i,o6:()=>l,uM:()=>j,z8:()=>f});let k=/^\s*(?:[❯›>●]\s*)?1[.)]\s+\S/;function l(a){return j(b=>{let c=-1;for(let d=b.length-1;d>=0;d--)if(a.footer(b[d])){c=d;break}if(c<0)return -1;let d=Math.max(0,c-a.maxRows),e=-1;for(let a=c-1;a>=d;a--)if(k.test(b[a])){e=a;break}if(e<0)return -1;for(let c=e-1;c>=d;c--)if(a.rule.test(b[c].trimEnd()))return c;return -1})}function m(a){let b=a.length-1;for(;b>=0&&""===a[b].trim();)b--;return b}},70849:(a,b,c)=>{c.d(b,{LQ:()=>k,SW:()=>l});var d=c(72626),e=c(84574),f=c(33294),g=c(77634),h=c(27939);let i=(0,d.h)("lib/session/opencode-session-recall");async function j(a,b){let c=new Set,d=await (0,g.GP)(a,b);for(let b=0;b<3;b+=1){if(null===d)return null;if(null===d.parentId||c.has(d.parentId))break;c.add(d.parentId),i.debug("opencode-session-parent-hop",{from:d.id,to:d.parentId}),d=await (0,g.GP)(a,d.parentId)}return d}async function k(a){let b=a.instanceId??a.cliToolId,c=(0,e.hC)(a);if(null===c)return{captured:!1,skipped:"no-port"};let d=(0,f.getLastAgentEvent)(a.worktreeId,"opencode",a.instanceId)?.sessionId;if(!(0,h.jp)(d))return{captured:!1,skipped:"no-session-observed"};let g=await j(c,d);if(null===g)return{captured:!1,skipped:"session-unreadable"};if(null===g.directory)return{captured:!1,skipped:"no-directory"};let k=(0,e.U9)(a);return null!==k&&k!==g.directory?(i.warn("opencode-session-capture-directory-mismatch",{worktreeId:a.worktreeId,instanceId:b,expected:k,reported:g.directory}),{captured:!1,skipped:"directory-mismatch"}):(0,h.F_)(a,{sessionId:g.id,title:g.title,worktreePath:g.directory})?(i.info("opencode-session-captured",{worktreeId:a.worktreeId,instanceId:b,sessionId:g.id,viaParentOf:g.id===d?null:d}),{captured:!0,memory:{sessionId:g.id,title:g.title,worktreePath:g.directory,updatedAt:Date.now()}}):{captured:!1,skipped:"not-persisted"}}async function l(a){let b=(0,e.hC)(a),c=(0,f.getLastAgentEvent)(a.worktreeId,"opencode",a.instanceId)?.sessionId;if(null!==b&&(0,h.jp)(c)){let a=await j(b,c);if(null!==a)return a.id}return(0,h.KA)(a)?.sessionId??null}},72272:(a,b,c)=>{c.d(b,{t:()=>i});var d=c(72626),e=c(50474),f=c(25071),g=c(17287);let h=(0,d.h)("lib/hooks/permission-adjudication");async function i(a,b,d,j,k="event"){let l=b.instanceId??b.cliToolId,m={worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l},{resolvePermissionRequest:n}=await Promise.all([c.e(3241),c.e(3718)]).then(c.bind(c,43241)),o=n(m,j),p="allow"===o.behavior?{kind:"allowOnce"}:{kind:"abstain"};if("abstain"===p.kind){let c=(0,e.y_)(a);c.safe||h.warn("permission-request-abstain-blocks-agent",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l,toolName:j?.toolName??null,decisionId:d.id,reason:o.reason,consequence:c.summary,blocksForMs:c.blocksForMs})}let{delivery:q}=await (0,f.GW)(a,b,d,p),r=q?.delivered===!0,s=r&&a.capabilities.permissionReplyReleasesPrompt;return(0,g.nL)(b.worktreeId,b.cliToolId,b.instanceId,{decisionId:d.id,toolName:j?.toolName??null,behavior:"allow"===o.behavior?"allow":null,reason:o.reason,delivered:r,releasedPrompt:s,trigger:k,at:d.askedAt}),h.info("permission-decision-adjudicated",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l,decisionId:d.id,toolName:j?.toolName??null,behavior:o.behavior,reason:o.reason,suppressedBy:o.suppressedBy,delivered:r,settled:s,trigger:k}),{decisionId:d.id,behavior:"allow"===o.behavior?"allow":null,reason:o.reason,delivered:r,settled:s}}},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]}`))}},83342:(a,b,c)=>{c.d(b,{b:()=>f});var d=c(61789),e=c(70605);let f={composer:(0,e.W2)(a=>(0,d.wv)(a)),dialogTop:(0,e.uM)(function(a){let b=(0,e.Sx)(a),c=-1;for(let d=b;d>=Math.max(0,b-2);d--)if(a[d].trimStart().startsWith("╰")){c=d;break}if(c<0)return -1;for(let b=c-1;b>=Math.max(0,c-120);b--)if(a[b].trimStart().startsWith("╭"))return b;return -1}),composerHidesDialogs:!1}},85237:(a,b,c)=>{c.d(b,{Bh:()=>j,Ut:()=>i,YH:()=>k});var d=c(61789),e=c(65912),f=c(94154),g=c(51297),h=c(70605);function i(a){for(let b=a.length-1;b>=Math.max(0,a.length-10);b--){let c=a[b];if(d.aW.test(c)||d.UO.test(c))return b}return -1}function j(a){let b=i(a),c=b>=0?b-1:a.length-1;for(;c>=0&&""===a[c].trim();)c--;return c+1}let k={composer:{locate({raw:a,contentLines:b}){let c=j(b),i=(0,e.Gs)(a,b,c),k=(0,d.RK)(b);if(k>=0)return{start:k,end:function(a,b,c,d){let e=a.split("\n"),h=(0,f.mO)(e);if(null===h||(0,g.aJ)(e[h.firstRow]).trim()!==b[c]?.trim())return c;let i=Math.min(c+(h.lastRow-h.firstRow),d-1);return Math.max(c,i)}(a,b,k,c),atBottom:i};if(!i)return null;let l=(0,h.Sx)(b.slice(0,c));return l<0?null:{start:l,end:l,atBottom:!0}}},composerHidesDialogs:!0}},89021:(a,b,c)=>{c.d(b,{m:()=>e});var d=c(47967);let e={composer:d.Z,dialogTop:(0,d.u)(/△ Permission required/),composerHidesDialogs:!1}},89731:(a,b,c)=>{c.d(b,{Mj:()=>E,Km:()=>F});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(35583);let z=(0,e.promisify)(d.exec),A=(0,t.h)("cli-tools/base"),B=RegExp(`${s.ZM}=(?:'([^']*)'|"([^"]*)"|(\\S+))`,"g"),C=new Set,D=new Set;class E{async isInstalled(){try{return await z(`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,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),C.add(a),await (0,g.zT)(a,c)}takeAdoptionMark(a,b){try{let c=this.getSessionName(a,b);return C.delete(c)?c:null}catch{return null}}async warnIfHookUrlIsStale(a,b,d){if(!D.has(b))try{let f=await (0,g.Xg)(b,{startLine:-x.eu});D.add(b);let h=function(a){let b=null;for(let c of(0,q.aJ)(a).matchAll(B)){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;A.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){A.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?(A.info("session:liveness-confirm-recovered",{cliToolId:this.id,firstReason:d.reason}),!0):(A.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 A.warn("session:relaunch-skipped-no-path",{cliToolId:this.id,worktreeId:a});A.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,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 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 F(a,b,c){a instanceof E&&a.warnIfRunningSessionHookUrlIsStale(b,c).catch(()=>{})}},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 az extends d.Mj{navigationKeys(){return{keys:e.sM,leaderKey:e.Mx}}async isInstalled(){return null!==(await (0,an.$s)()).executable}async launchSession(a,b,c){let d=await (0,an.$s)(),e=d.executable;if(!e)throw(0,am.Tl)(this,(0,an.mV)(d));let g=this.getSessionName(a,c),h=$(a,c),i=(0,B.r)({warnSidebar:!0}),j=await (0,f.N)(g);if(j){if(await this.reconcileExistingSession(g,b,{windowWidth:i,windowHeight:A.xT}),await this.isToolLive(g,{confirm:!0})){await ae(h,b),av.info("opencode-session-exists");return}av.warn("opencode-session-relaunch",{sessionName:g}),await ag(h)}(0,F.Fq)(h);try{await z(b),j||await this.createLaunchPane(g,b);try{await aw("tmux",["resize-window","-t",(0,f.lA)(g),"-x",String(i),"-y",String(A.xT)])}catch{}await _(h,b);let d=(0,F.wK)({target:h,executablePath:e.path,worktreePath:b}),k=(0,aj.pr)(h,b),l=null===k?d:(0,aj.XO)(d,k);null!==k&&av.info("opencode-session-resumed",{worktreeId:a,instanceId:c??this.id,sessionId:k});let m=Date.now();if(await (0,f.V1)(g,(0,at.Y)(l),!0),await this.waitForReady(g),!await ac(h)&&null!==(0,W.hC)(h)){let b=await as(m);if(null!==b)throw av.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").`)}av.info("started-opencode-session")}catch(b){let a=(0,au.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 av.info("opencode-composer-detected",{attempt:b}),!0;if(g.LO.test(c))return av.info("opencode-overlay-detected",{attempt:b}),!0}catch{}await new Promise(a=>setTimeout(a,500))}return av.info("opencode-ready-detection-timeout"),!1}async trySendViaServer(a,b,c){let d=a.instanceId??a.cliToolId;try{let e=(0,W.hC)(a);if(null===e)return!1;let f=(0,Y.lf)(a);if("live"!==f.state)return av.info("opencode-send-skipped-not-live",{worktreeId:a.worktreeId,instanceId:d,port:e,liveness:f.state}),!1;let g=(0,Y.ym)(a);if(null===g)return av.info("opencode-send-skipped-no-session",{worktreeId:a.worktreeId,instanceId:d,port:e}),!1;let h=[{type:"text",text:b}];void 0!==c&&h.push({type:"file",mime:(0,E.$Y)((0,l.extname)(c)),filename:(0,l.basename)(c),url:(0,G.fy)(c)});let i=(0,G.CH)(),j=(0,ah.QH)((0,ah.Q1)(a));if(!await (0,G.wZ)(e,g,i,h,j))return!1;if(!await this.verifyPostedMessage(e,g,i,b))return av.warn("opencode-send-unverified",{worktreeId:a.worktreeId,instanceId:d,port:e,sessionId:g,messageId:i,hasImage:void 0!==c}),!1;return av.info("opencode-send-delivered-via-api",{worktreeId:a.worktreeId,instanceId:d,port:e,sessionId:g,messageId:i,hasImage:void 0!==c}),!0}catch(b){return av.warn("opencode-send-api-failed",{worktreeId:a.worktreeId,instanceId:d,error:(0,au.u1)(b)}),!1}}async verifyPostedMessage(a,b,c,d){for(let e of ax){e>0&&await new Promise(a=>setTimeout(a,e));let f=await (0,G.ep)(a,b,c);if("found"===f.kind)return f.texts.includes(d);if("missing"===f.kind)break}return!1}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(await this.requireSession("OpenCode",a,c,{relaunch:!0}),await this.trySendViaServer($(a,c),b))return void(0,i.gm)(d);try{await (0,h.FW)({sessionName:d,message:b,cliToolId:"opencode",composer:this.describeComposer()}),(0,i.gm)(d),av.info("sent-message-to-opencode-session")}catch(b){let a=(0,au.u1)(b);throw Error(`Failed to send message to OpenCode: ${a}`)}}supportsImage(){return!0}async sendMessageWithImage(a,b,c,d){let e=this.getSessionName(a,d);await this.requireSession("OpenCode",a,d,{relaunch:!1});let f=$(a,d);if(await this.trySendViaServer(f,b,c))return void(0,i.gm)(e);av.info("opencode-image-degraded-to-path",{worktreeId:a,instanceId:d??this.id}),await this.sendMessage(a,ay(b,c),d)}async killSession(a,b){let c=this.getSessionName(a,b),d=$(a,b),e=(0,W.hC)(d),g=await (0,ai.LQ)(d).catch(()=>null);g&&!g.captured&&av.info("opencode-session-capture-skipped",{sessionName:c,reason:g.skipped}),await ag(d);try{if(await (0,f.N)(c)){await (0,f.V1)(c,"/exit",!1),await new Promise(a=>setTimeout(a,al.pL)),await (0,f.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,al.KI));let a=await (0,ak.rY)({sessionAlive:()=>(0,f.N)(c),portAnswering:null===e?null:async()=>await (0,G.Ok)(e)!==null});a.ok||(av.warn("opencode-graceful-exit-postcondition-failed",{sessionName:c,reason:a.reason,...null!==e?{port:e}:{}}),await (0,f.fY)(c))}else await (0,f.fY)(c);(0,i.gm)(c),av.info("stopped-opencode-session")}catch(a){throw av.error("session:stop-failed",{error:(0,au.u1)(a)}),a}}async interrupt(a,b){let c=this.getSessionName(a,b);if(await af($(a,b))){(0,i.gm)(c),av.info("opencode-interrupt-aborted-via-api");return}await (0,f.ds)(c,"Escape"),await new Promise(a=>setTimeout(a,al.os)),await (0,f.ds)(c,"Escape"),(0,i.gm)(c),av.info("opencode-interrupt-sent")}constructor(...a){super(...a),this.id="opencode",this.name="OpenCode",this.command="opencode"}}},52112:(a,b,c)=>{c.d(b,{H:()=>f});var d=c(42422),e=c(70605);let f={composer:(0,e.lU)({isComposerRow:a=>d.lE.test((0,d._A)(a)),atBottom:({contentLines:a},b)=>!a.slice(b+1).some(a=>{let b=(0,d._A)(a);return d.Ly.test(b)||d.kT.test(b)})}),dialogTop:(0,e.uM)(a=>(0,d.dx)(a)?.start??-1),composerHidesDialogs:!0}},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)},58546:(a,b,c)=>{c.d(b,{R:()=>e});var d=c(47967);let e={composer:d.Z,dialogTop:(0,d.u)(/△ Permission required|┃\s*Questions\s*$/),composerHidesDialogs:!1}},58846:(a,b,c)=>{c.d(b,{j:()=>g});var d=c(94154),e=c(68652),f=c(70605);let g={composer:(0,f.W2)(a=>(0,d.p4)(a)?.openingSeparator??-1),dialogTop:(0,f.o6)({footer:e._,rule:/^─{10,}$/,maxRows:120}),composerHidesDialogs:!0}},61878:(a,b,c)=>{c.d(b,{h9:()=>p,Yc:()=>r,zJ:()=>q,j4:()=>s});var d=c(42422),e=c(68652),f=c(46423),g=c(52112),h=c(58846),i=c(85237),j=c(69130),k=c(83342),l=c(89021),m=c(58546);let n={claude:h.j,codex:i.YH,antigravity:g.H,"command-code":j.E,copilot:k.b,opencode:l.m,"opencode-v2":m.R};var o=c(70605);let p=15;function q(a,b){let c=(0,e.N)((0,d.aJ)(a)),g=c.split("\n"),h=g.length-1;for(;h>=0&&""===g[h].trim();)h--;let i=g.slice(0,h+1);return{raw:a,clean:c,lines:g,contentLines:i,liveRegion:(0,o.BA)(void 0===b?void 0:n[b],b??null,{raw:a,contentLines:i}),lastLines:i.slice(-p).join("\n"),thinkingLines:i.slice(-f.$).join("\n")}}function r(a,b){return a.liveRegion.tool===b?a.liveRegion:(0,o.BA)(n[b],b,{raw:a.raw,contentLines:a.contentLines})}function s(a,b){let c=r(a,b);return c===a.liveRegion?a:{...a,liveRegion:c}}},67208:(a,b,c)=>{c.d(b,{r:()=>d,x:()=>e});let d=/\btype\s+to\s+search\b|\bsearch\s+\w+\s*(?:…|\.\.\.)|(?:^|·)\s*\/\s+search\b/im,e=/^\s*(?:❯ +)?Approve\s+ctrl\+a\b[^\n]*\n\s*(?:❯ +)?Cancel\s+esc\s*$/im},68652:(a,b,c)=>{c.d(b,{N:()=>h,_:()=>g});let d=/^(?:\s|\x1b\[[0-9;]*m)*Esc\s+to\s+cancel\s*[·•]\s*Tab\s+to\s+amend/i,e=/^(?:\s|\x1b\[[0-9;]*m)*Enter\s+to\s+select\b.*\bnavigate\b/i,f=/^\s*[>❯›]\s*(?:\d{1,2}[.)])?|esc\s+to\s+interrupt|[✻✽✶✢✳⦿◉●⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏]\s+.+…/i;function g(a){return d.test(a)||e.test(a)}function h(a){if(""===a)return"";let b=a.split("\n"),c=-1;for(let a=b.length-1;a>=0;a--)if(g(b[a])){c=a;break}let d=b;return c>=0&&(d=b.slice(c+1).some(a=>f.test(a))?b.slice(c+1):b.slice(0,c+1)),(function(a){let b=[],c=!1;for(let d of a){let a=""===d.trim();a&&c||(b.push(d),c=a)}for(;b.length>0&&""===b[b.length-1].trim();)b.pop();return b})(d).join("\n")}},69130:(a,b,c)=>{c.d(b,{E:()=>g});var d=c(42422),e=c(70605);let f=/^❯\s*\d{1,2}[.)]\s/,g={composer:(0,e.W2)(a=>{let b=(0,d.I$)(a);return b<0||f.test((0,d.aJ)(a[b+1]??""))?-1:b}),dialogTop:(0,e.o6)({footer:a=>/↑\/↓ navigate · enter select/.test(a),rule:/^─{10,}$/,maxRows:120}),composerHidesDialogs:!0}},70605:(a,b,c)=>{function d(a,b){return{tool:a,anchor:"none",startRow:0,composerAtBottom:!1,composerHidesDialogs:!1,lines:b}}function e(a,b,c){let{contentLines:e}=c;if(void 0===a)return d(b,e);let f=a.composer.locate(c);if(null!==f)return{tool:b,anchor:"composer",startRow:f.start,composerEndRow:f.end??f.start,composerAtBottom:f.atBottom??!0,composerHidesDialogs:a.composerHidesDialogs,lines:e.slice(f.start)};let g=a.dialogTop?.locate(c)??null;return null!==g?{tool:b,anchor:"dialog",startRow:g.start,composerAtBottom:!1,composerHidesDialogs:a.composerHidesDialogs,lines:e.slice(g.start)}:d(b,e)}function f(a,b){return b.isPrompt&&b.promptData?.type==="multiple_choice"&&a.composerAtBottom&&a.composerHidesDialogs}function g(a,b){return null!==b&&!!a.composerAtBottom&&("numbered"===b.answerMode||a.composerHidesDialogs)}function h(a){return{locate({contentLines:b}){let c=a(b);return c<0?null:{start:c,end:m(b),atBottom:!0}}}}function i(a){return{locate(b){let{contentLines:c}=b;for(let d=c.length-1;d>=0;d--)if(a.isComposerRow(c[d]))return{start:d,end:d,atBottom:a.atBottom(b,d)};return null}}}function j(a){return{locate({contentLines:b}){let c=a(b);return c<0?null:{start:c}}}}c.d(b,{$$:()=>g,BA:()=>e,Sx:()=>m,W2:()=>h,lU:()=>i,o6:()=>l,uM:()=>j,z8:()=>f});let k=/^\s*(?:[❯›>●]\s*)?1[.)]\s+\S/;function l(a){return j(b=>{let c=-1;for(let d=b.length-1;d>=0;d--)if(a.footer(b[d])){c=d;break}if(c<0)return -1;let d=Math.max(0,c-a.maxRows),e=-1;for(let a=c-1;a>=d;a--)if(k.test(b[a])){e=a;break}if(e<0)return -1;for(let c=e-1;c>=d;c--)if(a.rule.test(b[c].trimEnd()))return c;return -1})}function m(a){let b=a.length-1;for(;b>=0&&""===a[b].trim();)b--;return b}},70849:(a,b,c)=>{c.d(b,{LQ:()=>k,SW:()=>l});var d=c(72626),e=c(84574),f=c(33294),g=c(77634),h=c(27939);let i=(0,d.h)("lib/session/opencode-session-recall");async function j(a,b){let c=new Set,d=await (0,g.GP)(a,b);for(let b=0;b<3;b+=1){if(null===d)return null;if(null===d.parentId||c.has(d.parentId))break;c.add(d.parentId),i.debug("opencode-session-parent-hop",{from:d.id,to:d.parentId}),d=await (0,g.GP)(a,d.parentId)}return d}async function k(a){let b=a.instanceId??a.cliToolId,c=(0,e.hC)(a);if(null===c)return{captured:!1,skipped:"no-port"};let d=(0,f.getLastAgentEvent)(a.worktreeId,"opencode",a.instanceId)?.sessionId;if(!(0,h.jp)(d))return{captured:!1,skipped:"no-session-observed"};let g=await j(c,d);if(null===g)return{captured:!1,skipped:"session-unreadable"};if(null===g.directory)return{captured:!1,skipped:"no-directory"};let k=(0,e.U9)(a);return null!==k&&k!==g.directory?(i.warn("opencode-session-capture-directory-mismatch",{worktreeId:a.worktreeId,instanceId:b,expected:k,reported:g.directory}),{captured:!1,skipped:"directory-mismatch"}):(0,h.F_)(a,{sessionId:g.id,title:g.title,worktreePath:g.directory})?(i.info("opencode-session-captured",{worktreeId:a.worktreeId,instanceId:b,sessionId:g.id,viaParentOf:g.id===d?null:d}),{captured:!0,memory:{sessionId:g.id,title:g.title,worktreePath:g.directory,updatedAt:Date.now()}}):{captured:!1,skipped:"not-persisted"}}async function l(a){let b=(0,e.hC)(a),c=(0,f.getLastAgentEvent)(a.worktreeId,"opencode",a.instanceId)?.sessionId;if(null!==b&&(0,h.jp)(c)){let a=await j(b,c);if(null!==a)return a.id}return(0,h.KA)(a)?.sessionId??null}},72272:(a,b,c)=>{c.d(b,{t:()=>i});var d=c(72626),e=c(50474),f=c(25071),g=c(17287);let h=(0,d.h)("lib/hooks/permission-adjudication");async function i(a,b,d,j,k="event"){let l=b.instanceId??b.cliToolId,m={worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l},{resolvePermissionRequest:n}=await Promise.all([c.e(3241),c.e(1836)]).then(c.bind(c,43241)),o=n(m,j),p="allow"===o.behavior?{kind:"allowOnce"}:{kind:"abstain"};if("abstain"===p.kind){let c=(0,e.y_)(a);c.safe||h.warn("permission-request-abstain-blocks-agent",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l,toolName:j?.toolName??null,decisionId:d.id,reason:o.reason,consequence:c.summary,blocksForMs:c.blocksForMs})}let{delivery:q}=await (0,f.GW)(a,b,d,p),r=q?.delivered===!0,s=r&&a.capabilities.permissionReplyReleasesPrompt;return(0,g.nL)(b.worktreeId,b.cliToolId,b.instanceId,{decisionId:d.id,toolName:j?.toolName??null,behavior:"allow"===o.behavior?"allow":null,reason:o.reason,delivered:r,releasedPrompt:s,trigger:k,at:d.askedAt}),h.info("permission-decision-adjudicated",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l,decisionId:d.id,toolName:j?.toolName??null,behavior:o.behavior,reason:o.reason,suppressedBy:o.suppressedBy,delivered:r,settled:s,trigger:k}),{decisionId:d.id,behavior:"allow"===o.behavior?"allow":null,reason:o.reason,delivered:r,settled:s}}},76877:(a,b,c)=>{c.d(b,{CZ:()=>k,O5:()=>m,g1:()=>f,oy:()=>n,yN:()=>l,z0:()=>g});var d=c(42422),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]}`))}},83342:(a,b,c)=>{c.d(b,{b:()=>f});var d=c(42422),e=c(70605);let f={composer:(0,e.W2)(a=>(0,d.wv)(a)),dialogTop:(0,e.uM)(function(a){let b=(0,e.Sx)(a),c=-1;for(let d=b;d>=Math.max(0,b-2);d--)if(a[d].trimStart().startsWith("╰")){c=d;break}if(c<0)return -1;for(let b=c-1;b>=Math.max(0,c-120);b--)if(a[b].trimStart().startsWith("╭"))return b;return -1}),composerHidesDialogs:!1}},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)}},85237:(a,b,c)=>{c.d(b,{Bh:()=>j,Ut:()=>i,YH:()=>k});var d=c(42422),e=c(65912),f=c(94154),g=c(51297),h=c(70605);function i(a){for(let b=a.length-1;b>=Math.max(0,a.length-10);b--){let c=a[b];if(d.aW.test(c)||d.UO.test(c))return b}return -1}function j(a){let b=i(a),c=b>=0?b-1:a.length-1;for(;c>=0&&""===a[c].trim();)c--;return c+1}let k={composer:{locate({raw:a,contentLines:b}){let c=j(b),i=(0,e.Gs)(a,b,c),k=(0,d.RK)(b);if(k>=0)return{start:k,end:function(a,b,c,d){let e=a.split("\n"),h=(0,f.mO)(e);if(null===h||(0,g.aJ)(e[h.firstRow]).trim()!==b[c]?.trim())return c;let i=Math.min(c+(h.lastRow-h.firstRow),d-1);return Math.max(c,i)}(a,b,k,c),atBottom:i};if(!i)return null;let l=(0,h.Sx)(b.slice(0,c));return l<0?null:{start:l,end:l,atBottom:!0}}},composerHidesDialogs:!0}},89021:(a,b,c)=>{c.d(b,{m:()=>e});var d=c(47967);let e={composer:d.Z,dialogTop:(0,d.u)(/△ Permission required/),composerHidesDialogs:!1}},89731:(a,b,c)=>{c.d(b,{Mj:()=>E,Km:()=>F});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(35583);let z=(0,e.promisify)(d.exec),A=(0,t.h)("cli-tools/base"),B=RegExp(`${s.ZM}=(?:'([^']*)'|"([^"]*)"|(\\S+))`,"g"),C=new Set,D=new Set;class E{async isInstalled(){try{return await z(`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,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),C.add(a),await (0,g.zT)(a,c)}takeAdoptionMark(a,b){try{let c=this.getSessionName(a,b);return C.delete(c)?c:null}catch{return null}}async warnIfHookUrlIsStale(a,b,d){if(!D.has(b))try{let f=await (0,g.Xg)(b,{startLine:-x.eu});D.add(b);let h=function(a){let b=null;for(let c of(0,q.aJ)(a).matchAll(B)){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;A.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){A.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?(A.info("session:liveness-confirm-recovered",{cliToolId:this.id,firstReason:d.reason}),!0):(A.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 A.warn("session:relaunch-skipped-no-path",{cliToolId:this.id,worktreeId:a});A.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,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 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 F(a,b,c){a instanceof E&&a.warnIfRunningSessionHookUrlIsStale(b,c).catch(()=>{})}},90706:(a,b,c)=>{c.d(b,{CR:()=>p,Gr:()=>f,Iu:()=>B,a9:()=>j,jZ:()=>g,lx:()=>o,sb:()=>q,sl:()=>l,tH:()=>n,uG:()=>A,ur:()=>t,yt:()=>m,zM:()=>u});var d=c(51297),e=c(67208);let f=/\benter\s+to\s+select\b\s*[·•]\s*esc\s+to\s+cancel\b/i,g=/^\s*(?:press|hit|type)?\s*(?:<)?esc(?:ape)?(?:>)?\s+to\s+(?:close|dismiss|exit)\b[\s.·•]*$/im,h=/^\s*Approve\s+\([• ]\)\s+with\s+\d+\s+comments?\s+as\s+notes\s+\([• ]\)\s+original\s+plan\b/im,i=/(?:^|\n)[ \t]*←\/→\s+choose\s*·\s*enter\s+confirm\s*·\s*esc\s+back\s*$/i;function j(a){return h.test(a)&&i.test(a)}function k(a,b){return a.split("\n").filter(a=>""!==a.trim()).slice(-b).join("\n")}function l(a){return f.test(k(a,1))}function m(a){return g.test(k(a,1))}function n(a){return e.x.test(k(a,5))}let o=/^\u2500+$/,p=40,q="❯",r="●◉⦿",s=RegExp(`^\\s*([${r}◯○◌⚪✔])\\s+\\S`);function t(a){let b=a.split("|");if(b.length<2)return!1;let c=0,d=0;for(let a of b){let b=s.exec(a);if(null===b)return!1;r.includes(b[1])?c+=1:d+=1}return c>0&&d>0}let u=/\besc\s+to\s+interrupt\b|^[^\S\n]*✻[^\S\n]+\S/im,v=/^[^\S\n]*(?:\u276F[^\S\n]*)?1[.)][^\S\n]+Submit[^\S\n]*$/im,w=/^[^\S\n]*(?:\u276F[^\S\n]*)?2[.)][^\S\n]+Cancel[^\S\n]*$/im,x=/^[^\S\n]*\u2190[^\S\n]+to[^\S\n]+go[^\S\n]+back[^\S\n]+and[^\S\n]+edit[^\S\n]*$/im,y=/have\s+not\s+answered\s+all\s+questions/i;function z(a){if(!a)return null;let b=a.replace(/\r\n/g,"\n").split("\n").map(d.aJ),c=b.length-1;for(;c>=0&&""===b[c].trim();)c-=1;if(c<1)return null;let e=-1;for(let a=c-1;a>=0;a-=1){let c=b[a].trim();if(!(c.length<p)&&o.test(c)){e=a;break}}if(e<0)return null;let f=b.slice(e+1,c+1),g=f.findIndex(a=>""!==a.trim());return g<0||!t(f[g])?null:f}function A(a){let b=z(a);if(null===b)return null;let c=b.join("\n");if(!v.test(c)||!w.test(c)||!x.test(c))return null;let d=b.find(a=>v.test(a));return{hasUnansweredWarning:y.test(c),cursorOnSubmit:void 0!==d&&d.includes(q)}}function B(a){let b=z(a);if(null===b)return!1;let c=b.join("\n");return v.test(c)&&w.test(c)}},91478:(a,b,c)=>{c.d(b,{Dk:()=>h,a9:()=>f.a9,f_:()=>i,sl:()=>f.sl,tH:()=>f.tH,uG:()=>f.uG,yt:()=>f.yt});var d=c(51297),e=c(67208);c(69082);var f=c(90706);let g=/^[^0-9A-Za-z]*([1-9])[.)]\s+\S/;function h(a){let b=j(a);return null!==b&&b.numbers.every((a,b)=>a===b+1)&&1===b.cursorCount?{ruleLineIndex:b.ruleLineIndex,firstLineIndex:b.firstLineIndex,lastLineIndex:b.lastLineIndex,tabLineIndex:b.tabLineIndex,cursorLineIndex:b.cursorLineIndex,cursorOnOptionRow:b.cursorOnOptionRow,optionCount:b.numbers.length}:null}function i(a){return null!==j(a)}function j(a){if(!a)return null;let b=a.replace(/\r\n/g,"\n").split("\n").map(d.aJ),c=b.length-1;for(;c>=0&&""===b[c].trim();)c-=1;if(c<1)return null;let h=-1;for(let a=c-1;a>=0;a-=1){let c=b[a].trim();if(!(c.length<f.CR)&&f.lx.test(c)){h=a;break}}if(h<0)return null;let i=b.slice(h+1,c+1),j=i.join("\n");if(e.r.test(j)||f.Gr.test(j)||f.jZ.test(j)||f.zM.test(j))return null;let k=i.findIndex(a=>""!==a.trim());if(k<0||!(0,f.ur)(i[k]))return null;let l=[],m=-1;for(let a=k+1;a<i.length;a+=1){let b=g.exec(i[a]);null!==b&&(m<0&&(m=a),l.push(Number(b[1])))}if(l.length<2||!i.slice(k+1,m).some(a=>""!==a.trim()))return null;let n=0,o=-1,p=!1;for(let a=0;a<i.length;a+=1){let b=i[a].split(f.sb).length-1;0!==b&&(n+=b,o=a,p=g.test(i[a]))}return 0===n?null:{ruleLineIndex:h,firstLineIndex:h+1,lastLineIndex:c,tabLineIndex:h+1+k,numbers:l,cursorCount:n,cursorLineIndex:h+1+o,cursorOnOptionRow:p}}},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-c0b821f340afdebf.js","static/chunks/4bd1b696-100b9d70ed4e49c1.js","static/chunks/1255-7e5873f06b25e129.js","static/chunks/main-app-5d631b93b1219836.js"],rootMainFilesTree:{},pages:{"/_app":["static/chunks/webpack-c0b821f340afdebf.js","static/chunks/framework-eaf13c96191cb608.js","static/chunks/main-ac91ed6e71380841.js","static/chunks/pages/_app-4b3fb5e477a0267f.js"],"/_error":["static/chunks/webpack-c0b821f340afdebf.js","static/chunks/framework-eaf13c96191cb608.js","static/chunks/main-ac91ed6e71380841.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-468b7b33030234b3.js","static/chunks/4bd1b696-100b9d70ed4e49c1.js","static/chunks/1255-7e5873f06b25e129.js","static/chunks/main-app-5d631b93b1219836.js"],rootMainFilesTree:{},pages:{"/_app":["static/chunks/webpack-468b7b33030234b3.js","static/chunks/framework-eaf13c96191cb608.js","static/chunks/main-ac91ed6e71380841.js","static/chunks/pages/_app-4b3fb5e477a0267f.js"],"/_error":["static/chunks/webpack-468b7b33030234b3.js","static/chunks/framework-eaf13c96191cb608.js","static/chunks/main-ac91ed6e71380841.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": "zI2nQ6WKboSbFbMF4EtrJ",
21
- "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "+1vc9U6UtEgVHT0gKQPUjFcIAbgDzgT1c5h8MAhldos=",
22
- "__NEXT_PREVIEW_MODE_ID": "c658e209510fe9f262a28989848a8315",
23
- "__NEXT_PREVIEW_MODE_SIGNING_KEY": "d4b842503d0d2cb0311466ad8ce294663f409c417c65f73276ad475d58fcab05",
24
- "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "5b6057a6991d005e8736b9457a096ca48b162028a63346ad9657eb6b6aa8f37b"
20
+ "__NEXT_BUILD_ID": "b5BiQC9F6r_XFPdA9cuSj",
21
+ "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "4X9FeU/DlalGuRPZKm668QVlqaKmJLrziCDUfDpAwfQ=",
22
+ "__NEXT_PREVIEW_MODE_ID": "7c577bfacf04afbbffa819de4b7ef8eb",
23
+ "__NEXT_PREVIEW_MODE_SIGNING_KEY": "1071df4249f494d45b7662b0379a230ee914caa15cb6c914f15c38e323c0222e",
24
+ "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "033786cd1fc04553709f317647069b258126fea5422d185476566976cb3773fb"
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.21abf5b6bbd45520.js"]},"components/worktree/FilePanelContent.tsx -> @/components/worktree/PdfPreview":{"id":27307,"files":[]},"components/worktree/FileViewer.tsx -> @/components/worktree/MarkdownEditor":{"id":42717,"files":["static/chunks/2717.21abf5b6bbd45520.js"]},"components/worktree/MermaidCodeBlock.tsx -> ./MermaidDiagram":{"id":90953,"files":["static/chunks/af7f6608.a62718fb6038c35a.js","static/chunks/1111.5ab4f0ffb0d944e5.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.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.5ab4f0ffb0d944e5.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-c0b821f340afdebf.js" defer=""></script><script src="/_next/static/chunks/framework-eaf13c96191cb608.js" defer=""></script><script src="/_next/static/chunks/main-ac91ed6e71380841.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/zI2nQ6WKboSbFbMF4EtrJ/_buildManifest.js" defer=""></script><script src="/_next/static/zI2nQ6WKboSbFbMF4EtrJ/_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":"zI2nQ6WKboSbFbMF4EtrJ","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-468b7b33030234b3.js" defer=""></script><script src="/_next/static/chunks/framework-eaf13c96191cb608.js" defer=""></script><script src="/_next/static/chunks/main-ac91ed6e71380841.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/b5BiQC9F6r_XFPdA9cuSj/_buildManifest.js" defer=""></script><script src="/_next/static/b5BiQC9F6r_XFPdA9cuSj/_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":"b5BiQC9F6r_XFPdA9cuSj","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"+1vc9U6UtEgVHT0gKQPUjFcIAbgDzgT1c5h8MAhldos="}
1
+ {"node":{},"edge":{},"encryptionKey":"4X9FeU/DlalGuRPZKm668QVlqaKmJLrziCDUfDpAwfQ="}
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2407],{52407:(e,t,n)=>{n.d(t,{Fx:()=>h,Rh:()=>b,_X:()=>c,fl:()=>s,nG:()=>d,sV:()=>o});var r=n(12115),u=n(60199);let l="/api/capabilities";function c(e){return!1!==e.browserOnline&&("connected"===e.realtimeStatus||!0===e.serverReachable)}function o(e){return!1===e.browserOnline||!1===e.serverReachable}let i=new Map;async function a(e,t){let n="function"==typeof AbortController?new AbortController:void 0,r=n?setTimeout(()=>n.abort(),t):void 0;try{return await fetch(e,{method:"GET",cache:"no-store",credentials:"same-origin",signal:null==n?void 0:n.signal}),!0}catch(e){return!1}finally{void 0!==r&&clearTimeout(r)}}function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3;if("function"!=typeof fetch)return Promise.resolve(!1);let n=i.get(e);if(n)return n;let r=a(e,t).finally(()=>{i.delete(e)});return i.set(e,r),r}let f=new Set;function d(e){f.forEach(t=>{try{t(e)}catch(e){}})}function b(e){return f.add(e),()=>{f.delete(e)}}function h(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{probeUrl:t=l,probeDelayMs:n=1e3,probeIntervalMs:c=15e3,probeTimeoutMs:o=5e3,surfaceDelayMs:i=1500,probe:a=!0}=e,{status:f}=(0,u.xM)(),[d,h]=(0,r.useState)(!0),[v,y]=(0,r.useState)(null),[w,m]=(0,r.useState)(null),p=(0,r.useCallback)(e=>{y(t=>t===e?t:e),e&&m(Date.now())},[]);(0,r.useEffect)(()=>{if("undefined"==typeof navigator)return;h(!1!==navigator.onLine);let e=()=>{y(null),h(!0)},t=()=>{y(null),h(!1)};return window.addEventListener("online",e),window.addEventListener("offline",t),()=>{window.removeEventListener("online",e),window.removeEventListener("offline",t)}},[]),(0,r.useEffect)(()=>{"connected"===f&&p(!0)},[f,p]),(0,r.useEffect)(()=>b(p),[p]);let g=(0,r.useMemo)(()=>({browserOnline:d,realtimeStatus:f,serverReachable:v}),[d,f,v]),S=g.browserOnline?"connected"===g.realtimeStatus?"online":!1===g.serverReachable?"offline":!0===g.serverReachable||"connecting"===g.realtimeStatus?"reconnecting":"offline":"offline",E="online"!==S,k=(0,r.useRef)({url:t,timeoutMs:o});k.current={url:t,timeoutMs:o};let C=a&&E&&d;(0,r.useEffect)(()=>{let e;if(!C||"function"!=typeof fetch)return;let t=!1,r=async()=>{let{url:n,timeoutMs:u}=k.current,l=await s(n,u);t||(p(l),e=setTimeout(r,c))};return e=setTimeout(r,n),()=>{t=!0,void 0!==e&&clearTimeout(e)}},[C,n,c,p]);let[R,T]=(0,r.useState)(!1);(0,r.useEffect)(()=>{if(!E)return void T(!1);if(i<=0)return void T(!0);let e=setTimeout(()=>T(!0),i);return()=>clearTimeout(e)},[E,i]);let M=(0,r.useCallback)(()=>{if("function"!=typeof fetch)return;let{url:e,timeoutMs:t}=k.current;s(e,t).then(p)},[p]);return(0,r.useMemo)(()=>({status:S,isOnline:"online"===S,isReconnecting:"reconnecting"===S,isOffline:"offline"===S,shouldSurface:E&&R,signals:g,lastReachableAt:w,recheck:M}),[S,E,R,g,w,M])}},52703:(e,t,n)=>{n.d(t,{Oo:()=>u,ST:()=>r,T4:()=>o,dz:()=>c,rz:()=>l,zS:()=>i});let r="client_version",u="version_mismatch",l="chat_turn_progress",c="messages_invalidated",o="model_changed";function i(e){let t;try{t=JSON.parse(e)}catch(e){return null}if(!t||"object"!=typeof t)return null;let n=t;if("broadcast"===n.type){let e=n.data;return e&&"object"==typeof e?"string"!=typeof e.type?null:(void 0===e.worktreeId&&"string"==typeof n.worktreeId&&(e.worktreeId=n.worktreeId),e):null}return"string"==typeof n.type?n:null}},60199:(e,t,n)=>{n.d(t,{tS:()=>s,xM:()=>f,T3:()=>d});var r=n(95155),u=n(12115),l=n(52703);function c(){return"undefined"!=typeof globalThis&&"function"==typeof globalThis.WebSocket?globalThis.WebSocket:null}let o=()=>{},i={status:"disconnected",connected:!1,subscribe:o,unsubscribe:o,addListener:()=>o},a=(0,u.createContext)(null);function s(e){let{children:t,enabled:n=!0}=e,o=(0,u.useRef)(new Set),i=(0,u.useRef)(new Map),{status:s,subscribe:f,unsubscribe:d}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{onEvent:t,onStatusChange:n,autoReconnect:r=!0,reconnectBaseDelay:o=1e3,reconnectMaxDelay:i=3e4,livenessTimeout:a=75e3,livenessCheckInterval:s=5e3,enabled:f=!0}=e,[d,b]=(0,u.useState)("disconnected"),h=(0,u.useRef)(null),v=(0,u.useRef)(null),y=(0,u.useRef)(0),w=(0,u.useRef)(new Set),m=(0,u.useRef)(!1),p=(0,u.useRef)(0),g=(0,u.useRef)(()=>{}),S=(0,u.useRef)(t);S.current=t;let E=(0,u.useRef)(n);E.current=n;let k=(0,u.useCallback)(e=>{var t;b(e),null==(t=E.current)||t.call(E,e)},[]),C=(0,u.useCallback)(()=>{null!==v.current&&(clearTimeout(v.current),v.current=null)},[]),R=(0,u.useCallback)(()=>{if(m.current||!r||"undefined"!=typeof document&&"hidden"===document.visibilityState)return;C();let e=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Math.random;return Math.max(0,Math.round(Math.min(t*2**Math.max(0,e),n)*(1+(2*r()-1)*.2)))}(y.current,o,i);y.current+=1,v.current=setTimeout(()=>{v.current=null,g.current()},e)},[r,o,i,C]),T=(0,u.useCallback)(()=>{if(!f)return;let e=c();if(!e||h.current&&(h.current.readyState===e.OPEN||h.current.readyState===e.CONNECTING))return;C(),m.current=!1,p.current=Date.now(),k("connecting");let t="https:"===window.location.protocol?"wss:":"ws:",n=new e("".concat(t,"//").concat(window.location.host));h.current=n,n.onopen=()=>{y.current=0,p.current=Date.now(),k("connected");try{n.send(JSON.stringify({type:l.ST,version:"0.46.0"}))}catch(e){}w.current.forEach(e=>{try{n.send(JSON.stringify({type:"subscribe",worktreeId:e}))}catch(e){}})},n.onmessage=e=>{var t;p.current=Date.now();let n="string"==typeof e.data?e.data:String(e.data),r=(0,l.zS)(n);r&&"heartbeat"!==r.type&&(null==(t=S.current)||t.call(S,r))},n.onerror=()=>{k("error")},n.onclose=()=>{h.current=null,k("disconnected"),R()}},[f,k,C,R]);g.current=T;let M=(0,u.useCallback)(()=>{let e=h.current;if(e){e.onopen=null,e.onmessage=null,e.onerror=null,e.onclose=null,h.current=null;try{e.close(4001,"half-open")}catch(e){}k("disconnected"),R()}},[k,R]),O=(0,u.useCallback)(()=>{if(C(),m.current=!0,h.current){try{h.current.close(1e3,"Client disconnect")}catch(e){}h.current=null}},[C]),N=(0,u.useCallback)(e=>{let t=h.current,n=c();if(t&&n&&t.readyState===n.OPEN)try{t.send(JSON.stringify(e))}catch(e){}},[]),_=(0,u.useCallback)(e=>{w.current.has(e)||(w.current.add(e),N({type:"subscribe",worktreeId:e}))},[N]),L=(0,u.useCallback)(e=>{w.current.has(e)&&(w.current.delete(e),N({type:"unsubscribe",worktreeId:e}))},[N]);return(0,u.useEffect)(()=>{if(f)return T(),()=>{O()}},[f,T,O]),(0,u.useEffect)(()=>{if(!f)return;let e=setInterval(()=>{let e=h.current,t=c();e&&t&&e.readyState===t.OPEN&&(Date.now()-p.current<a||M())},s);return()=>clearInterval(e)},[f,a,s,M]),(0,u.useEffect)(()=>{if(!f||"undefined"==typeof document)return;let e=()=>{"visible"===document.visibilityState&&(h.current||(y.current=0,T()))};return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[f,T]),(0,u.useEffect)(()=>{if(!f)return;let e=()=>{h.current||(y.current=0,T())};return window.addEventListener("online",e),()=>window.removeEventListener("online",e)},[f,T]),{status:d,subscribe:_,unsubscribe:L,send:N}}({enabled:n,onEvent:(0,u.useCallback)(e=>{o.current.forEach(t=>{try{t(e)}catch(e){}})},[])}),b=(0,u.useCallback)(e=>{var t;let n=i.current,r=null!=(t=n.get(e))?t:0;n.set(e,r+1),0===r&&f(e)},[f]),h=(0,u.useCallback)(e=>{var t;let n=i.current,r=null!=(t=n.get(e))?t:0;r<=1?(n.delete(e),d(e)):n.set(e,r-1)},[d]),v=(0,u.useCallback)(e=>(o.current.add(e),()=>{o.current.delete(e)}),[]),y=(0,u.useMemo)(()=>({status:s,connected:"connected"===s,subscribe:b,unsubscribe:h,addListener:v}),[s,b,h,v]);return(0,r.jsx)(a.Provider,{value:y,children:t})}function f(){var e;return null!=(e=(0,u.useContext)(a))?e:i}function d(e){let{addListener:t}=f(),n=(0,u.useRef)(e);n.current=e,(0,u.useEffect)(()=>t(e=>n.current(e)),[t])}}}]);
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2407],{52407:(e,t,n)=>{n.d(t,{Fx:()=>h,Rh:()=>b,_X:()=>c,fl:()=>s,nG:()=>d,sV:()=>o});var r=n(12115),u=n(60199);let l="/api/capabilities";function c(e){return!1!==e.browserOnline&&("connected"===e.realtimeStatus||!0===e.serverReachable)}function o(e){return!1===e.browserOnline||!1===e.serverReachable}let i=new Map;async function a(e,t){let n="function"==typeof AbortController?new AbortController:void 0,r=n?setTimeout(()=>n.abort(),t):void 0;try{return await fetch(e,{method:"GET",cache:"no-store",credentials:"same-origin",signal:null==n?void 0:n.signal}),!0}catch(e){return!1}finally{void 0!==r&&clearTimeout(r)}}function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5e3;if("function"!=typeof fetch)return Promise.resolve(!1);let n=i.get(e);if(n)return n;let r=a(e,t).finally(()=>{i.delete(e)});return i.set(e,r),r}let f=new Set;function d(e){f.forEach(t=>{try{t(e)}catch(e){}})}function b(e){return f.add(e),()=>{f.delete(e)}}function h(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{probeUrl:t=l,probeDelayMs:n=1e3,probeIntervalMs:c=15e3,probeTimeoutMs:o=5e3,surfaceDelayMs:i=1500,probe:a=!0}=e,{status:f}=(0,u.xM)(),[d,h]=(0,r.useState)(!0),[v,y]=(0,r.useState)(null),[w,m]=(0,r.useState)(null),p=(0,r.useCallback)(e=>{y(t=>t===e?t:e),e&&m(Date.now())},[]);(0,r.useEffect)(()=>{if("undefined"==typeof navigator)return;h(!1!==navigator.onLine);let e=()=>{y(null),h(!0)},t=()=>{y(null),h(!1)};return window.addEventListener("online",e),window.addEventListener("offline",t),()=>{window.removeEventListener("online",e),window.removeEventListener("offline",t)}},[]),(0,r.useEffect)(()=>{"connected"===f&&p(!0)},[f,p]),(0,r.useEffect)(()=>b(p),[p]);let g=(0,r.useMemo)(()=>({browserOnline:d,realtimeStatus:f,serverReachable:v}),[d,f,v]),S=g.browserOnline?"connected"===g.realtimeStatus?"online":!1===g.serverReachable?"offline":!0===g.serverReachable||"connecting"===g.realtimeStatus?"reconnecting":"offline":"offline",E="online"!==S,k=(0,r.useRef)({url:t,timeoutMs:o});k.current={url:t,timeoutMs:o};let C=a&&E&&d;(0,r.useEffect)(()=>{let e;if(!C||"function"!=typeof fetch)return;let t=!1,r=async()=>{let{url:n,timeoutMs:u}=k.current,l=await s(n,u);t||(p(l),e=setTimeout(r,c))};return e=setTimeout(r,n),()=>{t=!0,void 0!==e&&clearTimeout(e)}},[C,n,c,p]);let[R,T]=(0,r.useState)(!1);(0,r.useEffect)(()=>{if(!E)return void T(!1);if(i<=0)return void T(!0);let e=setTimeout(()=>T(!0),i);return()=>clearTimeout(e)},[E,i]);let M=(0,r.useCallback)(()=>{if("function"!=typeof fetch)return;let{url:e,timeoutMs:t}=k.current;s(e,t).then(p)},[p]);return(0,r.useMemo)(()=>({status:S,isOnline:"online"===S,isReconnecting:"reconnecting"===S,isOffline:"offline"===S,shouldSurface:E&&R,signals:g,lastReachableAt:w,recheck:M}),[S,E,R,g,w,M])}},52703:(e,t,n)=>{n.d(t,{Oo:()=>u,ST:()=>r,T4:()=>o,dz:()=>c,rz:()=>l,zS:()=>i});let r="client_version",u="version_mismatch",l="chat_turn_progress",c="messages_invalidated",o="model_changed";function i(e){let t;try{t=JSON.parse(e)}catch(e){return null}if(!t||"object"!=typeof t)return null;let n=t;if("broadcast"===n.type){let e=n.data;return e&&"object"==typeof e?"string"!=typeof e.type?null:(void 0===e.worktreeId&&"string"==typeof n.worktreeId&&(e.worktreeId=n.worktreeId),e):null}return"string"==typeof n.type?n:null}},60199:(e,t,n)=>{n.d(t,{tS:()=>s,xM:()=>f,T3:()=>d});var r=n(95155),u=n(12115),l=n(52703);function c(){return"undefined"!=typeof globalThis&&"function"==typeof globalThis.WebSocket?globalThis.WebSocket:null}let o=()=>{},i={status:"disconnected",connected:!1,subscribe:o,unsubscribe:o,addListener:()=>o},a=(0,u.createContext)(null);function s(e){let{children:t,enabled:n=!0}=e,o=(0,u.useRef)(new Set),i=(0,u.useRef)(new Map),{status:s,subscribe:f,unsubscribe:d}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{onEvent:t,onStatusChange:n,autoReconnect:r=!0,reconnectBaseDelay:o=1e3,reconnectMaxDelay:i=3e4,livenessTimeout:a=75e3,livenessCheckInterval:s=5e3,enabled:f=!0}=e,[d,b]=(0,u.useState)("disconnected"),h=(0,u.useRef)(null),v=(0,u.useRef)(null),y=(0,u.useRef)(0),w=(0,u.useRef)(new Set),m=(0,u.useRef)(!1),p=(0,u.useRef)(0),g=(0,u.useRef)(()=>{}),S=(0,u.useRef)(t);S.current=t;let E=(0,u.useRef)(n);E.current=n;let k=(0,u.useCallback)(e=>{var t;b(e),null==(t=E.current)||t.call(E,e)},[]),C=(0,u.useCallback)(()=>{null!==v.current&&(clearTimeout(v.current),v.current=null)},[]),R=(0,u.useCallback)(()=>{if(m.current||!r||"undefined"!=typeof document&&"hidden"===document.visibilityState)return;C();let e=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Math.random;return Math.max(0,Math.round(Math.min(t*2**Math.max(0,e),n)*(1+(2*r()-1)*.2)))}(y.current,o,i);y.current+=1,v.current=setTimeout(()=>{v.current=null,g.current()},e)},[r,o,i,C]),T=(0,u.useCallback)(()=>{if(!f)return;let e=c();if(!e||h.current&&(h.current.readyState===e.OPEN||h.current.readyState===e.CONNECTING))return;C(),m.current=!1,p.current=Date.now(),k("connecting");let t="https:"===window.location.protocol?"wss:":"ws:",n=new e("".concat(t,"//").concat(window.location.host));h.current=n,n.onopen=()=>{y.current=0,p.current=Date.now(),k("connected");try{n.send(JSON.stringify({type:l.ST,version:"0.47.0"}))}catch(e){}w.current.forEach(e=>{try{n.send(JSON.stringify({type:"subscribe",worktreeId:e}))}catch(e){}})},n.onmessage=e=>{var t;p.current=Date.now();let n="string"==typeof e.data?e.data:String(e.data),r=(0,l.zS)(n);r&&"heartbeat"!==r.type&&(null==(t=S.current)||t.call(S,r))},n.onerror=()=>{k("error")},n.onclose=()=>{h.current=null,k("disconnected"),R()}},[f,k,C,R]);g.current=T;let M=(0,u.useCallback)(()=>{let e=h.current;if(e){e.onopen=null,e.onmessage=null,e.onerror=null,e.onclose=null,h.current=null;try{e.close(4001,"half-open")}catch(e){}k("disconnected"),R()}},[k,R]),O=(0,u.useCallback)(()=>{if(C(),m.current=!0,h.current){try{h.current.close(1e3,"Client disconnect")}catch(e){}h.current=null}},[C]),N=(0,u.useCallback)(e=>{let t=h.current,n=c();if(t&&n&&t.readyState===n.OPEN)try{t.send(JSON.stringify(e))}catch(e){}},[]),_=(0,u.useCallback)(e=>{w.current.has(e)||(w.current.add(e),N({type:"subscribe",worktreeId:e}))},[N]),L=(0,u.useCallback)(e=>{w.current.has(e)&&(w.current.delete(e),N({type:"unsubscribe",worktreeId:e}))},[N]);return(0,u.useEffect)(()=>{if(f)return T(),()=>{O()}},[f,T,O]),(0,u.useEffect)(()=>{if(!f)return;let e=setInterval(()=>{let e=h.current,t=c();e&&t&&e.readyState===t.OPEN&&(Date.now()-p.current<a||M())},s);return()=>clearInterval(e)},[f,a,s,M]),(0,u.useEffect)(()=>{if(!f||"undefined"==typeof document)return;let e=()=>{"visible"===document.visibilityState&&(h.current||(y.current=0,T()))};return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[f,T]),(0,u.useEffect)(()=>{if(!f)return;let e=()=>{h.current||(y.current=0,T())};return window.addEventListener("online",e),()=>window.removeEventListener("online",e)},[f,T]),{status:d,subscribe:_,unsubscribe:L,send:N}}({enabled:n,onEvent:(0,u.useCallback)(e=>{o.current.forEach(t=>{try{t(e)}catch(e){}})},[])}),b=(0,u.useCallback)(e=>{var t;let n=i.current,r=null!=(t=n.get(e))?t:0;n.set(e,r+1),0===r&&f(e)},[f]),h=(0,u.useCallback)(e=>{var t;let n=i.current,r=null!=(t=n.get(e))?t:0;r<=1?(n.delete(e),d(e)):n.set(e,r-1)},[d]),v=(0,u.useCallback)(e=>(o.current.add(e),()=>{o.current.delete(e)}),[]),y=(0,u.useMemo)(()=>({status:s,connected:"connected"===s,subscribe:b,unsubscribe:h,addListener:v}),[s,b,h,v]);return(0,r.jsx)(a.Provider,{value:y,children:t})}function f(){var e;return null!=(e=(0,u.useContext)(a))?e:i}function d(e){let{addListener:t}=f(),n=(0,u.useRef)(e);n.current=e,(0,u.useEffect)(()=>t(e=>n.current(e)),[t])}}}]);