commandmate 0.29.0 → 0.29.2

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 (907) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +444 -400
  3. package/.next/app-path-routes-manifest.json +31 -25
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/react-loadable-manifest.json +3 -3
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +17 -0
  9. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  10. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/update/route.js +2 -0
  12. package/.next/server/app/api/agents/update/route.js.nft.json +1 -0
  13. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -0
  14. package/.next/server/app/api/agents/versions/route.js +1 -0
  15. package/.next/server/app/api/agents/versions/route.js.nft.json +1 -0
  16. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -0
  17. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/app/update-check/route.js +1 -1
  19. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  21. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  22. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  24. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  25. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/assistant/messages/route.js +1 -1
  27. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  28. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/assistant/session/route.js +1 -1
  30. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  31. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/assistant/start/route.js +2 -2
  33. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  34. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/assistant/terminal/route.js +1 -1
  36. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  37. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/assistant/tools/route.js +1 -1
  39. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  40. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/capabilities/route.js +1 -1
  45. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/daily-summary/route.js +1 -1
  47. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  48. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  50. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  51. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
  53. package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
  54. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  56. package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
  57. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/external-apps/route.js +1 -1
  59. package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
  60. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/fs/browse/route.js +1 -7
  62. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
  63. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/fs/recent-paths/route.js +1 -7
  65. package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
  66. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  68. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  69. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  71. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  72. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  74. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  75. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/metrics/vibe/route.js +2 -2
  77. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
  78. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/push/escalation/route.js +7 -1
  81. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  82. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  84. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  85. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/push/vapid/route.js +7 -1
  87. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  88. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/repositories/[id]/route.js +1 -1
  91. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  92. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  94. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +1 -1
  95. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  97. package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +1 -1
  98. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  100. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  101. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/repositories/clone/route.js +1 -1
  103. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  104. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/repositories/excluded/route.js +1 -1
  106. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  107. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/repositories/restore/route.js +1 -1
  109. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  110. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/repositories/route.js +1 -1
  112. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  113. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/repositories/scan/route.js +1 -1
  115. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  116. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/repositories/sync/route.js +1 -1
  118. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  119. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/repositories/validate-path/route.js +1 -1
  121. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
  122. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/settings/default-agents/route.js +1 -0
  124. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -0
  125. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -0
  126. package/.next/server/app/api/sidebar/group-order/route.js +1 -7
  127. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  128. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/skills/[id]/route.js +1 -1
  130. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  131. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/skills/installations/route.js +2 -2
  133. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  134. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/skills/operations/route.js +2 -2
  136. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
  137. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/skills/reindex/route.js +1 -1
  139. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
  140. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/skills/route.js +1 -1
  142. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  143. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/slash-commands/route.js +1 -1
  145. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  146. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/tasks/[taskId]/cancel/route.js +1 -1
  148. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  149. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  151. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
  152. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/templates/[id]/route.js +2 -2
  154. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  155. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/templates/route.js +2 -2
  157. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  158. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/todos/route.js +1 -1
  160. package/.next/server/app/api/todos/route.js.nft.json +1 -1
  161. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  163. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
  164. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/verification/runs/route.js +1 -1
  166. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
  167. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  173. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  176. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +2 -2
  181. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  182. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -2
  184. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  185. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
  188. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  191. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  193. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  197. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  200. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  206. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  218. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  221. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  233. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  236. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  239. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  242. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  245. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  248. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  251. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  254. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  257. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  260. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  263. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  266. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  268. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  269. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  271. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  272. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  275. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  278. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  279. package/.next/server/app/api/worktrees/[id]/logs/route.js +2 -2
  280. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  281. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +3 -3
  283. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  284. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  286. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  287. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  289. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  290. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  291. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  293. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  294. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
  296. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  298. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  299. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  301. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  302. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  304. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  305. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  306. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  307. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
  308. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  309. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  310. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  311. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  312. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  313. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  314. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  315. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  316. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  317. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  318. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  319. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  320. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  321. package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
  322. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  323. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  324. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  325. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  326. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  327. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -7
  328. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  329. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  330. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
  331. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  332. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  333. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  334. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  335. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  336. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  337. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  338. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  339. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  340. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  341. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  342. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  343. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  344. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  345. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
  346. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
  347. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  348. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  349. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  350. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  351. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  352. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  353. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  354. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  355. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  356. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  357. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  358. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  359. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  360. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  361. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
  362. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  363. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  364. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  365. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  366. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  367. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  368. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  369. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  370. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  371. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  372. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  373. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  374. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  375. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  376. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  377. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  378. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  379. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  380. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  381. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  382. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  383. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  384. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  385. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  386. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  387. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  388. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  389. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  390. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +2 -0
  391. package/.next/server/app/api/worktrees/[id]/verify/config/route.js.nft.json +1 -0
  392. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -0
  393. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  394. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  395. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  396. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -0
  397. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -0
  398. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -0
  399. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  400. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
  401. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  402. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  403. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
  404. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  405. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  406. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  407. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  408. package/.next/server/app/api/worktrees/apply-default-agents/route.js +1 -0
  409. package/.next/server/app/api/worktrees/apply-default-agents/route.js.nft.json +1 -0
  410. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -0
  411. package/.next/server/app/api/worktrees/route.js +1 -1
  412. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  413. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  414. package/.next/server/app/chat/page.js +2 -2
  415. package/.next/server/app/chat/page.js.nft.json +1 -1
  416. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  417. package/.next/server/app/login/page.js +2 -2
  418. package/.next/server/app/login/page.js.nft.json +1 -1
  419. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  420. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  421. package/.next/server/app/more/page.js +2 -2
  422. package/.next/server/app/more/page.js.nft.json +1 -1
  423. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  424. package/.next/server/app/offline/page.js.nft.json +1 -1
  425. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  426. package/.next/server/app/page.js +1 -1
  427. package/.next/server/app/page.js.nft.json +1 -1
  428. package/.next/server/app/page_client-reference-manifest.js +1 -1
  429. package/.next/server/app/proxy/[...path]/route.js +1 -1
  430. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  431. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  432. package/.next/server/app/repositories/page.js +2 -2
  433. package/.next/server/app/repositories/page.js.nft.json +1 -1
  434. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  435. package/.next/server/app/review/page.js +1 -1
  436. package/.next/server/app/review/page.js.nft.json +1 -1
  437. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  438. package/.next/server/app/sessions/page.js +1 -1
  439. package/.next/server/app/sessions/page.js.nft.json +1 -1
  440. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  441. package/.next/server/app/skills/[skillId]/page.js +2 -2
  442. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  443. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  444. package/.next/server/app/skills/installed/page.js +2 -2
  445. package/.next/server/app/skills/installed/page.js.nft.json +1 -1
  446. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  447. package/.next/server/app/skills/page.js +2 -2
  448. package/.next/server/app/skills/page.js.nft.json +1 -1
  449. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  450. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
  451. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  452. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  453. package/.next/server/app/worktrees/[id]/page.js +12 -12
  454. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  455. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  456. package/.next/server/app/worktrees/[id]/terminal/page.js +3 -3
  457. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  458. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  459. package/.next/server/app-paths-manifest.json +31 -25
  460. package/.next/server/chunks/1058.js +1 -1
  461. package/.next/server/chunks/1068.js +1 -1
  462. package/.next/server/chunks/1341.js +1 -0
  463. package/.next/server/chunks/1501.js +5 -0
  464. package/.next/server/chunks/1886.js +3 -4
  465. package/.next/server/chunks/2119.js +1 -1
  466. package/.next/server/chunks/2198.js +1 -0
  467. package/.next/server/chunks/221.js +7 -1
  468. package/.next/server/chunks/2404.js +1 -1
  469. package/.next/server/chunks/2445.js +1 -1
  470. package/.next/server/chunks/2759.js +1 -1
  471. package/.next/server/chunks/3543.js +1 -1
  472. package/.next/server/chunks/3558.js +1 -1
  473. package/.next/server/chunks/3707.js +15 -0
  474. package/.next/server/chunks/3722.js +25 -1
  475. package/.next/server/chunks/3869.js +1 -0
  476. package/.next/server/chunks/3945.js +1 -1
  477. package/.next/server/chunks/4299.js +1 -1
  478. package/.next/server/chunks/4390.js +1 -0
  479. package/.next/server/chunks/4393.js +1 -1
  480. package/.next/server/chunks/5017.js +1 -1
  481. package/.next/server/chunks/5164.js +1 -1
  482. package/.next/server/chunks/5571.js +1 -1
  483. package/.next/server/chunks/6130.js +1 -1
  484. package/.next/server/chunks/6285.js +1 -1
  485. package/.next/server/chunks/6781.js +1 -1
  486. package/.next/server/chunks/7366.js +5 -0
  487. package/.next/server/chunks/7824.js +1 -1
  488. package/.next/server/chunks/7905.js +1 -1
  489. package/.next/server/chunks/8118.js +1 -0
  490. package/.next/server/chunks/848.js +1 -1
  491. package/.next/server/chunks/880.js +3 -3
  492. package/.next/server/chunks/8800.js +3 -0
  493. package/.next/server/chunks/9123.js +2 -2
  494. package/.next/server/chunks/9508.js +1 -1
  495. package/.next/server/chunks/9627.js +30 -24
  496. package/.next/server/middleware-build-manifest.js +1 -1
  497. package/.next/server/middleware-manifest.json +5 -5
  498. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  499. package/.next/server/pages/500.html +1 -1
  500. package/.next/server/server-reference-manifest.json +1 -1
  501. package/.next/static/0YoRrahue4Vchxg1z83IQ/_buildManifest.js +1 -0
  502. package/.next/static/chunks/1379-af7af9e08f47c979.js +1 -0
  503. package/.next/static/chunks/{2053-c0e931eb4391baa1.js → 2053-3f299a7a2c7d6767.js} +1 -1
  504. package/.next/static/chunks/3922.9c1ec01fff819c88.js +1 -0
  505. package/.next/static/chunks/{3968-8d8ca15657748bfb.js → 4882-388e94fe0a03c2ba.js} +1 -1
  506. package/.next/static/chunks/5229-b2a81bb8fb5c19e9.js +1 -0
  507. package/.next/static/chunks/6381-9ba5198c0a6ff197.js +1 -0
  508. package/.next/static/chunks/8019-f8e73c1fb5f6f0d3.js +1 -0
  509. package/.next/static/chunks/{1188-8567ee5ecfef02ee.js → 8593-fa0eb2802e0ce68a.js} +1 -1
  510. package/.next/static/chunks/app/api/agents/update/route-1c30fb8d4d6fa6ef.js +1 -0
  511. package/.next/static/chunks/app/api/agents/versions/route-1c30fb8d4d6fa6ef.js +1 -0
  512. package/.next/static/chunks/app/api/app/update/route-1c30fb8d4d6fa6ef.js +1 -0
  513. package/.next/static/chunks/app/api/app/update-check/route-1c30fb8d4d6fa6ef.js +1 -0
  514. package/.next/static/chunks/app/api/assistant/conversation/route-1c30fb8d4d6fa6ef.js +1 -0
  515. package/.next/static/chunks/app/api/assistant/current-output/route-1c30fb8d4d6fa6ef.js +1 -0
  516. package/.next/static/chunks/app/api/assistant/messages/route-1c30fb8d4d6fa6ef.js +1 -0
  517. package/.next/static/chunks/app/api/assistant/session/route-1c30fb8d4d6fa6ef.js +1 -0
  518. package/.next/static/chunks/app/api/assistant/start/route-1c30fb8d4d6fa6ef.js +1 -0
  519. package/.next/static/chunks/app/api/assistant/terminal/route-1c30fb8d4d6fa6ef.js +1 -0
  520. package/.next/static/chunks/app/api/assistant/tools/route-1c30fb8d4d6fa6ef.js +1 -0
  521. package/.next/static/chunks/app/api/auth/login/route-1c30fb8d4d6fa6ef.js +1 -0
  522. package/.next/static/chunks/app/api/auth/logout/route-1c30fb8d4d6fa6ef.js +1 -0
  523. package/.next/static/chunks/app/api/auth/status/route-1c30fb8d4d6fa6ef.js +1 -0
  524. package/.next/static/chunks/app/api/capabilities/route-1c30fb8d4d6fa6ef.js +1 -0
  525. package/.next/static/chunks/app/api/daily-summary/route-1c30fb8d4d6fa6ef.js +1 -0
  526. package/.next/static/chunks/app/api/daily-summary/status/route-1c30fb8d4d6fa6ef.js +1 -0
  527. package/.next/static/chunks/app/api/external-apps/[id]/health/route-1c30fb8d4d6fa6ef.js +1 -0
  528. package/.next/static/chunks/app/api/external-apps/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  529. package/.next/static/chunks/app/api/external-apps/route-1c30fb8d4d6fa6ef.js +1 -0
  530. package/.next/static/chunks/app/api/fs/browse/route-1c30fb8d4d6fa6ef.js +1 -0
  531. package/.next/static/chunks/app/api/fs/recent-paths/route-1c30fb8d4d6fa6ef.js +1 -0
  532. package/.next/static/chunks/app/api/hooks/agent-event/route-1c30fb8d4d6fa6ef.js +1 -0
  533. package/.next/static/chunks/app/api/hooks/claude-done/route-1c30fb8d4d6fa6ef.js +1 -0
  534. package/.next/static/chunks/app/api/hooks/permission-request/route-1c30fb8d4d6fa6ef.js +1 -0
  535. package/.next/static/chunks/app/api/metrics/vibe/route-1c30fb8d4d6fa6ef.js +1 -0
  536. package/.next/static/chunks/app/api/ollama/models/route-1c30fb8d4d6fa6ef.js +1 -0
  537. package/.next/static/chunks/app/api/push/escalation/route-1c30fb8d4d6fa6ef.js +1 -0
  538. package/.next/static/chunks/app/api/push/subscriptions/route-1c30fb8d4d6fa6ef.js +1 -0
  539. package/.next/static/chunks/app/api/push/vapid/route-1c30fb8d4d6fa6ef.js +1 -0
  540. package/.next/static/chunks/app/api/remote/pair/route-1c30fb8d4d6fa6ef.js +1 -0
  541. package/.next/static/chunks/app/api/repositories/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  542. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-1c30fb8d4d6fa6ef.js +1 -0
  543. package/.next/static/chunks/app/api/repositories/[id]/todos/route-1c30fb8d4d6fa6ef.js +1 -0
  544. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-1c30fb8d4d6fa6ef.js +1 -0
  545. package/.next/static/chunks/app/api/repositories/clone/route-1c30fb8d4d6fa6ef.js +1 -0
  546. package/.next/static/chunks/app/api/repositories/excluded/route-1c30fb8d4d6fa6ef.js +1 -0
  547. package/.next/static/chunks/app/api/repositories/restore/route-1c30fb8d4d6fa6ef.js +1 -0
  548. package/.next/static/chunks/app/api/repositories/route-1c30fb8d4d6fa6ef.js +1 -0
  549. package/.next/static/chunks/app/api/repositories/scan/route-1c30fb8d4d6fa6ef.js +1 -0
  550. package/.next/static/chunks/app/api/repositories/sync/route-1c30fb8d4d6fa6ef.js +1 -0
  551. package/.next/static/chunks/app/api/repositories/validate-path/route-1c30fb8d4d6fa6ef.js +1 -0
  552. package/.next/static/chunks/app/api/settings/default-agents/route-1c30fb8d4d6fa6ef.js +1 -0
  553. package/.next/static/chunks/app/api/sidebar/group-order/route-1c30fb8d4d6fa6ef.js +1 -0
  554. package/.next/static/chunks/app/api/skills/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  555. package/.next/static/chunks/app/api/skills/installations/route-1c30fb8d4d6fa6ef.js +1 -0
  556. package/.next/static/chunks/app/api/skills/operations/route-1c30fb8d4d6fa6ef.js +1 -0
  557. package/.next/static/chunks/app/api/skills/reindex/route-1c30fb8d4d6fa6ef.js +1 -0
  558. package/.next/static/chunks/app/api/skills/route-1c30fb8d4d6fa6ef.js +1 -0
  559. package/.next/static/chunks/app/api/slash-commands/route-1c30fb8d4d6fa6ef.js +1 -0
  560. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-1c30fb8d4d6fa6ef.js +1 -0
  561. package/.next/static/chunks/app/api/tasks/[taskId]/route-1c30fb8d4d6fa6ef.js +1 -0
  562. package/.next/static/chunks/app/api/templates/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  563. package/.next/static/chunks/app/api/templates/route-1c30fb8d4d6fa6ef.js +1 -0
  564. package/.next/static/chunks/app/api/todos/route-1c30fb8d4d6fa6ef.js +1 -0
  565. package/.next/static/chunks/app/api/verification/runs/[runId]/route-1c30fb8d4d6fa6ef.js +1 -0
  566. package/.next/static/chunks/app/api/verification/runs/route-1c30fb8d4d6fa6ef.js +1 -0
  567. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-1c30fb8d4d6fa6ef.js +1 -0
  568. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-1c30fb8d4d6fa6ef.js +1 -0
  569. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-1c30fb8d4d6fa6ef.js +1 -0
  570. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-1c30fb8d4d6fa6ef.js +1 -0
  571. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-1c30fb8d4d6fa6ef.js +1 -0
  572. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-1c30fb8d4d6fa6ef.js +1 -0
  573. package/.next/static/chunks/app/api/worktrees/[id]/env/route-1c30fb8d4d6fa6ef.js +1 -0
  574. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-1c30fb8d4d6fa6ef.js +1 -0
  575. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-1c30fb8d4d6fa6ef.js +1 -0
  576. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
  577. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-1c30fb8d4d6fa6ef.js +1 -0
  578. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-1c30fb8d4d6fa6ef.js +1 -0
  579. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-1c30fb8d4d6fa6ef.js +1 -0
  580. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-1c30fb8d4d6fa6ef.js +1 -0
  581. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-1c30fb8d4d6fa6ef.js +1 -0
  582. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-1c30fb8d4d6fa6ef.js +1 -0
  583. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-1c30fb8d4d6fa6ef.js +1 -0
  584. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-1c30fb8d4d6fa6ef.js +1 -0
  585. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-1c30fb8d4d6fa6ef.js +1 -0
  586. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-1c30fb8d4d6fa6ef.js +1 -0
  587. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-1c30fb8d4d6fa6ef.js +1 -0
  588. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-1c30fb8d4d6fa6ef.js +1 -0
  589. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-1c30fb8d4d6fa6ef.js +1 -0
  590. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-1c30fb8d4d6fa6ef.js +1 -0
  591. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-1c30fb8d4d6fa6ef.js +1 -0
  592. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-1c30fb8d4d6fa6ef.js +1 -0
  593. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-1c30fb8d4d6fa6ef.js +1 -0
  594. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-1c30fb8d4d6fa6ef.js +1 -0
  595. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-1c30fb8d4d6fa6ef.js +1 -0
  596. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-1c30fb8d4d6fa6ef.js +1 -0
  597. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-1c30fb8d4d6fa6ef.js +1 -0
  598. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-1c30fb8d4d6fa6ef.js +1 -0
  599. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-1c30fb8d4d6fa6ef.js +1 -0
  600. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-1c30fb8d4d6fa6ef.js +1 -0
  601. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-1c30fb8d4d6fa6ef.js +1 -0
  602. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-1c30fb8d4d6fa6ef.js +1 -0
  603. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-1c30fb8d4d6fa6ef.js +1 -0
  604. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-1c30fb8d4d6fa6ef.js +1 -0
  605. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-1c30fb8d4d6fa6ef.js +1 -0
  606. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-1c30fb8d4d6fa6ef.js +1 -0
  607. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-1c30fb8d4d6fa6ef.js +1 -0
  608. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-1c30fb8d4d6fa6ef.js +1 -0
  609. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-1c30fb8d4d6fa6ef.js +1 -0
  610. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-1c30fb8d4d6fa6ef.js +1 -0
  611. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-1c30fb8d4d6fa6ef.js +1 -0
  612. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-1c30fb8d4d6fa6ef.js +1 -0
  613. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-1c30fb8d4d6fa6ef.js +1 -0
  614. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-1c30fb8d4d6fa6ef.js +1 -0
  615. package/.next/static/chunks/app/api/worktrees/[id]/route-1c30fb8d4d6fa6ef.js +1 -0
  616. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-1c30fb8d4d6fa6ef.js +1 -0
  617. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-1c30fb8d4d6fa6ef.js +1 -0
  618. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-1c30fb8d4d6fa6ef.js +1 -0
  619. package/.next/static/chunks/app/api/worktrees/[id]/search/route-1c30fb8d4d6fa6ef.js +1 -0
  620. package/.next/static/chunks/app/api/worktrees/[id]/send/route-1c30fb8d4d6fa6ef.js +1 -0
  621. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-1c30fb8d4d6fa6ef.js +1 -0
  622. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-1c30fb8d4d6fa6ef.js +1 -0
  623. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-1c30fb8d4d6fa6ef.js +1 -0
  624. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-1c30fb8d4d6fa6ef.js +1 -0
  625. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-1c30fb8d4d6fa6ef.js +1 -0
  626. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-1c30fb8d4d6fa6ef.js +1 -0
  627. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-1c30fb8d4d6fa6ef.js +1 -0
  628. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-1c30fb8d4d6fa6ef.js +1 -0
  629. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-1c30fb8d4d6fa6ef.js +1 -0
  630. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-1c30fb8d4d6fa6ef.js +1 -0
  631. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-1c30fb8d4d6fa6ef.js +1 -0
  632. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-1c30fb8d4d6fa6ef.js +1 -0
  633. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-1c30fb8d4d6fa6ef.js +1 -0
  634. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-1c30fb8d4d6fa6ef.js +1 -0
  635. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-1c30fb8d4d6fa6ef.js +1 -0
  636. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-1c30fb8d4d6fa6ef.js +1 -0
  637. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-1c30fb8d4d6fa6ef.js +1 -0
  638. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
  639. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-1c30fb8d4d6fa6ef.js +1 -0
  640. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
  641. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-1c30fb8d4d6fa6ef.js +1 -0
  642. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-1c30fb8d4d6fa6ef.js +1 -0
  643. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-1c30fb8d4d6fa6ef.js +1 -0
  644. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-1c30fb8d4d6fa6ef.js +1 -0
  645. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-1c30fb8d4d6fa6ef.js +1 -0
  646. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-1c30fb8d4d6fa6ef.js +1 -0
  647. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-1c30fb8d4d6fa6ef.js +1 -0
  648. package/.next/static/chunks/app/api/worktrees/route-1c30fb8d4d6fa6ef.js +1 -0
  649. package/.next/static/chunks/app/chat/{page-231df45127e876c2.js → page-9aa2011410895b0d.js} +1 -1
  650. package/.next/static/chunks/app/login/{page-03659dded846ef1d.js → page-af7241bb4c4a8e59.js} +1 -1
  651. package/.next/static/chunks/app/manifest.webmanifest/route-1c30fb8d4d6fa6ef.js +1 -0
  652. package/.next/static/chunks/app/more/page-75d3783da0d49a25.js +1 -0
  653. package/.next/static/chunks/app/{page-0305431f43195431.js → page-214f7ffa13a0cf10.js} +1 -1
  654. package/.next/static/chunks/app/proxy/[...path]/route-1c30fb8d4d6fa6ef.js +1 -0
  655. package/.next/static/chunks/app/repositories/{page-ae8fa55749976f79.js → page-4951cac905e50224.js} +1 -1
  656. package/.next/static/chunks/app/review/page-a0899b2d285318c3.js +1 -0
  657. package/.next/static/chunks/app/sessions/page-fb36145ec732092a.js +1 -0
  658. package/.next/static/chunks/app/skills/[skillId]/{page-aaf0bcb1dfb558b9.js → page-9099e26b60442873.js} +1 -1
  659. package/.next/static/chunks/app/skills/installed/{page-dafc486410e839b7.js → page-182e32368696d824.js} +1 -1
  660. package/.next/static/chunks/app/skills/{page-9e3c91da31514893.js → page-d3fdc88239ebe0ab.js} +1 -1
  661. package/.next/static/chunks/app/worktrees/[id]/files/[...path]/{page-90f96977c741bbf8.js → page-f3361237420719b4.js} +1 -1
  662. package/.next/static/chunks/app/worktrees/[id]/layout-1c30fb8d4d6fa6ef.js +1 -0
  663. package/.next/static/chunks/app/worktrees/[id]/page-ce6279d581d1df95.js +1 -0
  664. package/.next/static/chunks/{webpack-7e79064bfce988d7.js → webpack-9f75198882fdaf08.js} +1 -1
  665. package/.next/static/css/b326c8a734e1928e.css +1 -0
  666. package/.next/trace +13 -13
  667. package/.next/types/app/api/agents/update/route.ts +347 -0
  668. package/.next/types/app/api/agents/versions/route.ts +347 -0
  669. package/.next/types/app/api/settings/default-agents/route.ts +347 -0
  670. package/.next/types/app/api/worktrees/[id]/verify/config/route.ts +347 -0
  671. package/.next/types/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.ts +347 -0
  672. package/.next/types/app/api/worktrees/apply-default-agents/route.ts +347 -0
  673. package/.next/types/routes.d.ts +7 -1
  674. package/.next/types/validator.ts +54 -0
  675. package/dist/cli/commands/agents.d.ts +35 -0
  676. package/dist/cli/commands/agents.d.ts.map +1 -0
  677. package/dist/cli/commands/agents.js +212 -0
  678. package/dist/cli/commands/ls.d.ts.map +1 -1
  679. package/dist/cli/commands/ls.js +18 -0
  680. package/dist/cli/commands/verify.d.ts.map +1 -1
  681. package/dist/cli/commands/verify.js +111 -0
  682. package/dist/cli/config/cli-dependencies.d.ts.map +1 -1
  683. package/dist/cli/config/cli-dependencies.js +11 -0
  684. package/dist/cli/docs/agent-operations.d.ts +1 -1
  685. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  686. package/dist/cli/docs/agent-operations.js +30 -0
  687. package/dist/cli/program.d.ts.map +1 -1
  688. package/dist/cli/program.js +6 -0
  689. package/dist/cli/types/api-responses.d.ts +58 -0
  690. package/dist/cli/types/api-responses.d.ts.map +1 -1
  691. package/dist/cli/types/index.d.ts +8 -0
  692. package/dist/cli/types/index.d.ts.map +1 -1
  693. package/dist/cli/utils/preflight.d.ts.map +1 -1
  694. package/dist/cli/utils/preflight.js +6 -0
  695. package/dist/config/system-directories.d.ts +101 -0
  696. package/dist/config/system-directories.d.ts.map +1 -0
  697. package/dist/config/system-directories.js +211 -0
  698. package/dist/lib/cli-tools/types.d.ts +15 -1
  699. package/dist/lib/cli-tools/types.d.ts.map +1 -1
  700. package/dist/lib/detection/status-reason.d.ts +92 -0
  701. package/dist/lib/detection/status-reason.d.ts.map +1 -0
  702. package/dist/lib/detection/status-reason.js +94 -0
  703. package/dist/lib/updates/agent-updater.d.ts +247 -0
  704. package/dist/lib/updates/agent-updater.d.ts.map +1 -0
  705. package/dist/lib/updates/agent-updater.js +373 -0
  706. package/dist/lib/updates/agent-versions.d.ts +77 -0
  707. package/dist/lib/updates/agent-versions.d.ts.map +1 -0
  708. package/dist/lib/updates/agent-versions.js +138 -0
  709. package/dist/lib/updates/codex-version.d.ts +184 -0
  710. package/dist/lib/updates/codex-version.d.ts.map +1 -0
  711. package/dist/lib/updates/codex-version.js +215 -0
  712. package/dist/lib/verification/verify-config.d.ts +202 -0
  713. package/dist/lib/verification/verify-config.d.ts.map +1 -0
  714. package/dist/lib/verification/verify-config.js +429 -0
  715. package/dist/lib/verification/verify-draft.d.ts +182 -0
  716. package/dist/lib/verification/verify-draft.d.ts.map +1 -0
  717. package/dist/lib/verification/verify-draft.js +570 -0
  718. package/dist/server/src/cli/types/api-responses.js +9 -0
  719. package/dist/server/src/config/cli-tool-timing-config.js +15 -1
  720. package/dist/server/src/config/codex-update-dialog-config.js +154 -0
  721. package/dist/server/src/config/default-agents.js +138 -0
  722. package/dist/server/src/lib/cli-tools/antigravity.js +36 -12
  723. package/dist/server/src/lib/cli-tools/base.js +131 -0
  724. package/dist/server/src/lib/cli-tools/codex.js +350 -100
  725. package/dist/server/src/lib/cli-tools/copilot.js +34 -10
  726. package/dist/server/src/lib/cli-tools/gemini.js +34 -10
  727. package/dist/server/src/lib/cli-tools/liveness-spec.js +214 -0
  728. package/dist/server/src/lib/cli-tools/opencode.js +72 -19
  729. package/dist/server/src/lib/cli-tools/session-liveness.js +64 -0
  730. package/dist/server/src/lib/cli-tools/vibe-local.js +30 -10
  731. package/dist/server/src/lib/db/app-settings-db.js +142 -0
  732. package/dist/server/src/lib/db/worktree-db.js +178 -3
  733. package/dist/server/src/lib/detection/status-reason.js +17 -0
  734. package/dist/server/src/lib/detection/tool-liveness.js +233 -0
  735. package/dist/server/src/lib/detection/version-probes.js +290 -0
  736. package/dist/server/src/lib/git/worktrees.js +10 -0
  737. package/dist/server/src/lib/repo-config/agents-config.js +298 -0
  738. package/dist/server/src/lib/selected-agents-validator.js +93 -23
  739. package/dist/server/src/lib/session/claude-session.js +39 -108
  740. package/dist/server/src/lib/tmux/tmux.js +29 -0
  741. package/dist/server/src/lib/updates/agent-updater.js +373 -0
  742. package/dist/server/src/lib/updates/agent-versions.js +138 -0
  743. package/dist/server/src/lib/updates/codex-version.js +215 -0
  744. package/dist/server/src/lib/updates/index.js +42 -0
  745. package/dist/server/src/lib/verification/gate-runner.js +298 -37
  746. package/dist/server/src/lib/verification/machine-lock.js +11 -0
  747. package/dist/server/src/lib/verification/run-verdict-vocabulary.js +151 -0
  748. package/dist/server/src/lib/verification/verify-config.js +33 -0
  749. package/dist/server/src/types/sidebar.js +40 -9
  750. package/dist/types/cli-tool-contracts.d.ts +119 -0
  751. package/dist/types/cli-tool-contracts.d.ts.map +1 -1
  752. package/package.json +1 -1
  753. package/.next/server/chunks/1601.js +0 -7
  754. package/.next/server/chunks/222.js +0 -1
  755. package/.next/server/chunks/2366.js +0 -1
  756. package/.next/server/chunks/4689.js +0 -25
  757. package/.next/server/chunks/5089.js +0 -1
  758. package/.next/server/chunks/6274.js +0 -14
  759. package/.next/server/chunks/9067.js +0 -1
  760. package/.next/server/chunks/9373.js +0 -9
  761. package/.next/static/chunks/3361-aa1b6e7c1d7eeeb4.js +0 -1
  762. package/.next/static/chunks/3922.0d2e64daf9f187da.js +0 -1
  763. package/.next/static/chunks/5229-580b581fce5aeb52.js +0 -1
  764. package/.next/static/chunks/6381-c8d93ec301dbc380.js +0 -1
  765. package/.next/static/chunks/app/api/app/update/route-e3626364434d521b.js +0 -1
  766. package/.next/static/chunks/app/api/app/update-check/route-e3626364434d521b.js +0 -1
  767. package/.next/static/chunks/app/api/assistant/conversation/route-e3626364434d521b.js +0 -1
  768. package/.next/static/chunks/app/api/assistant/current-output/route-e3626364434d521b.js +0 -1
  769. package/.next/static/chunks/app/api/assistant/messages/route-e3626364434d521b.js +0 -1
  770. package/.next/static/chunks/app/api/assistant/session/route-e3626364434d521b.js +0 -1
  771. package/.next/static/chunks/app/api/assistant/start/route-e3626364434d521b.js +0 -1
  772. package/.next/static/chunks/app/api/assistant/terminal/route-e3626364434d521b.js +0 -1
  773. package/.next/static/chunks/app/api/assistant/tools/route-e3626364434d521b.js +0 -1
  774. package/.next/static/chunks/app/api/auth/login/route-e3626364434d521b.js +0 -1
  775. package/.next/static/chunks/app/api/auth/logout/route-e3626364434d521b.js +0 -1
  776. package/.next/static/chunks/app/api/auth/status/route-e3626364434d521b.js +0 -1
  777. package/.next/static/chunks/app/api/capabilities/route-e3626364434d521b.js +0 -1
  778. package/.next/static/chunks/app/api/daily-summary/route-e3626364434d521b.js +0 -1
  779. package/.next/static/chunks/app/api/daily-summary/status/route-e3626364434d521b.js +0 -1
  780. package/.next/static/chunks/app/api/external-apps/[id]/health/route-e3626364434d521b.js +0 -1
  781. package/.next/static/chunks/app/api/external-apps/[id]/route-e3626364434d521b.js +0 -1
  782. package/.next/static/chunks/app/api/external-apps/route-e3626364434d521b.js +0 -1
  783. package/.next/static/chunks/app/api/fs/browse/route-e3626364434d521b.js +0 -1
  784. package/.next/static/chunks/app/api/fs/recent-paths/route-e3626364434d521b.js +0 -1
  785. package/.next/static/chunks/app/api/hooks/agent-event/route-e3626364434d521b.js +0 -1
  786. package/.next/static/chunks/app/api/hooks/claude-done/route-e3626364434d521b.js +0 -1
  787. package/.next/static/chunks/app/api/hooks/permission-request/route-e3626364434d521b.js +0 -1
  788. package/.next/static/chunks/app/api/metrics/vibe/route-e3626364434d521b.js +0 -1
  789. package/.next/static/chunks/app/api/ollama/models/route-e3626364434d521b.js +0 -1
  790. package/.next/static/chunks/app/api/push/escalation/route-e3626364434d521b.js +0 -1
  791. package/.next/static/chunks/app/api/push/subscriptions/route-e3626364434d521b.js +0 -1
  792. package/.next/static/chunks/app/api/push/vapid/route-e3626364434d521b.js +0 -1
  793. package/.next/static/chunks/app/api/remote/pair/route-e3626364434d521b.js +0 -1
  794. package/.next/static/chunks/app/api/repositories/[id]/route-e3626364434d521b.js +0 -1
  795. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-e3626364434d521b.js +0 -1
  796. package/.next/static/chunks/app/api/repositories/[id]/todos/route-e3626364434d521b.js +0 -1
  797. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-e3626364434d521b.js +0 -1
  798. package/.next/static/chunks/app/api/repositories/clone/route-e3626364434d521b.js +0 -1
  799. package/.next/static/chunks/app/api/repositories/excluded/route-e3626364434d521b.js +0 -1
  800. package/.next/static/chunks/app/api/repositories/restore/route-e3626364434d521b.js +0 -1
  801. package/.next/static/chunks/app/api/repositories/route-e3626364434d521b.js +0 -1
  802. package/.next/static/chunks/app/api/repositories/scan/route-e3626364434d521b.js +0 -1
  803. package/.next/static/chunks/app/api/repositories/sync/route-e3626364434d521b.js +0 -1
  804. package/.next/static/chunks/app/api/repositories/validate-path/route-e3626364434d521b.js +0 -1
  805. package/.next/static/chunks/app/api/sidebar/group-order/route-e3626364434d521b.js +0 -1
  806. package/.next/static/chunks/app/api/skills/[id]/route-e3626364434d521b.js +0 -1
  807. package/.next/static/chunks/app/api/skills/installations/route-e3626364434d521b.js +0 -1
  808. package/.next/static/chunks/app/api/skills/operations/route-e3626364434d521b.js +0 -1
  809. package/.next/static/chunks/app/api/skills/reindex/route-e3626364434d521b.js +0 -1
  810. package/.next/static/chunks/app/api/skills/route-e3626364434d521b.js +0 -1
  811. package/.next/static/chunks/app/api/slash-commands/route-e3626364434d521b.js +0 -1
  812. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-e3626364434d521b.js +0 -1
  813. package/.next/static/chunks/app/api/tasks/[taskId]/route-e3626364434d521b.js +0 -1
  814. package/.next/static/chunks/app/api/templates/[id]/route-e3626364434d521b.js +0 -1
  815. package/.next/static/chunks/app/api/templates/route-e3626364434d521b.js +0 -1
  816. package/.next/static/chunks/app/api/todos/route-e3626364434d521b.js +0 -1
  817. package/.next/static/chunks/app/api/verification/runs/[runId]/route-e3626364434d521b.js +0 -1
  818. package/.next/static/chunks/app/api/verification/runs/route-e3626364434d521b.js +0 -1
  819. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-e3626364434d521b.js +0 -1
  820. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-e3626364434d521b.js +0 -1
  821. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-e3626364434d521b.js +0 -1
  822. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-e3626364434d521b.js +0 -1
  823. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-e3626364434d521b.js +0 -1
  824. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-e3626364434d521b.js +0 -1
  825. package/.next/static/chunks/app/api/worktrees/[id]/env/route-e3626364434d521b.js +0 -1
  826. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-e3626364434d521b.js +0 -1
  827. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-e3626364434d521b.js +0 -1
  828. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-e3626364434d521b.js +0 -1
  829. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-e3626364434d521b.js +0 -1
  830. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-e3626364434d521b.js +0 -1
  831. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-e3626364434d521b.js +0 -1
  832. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-e3626364434d521b.js +0 -1
  833. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-e3626364434d521b.js +0 -1
  834. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-e3626364434d521b.js +0 -1
  835. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-e3626364434d521b.js +0 -1
  836. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-e3626364434d521b.js +0 -1
  837. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-e3626364434d521b.js +0 -1
  838. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-e3626364434d521b.js +0 -1
  839. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-e3626364434d521b.js +0 -1
  840. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-e3626364434d521b.js +0 -1
  841. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-e3626364434d521b.js +0 -1
  842. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-e3626364434d521b.js +0 -1
  843. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-e3626364434d521b.js +0 -1
  844. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-e3626364434d521b.js +0 -1
  845. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-e3626364434d521b.js +0 -1
  846. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-e3626364434d521b.js +0 -1
  847. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-e3626364434d521b.js +0 -1
  848. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-e3626364434d521b.js +0 -1
  849. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-e3626364434d521b.js +0 -1
  850. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-e3626364434d521b.js +0 -1
  851. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-e3626364434d521b.js +0 -1
  852. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-e3626364434d521b.js +0 -1
  853. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-e3626364434d521b.js +0 -1
  854. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-e3626364434d521b.js +0 -1
  855. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-e3626364434d521b.js +0 -1
  856. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-e3626364434d521b.js +0 -1
  857. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-e3626364434d521b.js +0 -1
  858. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-e3626364434d521b.js +0 -1
  859. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-e3626364434d521b.js +0 -1
  860. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-e3626364434d521b.js +0 -1
  861. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-e3626364434d521b.js +0 -1
  862. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-e3626364434d521b.js +0 -1
  863. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-e3626364434d521b.js +0 -1
  864. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-e3626364434d521b.js +0 -1
  865. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-e3626364434d521b.js +0 -1
  866. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-e3626364434d521b.js +0 -1
  867. package/.next/static/chunks/app/api/worktrees/[id]/route-e3626364434d521b.js +0 -1
  868. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-e3626364434d521b.js +0 -1
  869. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-e3626364434d521b.js +0 -1
  870. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-e3626364434d521b.js +0 -1
  871. package/.next/static/chunks/app/api/worktrees/[id]/search/route-e3626364434d521b.js +0 -1
  872. package/.next/static/chunks/app/api/worktrees/[id]/send/route-e3626364434d521b.js +0 -1
  873. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-e3626364434d521b.js +0 -1
  874. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-e3626364434d521b.js +0 -1
  875. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-e3626364434d521b.js +0 -1
  876. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-e3626364434d521b.js +0 -1
  877. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-e3626364434d521b.js +0 -1
  878. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-e3626364434d521b.js +0 -1
  879. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-e3626364434d521b.js +0 -1
  880. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-e3626364434d521b.js +0 -1
  881. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-e3626364434d521b.js +0 -1
  882. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-e3626364434d521b.js +0 -1
  883. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-e3626364434d521b.js +0 -1
  884. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-e3626364434d521b.js +0 -1
  885. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-e3626364434d521b.js +0 -1
  886. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-e3626364434d521b.js +0 -1
  887. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-e3626364434d521b.js +0 -1
  888. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-e3626364434d521b.js +0 -1
  889. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-e3626364434d521b.js +0 -1
  890. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-e3626364434d521b.js +0 -1
  891. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-e3626364434d521b.js +0 -1
  892. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-e3626364434d521b.js +0 -1
  893. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-e3626364434d521b.js +0 -1
  894. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-e3626364434d521b.js +0 -1
  895. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-e3626364434d521b.js +0 -1
  896. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-e3626364434d521b.js +0 -1
  897. package/.next/static/chunks/app/api/worktrees/route-e3626364434d521b.js +0 -1
  898. package/.next/static/chunks/app/manifest.webmanifest/route-e3626364434d521b.js +0 -1
  899. package/.next/static/chunks/app/more/page-03867ab635d197c7.js +0 -1
  900. package/.next/static/chunks/app/proxy/[...path]/route-e3626364434d521b.js +0 -1
  901. package/.next/static/chunks/app/review/page-9a6d18ddcccbb63c.js +0 -1
  902. package/.next/static/chunks/app/sessions/page-4d5382b257077c14.js +0 -1
  903. package/.next/static/chunks/app/worktrees/[id]/layout-e3626364434d521b.js +0 -1
  904. package/.next/static/chunks/app/worktrees/[id]/page-c07b23b6ca58091c.js +0 -1
  905. package/.next/static/css/b6990f889f4f9515.css +0 -1
  906. package/.next/static/uulKcSOgyxChTo4SipUSF/_buildManifest.js +0 -1
  907. /package/.next/static/{uulKcSOgyxChTo4SipUSF → 0YoRrahue4Vchxg1z83IQ}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=1058,exports.ids=[1058],exports.modules={1058:(a,b,c)=>{c.d(b,{$:()=>N});var d=c(56791);let e=globalThis.__unclassifiedFrameRuns??(globalThis.__unclassifiedFrameRuns=new Map);var f=c(94154),g=c(63209),h=c(51297),i=c(76777),j=c(50524);let k=/^([^\S\n]*)╹(▀{4,})/,l=/^([^\S\n]*)[│┃]/;var m=c(81254),n=c(72626),o=c(59701),p=c(15194),q=c(97709),r=c(66101),s=c(13602),t=c(17287),u=c(15388),v=c(3161),w=c(49154),x=c(62171),y=c(97751),z=c(31766),A=c(95595),B=c(45017),C=c(52277),D=c(44321),E=c(34405),F=c(93997),G=c(48083),H=c(30008),I=c(24581),J=c(40043),K=c(9516),L=c(36051);let M=(0,n.h)("current-output-builder");async function N(a,b,c,d,e){let f=await O(a,b,c,d);return e?{...f,resolvedBy:e.resolvedBy,conflict:e.conflict??null}:f}async function O(a,b,c,n){let N=n??c,O=o.CLIToolManager.getInstance().getTool(c),P=(0,G.CE)(b,c,n),Q=(0,G.ak)(b,c,n),R=(0,q.VM)(c),S=Date.now(),T=(0,G.NW)(b,c,n,S),U=(0,G.BJ)(b,c,n,S),V=(0,v.Jl)(b,c,n),W={lastEventType:Q?.event??null,lastEventAt:Q?.at??null,lastEventDetail:Q?.detail??null,...(0,G.fY)(b,c,n,S),pendingDecisions:T.map(a=>{let b=(0,w.Wk)(a.toolName);return{id:a.decisionId,at:a.at,source:a.source,toolName:a.toolName,confirmedAt:a.confirmedAt,scraperCorroborated:a.scraperCorroborated,deliveryExpired:(0,I.qX)(a,R.capabilities.decisionTimeoutSeconds,S),kind:b,questionOptions:"question"===b&&U?(0,y.dZ)(U.spec).map(a=>({number:a.number,label:a.label})):null}}),dedupDropped:(0,G.n5)(b,c,n),dialogPendingMaxMs:{...I.h_},promptWaitingSince:null,promptWaitingSource:null,toolInputNormalization:(0,u.SQ)(b,c,n),permissionDecision:(0,t.CD)(b,c,n),source:{cliToolId:R.cliToolId,capabilities:R.capabilities,...(0,r.Kf)(R,R.liveness({worktreeId:b,cliToolId:c,instanceId:N}),S),probedActivity:(0,s.hS)({worktreeId:b,cliToolId:c,instanceId:N})},session:V,sessionContext:(0,v.sc)({worktreeId:b,cliToolId:c,instanceId:n},V),sessionDiff:(0,x.rn)({worktreeId:b,cliToolId:c,instanceId:n})};if(!await O.isRunning(b,n))return(0,J.xG)((0,B.v7)(b,c,n)),{isRunning:!1,content:"",lineCount:0,cliToolId:c,sessionStatus:"idle",sessionStatusReason:"session_not_running",statusEvidence:"positive",lastKnownStatus:null,lastKnownStatusAt:null,lastStopEventAt:P,structuredEvents:W,model:null,reasoningEffort:null,promptDedup:(0,D.XH)(b,c,n),upstreamFault:null,paneObstruction:null,composerText:null,composerState:"no_composer"};let X=(0,d.getSessionState)(a,b,N),Y=X?.lastCapturedLine||0,Z=await (0,z.Wh)(b,c,E._,n),$=Z.split("\n"),_=$.length,aa=(0,F.sl)(_,Math.min(E._,F.xE)),ab=((0,p.qR)(c,aa)?$.slice(Math.max(0,Y)):$).join("\n"),ac=(0,B.v7)(b,c,n),ad=(0,B.xU)(ac),ae=ad?new Date(ad):void 0,af=(0,A.WC)(Z,c,ae),ag=(0,A.f8)(af),ah=af.hasActivePrompt,ai="waiting"===af.status&&A.ug.has(af.reason),aj=af.reason===A.gv.CODEX_PAGER,ak=af.evidence,al=(0,J.Q4)(af.status,af.reason);(0,G._i)(b,c,n,"ready"===af.status&&"positive"===ak);let am=(0,G.R4)(b,c,n),an=(0,H._G)({worktreeId:b,cliToolId:c,instanceId:n,scraper:{status:af.status,reason:af.reason,hasActivePrompt:ah}}),ao=an.structured;null!==ao&&(W.promptWaitingSince=ao.at,W.promptWaitingSource=ao.source);let ap=function(a,b,c=null,d=null){if("waiting"===a.status)return{...a,structuredApplied:!1};if(null!==c)return{status:"waiting",reason:(0,H.rB)(c),thinking:!1,evidence:a.evidence,isUnclassifiedActive:a.isUnclassifiedActive,structuredApplied:!0};if(null===b||"waiting"===b.status)return{...a,structuredApplied:!1};let e="running"===b.status,f="ready"===b.status&&function(a){if(null===a)return!1;let{closedBy:b,closedAt:c,openedAt:d}=a;return"stop"===b&&null!==c&&null!==d&&c>d}(d)?"positive":a.evidence;return{status:b.status,reason:b.reason,thinking:e,evidence:f,isUnclassifiedActive:a.isUnclassifiedActive,structuredApplied:!0}}({status:af.status,reason:af.reason,thinking:ag,evidence:ak,isUnclassifiedActive:al},am,ao,W),aq=an.waiting,ar=af.promptDetection.promptData,as=ar&&U?(0,K.Hu)(ar,U.spec):null,at=null!==ao&&"notification"===ao.source&&"permission-id"===R.capabilities.eventIdentity&&(0,L.PP)(ao.decisionId)?ao.decisionId:null,au=null!==ao&&"question"===(0,w.Wk)(ao.toolName),av=null===at||au?null:L.QB,aw=null===ao?null:{...ao,askUserQuestion:function(a){let b=a?.spec.questions[0];return b?{question:b.question,labels:b.choices.map(a=>a.label),questionCount:a.spec.questions.length}:null}(U),decisionOptions:av,decisionId:at,patterns:null!==av?ao.patterns:null},ax=ah?as??ar??(aw?(0,L.Yo)(b,aw):null):aw?(0,L.Yo)(b,aw):null;null!==am&&am.status!==af.status&&M.info("detection-divergence",{worktreeId:b,cliToolId:c,instanceId:N,scraperStatus:af.status,scraperReason:af.reason,structuredStatus:am.status,structuredReason:am.reason,structuredEvent:am.event,structuredEventAt:am.at,applied:ap.structuredApplied});let ay=$.slice(-100).join("\n"),az="opencode"===c?function(a){let b=(0,h.aJ)(a).split("\n"),c=-1,d=-1,e=-1;for(let a=0;a<b.length;a++){let f=k.exec(b[a]);f&&(c=a,e=(d=f[1].length)+1+f[2].length)}if(-1===c)return null;let f=0,g="";for(let a=0;a<b.length;a++){let h=b[a];if(a!==c){let a=l.exec(h);if(!a||a[1].length!==d)continue}let k=h.slice((0,j.sh)(h,e)).trim();""!==k&&(f+=1,""===g&&(g=(0,i.D)(k,200,"…[truncated]")))}return f<2?null:{id:"opencode_sidebar",matchedText:g,boxRight:e,rows:f}}(ay):null,aA=function(a,b,c=Date.now()){for(let[a,b]of e)c-b.lastSeen>36e5&&e.delete(a);if(!b)return e.delete(a),{dwellMs:0,shouldRecord:!1};let d=e.get(a);if(!d)return e.set(a,{since:c,lastSeen:c,recorded:!1}),{dwellMs:0,shouldRecord:!1};d.lastSeen=c;let f=Math.max(0,c-d.since);return d.recorded||f<6e4?{dwellMs:f,shouldRecord:!1}:(d.recorded=!0,{dwellMs:f,shouldRecord:!0})}(ac,ap.isUnclassifiedActive);if(aA.shouldRecord&&function(a,b){var c;let e=Math.round(b.dwellMs/1e3),f=`${b.sessionStatus}/${b.sessionStatusReason}`,g=`Unclassified interactive frame (${f}) held for ${e}s. The detection layer could not parse it, so no prompt was published and nothing could answer it. Inspect the raw pane with \`commandmate capture ${b.worktreeId} --pane\`.`+((c=b.obstruction)?` Cause: opencode's sidebar is sharing rows with the transcript (paneObstruction=${c.id}, second column reads ${JSON.stringify(c.matchedText)}), which covers the marker that ends a turn. Press \`ctrl+x b\` in the pane to close it.`:""),h={type:m.LT,status:"unclassified",question:g,options:[],dwellSeconds:e,sessionStatusReason:f};try{(0,d.createMessage)(a,{worktreeId:b.worktreeId,role:"assistant",content:g,messageType:"prompt",promptData:h,timestamp:new Date,cliToolId:b.cliToolId,instanceId:b.instanceId}),M.info("unclassified-frame-recorded",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,dwellSeconds:e,statusReason:f})}catch(a){M.warn("unclassified-frame-record-failed",{worktreeId:b.worktreeId,error:a instanceof Error?a.message:String(a)})}}(a,{worktreeId:b,cliToolId:c,instanceId:N,dwellMs:aA.dwellMs,sessionStatus:ap.status,sessionStatusReason:ap.reason,obstruction:az}),null!==ao&&null!==aw&&!ah&&!ao.recorded){(0,G.HR)(b,c,n);var aB=b,aC=c,aD=N,aE=ao,aF=aw;let e=(0,L.fO)(aB,aF);try{(0,d.createMessage)(a,{worktreeId:aB,role:"assistant",content:e.question,summary:`structured prompt \xb7 source=${aE.source}${aE.toolName?` \xb7 tool=${aE.toolName}`:""}`,messageType:"prompt",promptData:e,timestamp:new Date,cliToolId:aC,instanceId:aD}),M.info("structured-prompt-recorded",{worktreeId:aB,cliToolId:aC,instanceId:aD,source:aE.source,toolName:aE.toolName})}catch(a){M.warn("structured-prompt-record-failed",{worktreeId:aB,error:a instanceof Error?a.message:String(a)})}}let aG=(0,f.ji)(Z,c),aH=(0,g.bT)(ay),aI=(0,B.aq)(b,c,n),{model:aJ,effort:aK}=(0,G.jl)(b,c,n);(0,J.ox)(ac,{status:ap.status,reason:ap.reason,evidence:ap.evidence});let aL=(0,J.AD)(ac);return{isRunning:!0,cliToolId:c,sessionStatus:ap.status,sessionStatusReason:ap.reason,content:ab,fullOutput:Z,realtimeSnippet:ay,lineCount:_,lastCapturedLine:Y,isComplete:aq,isGenerating:ap.thinking,thinking:ap.thinking,thinkingMessage:ap.thinking?"Claude is thinking...":null,isPromptWaiting:aq,promptData:ax,autoYes:{enabled:aI?.enabled??!1,expiresAt:aI?.enabled?aI.expiresAt:null,stopReason:aI?.stopReason,lastSuppression:(0,C.gb)(b,c,n),stopMatchedText:aI?.stopMatchedText},isSelectionListActive:ai,isPagerActive:aj,isUnclassifiedActive:ap.isUnclassifiedActive,statusEvidence:ap.evidence,lastKnownStatus:aL?.status??null,lastKnownStatusAt:aL?.at??null,lastServerResponseTimestamp:ad,serverPollerActive:(0,B.bZ)(ac),lastStopEventAt:P,structuredEvents:W,model:aJ,reasoningEffort:aK,promptDedup:(0,D.XH)(b,c,n),upstreamFault:aH?{id:aH.fault.id,matchedText:aH.matchedText,at:Date.now()}:null,paneObstruction:az?{id:az.id,matchedText:az.matchedText,at:Date.now()}:null,composerText:"content"===aG.state?aG.text:null,composerState:aG.state}}},9516:(a,b,c)=>{c.d(b,{Hu:()=>i,Ll:()=>j});let d=["type something","chat about this"],e=/^\s*\[[ xX]\]\s*/,f=/(?:…|\.\.\.)\s*$/,g=new Set(["yes","y","no","n"]);function h(a){return a.replace(e,"").replace(f,"").replace(/\s+/g," ").trim().toLowerCase()}function i(a,b){if("multiple_choice"!==a.type)return null;let c=function(a,b){let c=h(b);if(""===c)return null;let d=a.questions.map((a,b)=>({entry:a,index:b})).filter(({entry:a})=>(function(a,b){let[c,d]=a.length<=b.length?[a,b]:[b,a];return c.length<8?c===d:d.includes(c)})(h(a.question),c));return 1===d.length?d[0]:null}(b,a.question);if(null===c)return null;let{entry:f,index:g}=c,i=new Map(a.options.map(a=>[a.number,a])),j=[];for(let[a,b]of f.choices.entries()){var k;let c=a+1,d=i.get(c);if(!d||!function(a,b){if(""===a||""===b)return!1;if(a===b)return!0;let[c,d]=a.length<=b.length?[a,b]:[b,a];return!(c.length<8)&&d.startsWith(c)}(h(d.label),h(b.label)))return null;j.push({...d,label:`${(k=d.label,e.exec(k)?.[0]??"")}${b.label}`,...b.description?{description:b.description}:{}})}let l=[];for(let b of a.options)!(b.number<=f.choices.length)&&function(a){let b=h(a);return d.some(a=>b===a||b.startsWith(a))}(b.label)&&(j.push(b),l.push(b.number));return j.sort((a,b)=>a.number-b.number),{...a,question:f.question,options:j,isAskUserQuestion:!0,askUserQuestion:{...f.header?{header:f.header}:{},multiSelect:f.multiSelect,questionIndex:g,questionCount:b.questions.length,metaOptionNumbers:l}}}function j(a,b){let c=b.trim();if(/^\d+$/.test(c)){let b=Number.parseInt(c,10);return a.options.some(a=>a.number===b)?{ok:!0,input:String(b)}:{ok:!1,reason:"answer_out_of_range",message:"The option number is outside the range this prompt offers. Use `commandmate capture <worktree-id> --json` to list the current options."}}let d=function(a,b){let c=h(b);if(""===c)return[];let d=a.filter(a=>h(a.label)===c);return d.length>0?d:c.length<2?[]:a.filter(a=>h(a.label).startsWith(c))}(a.options,c);if(1===d.length){let[a]=d;return{ok:!0,input:String(a.number),resolved:{via:"semantic",optionNumber:a.number,optionLabel:a.label}}}return d.length>1?{ok:!1,reason:"unresolvable_answer",message:"The answer matches more than one option label. Answer with an option number."}:a.options.some(a=>!0===a.requiresTextInput)&&!g.has(c.toLowerCase())?{ok:!0,input:b}:{ok:!1,reason:"unresolvable_answer",message:"No option label matches the answer. Answer with an option number (yes/no is not resolved on a numbered picker — Issue #1681)."}}},15388:(a,b,c)=>{c.d(b,{RJ:()=>f,SQ:()=>g});var d=c(24455);let e=globalThis.__toolInputNormalizations??(globalThis.__toolInputNormalizations=new Map);function f(a,b,c,g,h,i=Date.now()){e.set((0,d.v7)(a,b,c),{...g,toolName:h,at:i})}function g(a,b,c){return e.get((0,d.v7)(a,b,c))??null}},44321:(a,b,c)=>{c.d(b,{LN:()=>f,XH:()=>g,fL:()=>h});var d=c(24455);let e=globalThis.__promptDedupSkips??(globalThis.__promptDedupSkips=new Map);function f(a,b,c,g=Date.now()){let h=(0,d.v7)(a,b,c),i=e.get(h);e.set(h,{skippedCount:(i?.skippedCount??0)+1,lastSkippedAt:g})}function g(a,b,c){return e.get((0,d.v7)(a,b,c))??{skippedCount:0,lastSkippedAt:null}}function h(a,b,c,f){if(a===b)return;let g=(0,d.v7)(a,c,f),h=e.get(g);e.delete(g),void 0!==h&&e.set((0,d.v7)(b,c,f),h)}},63209:(a,b,c)=>{c.d(b,{bT:()=>g});var d=c(51297),e=c(76777);let f=[{id:"overloaded",pattern:/\b5\d{2}\s+Overloaded\b/i,selfRetrying:!0},{id:"retrying",pattern:/Retrying in \d+s\s*[·•]\s*attempt \d+\/\d+/i,selfRetrying:!0},{id:"limit-reached",pattern:/\blimit reached\b/i,selfRetrying:!1},{id:"api-error",pattern:/\bAPI Error(?::|\s+\d{3})/i,selfRetrying:!1}];function g(a){let b=(0,d.aJ)(a);for(let a of f){var c;let d=a.pattern.exec(b);if(!d)continue;let f=b.lastIndexOf("\n",d.index)+1,g=b.indexOf("\n",d.index);return{fault:a,matchedText:(c=b.slice(f,-1===g?void 0:g).trim()||d[0],(0,e.D)(c,200,"…[truncated]"))}}return null}},97751:(a,b,c)=>{c.d(b,{M4:()=>p,W7:()=>r,aK:()=>q,dV:()=>l,dZ:()=>m,yQ:()=>j});var d=c(72626),e=c(36051),f=c(25071),g=c(97709),h=c(62887);let i=(0,d.h)("lib/hooks/structured-decision-response"),j="Rejected by the operator via `commandmate respond`.",k={1:["once","allow once","allow","yes","y"],2:["always","allow always","allow-always"],3:["reject","deny","no","n"]};function l(a){let b=a.trim().toLowerCase();if(""===b)return null;for(let a of e.QB)if(b===String(a.number)||b===a.label.toLowerCase()||b===a.reply||(k[a.number]??[]).includes(b))return a;return null}function m(a){let b=a.questions[0];return b?b.choices.map((a,b)=>({number:b+1,label:a.label,reply:a.label})):[]}let n=/^\d+(?:\s*[,\s]\s*\d+)*$/;function o(a){return a.map(a=>`${a.number} = ${a.label}`).join(", ")}function p(a,b){let c=b.trim();if(""===c)return{ok:!1,reason:"unresolvable_answer",message:"An empty answer names no choice."};if(1!==a.questions.length)return{ok:!1,reason:"multi_question_unsupported",message:`This call asks ${a.questions.length} questions and \`answers\` carries one array per question; a single answer cannot say what the others are. Answer it in the terminal.`};let d=a.questions[0],e=m(a);if(n.test(c)){let a=[];for(let b of c.split(/[,\s]+/)){let d=e.find(a=>a.number===Number(b));if(!d)return{ok:!1,reason:"answer_out_of_range",message:`'${c}' names no choice this question offers. ${o(e)}.`};a.some(a=>a.number===d.number)||a.push(d)}return a.length>1&&!d.multiSelect?{ok:!1,reason:"multi_select_not_offered",message:`This question accepts one choice. Send a single number: ${o(e)}.`}:{ok:!0,resolved:{answers:[a.map(a=>a.reply)],selected:a,freeText:!1}}}let f=e.find(a=>a.label.toLowerCase()===c.toLowerCase());return f?{ok:!0,resolved:{answers:[[f.reply]],selected:[f],freeText:!1}}:c.length>1e3?{ok:!1,reason:"unresolvable_answer",message:"A free-text answer is limited to 1000 characters; this one is longer and is refused rather than cut short."}:{ok:!0,resolved:{answers:[[c]],selected:[],freeText:!0}}}function q(a){return{kind:"answer",answers:a.answers}}async function r({worktreeId:a,cliToolId:b,instanceId:d,answer:k,useDefault:m=!1}){let n,o=(0,g.VM)(b);if(null===o.capabilities.eventIdentity)return{kind:"not-applicable",reason:"no-decision-identity"};let p={worktreeId:a,cliToolId:b,instanceId:d};try{n=await o.listPending(p)}catch(c){return i.warn("structured-decision-unreachable",{worktreeId:a,cliToolId:b,instanceId:d??b,error:c instanceof Error?c.message:String(c)}),{kind:"not-applicable",reason:"source-unreachable"}}let q=n.filter(a=>"permission"===a.kind);if(0===q.length)return{kind:"not-applicable",reason:"no-pending-decision"};let r=q[0];if(q.length>1&&i.info("structured-decision-multiple-pending",{worktreeId:a,cliToolId:b,instanceId:d??b,pending:q.length,answering:r.id}),m)return{kind:"refused",reason:"unresolvable_answer",message:`--default cannot answer a structured approval: the agent publishes no default verdict. Send a number instead — ${e.QB.map(a=>`${a.number} = ${a.label}`).join(", ")}.`};let s=void 0===k?null:l(k);if(!s)return{kind:"refused",reason:"answer_out_of_range",message:`'${k??""}' is not one of the verdicts this approval accepts. `+e.QB.map(a=>`${a.number} = ${a.label} (${a.reply})`).join(", ")+"."};let t=function(a){switch(a){case 1:return{kind:"allowOnce"};case 2:return{kind:"allowAlways"};case 3:return{kind:"deny",message:j};default:return null}}(s.number);if(!t)return{kind:"refused",reason:"unresolvable_answer",message:`Option ${s.number} has no verdict on this server.`};let{delivery:u}=await (0,f.GW)(o,p,r,t),v=u?.delivered===!0;if(v&&o.capabilities.permissionReplyReleasesPrompt){let{recordAgentEvent:e}=await Promise.resolve().then(c.bind(c,48083));e(a,b,d,{event:"notification",at:Date.now(),detail:h.KC,sessionId:r.conversationId,decisionId:r.id,promptSettled:!0})}return i.info("structured-decision-answered",{worktreeId:a,cliToolId:b,instanceId:d??b,decisionId:r.id,optionNumber:s.number,reply:s.reply,delivered:v}),{kind:"answered",decisionId:r.id,option:s,delivered:v}}}};
1
+ "use strict";exports.id=1058,exports.ids=[1058],exports.modules={1058:(a,b,c)=>{c.d(b,{$:()=>N});var d=c(56791);let e=globalThis.__unclassifiedFrameRuns??(globalThis.__unclassifiedFrameRuns=new Map);var f=c(94154),g=c(63209),h=c(51297),i=c(76777),j=c(50524);let k=/^([^\S\n]*)╹(▀{4,})/,l=/^([^\S\n]*)[│┃]/;var m=c(81254),n=c(72626),o=c(83468),p=c(15194),q=c(97709),r=c(66101),s=c(13602),t=c(17287),u=c(15388),v=c(3161),w=c(49154),x=c(62171),y=c(97751),z=c(31766),A=c(95595),B=c(45017),C=c(52277),D=c(44321),E=c(34405),F=c(93997),G=c(48083),H=c(30008),I=c(24581),J=c(40043),K=c(9516),L=c(36051);let M=(0,n.h)("current-output-builder");async function N(a,b,c,d,e){let f=await O(a,b,c,d);return e?{...f,resolvedBy:e.resolvedBy,conflict:e.conflict??null}:f}async function O(a,b,c,n){let N=n??c,O=o.CLIToolManager.getInstance().getTool(c),P=(0,G.CE)(b,c,n),Q=(0,G.ak)(b,c,n),R=(0,q.VM)(c),S=Date.now(),T=(0,G.NW)(b,c,n,S),U=(0,G.BJ)(b,c,n,S),V=(0,v.Jl)(b,c,n),W={lastEventType:Q?.event??null,lastEventAt:Q?.at??null,lastEventDetail:Q?.detail??null,...(0,G.fY)(b,c,n,S),pendingDecisions:T.map(a=>{let b=(0,w.Wk)(a.toolName);return{id:a.decisionId,at:a.at,source:a.source,toolName:a.toolName,confirmedAt:a.confirmedAt,scraperCorroborated:a.scraperCorroborated,deliveryExpired:(0,I.qX)(a,R.capabilities.decisionTimeoutSeconds,S),kind:b,questionOptions:"question"===b&&U?(0,y.dZ)(U.spec).map(a=>({number:a.number,label:a.label})):null}}),dedupDropped:(0,G.n5)(b,c,n),dialogPendingMaxMs:{...I.h_},promptWaitingSince:null,promptWaitingSource:null,toolInputNormalization:(0,u.SQ)(b,c,n),permissionDecision:(0,t.CD)(b,c,n),source:{cliToolId:R.cliToolId,capabilities:R.capabilities,...(0,r.Kf)(R,R.liveness({worktreeId:b,cliToolId:c,instanceId:N}),S),probedActivity:(0,s.hS)({worktreeId:b,cliToolId:c,instanceId:N})},session:V,sessionContext:(0,v.sc)({worktreeId:b,cliToolId:c,instanceId:n},V),sessionDiff:(0,x.rn)({worktreeId:b,cliToolId:c,instanceId:n})};if(!await O.isRunning(b,n))return(0,J.xG)((0,B.v7)(b,c,n)),{isRunning:!1,content:"",lineCount:0,cliToolId:c,sessionStatus:"idle",sessionStatusReason:"session_not_running",statusEvidence:"positive",lastKnownStatus:null,lastKnownStatusAt:null,lastStopEventAt:P,structuredEvents:W,model:null,reasoningEffort:null,promptDedup:(0,D.XH)(b,c,n),upstreamFault:null,paneObstruction:null,composerText:null,composerState:"no_composer"};let X=(0,d.getSessionState)(a,b,N),Y=X?.lastCapturedLine||0,Z=await (0,z.Wh)(b,c,E._,n),$=Z.split("\n"),_=$.length,aa=(0,F.sl)(_,Math.min(E._,F.xE)),ab=((0,p.qR)(c,aa)?$.slice(Math.max(0,Y)):$).join("\n"),ac=(0,B.v7)(b,c,n),ad=(0,B.xU)(ac),ae=ad?new Date(ad):void 0,af=(0,A.WC)(Z,c,ae),ag=(0,A.f8)(af),ah=af.hasActivePrompt,ai="waiting"===af.status&&A.ug.has(af.reason),aj=af.reason===A.gv.CODEX_PAGER,ak=af.evidence,al=(0,J.Q4)(af.status,af.reason);(0,G._i)(b,c,n,"ready"===af.status&&"positive"===ak);let am=(0,G.R4)(b,c,n),an=(0,H._G)({worktreeId:b,cliToolId:c,instanceId:n,scraper:{status:af.status,reason:af.reason,hasActivePrompt:ah}}),ao=an.structured;null!==ao&&(W.promptWaitingSince=ao.at,W.promptWaitingSource=ao.source);let ap=function(a,b,c=null,d=null){if("waiting"===a.status)return{...a,structuredApplied:!1};if(null!==c)return{status:"waiting",reason:(0,H.rB)(c),thinking:!1,evidence:a.evidence,isUnclassifiedActive:a.isUnclassifiedActive,structuredApplied:!0};if(null===b||"waiting"===b.status)return{...a,structuredApplied:!1};let e="running"===b.status,f="ready"===b.status&&function(a){if(null===a)return!1;let{closedBy:b,closedAt:c,openedAt:d}=a;return"stop"===b&&null!==c&&null!==d&&c>d}(d)?"positive":a.evidence;return{status:b.status,reason:b.reason,thinking:e,evidence:f,isUnclassifiedActive:a.isUnclassifiedActive,structuredApplied:!0}}({status:af.status,reason:af.reason,thinking:ag,evidence:ak,isUnclassifiedActive:al},am,ao,W),aq=an.waiting,ar=af.promptDetection.promptData,as=ar&&U?(0,K.Hu)(ar,U.spec):null,at=null!==ao&&"notification"===ao.source&&"permission-id"===R.capabilities.eventIdentity&&(0,L.PP)(ao.decisionId)?ao.decisionId:null,au=null!==ao&&"question"===(0,w.Wk)(ao.toolName),av=null===at||au?null:L.QB,aw=null===ao?null:{...ao,askUserQuestion:function(a){let b=a?.spec.questions[0];return b?{question:b.question,labels:b.choices.map(a=>a.label),questionCount:a.spec.questions.length}:null}(U),decisionOptions:av,decisionId:at,patterns:null!==av?ao.patterns:null},ax=ah?as??ar??(aw?(0,L.Yo)(b,aw):null):aw?(0,L.Yo)(b,aw):null;null!==am&&am.status!==af.status&&M.info("detection-divergence",{worktreeId:b,cliToolId:c,instanceId:N,scraperStatus:af.status,scraperReason:af.reason,structuredStatus:am.status,structuredReason:am.reason,structuredEvent:am.event,structuredEventAt:am.at,applied:ap.structuredApplied});let ay=$.slice(-100).join("\n"),az="opencode"===c?function(a){let b=(0,h.aJ)(a).split("\n"),c=-1,d=-1,e=-1;for(let a=0;a<b.length;a++){let f=k.exec(b[a]);f&&(c=a,e=(d=f[1].length)+1+f[2].length)}if(-1===c)return null;let f=0,g="";for(let a=0;a<b.length;a++){let h=b[a];if(a!==c){let a=l.exec(h);if(!a||a[1].length!==d)continue}let k=h.slice((0,j.sh)(h,e)).trim();""!==k&&(f+=1,""===g&&(g=(0,i.D)(k,200,"…[truncated]")))}return f<2?null:{id:"opencode_sidebar",matchedText:g,boxRight:e,rows:f}}(ay):null,aA=function(a,b,c=Date.now()){for(let[a,b]of e)c-b.lastSeen>36e5&&e.delete(a);if(!b)return e.delete(a),{dwellMs:0,shouldRecord:!1};let d=e.get(a);if(!d)return e.set(a,{since:c,lastSeen:c,recorded:!1}),{dwellMs:0,shouldRecord:!1};d.lastSeen=c;let f=Math.max(0,c-d.since);return d.recorded||f<6e4?{dwellMs:f,shouldRecord:!1}:(d.recorded=!0,{dwellMs:f,shouldRecord:!0})}(ac,ap.isUnclassifiedActive);if(aA.shouldRecord&&function(a,b){var c;let e=Math.round(b.dwellMs/1e3),f=`${b.sessionStatus}/${b.sessionStatusReason}`,g=`Unclassified interactive frame (${f}) held for ${e}s. The detection layer could not parse it, so no prompt was published and nothing could answer it. Inspect the raw pane with \`commandmate capture ${b.worktreeId} --pane\`.`+((c=b.obstruction)?` Cause: opencode's sidebar is sharing rows with the transcript (paneObstruction=${c.id}, second column reads ${JSON.stringify(c.matchedText)}), which covers the marker that ends a turn. Press \`ctrl+x b\` in the pane to close it.`:""),h={type:m.LT,status:"unclassified",question:g,options:[],dwellSeconds:e,sessionStatusReason:f};try{(0,d.createMessage)(a,{worktreeId:b.worktreeId,role:"assistant",content:g,messageType:"prompt",promptData:h,timestamp:new Date,cliToolId:b.cliToolId,instanceId:b.instanceId}),M.info("unclassified-frame-recorded",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,dwellSeconds:e,statusReason:f})}catch(a){M.warn("unclassified-frame-record-failed",{worktreeId:b.worktreeId,error:a instanceof Error?a.message:String(a)})}}(a,{worktreeId:b,cliToolId:c,instanceId:N,dwellMs:aA.dwellMs,sessionStatus:ap.status,sessionStatusReason:ap.reason,obstruction:az}),null!==ao&&null!==aw&&!ah&&!ao.recorded){(0,G.HR)(b,c,n);var aB=b,aC=c,aD=N,aE=ao,aF=aw;let e=(0,L.fO)(aB,aF);try{(0,d.createMessage)(a,{worktreeId:aB,role:"assistant",content:e.question,summary:`structured prompt \xb7 source=${aE.source}${aE.toolName?` \xb7 tool=${aE.toolName}`:""}`,messageType:"prompt",promptData:e,timestamp:new Date,cliToolId:aC,instanceId:aD}),M.info("structured-prompt-recorded",{worktreeId:aB,cliToolId:aC,instanceId:aD,source:aE.source,toolName:aE.toolName})}catch(a){M.warn("structured-prompt-record-failed",{worktreeId:aB,error:a instanceof Error?a.message:String(a)})}}let aG=(0,f.ji)(Z,c),aH=(0,g.bT)(ay),aI=(0,B.aq)(b,c,n),{model:aJ,effort:aK}=(0,G.jl)(b,c,n);(0,J.ox)(ac,{status:ap.status,reason:ap.reason,evidence:ap.evidence});let aL=(0,J.AD)(ac);return{isRunning:!0,cliToolId:c,sessionStatus:ap.status,sessionStatusReason:ap.reason,content:ab,fullOutput:Z,realtimeSnippet:ay,lineCount:_,lastCapturedLine:Y,isComplete:aq,isGenerating:ap.thinking,thinking:ap.thinking,thinkingMessage:ap.thinking?"Claude is thinking...":null,isPromptWaiting:aq,promptData:ax,autoYes:{enabled:aI?.enabled??!1,expiresAt:aI?.enabled?aI.expiresAt:null,stopReason:aI?.stopReason,lastSuppression:(0,C.gb)(b,c,n),stopMatchedText:aI?.stopMatchedText},isSelectionListActive:ai,isPagerActive:aj,isUnclassifiedActive:ap.isUnclassifiedActive,statusEvidence:ap.evidence,lastKnownStatus:aL?.status??null,lastKnownStatusAt:aL?.at??null,lastServerResponseTimestamp:ad,serverPollerActive:(0,B.bZ)(ac),lastStopEventAt:P,structuredEvents:W,model:aJ,reasoningEffort:aK,promptDedup:(0,D.XH)(b,c,n),upstreamFault:aH?{id:aH.fault.id,matchedText:aH.matchedText,at:Date.now()}:null,paneObstruction:az?{id:az.id,matchedText:az.matchedText,at:Date.now()}:null,composerText:"content"===aG.state?aG.text:null,composerState:aG.state}}},9516:(a,b,c)=>{c.d(b,{Hu:()=>i,Ll:()=>j});let d=["type something","chat about this"],e=/^\s*\[[ xX]\]\s*/,f=/(?:…|\.\.\.)\s*$/,g=new Set(["yes","y","no","n"]);function h(a){return a.replace(e,"").replace(f,"").replace(/\s+/g," ").trim().toLowerCase()}function i(a,b){if("multiple_choice"!==a.type)return null;let c=function(a,b){let c=h(b);if(""===c)return null;let d=a.questions.map((a,b)=>({entry:a,index:b})).filter(({entry:a})=>(function(a,b){let[c,d]=a.length<=b.length?[a,b]:[b,a];return c.length<8?c===d:d.includes(c)})(h(a.question),c));return 1===d.length?d[0]:null}(b,a.question);if(null===c)return null;let{entry:f,index:g}=c,i=new Map(a.options.map(a=>[a.number,a])),j=[];for(let[a,b]of f.choices.entries()){var k;let c=a+1,d=i.get(c);if(!d||!function(a,b){if(""===a||""===b)return!1;if(a===b)return!0;let[c,d]=a.length<=b.length?[a,b]:[b,a];return!(c.length<8)&&d.startsWith(c)}(h(d.label),h(b.label)))return null;j.push({...d,label:`${(k=d.label,e.exec(k)?.[0]??"")}${b.label}`,...b.description?{description:b.description}:{}})}let l=[];for(let b of a.options)!(b.number<=f.choices.length)&&function(a){let b=h(a);return d.some(a=>b===a||b.startsWith(a))}(b.label)&&(j.push(b),l.push(b.number));return j.sort((a,b)=>a.number-b.number),{...a,question:f.question,options:j,isAskUserQuestion:!0,askUserQuestion:{...f.header?{header:f.header}:{},multiSelect:f.multiSelect,questionIndex:g,questionCount:b.questions.length,metaOptionNumbers:l}}}function j(a,b){let c=b.trim();if(/^\d+$/.test(c)){let b=Number.parseInt(c,10);return a.options.some(a=>a.number===b)?{ok:!0,input:String(b)}:{ok:!1,reason:"answer_out_of_range",message:"The option number is outside the range this prompt offers. Use `commandmate capture <worktree-id> --json` to list the current options."}}let d=function(a,b){let c=h(b);if(""===c)return[];let d=a.filter(a=>h(a.label)===c);return d.length>0?d:c.length<2?[]:a.filter(a=>h(a.label).startsWith(c))}(a.options,c);if(1===d.length){let[a]=d;return{ok:!0,input:String(a.number),resolved:{via:"semantic",optionNumber:a.number,optionLabel:a.label}}}return d.length>1?{ok:!1,reason:"unresolvable_answer",message:"The answer matches more than one option label. Answer with an option number."}:a.options.some(a=>!0===a.requiresTextInput)&&!g.has(c.toLowerCase())?{ok:!0,input:b}:{ok:!1,reason:"unresolvable_answer",message:"No option label matches the answer. Answer with an option number (yes/no is not resolved on a numbered picker — Issue #1681)."}}},15388:(a,b,c)=>{c.d(b,{RJ:()=>f,SQ:()=>g});var d=c(24455);let e=globalThis.__toolInputNormalizations??(globalThis.__toolInputNormalizations=new Map);function f(a,b,c,g,h,i=Date.now()){e.set((0,d.v7)(a,b,c),{...g,toolName:h,at:i})}function g(a,b,c){return e.get((0,d.v7)(a,b,c))??null}},44321:(a,b,c)=>{c.d(b,{LN:()=>f,XH:()=>g,fL:()=>h});var d=c(24455);let e=globalThis.__promptDedupSkips??(globalThis.__promptDedupSkips=new Map);function f(a,b,c,g=Date.now()){let h=(0,d.v7)(a,b,c),i=e.get(h);e.set(h,{skippedCount:(i?.skippedCount??0)+1,lastSkippedAt:g})}function g(a,b,c){return e.get((0,d.v7)(a,b,c))??{skippedCount:0,lastSkippedAt:null}}function h(a,b,c,f){if(a===b)return;let g=(0,d.v7)(a,c,f),h=e.get(g);e.delete(g),void 0!==h&&e.set((0,d.v7)(b,c,f),h)}},63209:(a,b,c)=>{c.d(b,{bT:()=>g});var d=c(51297),e=c(76777);let f=[{id:"overloaded",pattern:/\b5\d{2}\s+Overloaded\b/i,selfRetrying:!0},{id:"retrying",pattern:/Retrying in \d+s\s*[·•]\s*attempt \d+\/\d+/i,selfRetrying:!0},{id:"limit-reached",pattern:/\blimit reached\b/i,selfRetrying:!1},{id:"api-error",pattern:/\bAPI Error(?::|\s+\d{3})/i,selfRetrying:!1}];function g(a){let b=(0,d.aJ)(a);for(let a of f){var c;let d=a.pattern.exec(b);if(!d)continue;let f=b.lastIndexOf("\n",d.index)+1,g=b.indexOf("\n",d.index);return{fault:a,matchedText:(c=b.slice(f,-1===g?void 0:g).trim()||d[0],(0,e.D)(c,200,"…[truncated]"))}}return null}},97751:(a,b,c)=>{c.d(b,{M4:()=>p,W7:()=>r,aK:()=>q,dV:()=>l,dZ:()=>m,yQ:()=>j});var d=c(72626),e=c(36051),f=c(25071),g=c(97709),h=c(62887);let i=(0,d.h)("lib/hooks/structured-decision-response"),j="Rejected by the operator via `commandmate respond`.",k={1:["once","allow once","allow","yes","y"],2:["always","allow always","allow-always"],3:["reject","deny","no","n"]};function l(a){let b=a.trim().toLowerCase();if(""===b)return null;for(let a of e.QB)if(b===String(a.number)||b===a.label.toLowerCase()||b===a.reply||(k[a.number]??[]).includes(b))return a;return null}function m(a){let b=a.questions[0];return b?b.choices.map((a,b)=>({number:b+1,label:a.label,reply:a.label})):[]}let n=/^\d+(?:\s*[,\s]\s*\d+)*$/;function o(a){return a.map(a=>`${a.number} = ${a.label}`).join(", ")}function p(a,b){let c=b.trim();if(""===c)return{ok:!1,reason:"unresolvable_answer",message:"An empty answer names no choice."};if(1!==a.questions.length)return{ok:!1,reason:"multi_question_unsupported",message:`This call asks ${a.questions.length} questions and \`answers\` carries one array per question; a single answer cannot say what the others are. Answer it in the terminal.`};let d=a.questions[0],e=m(a);if(n.test(c)){let a=[];for(let b of c.split(/[,\s]+/)){let d=e.find(a=>a.number===Number(b));if(!d)return{ok:!1,reason:"answer_out_of_range",message:`'${c}' names no choice this question offers. ${o(e)}.`};a.some(a=>a.number===d.number)||a.push(d)}return a.length>1&&!d.multiSelect?{ok:!1,reason:"multi_select_not_offered",message:`This question accepts one choice. Send a single number: ${o(e)}.`}:{ok:!0,resolved:{answers:[a.map(a=>a.reply)],selected:a,freeText:!1}}}let f=e.find(a=>a.label.toLowerCase()===c.toLowerCase());return f?{ok:!0,resolved:{answers:[[f.reply]],selected:[f],freeText:!1}}:c.length>1e3?{ok:!1,reason:"unresolvable_answer",message:"A free-text answer is limited to 1000 characters; this one is longer and is refused rather than cut short."}:{ok:!0,resolved:{answers:[[c]],selected:[],freeText:!0}}}function q(a){return{kind:"answer",answers:a.answers}}async function r({worktreeId:a,cliToolId:b,instanceId:d,answer:k,useDefault:m=!1}){let n,o=(0,g.VM)(b);if(null===o.capabilities.eventIdentity)return{kind:"not-applicable",reason:"no-decision-identity"};let p={worktreeId:a,cliToolId:b,instanceId:d};try{n=await o.listPending(p)}catch(c){return i.warn("structured-decision-unreachable",{worktreeId:a,cliToolId:b,instanceId:d??b,error:c instanceof Error?c.message:String(c)}),{kind:"not-applicable",reason:"source-unreachable"}}let q=n.filter(a=>"permission"===a.kind);if(0===q.length)return{kind:"not-applicable",reason:"no-pending-decision"};let r=q[0];if(q.length>1&&i.info("structured-decision-multiple-pending",{worktreeId:a,cliToolId:b,instanceId:d??b,pending:q.length,answering:r.id}),m)return{kind:"refused",reason:"unresolvable_answer",message:`--default cannot answer a structured approval: the agent publishes no default verdict. Send a number instead — ${e.QB.map(a=>`${a.number} = ${a.label}`).join(", ")}.`};let s=void 0===k?null:l(k);if(!s)return{kind:"refused",reason:"answer_out_of_range",message:`'${k??""}' is not one of the verdicts this approval accepts. `+e.QB.map(a=>`${a.number} = ${a.label} (${a.reply})`).join(", ")+"."};let t=function(a){switch(a){case 1:return{kind:"allowOnce"};case 2:return{kind:"allowAlways"};case 3:return{kind:"deny",message:j};default:return null}}(s.number);if(!t)return{kind:"refused",reason:"unresolvable_answer",message:`Option ${s.number} has no verdict on this server.`};let{delivery:u}=await (0,f.GW)(o,p,r,t),v=u?.delivered===!0;if(v&&o.capabilities.permissionReplyReleasesPrompt){let{recordAgentEvent:e}=await Promise.resolve().then(c.bind(c,48083));e(a,b,d,{event:"notification",at:Date.now(),detail:h.KC,sessionId:r.conversationId,decisionId:r.id,promptSettled:!0})}return i.info("structured-decision-answered",{worktreeId:a,cliToolId:b,instanceId:d??b,decisionId:r.id,optionNumber:s.number,reply:s.reply,delivered:v}),{kind:"answered",decisionId:r.id,option:s,delivered:v}}}};
@@ -1 +1 @@
1
- "use strict";exports.id=1068,exports.ids=[1068,2839,5220],exports.modules={12462:(a,b,c)=>{c.d(b,{T8:()=>j,o4:()=>k});var d=c(31766),e=c(56791),f=c(95620),g=c(82450),h=c(15194);let i=(0,c(72626).h)("assistant-response-saver");function j(a,b){switch(b){case"claude":return(0,g.NN)(a);case"gemini":return(0,g.IS)(a);case"opencode":return(0,g.aW)(a);case"copilot":return(0,g.LH)(a);default:return a.trim()}}async function k(a,b,c,g,k){let l=k??c;try{let m;if((0,h.VA)(c))return null;let n=(0,e.getSessionState)(a,b,l),o=n?.lastCapturedLine||0;try{m=await (0,d.Wh)(b,c,1e4,k)}catch{return i.info("failed-to-capture"),null}if(!m)return null;let p=m.split("\n"),q=p.length;for(;q>0&&""===p[q-1].trim();)q--;let r=q,{bufferReset:s,reason:t}=r>0&&o>25&&r+25<o?{bufferReset:!0,reason:"shrink"}:r>0&&o>50&&r<50?{bufferReset:!0,reason:"restart"}:{bufferReset:!1,reason:null};s&&i.info("buffer:reset-detected",{reason:t,currentLineCount:r,lastCapturedLine:o});let u=s?0:o;if(!s&&r<=o)return r<o&&((0,e.updateSessionState)(a,b,c,r,k),i.info("position:corrected-stale",{from:o,to:r})),null;let v=p.slice(u).join("\n"),w=j(v,c);if(!w||""===w.trim())return(0,e.updateSessionState)(a,b,c,r,k),i.debug("response:empty-after-clean",{currentLineCount:r}),null;let x=new Date(g.getTime()-1),y=(0,e.createMessage)(a,{worktreeId:b,role:"assistant",content:w,messageType:"normal",timestamp:x,cliToolId:c,instanceId:l});return(0,e.updateSessionState)(a,b,c,r,k),(0,f.broadcastMessage)("message",{worktreeId:b,message:y}),i.info("response:saved",{fromLine:o,toLine:r}),y}catch(a){return i.error("error:",{error:a instanceof Error?a.message:String(a)}),null}}},23197:(a,b,c)=>{c.d(b,{$M:()=>e,H1:()=>d,q5:()=>f});let d="__global__",e=2e3,f=900},39687:(a,b,c)=>{c.d(b,{d:()=>n});var d=c(56791),e=c(59701),f=c(15194),g=c(95220),h=c(12462),i=c(72626),j=c(58707),k=c(41466);let l=(0,i.h)("session/send-user-message");function m(a){return a instanceof Error?a.message:String(a)}async function n(a,b){let{worktreeId:c,content:i,cliToolId:n,instanceId:o,absoluteImagePath:p,copilotModel:q}=b,r=b.messageType??"normal",s=e.CLIToolManager.getInstance().getTool(n),t=await (0,j.a3)(c,n,o,{ignoreStructured:b.ignoreStructuredPromptGuard});if(t.waiting)return l.info("send-refused-prompt-waiting",{worktreeId:c,cliToolId:n,reason:t.reason,blockedBy:t.blockedBy}),{ok:!1,stage:"prompt_waiting",error:(0,j.br)(c,t.blockedBy)};let u=new Date;try{await (0,h.o4)(a,c,n,u,o)}catch(a){l.error("failed-to-save-pending-assistant-response:",{error:m(a)})}let v=null;try{let b=(0,d.getMessages)(a,c,{limit:1,cliToolId:n,instanceId:o});b.length>0&&"user"===b[0].role&&b[0].content===i&&(v=b[0].id)}catch(a){l.error("failed-to-detect-orphaned-messages:",{error:m(a)})}if(q&&"copilot"===n)try{await s.sendModelCommand(c,q,o),l.info("copilot-model-command-sent",{model:q})}catch(a){return l.error("failed-to-send-model-command:",{error:m(a)}),{ok:!1,stage:"model",error:m(a)}}try{p?(0,f._J)(s)?await s.sendMessageWithImage(c,i,p,o):await s.sendMessage(c,(0,k.TZ)(i,p),o):await s.sendMessage(c,i,o)}catch(a){return l.error("failed-to-send-message-to:",{error:m(a)}),{ok:!1,stage:"send",error:m(a)}}let w=(0,d.createMessage)(a,{worktreeId:c,role:"user",content:i,messageType:r,timestamp:u,cliToolId:n,instanceId:o});if(v)try{(0,d.deleteMessageById)(a,v)&&l.info("cleaned-up-orphaned-user")}catch(a){l.error("failed-to-clean-up-orphaned-message:",{error:m(a)})}return(0,d.updateLastUserMessage)(a,c,i,u),(0,d.clearInProgressMessageId)(a,c,n,o),l.info("cleared-in-progress-message-for"),(0,g.startPolling)(c,n,o),{ok:!0,message:w}}},58707:(a,b,c)=>{c.d(b,{$n:()=>k,a3:()=>l,br:()=>m});var d=c(59701),e=c(31766),f=c(95595),g=c(34405),h=c(72626),i=c(30008);let j=(0,h.h)("prompt-waiting-guard"),k="PROMPT_WAITING";async function l(a,b,c,h){try{let k=d.CLIToolManager.getInstance().getTool(b);if(!await k.isRunning(a,c))return{waiting:!1};let l=await (0,e.Wh)(a,b,g._,c),m=(0,f.WC)(l,b),n=(0,i._G)({worktreeId:a,cliToolId:b,instanceId:c,scraper:{status:m.status,reason:m.reason,hasActivePrompt:m.hasActivePrompt},ignoreStructured:h?.ignoreStructured});if(!n.blocksSend)return null!==n.structuredSendBlockSuppressed&&j.info("structured-send-guard-not-applied",{worktreeId:a,cliToolId:b,instanceId:c,suppressed:n.structuredSendBlockSuppressed,promptWaitingSince:n.structured?.at??null}),{waiting:!1};return{waiting:!0,reason:n.blockReason??void 0,blockedBy:n.blockedBy??void 0}}catch(c){return j.warn("prompt-waiting-check-failed",{worktreeId:a,cliToolId:b,error:c instanceof Error?c.message:String(c)}),{waiting:!1}}}function m(a,b){let c=`${a} is waiting on a prompt. Sending now would type into the prompt's input line instead of reaching the agent, and would leave that text in place for the next answer. Answer the prompt first: \`commandmate respond ${a} <answer>\`.`;if("structured"!==b)return c;let d=Math.round(i.j0/6e4);return`${c} This dialog was reported by the agent's own hooks and is not visible to the terminal scraper, so if the pane looks idle the record has outlived its dialog: it stops blocking sends ${d} minutes after it was reported, or immediately with \`commandmate send ${a} <message> --ignore-structured-prompt\` (server-wide: ${i.F1}=off).`}},61068:(a,b,c)=>{c.d(b,{Nz:()=>u,EB:()=>v,l7:()=>x});var d=c(95220),e=c(45017),f=c(11099),g=c(85775),h=c(72626),i=c(59701),j=c(79892);let k=(0,h.h)("global-session-poller"),l=new Map,m=new Map;var n=c(93997),o=c(15194),p=c(23197),q=c(77093),r=c(82325);let s=(0,h.h)("session-cleanup");async function t(a,b){let c={worktreeId:a,sessionsKilled:[],sessionErrors:[],pollersStopped:[],pollerErrors:[]};for(let e of((0,n.pc)(),o.XH)){try{await b(a,e)&&(c.sessionsKilled.push(e),s.info("session:killed",{worktreeId:a,cliToolId:e}))}catch(d){let b=`${e}: ${(0,q.u1)(d)}`;c.sessionErrors.push(b),s.warn("session:kill-failed",{worktreeId:a,cliToolId:e,error:d instanceof Error?d.message:String(d)})}try{(0,d.stopPolling)(a,e),c.pollersStopped.push(`response-poller:${e}`)}catch(d){let b=`response-poller:${e}: ${(0,q.u1)(d)}`;c.pollerErrors.push(b),s.warn("response-poller:stop-failed",{worktreeId:a,cliToolId:e,error:d instanceof Error?d.message:String(d)})}}try{(0,e._C)(a),c.pollersStopped.push("auto-yes-poller")}catch(d){let b=`auto-yes-poller: ${(0,q.u1)(d)}`;c.pollerErrors.push(b),s.warn("auto-yes-poller:stop-failed",{worktreeId:a,error:d instanceof Error?d.message:String(d)})}try{(0,e.LP)(a),c.pollersStopped.push("auto-yes-state")}catch(d){let b=`auto-yes-state: ${(0,q.u1)(d)}`;c.pollerErrors.push(b),s.warn("auto-yes-state:delete-failed",{worktreeId:a,error:d instanceof Error?d.message:String(d)})}try{(0,f.Yg)(a),c.pollersStopped.push("schedule-manager")}catch(d){let b=`schedule-manager: ${(0,q.u1)(d)}`;c.pollerErrors.push(b),s.warn("schedule-manager:stop-failed",{worktreeId:a,error:d instanceof Error?d.message:String(d)})}try{(0,g.Tm)(a),c.pollersStopped.push("timer-manager")}catch(d){let b=`timer-manager: ${(0,q.u1)(d)}`;c.pollerErrors.push(b),s.warn("timer-manager:stop-failed",{worktreeId:a,error:d instanceof Error?d.message:String(d)})}return c}async function u(a,b){let c=await Promise.allSettled(a.map(a=>t(a,b))),d=[],e=[];for(let b=0;b<c.length;b++){let f=c[b],g=a[b];if("fulfilled"===f.status){let a=f.value;for(let b of(d.push(a),a.sessionErrors))e.push(`Session kill error (${g}): ${b}`);for(let b of a.pollerErrors)e.push(`Poller stop error (${g}): ${b}`)}else e.push(`Cleanup failed (${g}): ${(0,q.u1)(f.reason)}`)}return{results:d,warnings:e}}async function v(a,b){try{let c=i.CLIToolManager.getInstance().getTool(b);if(!await c.isRunning(a))return!1;let e=`${a}:${b}`;(0,d.clearPromptHashCache)(e);let f=c.getSessionName(a);return(0,j.fY)(f)}catch{return!1}}async function w(){for(let a of l.keys()){let b=l.get(a);b&&clearTimeout(b)}l.clear(),m.clear(),k.info("poll:all-stopped");let a=0,b=i.CLIToolManager.getInstance();for(let c of o.XH)try{let d=b.getTool(c).getSessionName(p.H1);await (0,j.N)(d)&&await (0,j.fY)(d)&&(a++,s.info("global-session:killed",{cliToolId:c,sessionName:d}))}catch(a){s.warn("global-session:kill-failed",{cliToolId:c,error:(0,q.u1)(a)})}return a}async function x(a,b){let c=(0,r.L0)(a,b);try{await w()}catch(a){s.warn("sync:global-cleanup-failed",{error:(0,q.u1)(a)})}let d=[];if(c.deletedIds.length>0)try{let a=await u(c.deletedIds,v);a.warnings.length>0&&(s.warn("sync:cleanup-warnings",{warnings:a.warnings}),d=[`${a.warnings.length} session cleanup warning(s) occurred`])}catch(a){s.error("sync:cleanup-failed",{error:(0,q.u1)(a)}),d=["Session cleanup encountered an error"]}return{syncResult:c,cleanupWarnings:d}}},82325:(a,b,c)=>{c.d(b,{Hz:()=>m,L0:()=>p,Mg:()=>q,YM:()=>n,Yp:()=>o});var d=c(79646),e=c(28354),f=c(29021),g=c.n(f),h=c(33873),i=c.n(h),j=c(23718),k=c(56791);let l=(0,c(72626).h)("worktrees");function m(){let a=process.env.WORKTREE_REPOS;return a&&a.trim()?a.split(",").map(a=>a.trim()).filter(a=>a.length>0):[]}async function n(a){let b=(0,e.promisify)(d.exec);try{let{stdout:c}=await b("git worktree list",{cwd:a}),d=function(a){if(!a||""===a.trim())return[];let b=a.trim().split("\n"),c=[];for(let a of b){let b=a.trim();if(!b)continue;let d=b.match(/^(.+?)\s+([a-z0-9]+)\s+(?:\[(.+?)\]|\(detached HEAD\))/);if(d){let[,a,b,e]=d;c.push({path:a.trim(),branch:e||`detached-${b}`,commit:b})}}return c}(c),e=i().resolve(a),f=i().basename(e);return d.map(a=>{let b=i().resolve(a.path);return{id:(0,j.ko)(b),name:a.branch,branch:a.branch,path:b,repositoryPath:e,repositoryName:f}}).filter(a=>["/etc","/root","/sys","/proc","/dev","/boot","/bin","/sbin","/usr/bin","/usr/sbin"].some(b=>a.path.startsWith(b))?(l.warn("worktree:unsafe-path-skipped",{path:a.path}),!1):!(a.path.includes("\0")||a.path.includes(".."))||(l.warn("worktree:malicious-path-skipped",{path:a.path}),!1))}catch(c){let a=c instanceof Error?c.message:String(c),b=c.code;if(a?.includes("not a git repository")||128===b)return[];throw c}}async function o(a){let b=await Promise.allSettled(a.map(async a=>{l.info("repository:scan-start",{repoPath:a});let b=await n(a);return l.info("repository:scan-complete",{repoPath:a,worktreeCount:b.length}),b})),c=[];for(let d=0;d<b.length;d++){let e=b[d];"fulfilled"===e.status?c.push(...e.value):l.error("repository:scan-failed",{repoPath:a[d],error:e.reason instanceof Error?e.reason.message:String(e.reason)})}return c}function p(a,b){if(0===b.length)return{deletedIds:[],upsertedCount:0};let c=[],d=0,e=new Map;for(let a of b){let b=a.repositoryPath||"";e.has(b)||e.set(b,[]),e.get(b).push(a)}let f=new Set([...(0,k.getAllWorktreeIds)(a),...(0,k.getAliasedWorktreeIds)(a)]),g=new Map((0,k.getAllWorktreePathIds)(a).map(a=>[i().resolve(a.path),a.id])),h=new Map,m=new Map;for(let[a,b]of g)h.set(a,new Set([b])),m.set(b,a);for(let b of(0,k.getAllWorktreeAliases)(a)){let a=m.get(b.worktreeId);a&&h.get(a)?.add(b.oldId)}let n=new Set(b.map(a=>i().resolve(a.path)));for(let[b,o]of e){if(!b)continue;let e=(0,k.getWorktreesByRepository)(a,b).filter(a=>!n.has(i().resolve(a.path))).map(a=>a.id);if(e.length>0){let b=(0,k.deleteWorktreesByIds)(a,e);for(let a of(c.push(...e),e)){f.delete(a);let b=m.get(a);void 0!==b&&(g.delete(b),h.delete(b))}l.info("worktree:cleanup",{deletedCount:b.deletedCount})}for(let b of o){let c=i().resolve(b.path),e=g.get(c),l=b.id,n=e??(l&&!f.has(l)?l:function(a,b,c){if(!c||0===c.size)return(0,j.ko)(a,b);let d=new Set(b);for(let a of c)d.delete(a);return(0,j.ko)(a,d)}(c,f,h.get(c)));f.add(n),g.set(c,n),m.set(n,c),(0,k.upsertWorktree)(a,{...b,id:n,name:b.branch??b.name}),d++}}return{deletedIds:c,upsertedCount:d}}function q(a,b){let c=new Set(b.map(a=>a.repositoryPath).filter(a=>!!a)),d=[];for(let b of(0,k.getRepositories)(a)){let e=b.path;if(!e||c.has(e)||function(a){if(!a)return!1;try{return g().existsSync(a)&&g().existsSync(i().join(a,".git"))}catch{return!0}}(e))continue;let f=(0,k.getWorktreesByRepository)(a,e).map(a=>a.id);if(0===f.length)continue;let h=(0,k.deleteWorktreesByIds)(a,f);d.push(...f),l.info("worktree:stale-repo-pruned",{repoPath:e,deletedCount:h.deletedCount})}return d}},85775:(a,b,c)=>{c.d(b,{Tm:()=>o,x4:()=>m,xJ:()=>n});var d=c(34129),e=c(59701),f=c(88807),g=c(72626),h=c(87374),i=c(39687);let j=(0,g.h)("timer-manager");function k(){return globalThis.__timerManagerState||(globalThis.__timerManagerState={timers:new Map,timerWorktrees:new Map,initialized:!1}),globalThis.__timerManagerState}async function l(a){let b=k(),c=(0,f.getDbInstance)();try{let b=(0,d.kx)(c,a);if(!b||"pending"!==b.status)return;let f=e.CLIToolManager.getInstance().getTool(b.cliToolId),g=b.instanceId;if(!await f.isRunning(b.worktreeId,g)){j.warn("timer:no-session",{timerId:a,worktreeId:b.worktreeId,instanceId:g}),(0,d.j2)(c,a,h.HR.NO_SESSION);return}(0,d.j2)(c,a,"sending");let k=await (0,i.d)(c,{worktreeId:b.worktreeId,content:b.message,cliToolId:b.cliToolId,instanceId:g});if(!k.ok){let b=`[${k.stage}] ${k.error}`;(0,d.j2)(c,a,"failed",void 0,b),j.error("timer:send-failed",{timerId:a,stage:k.stage,error:k.error});return}(0,d.j2)(c,a,"sent",Date.now()),j.info("timer:sent",{timerId:a,worktreeId:b.worktreeId})}catch(e){let b=e instanceof Error?e.message:String(e);try{(0,d.j2)(c,a,"failed",void 0,b)}catch{}j.error("timer:send-failed",{timerId:a,error:b})}finally{b.timers.delete(a),b.timerWorktrees.delete(a)}}function m(a,b,c){let d=k(),e=setTimeout(()=>{l(a)},c);d.timers.set(a,e),d.timerWorktrees.set(a,b)}function n(a){let b=k(),c=b.timers.get(a);c&&(clearTimeout(c),b.timers.delete(a),b.timerWorktrees.delete(a));let e=(0,f.getDbInstance)();(0,d.Ud)(e,a)}function o(a){let b=k(),c=(0,f.getDbInstance)();for(let[c,d]of b.timerWorktrees)if(d===a){let a=b.timers.get(c);a&&clearTimeout(a),b.timers.delete(c),b.timerWorktrees.delete(c)}(0,d.$$)(c,a)}},95220:(a,b,c)=>{c.r(b),c.d(b,{accumulateTuiContent:()=>g.IZ,cleanClaudeResponse:()=>f.NN,cleanCopilotResponse:()=>f.LH,cleanGeminiResponse:()=>f.IS,cleanOpenCodeResponse:()=>f.aW,clearPromptHashCache:()=>h.iX,clearTuiAccumulator:()=>g.q1,extractCopilotContentLines:()=>g.o0,extractTuiContentLines:()=>g.K0,findOverlapIndex:()=>g.vQ,getAccumulatedContent:()=>g.Uz,getActivePollers:()=>d.KQ,initTuiAccumulator:()=>g.tb,isDuplicatePrompt:()=>h.gv,isOpenCodeComplete:()=>e.bE,migrateResponsePollerWorktreeIds:()=>d.sR,normalizeCopilotLine:()=>g.IW,normalizePromptForDedup:()=>h.zm,renamePromptHashCacheKey:()=>h.i2,resolveExtractionStartIndex:()=>e.QM,startPolling:()=>d.g8,stopAllPolling:()=>d.fq,stopPolling:()=>d.Et,truncateMessage:()=>f.Sj});var d=c(45146),e=c(60),f=c(82450),g=c(13033),h=c(72457)}};
1
+ "use strict";exports.id=1068,exports.ids=[1068,2839,5220],exports.modules={12462:(a,b,c)=>{c.d(b,{T8:()=>j,o4:()=>k});var d=c(31766),e=c(56791),f=c(95620),g=c(82450),h=c(15194);let i=(0,c(72626).h)("assistant-response-saver");function j(a,b){switch(b){case"claude":return(0,g.NN)(a);case"gemini":return(0,g.IS)(a);case"opencode":return(0,g.aW)(a);case"copilot":return(0,g.LH)(a);default:return a.trim()}}async function k(a,b,c,g,k){let l=k??c;try{let m;if((0,h.VA)(c))return null;let n=(0,e.getSessionState)(a,b,l),o=n?.lastCapturedLine||0;try{m=await (0,d.Wh)(b,c,1e4,k)}catch{return i.info("failed-to-capture"),null}if(!m)return null;let p=m.split("\n"),q=p.length;for(;q>0&&""===p[q-1].trim();)q--;let r=q,{bufferReset:s,reason:t}=r>0&&o>25&&r+25<o?{bufferReset:!0,reason:"shrink"}:r>0&&o>50&&r<50?{bufferReset:!0,reason:"restart"}:{bufferReset:!1,reason:null};s&&i.info("buffer:reset-detected",{reason:t,currentLineCount:r,lastCapturedLine:o});let u=s?0:o;if(!s&&r<=o)return r<o&&((0,e.updateSessionState)(a,b,c,r,k),i.info("position:corrected-stale",{from:o,to:r})),null;let v=p.slice(u).join("\n"),w=j(v,c);if(!w||""===w.trim())return(0,e.updateSessionState)(a,b,c,r,k),i.debug("response:empty-after-clean",{currentLineCount:r}),null;let x=new Date(g.getTime()-1),y=(0,e.createMessage)(a,{worktreeId:b,role:"assistant",content:w,messageType:"normal",timestamp:x,cliToolId:c,instanceId:l});return(0,e.updateSessionState)(a,b,c,r,k),(0,f.broadcastMessage)("message",{worktreeId:b,message:y}),i.info("response:saved",{fromLine:o,toLine:r}),y}catch(a){return i.error("error:",{error:a instanceof Error?a.message:String(a)}),null}}},23197:(a,b,c)=>{c.d(b,{$M:()=>e,H1:()=>d,q5:()=>f});let d="__global__",e=2e3,f=900},39687:(a,b,c)=>{c.d(b,{d:()=>n});var d=c(56791),e=c(83468),f=c(15194),g=c(95220),h=c(12462),i=c(72626),j=c(58707),k=c(41466);let l=(0,i.h)("session/send-user-message");function m(a){return a instanceof Error?a.message:String(a)}async function n(a,b){let{worktreeId:c,content:i,cliToolId:n,instanceId:o,absoluteImagePath:p,copilotModel:q}=b,r=b.messageType??"normal",s=e.CLIToolManager.getInstance().getTool(n),t=await (0,j.a3)(c,n,o,{ignoreStructured:b.ignoreStructuredPromptGuard});if(t.waiting)return l.info("send-refused-prompt-waiting",{worktreeId:c,cliToolId:n,reason:t.reason,blockedBy:t.blockedBy}),{ok:!1,stage:"prompt_waiting",error:(0,j.br)(c,t.blockedBy)};let u=new Date;try{await (0,h.o4)(a,c,n,u,o)}catch(a){l.error("failed-to-save-pending-assistant-response:",{error:m(a)})}let v=null;try{let b=(0,d.getMessages)(a,c,{limit:1,cliToolId:n,instanceId:o});b.length>0&&"user"===b[0].role&&b[0].content===i&&(v=b[0].id)}catch(a){l.error("failed-to-detect-orphaned-messages:",{error:m(a)})}if(q&&"copilot"===n)try{await s.sendModelCommand(c,q,o),l.info("copilot-model-command-sent",{model:q})}catch(a){return l.error("failed-to-send-model-command:",{error:m(a)}),{ok:!1,stage:"model",error:m(a)}}try{p?(0,f._J)(s)?await s.sendMessageWithImage(c,i,p,o):await s.sendMessage(c,(0,k.TZ)(i,p),o):await s.sendMessage(c,i,o)}catch(a){return l.error("failed-to-send-message-to:",{error:m(a)}),{ok:!1,stage:"send",error:m(a)}}let w=(0,d.createMessage)(a,{worktreeId:c,role:"user",content:i,messageType:r,timestamp:u,cliToolId:n,instanceId:o});if(v)try{(0,d.deleteMessageById)(a,v)&&l.info("cleaned-up-orphaned-user")}catch(a){l.error("failed-to-clean-up-orphaned-message:",{error:m(a)})}return(0,d.updateLastUserMessage)(a,c,i,u),(0,d.clearInProgressMessageId)(a,c,n,o),l.info("cleared-in-progress-message-for"),(0,g.startPolling)(c,n,o),{ok:!0,message:w}}},58707:(a,b,c)=>{c.d(b,{$n:()=>k,a3:()=>l,br:()=>m});var d=c(83468),e=c(31766),f=c(95595),g=c(34405),h=c(72626),i=c(30008);let j=(0,h.h)("prompt-waiting-guard"),k="PROMPT_WAITING";async function l(a,b,c,h){try{let k=d.CLIToolManager.getInstance().getTool(b);if(!await k.isRunning(a,c))return{waiting:!1};let l=await (0,e.Wh)(a,b,g._,c),m=(0,f.WC)(l,b),n=(0,i._G)({worktreeId:a,cliToolId:b,instanceId:c,scraper:{status:m.status,reason:m.reason,hasActivePrompt:m.hasActivePrompt},ignoreStructured:h?.ignoreStructured});if(!n.blocksSend)return null!==n.structuredSendBlockSuppressed&&j.info("structured-send-guard-not-applied",{worktreeId:a,cliToolId:b,instanceId:c,suppressed:n.structuredSendBlockSuppressed,promptWaitingSince:n.structured?.at??null}),{waiting:!1};return{waiting:!0,reason:n.blockReason??void 0,blockedBy:n.blockedBy??void 0}}catch(c){return j.warn("prompt-waiting-check-failed",{worktreeId:a,cliToolId:b,error:c instanceof Error?c.message:String(c)}),{waiting:!1}}}function m(a,b){let c=`${a} is waiting on a prompt. Sending now would type into the prompt's input line instead of reaching the agent, and would leave that text in place for the next answer. Answer the prompt first: \`commandmate respond ${a} <answer>\`.`;if("structured"!==b)return c;let d=Math.round(i.j0/6e4);return`${c} This dialog was reported by the agent's own hooks and is not visible to the terminal scraper, so if the pane looks idle the record has outlived its dialog: it stops blocking sends ${d} minutes after it was reported, or immediately with \`commandmate send ${a} <message> --ignore-structured-prompt\` (server-wide: ${i.F1}=off).`}},61068:(a,b,c)=>{c.d(b,{Nz:()=>u,EB:()=>v,l7:()=>x});var d=c(95220),e=c(45017),f=c(11099),g=c(85775),h=c(72626),i=c(83468),j=c(79892);let k=(0,h.h)("global-session-poller"),l=new Map,m=new Map;var n=c(93997),o=c(15194),p=c(23197),q=c(77093),r=c(82325);let s=(0,h.h)("session-cleanup");async function t(a,b){let c={worktreeId:a,sessionsKilled:[],sessionErrors:[],pollersStopped:[],pollerErrors:[]};for(let e of((0,n.pc)(),o.XH)){try{await b(a,e)&&(c.sessionsKilled.push(e),s.info("session:killed",{worktreeId:a,cliToolId:e}))}catch(d){let b=`${e}: ${(0,q.u1)(d)}`;c.sessionErrors.push(b),s.warn("session:kill-failed",{worktreeId:a,cliToolId:e,error:d instanceof Error?d.message:String(d)})}try{(0,d.stopPolling)(a,e),c.pollersStopped.push(`response-poller:${e}`)}catch(d){let b=`response-poller:${e}: ${(0,q.u1)(d)}`;c.pollerErrors.push(b),s.warn("response-poller:stop-failed",{worktreeId:a,cliToolId:e,error:d instanceof Error?d.message:String(d)})}}try{(0,e._C)(a),c.pollersStopped.push("auto-yes-poller")}catch(d){let b=`auto-yes-poller: ${(0,q.u1)(d)}`;c.pollerErrors.push(b),s.warn("auto-yes-poller:stop-failed",{worktreeId:a,error:d instanceof Error?d.message:String(d)})}try{(0,e.LP)(a),c.pollersStopped.push("auto-yes-state")}catch(d){let b=`auto-yes-state: ${(0,q.u1)(d)}`;c.pollerErrors.push(b),s.warn("auto-yes-state:delete-failed",{worktreeId:a,error:d instanceof Error?d.message:String(d)})}try{(0,f.Yg)(a),c.pollersStopped.push("schedule-manager")}catch(d){let b=`schedule-manager: ${(0,q.u1)(d)}`;c.pollerErrors.push(b),s.warn("schedule-manager:stop-failed",{worktreeId:a,error:d instanceof Error?d.message:String(d)})}try{(0,g.Tm)(a),c.pollersStopped.push("timer-manager")}catch(d){let b=`timer-manager: ${(0,q.u1)(d)}`;c.pollerErrors.push(b),s.warn("timer-manager:stop-failed",{worktreeId:a,error:d instanceof Error?d.message:String(d)})}return c}async function u(a,b){let c=await Promise.allSettled(a.map(a=>t(a,b))),d=[],e=[];for(let b=0;b<c.length;b++){let f=c[b],g=a[b];if("fulfilled"===f.status){let a=f.value;for(let b of(d.push(a),a.sessionErrors))e.push(`Session kill error (${g}): ${b}`);for(let b of a.pollerErrors)e.push(`Poller stop error (${g}): ${b}`)}else e.push(`Cleanup failed (${g}): ${(0,q.u1)(f.reason)}`)}return{results:d,warnings:e}}async function v(a,b){try{let c=i.CLIToolManager.getInstance().getTool(b);if(!await c.isRunning(a))return!1;let e=`${a}:${b}`;(0,d.clearPromptHashCache)(e);let f=c.getSessionName(a);return(0,j.fY)(f)}catch{return!1}}async function w(){for(let a of l.keys()){let b=l.get(a);b&&clearTimeout(b)}l.clear(),m.clear(),k.info("poll:all-stopped");let a=0,b=i.CLIToolManager.getInstance();for(let c of o.XH)try{let d=b.getTool(c).getSessionName(p.H1);await (0,j.N)(d)&&await (0,j.fY)(d)&&(a++,s.info("global-session:killed",{cliToolId:c,sessionName:d}))}catch(a){s.warn("global-session:kill-failed",{cliToolId:c,error:(0,q.u1)(a)})}return a}async function x(a,b){let c=(0,r.L0)(a,b);try{await w()}catch(a){s.warn("sync:global-cleanup-failed",{error:(0,q.u1)(a)})}let d=[];if(c.deletedIds.length>0)try{let a=await u(c.deletedIds,v);a.warnings.length>0&&(s.warn("sync:cleanup-warnings",{warnings:a.warnings}),d=[`${a.warnings.length} session cleanup warning(s) occurred`])}catch(a){s.error("sync:cleanup-failed",{error:(0,q.u1)(a)}),d=["Session cleanup encountered an error"]}return{syncResult:c,cleanupWarnings:d}}},82325:(a,b,c)=>{c.d(b,{Hz:()=>o,L0:()=>r,Mg:()=>s,YM:()=>p,Yp:()=>q});var d=c(79646),e=c(28354),f=c(29021),g=c.n(f),h=c(33873),i=c.n(h),j=c(23718),k=c(56791),l=c(72626),m=c(64185);let n=(0,l.h)("worktrees");function o(){let a=process.env.WORKTREE_REPOS;return a&&a.trim()?a.split(",").map(a=>a.trim()).filter(a=>a.length>0):[]}async function p(a){let b=(0,e.promisify)(d.exec);try{let{stdout:c}=await b("git worktree list",{cwd:a}),d=function(a){if(!a||""===a.trim())return[];let b=a.trim().split("\n"),c=[];for(let a of b){let b=a.trim();if(!b)continue;let d=b.match(/^(.+?)\s+([a-z0-9]+)\s+(?:\[(.+?)\]|\(detached HEAD\))/);if(d){let[,a,b,e]=d;c.push({path:a.trim(),branch:e||`detached-${b}`,commit:b})}}return c}(c),e=i().resolve(a),f=i().basename(e);return(0,m.oZ)(e),d.map(a=>{let b=i().resolve(a.path);return{id:(0,j.ko)(b),name:a.branch,branch:a.branch,path:b,repositoryPath:e,repositoryName:f}}).filter(a=>["/etc","/root","/sys","/proc","/dev","/boot","/bin","/sbin","/usr/bin","/usr/sbin"].some(b=>a.path.startsWith(b))?(n.warn("worktree:unsafe-path-skipped",{path:a.path}),!1):!(a.path.includes("\0")||a.path.includes(".."))||(n.warn("worktree:malicious-path-skipped",{path:a.path}),!1))}catch(c){let a=c instanceof Error?c.message:String(c),b=c.code;if(a?.includes("not a git repository")||128===b)return[];throw c}}async function q(a){let b=await Promise.allSettled(a.map(async a=>{n.info("repository:scan-start",{repoPath:a});let b=await p(a);return n.info("repository:scan-complete",{repoPath:a,worktreeCount:b.length}),b})),c=[];for(let d=0;d<b.length;d++){let e=b[d];"fulfilled"===e.status?c.push(...e.value):n.error("repository:scan-failed",{repoPath:a[d],error:e.reason instanceof Error?e.reason.message:String(e.reason)})}return c}function r(a,b){if(0===b.length)return{deletedIds:[],upsertedCount:0};let c=[],d=0,e=new Map;for(let a of b){let b=a.repositoryPath||"";e.has(b)||e.set(b,[]),e.get(b).push(a)}let f=new Set([...(0,k.getAllWorktreeIds)(a),...(0,k.getAliasedWorktreeIds)(a)]),g=new Map((0,k.getAllWorktreePathIds)(a).map(a=>[i().resolve(a.path),a.id])),h=new Map,l=new Map;for(let[a,b]of g)h.set(a,new Set([b])),l.set(b,a);for(let b of(0,k.getAllWorktreeAliases)(a)){let a=l.get(b.worktreeId);a&&h.get(a)?.add(b.oldId)}let m=new Set(b.map(a=>i().resolve(a.path)));for(let[b,o]of e){if(!b)continue;let e=(0,k.getWorktreesByRepository)(a,b).filter(a=>!m.has(i().resolve(a.path))).map(a=>a.id);if(e.length>0){let b=(0,k.deleteWorktreesByIds)(a,e);for(let a of(c.push(...e),e)){f.delete(a);let b=l.get(a);void 0!==b&&(g.delete(b),h.delete(b))}n.info("worktree:cleanup",{deletedCount:b.deletedCount})}for(let b of o){let c=i().resolve(b.path),e=g.get(c),m=b.id,n=e??(m&&!f.has(m)?m:function(a,b,c){if(!c||0===c.size)return(0,j.ko)(a,b);let d=new Set(b);for(let a of c)d.delete(a);return(0,j.ko)(a,d)}(c,f,h.get(c)));f.add(n),g.set(c,n),l.set(n,c),(0,k.upsertWorktree)(a,{...b,id:n,name:b.branch??b.name}),d++}}return{deletedIds:c,upsertedCount:d}}function s(a,b){let c=new Set(b.map(a=>a.repositoryPath).filter(a=>!!a)),d=[];for(let b of(0,k.getRepositories)(a)){let e=b.path;if(!e||c.has(e)||function(a){if(!a)return!1;try{return g().existsSync(a)&&g().existsSync(i().join(a,".git"))}catch{return!0}}(e))continue;let f=(0,k.getWorktreesByRepository)(a,e).map(a=>a.id);if(0===f.length)continue;let h=(0,k.deleteWorktreesByIds)(a,f);d.push(...f),n.info("worktree:stale-repo-pruned",{repoPath:e,deletedCount:h.deletedCount})}return d}},85775:(a,b,c)=>{c.d(b,{Tm:()=>o,x4:()=>m,xJ:()=>n});var d=c(34129),e=c(83468),f=c(88807),g=c(72626),h=c(87374),i=c(39687);let j=(0,g.h)("timer-manager");function k(){return globalThis.__timerManagerState||(globalThis.__timerManagerState={timers:new Map,timerWorktrees:new Map,initialized:!1}),globalThis.__timerManagerState}async function l(a){let b=k(),c=(0,f.getDbInstance)();try{let b=(0,d.kx)(c,a);if(!b||"pending"!==b.status)return;let f=e.CLIToolManager.getInstance().getTool(b.cliToolId),g=b.instanceId;if(!await f.isRunning(b.worktreeId,g)){j.warn("timer:no-session",{timerId:a,worktreeId:b.worktreeId,instanceId:g}),(0,d.j2)(c,a,h.HR.NO_SESSION);return}(0,d.j2)(c,a,"sending");let k=await (0,i.d)(c,{worktreeId:b.worktreeId,content:b.message,cliToolId:b.cliToolId,instanceId:g});if(!k.ok){let b=`[${k.stage}] ${k.error}`;(0,d.j2)(c,a,"failed",void 0,b),j.error("timer:send-failed",{timerId:a,stage:k.stage,error:k.error});return}(0,d.j2)(c,a,"sent",Date.now()),j.info("timer:sent",{timerId:a,worktreeId:b.worktreeId})}catch(e){let b=e instanceof Error?e.message:String(e);try{(0,d.j2)(c,a,"failed",void 0,b)}catch{}j.error("timer:send-failed",{timerId:a,error:b})}finally{b.timers.delete(a),b.timerWorktrees.delete(a)}}function m(a,b,c){let d=k(),e=setTimeout(()=>{l(a)},c);d.timers.set(a,e),d.timerWorktrees.set(a,b)}function n(a){let b=k(),c=b.timers.get(a);c&&(clearTimeout(c),b.timers.delete(a),b.timerWorktrees.delete(a));let e=(0,f.getDbInstance)();(0,d.Ud)(e,a)}function o(a){let b=k(),c=(0,f.getDbInstance)();for(let[c,d]of b.timerWorktrees)if(d===a){let a=b.timers.get(c);a&&clearTimeout(a),b.timers.delete(c),b.timerWorktrees.delete(c)}(0,d.$$)(c,a)}},95220:(a,b,c)=>{c.r(b),c.d(b,{accumulateTuiContent:()=>g.IZ,cleanClaudeResponse:()=>f.NN,cleanCopilotResponse:()=>f.LH,cleanGeminiResponse:()=>f.IS,cleanOpenCodeResponse:()=>f.aW,clearPromptHashCache:()=>h.iX,clearTuiAccumulator:()=>g.q1,extractCopilotContentLines:()=>g.o0,extractTuiContentLines:()=>g.K0,findOverlapIndex:()=>g.vQ,getAccumulatedContent:()=>g.Uz,getActivePollers:()=>d.KQ,initTuiAccumulator:()=>g.tb,isDuplicatePrompt:()=>h.gv,isOpenCodeComplete:()=>e.bE,migrateResponsePollerWorktreeIds:()=>d.sR,normalizeCopilotLine:()=>g.IW,normalizePromptForDedup:()=>h.zm,renamePromptHashCacheKey:()=>h.i2,resolveExtractionStartIndex:()=>e.QM,startPolling:()=>d.g8,stopAllPolling:()=>d.fq,stopPolling:()=>d.Et,truncateMessage:()=>f.Sj});var d=c(45146),e=c(60),f=c(82450),g=c(13033),h=c(72457)}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=1341,exports.ids=[1341],exports.modules={53722:a=>{a.exports=JSON.parse('{"title":"Keyboard shortcuts","scopes":{"global":"Global","terminal":"Terminal","composer":"Composer","editor":"File editor"},"shortcuts":{"commandPalette":"Open command palette","keyboardHelp":"Show keyboard shortcuts","closeOverlay":"Close overlay or dialog","navigateList":"Move selection up / down","terminalSearch":"Search terminal output","sendMessage":"Send message","composerNewline":"Insert a new line","editorIndent":"Indent line or selection","editorOutdent":"Outdent line or selection","editorTabFocus":"Toggle whether Tab moves focus","editorSave":"Save file","editorFullscreen":"Toggle fullscreen editor"}}')}};
@@ -0,0 +1,5 @@
1
+ "use strict";exports.id=1501,exports.ids=[1501],exports.modules={11501:(a,b,c)=>{c.d(b,{Ky:()=>j,RR:()=>l,cI:()=>k,ct:()=>m,fc:()=>i});var d=c(90384);let e=`${d.uz}(commit または未 commit の変更が存在すること)`,f=`${d.uz}(commit が存在すること。未 commit の変更は作業証跡として数えない)`,g=`${d.le}(変更ファイルが scope.allow の内側に収まっていること)`,h=`options.requireCommit (${d.aT})`;function i(a,b){let c=[];return b?.options.requireCommit&&c.push(h),a?.success.requireCommit&&c.push("success.requireCommit (task contract)"),{required:c.length>0,sources:c}}function j(a){let b=a.verify.gates;if(!b)return null;let c=[[d.uz,a.success.requireWorkEvidence],[d.le,a.success.requireScopeClean]];return[...c.filter(([a,c])=>c||b.includes(a)).map(([a])=>a),...b.filter(a=>!c.some(([b])=>b===a))]}function k(a){return a.verify.gateDefinitions??[]}function l(a,b){let c=a.verify.gates,e=k(a),f=[];if(!b)return e.length>0&&f.push(`verify.gateDefinitions: declared ${e.map(a=>a.id).join(", ")}, but ${d.aT} is missing or unreadable in this worktree, so no verification run can execute them`),c&&f.push(`verify.gates: declared ${c.join(", ")}, but ${d.aT} is missing or unreadable in this worktree, so the gate ids cannot be resolved`),f;let g=b.gates.map(a=>a.id),h=e.map(a=>a.id).filter(a=>g.includes(a));if(h.length>0&&f.push(`verify.gateDefinitions: gate id(s) ${h.join(", ")} are already declared in ${d.aT}. A contract may add gates, never redefine the repository's own — rename the contract gate.`),c){let a=new Set([d.uz,d.le,...g]),b=new Set(e.map(a=>a.id)),h=c.filter(c=>!a.has(c)&&!b.has(c));if(h.length>0){let c=[`Declared in ${d.aT}: ${[...a].join(", ")}`];b.size>0&&c.push(`in verify.gateDefinitions: ${[...b].join(", ")}`),f.push(`verify.gates: unknown gate id(s) ${h.join(", ")}. ${c.join("; ")}`)}}return f}function m(a,b){let c=["## 実行契約"];c.push(a.scope.allow.length>0?`- 変更してよいのは次のパスのみ: ${a.scope.allow.join(", ")}`:"- 変更パスの制限: なし(scope.allow が未宣言)"),a.scope.deny.length>0&&c.push(`- 変更してはならないパス: ${a.scope.deny.join(", ")}`),c.push(i(a,b).required?"- 作業完了後は必ず commit すること(未 commit の作業は未完了とみなされる)":"- 作業完了後は commit すること(ただし work-evidence は未 commit の変更も作業証跡として認めるため、commit の有無そのものは検査されない)");let h=function(a,b){if(!b)return[];let c=i(a,b).required?f:e,h=new Map([[d.uz,c],[d.le,g]]),l=[...b.gates,...k(a)],m=j(a);if(!m){let b=[c];return a.success.requireScopeClean&&b.push(g),[...b,...l.map(a=>a.command)]}let n=new Map(l.map(a=>[a.id,a.command]));return m.map(a=>h.get(a)??n.get(a))}(a,b);return c.push(h.length>0?`- 完了条件: 次の検証コマンドがすべて成功すること: ${h.join(" / ")}`:`- 完了条件: ${d.aT} に検証ゲートが宣言されていないため、検証コマンドは無い`),`${c.join("\n")}
2
+
3
+ ## タスク
4
+ ${a.goal}`}},90384:(a,b,c)=>{c.d(b,{D:()=>n,Q5:()=>i,Tc:()=>l,UL:()=>y,Yp:()=>s,aT:()=>k,iE:()=>j,le:()=>h,sN:()=>m,uz:()=>g,yR:()=>z});var d=c(29021),e=c(33873),f=c(4689);let g="work-evidence",h="scope",i="env-clean",j=[g,h,i],k=".commandmate/verify.yaml";function l(a,b=[]){return[g,h,...a.options.requireEnvClean?[i]:[],...a.gates.map(a=>a.id),...b.map(a=>a.id)]}let m=600,n=/^[a-z0-9][a-z0-9-]{0,31}$/,o=/^[A-Za-z0-9_.-]+$/,p=["version","gates","options"],q=["id","command","timeoutSec","mutex","retryOnFail","flakyIsPass"],r=["baseRef","skipInPrimaryCheckout","maxLogTailBytes","requireCommit","requireEnvClean"];class s extends Error{constructor(a){super(`invalid verify config:
5
+ ${a.map(a=>` - ${a}`).join("\n")}`),this.name="VerifyConfigError",this.issues=a}}function t(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function u(a){return"number"==typeof a?Number.isInteger(a)?a:null:"string"==typeof a&&/^-?\d+$/.test(a)?Number(a):null}function v(a){return"boolean"==typeof a?a:"true"===a||"false"!==a&&null}function w(a){return void 0===a?"nothing":null===a?"null":"string"==typeof a?JSON.stringify(a):Array.isArray(a)?"a list":"object"==typeof a?"a mapping":String(a)}function x(a,b,c,d){for(let e of Object.keys(a))b.includes(e)||d.push(`${c}: unknown key "${e}" (v1 is a closed set)`)}function y(a,b,c){if(!Array.isArray(a))return c.push(`${b}: must be a list (got ${w(a)})`),[];let d=[],e=new Set;return a.forEach((a,f)=>{!function(a,b,c,d,e){let f,g,h,i=e.length;if(!t(a))return e.push(`${b}: must be a mapping (got ${w(a)})`);x(a,q,b,e),"string"!=typeof a.id||""===a.id?e.push(`${b}.id: required, must be a non-empty string (got ${w(a.id)})`):n.test(a.id)?j.includes(a.id)?e.push(`${b}.id: "${a.id}" is reserved for a built-in gate`):c.has(a.id)?e.push(`${b}.id: duplicate gate id "${a.id}"`):c.add(a.id):e.push(`${b}.id: "${a.id}" must match ${n.source}`),("string"!=typeof a.command||""===a.command.trim())&&e.push(`${b}.command: required, must be a non-empty string (got ${w(a.command)})`);let k=m;if(void 0!==a.timeoutSec){let c=u(a.timeoutSec);null===c?e.push(`${b}.timeoutSec: must be an integer (got ${w(a.timeoutSec)})`):c<1||c>7200?e.push(`${b}.timeoutSec: must be 1..7200 (got ${c})`):k=c}if(void 0!==a.mutex&&("string"!=typeof a.mutex||""===a.mutex?e.push(`${b}.mutex: must be a non-empty string (got ${w(a.mutex)})`):a.mutex.length>64?e.push(`${b}.mutex: must be at most 64 characters (got ${a.mutex.length})`):o.test(a.mutex)?f=a.mutex:e.push(`${b}.mutex: "${a.mutex}" must match ${o.source}`)),void 0!==a.retryOnFail){let c=u(a.retryOnFail);null===c?e.push(`${b}.retryOnFail: must be an integer (got ${w(a.retryOnFail)})`):c<0||c>1?e.push(`${b}.retryOnFail: must be 0 or 1 (got ${c})`):g=c}if(void 0!==a.flakyIsPass){let c=v(a.flakyIsPass);null===c?e.push(`${b}.flakyIsPass: must be true or false (got ${w(a.flakyIsPass)})`):c&&1!==g?e.push(`${b}.flakyIsPass: true requires retryOnFail: 1 (without a retry a gate can never be FLAKY)`):h=c}if(e.length===i){let b={id:a.id,command:a.command,timeoutSec:k};void 0!==f&&(b.mutex=f),void 0!==g&&(b.retryOnFail=g),void 0!==h&&(b.flakyIsPass=h),d.push(b)}}(a,`${b}[${f}]`,e,d,c)}),d}function z(a){let b,c=(0,e.join)(a,k);try{b=(0,d.readFileSync)(c,"utf8")}catch(a){if("ENOENT"===a.code)return null;throw new s([`${c}: ${a.message}`])}return function(a,b){var c;let d;try{d=(0,f.qg)(a)}catch(a){throw new s([`${b}: YAML parse error: ${a.message}`])}if(!t(d))throw new s([`${b}: expected a YAML mapping at the top level (got ${w(d)})`]);let e=[];x(d,p,"top level",e),"version"in d?1!==u(d.version)&&e.push(`version: must be 1 (got ${w(d.version)})`):e.push('version: required, v1 configs must declare "version: 1"');let g=(c=d.gates,null==c?(e.push("gates: required, at least one gate must be defined"),[]):Array.isArray(c)&&0===c.length?(e.push("gates: at least one gate must be defined"),[]):y(c,"gates",e)),h=function(a,b){let c={baseRef:null,skipInPrimaryCheckout:!0,maxLogTailBytes:8192,requireCommit:!1,requireEnvClean:!1};if(null==a)return c;if(!t(a))return b.push(`options: must be a mapping (got ${w(a)})`),c;if(x(a,r,"options",b),void 0!==a.baseRef&&("string"!=typeof a.baseRef||""===a.baseRef.trim()?b.push(`options.baseRef: must be a non-empty string (got ${w(a.baseRef)})`):c.baseRef=a.baseRef),void 0!==a.skipInPrimaryCheckout){let d=v(a.skipInPrimaryCheckout);null===d?b.push(`options.skipInPrimaryCheckout: must be true or false (got ${w(a.skipInPrimaryCheckout)})`):c.skipInPrimaryCheckout=d}if(void 0!==a.requireCommit){let d=v(a.requireCommit);null===d?b.push(`options.requireCommit: must be true or false (got ${w(a.requireCommit)})`):c.requireCommit=d}if(void 0!==a.requireEnvClean){let d=v(a.requireEnvClean);null===d?b.push(`options.requireEnvClean: must be true or false (got ${w(a.requireEnvClean)})`):c.requireEnvClean=d}if(void 0!==a.maxLogTailBytes){let d=u(a.maxLogTailBytes);null===d?b.push(`options.maxLogTailBytes: must be an integer (got ${w(a.maxLogTailBytes)})`):d<0||d>1048576?b.push(`options.maxLogTailBytes: must be 0..1048576 (got ${d})`):c.maxLogTailBytes=d}return c}(d.options,e);if(e.length>0)throw new s(e);return{version:1,gates:g,options:h}}(b,c)}}};
@@ -1,5 +1,4 @@
1
- "use strict";exports.id=1886,exports.ids=[1886],exports.modules={17287:(a,b,c)=>{c.d(b,{CD:()=>g,nL:()=>f});var d=c(24455);let e=globalThis.__permissionDecisions??(globalThis.__permissionDecisions=new Map);function f(a,b,c,f){e.set((0,d.v7)(a,b,c),f)}function g(a,b,c){return e.get((0,d.v7)(a,b,c))??null}},23365:(a,b,c)=>{c.d(b,{H:()=>g,y:()=>h});var d=c(16983),e=c(34405),f=c(15194);let g=200;function h(a){var b;return{statusLines:"opencode"===(b=a)?d.xT:"gemini"===b?g:e.G,usesAlternateScreen:(0,f.VA)(a)}}},34405:(a,b,c)=>{c.d(b,{G:()=>e,_:()=>d});let d=1e4,e=1e3},39333:(a,b,c)=>{c.d(b,{$Y:()=>g,Bg:()=>i,HB:()=>f,df:()=>h,f9:()=>d});let d=[".png",".jpg",".jpeg",".gif",".webp",".svg"],e=[{extension:".png",mimeType:"image/png",magicBytes:[137,80,78,71]},{extension:".jpg",mimeType:"image/jpeg",magicBytes:[255,216,255]},{extension:".jpeg",mimeType:"image/jpeg",magicBytes:[255,216,255]},{extension:".gif",mimeType:"image/gif",magicBytes:[71,73,70,56]},{extension:".webp",mimeType:"image/webp",magicBytes:[82,73,70,70]},{extension:".svg",mimeType:"image/svg+xml"}];function f(a){return a?a.startsWith(".")?a.toLowerCase():"."+a.toLowerCase():""}function g(a){let b=f(a),c=e.find(a=>a.extension===b);return c?.mimeType||"application/octet-stream"}function h(a){if(!a)return!1;let b=f(a);return d.includes(b)}function i(a,b){if(b.length>0x1400000)return{valid:!1,error:"File size exceeds 20MB limit"};if(".svg"===f(a)){var c;return(c=b.toString("utf-8")).includes("<svg")||c.startsWith("<?xml")?/<script[\s>]/i.test(c)?{valid:!1,error:"SVG contains script tags"}:/\s+on\w+\s*=/i.test(c)?{valid:!1,error:"SVG contains event handler attributes"}:/(?:xlink:)?href\s*=\s*["']?\s*(?:javascript|data|vbscript):/i.test(c)?{valid:!1,error:"SVG contains dangerous URI scheme"}:/<foreignObject[\s>]/i.test(c)?{valid:!1,error:"SVG contains foreignObject element"}:{valid:!0}:{valid:!1,error:"Invalid SVG format"}}return!function(a,b){let c=f(a),d=e.find(a=>a.extension===c);if(!d?.magicBytes)return".svg"===c;let g=d.magicBytesOffset||0;return!(b.length<g+d.magicBytes.length)&&d.magicBytes.every((a,c)=>b[g+c]===a)}(a,b)?{valid:!1,error:"Invalid image magic bytes"}:{valid:!0}}d.filter(a=>".svg"!==a).map(a=>g(a)).filter(a=>"application/octet-stream"!==a).join(",")},41466:(a,b,c)=>{c.d(b,{Ui:()=>as,TZ:()=>ar});var d=c(81886),e=c(8953),f=c(79892),g=c(85164),h=c(40236),i=c(93997),j=c(29021),k=c(21820),l=c(33873),m=c(8004),n=c(72626);let o=(0,n.h)("cli-tools/opencode-config"),p=/^[a-zA-Z0-9._:/-]{1,100}$/,q=/^[a-zA-Z0-9._:/@-]{1,200}$/,r="CM_OPENCODE_LOCAL_PROVIDER_CONFIG",s="OPENCODE_CONFIG",t=["opencode.json","opencode.jsonc",l.join(".opencode","opencode.json"),l.join(".opencode","opencode.jsonc")],u=["opencode.json","opencode.jsonc"];async function v(){let a={};try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch("http://localhost:11434/api/tags",{signal:b.signal}).finally(()=>{clearTimeout(c)});if(!d.ok)return o.warn("ollama-api-returned"),{};let e=await d.text();if(e.length>1048576)return o.warn("ollama-api-response"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.models))return o.warn("invalid-ollama-api"),{};for(let b of f.models.slice(0,100))"string"==typeof b?.name&&p.test(b.name)&&(a[b.name]={name:function(a){let b=String(a.name),c=a.details;if(!c)return b;let d=[b];return"string"==typeof c.parameter_size&&/^[\d.]+[BKMGT]?B?$/i.test(c.parameter_size)&&d.push(c.parameter_size),"string"==typeof c.quantization_level&&/^[A-Z0-9_]{1,20}$/i.test(c.quantization_level)&&d.push(c.quantization_level),d.length>1?`${b} (${d.slice(1).join(", ")})`:b}(b)})}catch(a){a instanceof Error&&"AbortError"===a.name?o.warn("ollama-api-timeout"):o.warn("failed-to-fetch")}return a}async function w(){let a={};try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch("http://localhost:1234/v1/models",{signal:b.signal}).finally(()=>{clearTimeout(c)});if(!d.ok)return o.warn("lm-studio-api"),{};let e=await d.text();if(e.length>1048576)return o.warn("lm-studio-api"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.data))return o.warn("invalid-lm-studio"),{};for(let b of f.data.slice(0,100))"string"==typeof b?.id&&q.test(b.id)&&(a[b.id]={name:b.id})}catch(a){a instanceof Error&&"AbortError"===a.name?o.warn("lm-studio-api"):o.warn("failed-to-fetch")}return a}function x(a=process.env){let b=l.join(k.homedir(),".config");return l.join((0,m.T)(a.XDG_CONFIG_HOME,b,"XDG_CONFIG_HOME"),"opencode")}async function y(){let[a,b]=await Promise.all([v(),w()]),c={};return Object.keys(a).length>0&&(c.ollama={npm:"@ai-sdk/openai-compatible",name:"Ollama (local)",options:{baseURL:"http://localhost:11434/v1"},models:a}),Object.keys(b).length>0&&(c.lmstudio={npm:"@ai-sdk/openai-compatible",name:"LM Studio (local)",options:{baseURL:"http://localhost:1234/v1"},models:b}),c}async function z(a){let b=function(a=process.env){let b=(a[r]??"").trim().toLowerCase();return"worktree"===b||"project"===b?"worktree":"global"===b||"user"===b?"global":(""!==b&&"off"!==b&&"0"!==b&&"false"!==b&&"none"!==b&&o.warn("opencode-config-mode-unrecognised",{variable:r,value:b}),"off")}();if("off"===b)return{written:!1,configPath:null,reason:"disabled"};let c="worktree"===b?function(a){let b=l.resolve(a);try{if(!j.lstatSync(b).isDirectory())throw Error(`Path is not a directory: ${b}`)}catch(a){if("ENOENT"===a.code)throw Error(`Path does not exist: ${b}`);throw a}return j.realpathSync(b)}(a):null,d=function(a,b=process.env){if(""!==(b[s]??"").trim())return`env:${s}`;if(null!==a)for(let b of t){let c=l.join(a,b);if(j.existsSync(c))return c}let c=x(b);for(let a of u){let b=l.join(c,a);if(j.existsSync(b))return b}return null}(c);if(null!==d)return o.info("opencode-config-generation-skipped",{mode:b,owned:d}),{written:!1,configPath:null,reason:"existing-config"};let e=c??x(),f=l.join(e,"opencode.json"),g=await y();if(0===Object.keys(g).length)return{written:!1,configPath:null,reason:"no-providers"};try{"global"===b&&j.mkdirSync(e,{recursive:!0}),j.writeFileSync(f,JSON.stringify({$schema:"https://opencode.ai/config.json",provider:g},null,2),{encoding:"utf-8",flag:"wx"})}catch(a){if("EEXIST"===a.code)return{written:!1,configPath:null,reason:"existing-config"};return o.warn("failed-to-write-opencodejson:error-insta"),{written:!1,configPath:null,reason:"write-failed"}}return o.info("opencode-config-generated",{mode:b,configPath:f}),{written:!0,configPath:f,reason:"written"}}var A=c(16983),B=c(79646),C=c(28354),D=c(39333),E=c(4970),F=c(49791),G=c(62887),H=c(72272),I=c(49154),J=c(48083),K=c(36051),L=c(57510),M=c(97709),N=c(75356),O=c(98211),P=c(90488),Q=c(85322);let R=(0,n.h)("lib/hooks/sources/opencode/ingest");async function S(a,b,c){let d=(0,M.VM)(Q.k),e=(0,O.Lu)(b.raw,b.receivedAt);if(!e)return R.info("opencode-permission-unparsed",{worktreeId:a.worktreeId,instanceId:c}),!1;let f=await (0,H.t)(d,a,e,d.parsePermissionRequest(b.raw));return R.info("opencode-permission-decided",{worktreeId:a.worktreeId,instanceId:c,decisionId:e.id,behavior:f.behavior,reason:f.reason,delivered:f.delivered,settled:f.settled}),f.settled}async function T(a,b){let[{getDbInstance:d},{getWorktreeById:e},{applyAgentStopEvent:f}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.all([c.e(1356),c.e(4689),c.e(6065),c.e(1191),c.e(6337),c.e(9373),c.e(6274),c.e(6781)]).then(c.bind(c,16781))]),g=d(),h=e(g,a.worktreeId)??null;if(!h)return void R.info("opencode-stop-unresolved-target",{worktreeId:a.worktreeId});let i=await f(g,h,Q.k,b);R.info("opencode-stop-applied",{worktreeId:a.worktreeId,instanceId:b,taskId:i.taskId,taskEventApplied:i.taskEventApplied,verificationRunId:i.verificationRunId})}async function U(a,b){let c=a.instanceId??Q.k;try{let d=(0,M.VM)(Q.k),e=(0,J.qo)({worktreeId:a.worktreeId,cliToolId:Q.k,instanceId:c,event:b.event,detail:b.detail,sessionId:b.conversationId,at:b.receivedAt,identity:d.eventIdentityOf(b.raw),identityKind:d.capabilities.eventIdentity});if(e.duplicate)return void R.info("opencode-event-duplicate-dropped",{worktreeId:a.worktreeId,instanceId:c,event:b.event,detail:b.detail,by:e.by});let f={event:b.event,at:b.receivedAt,detail:b.detail?.slice(0,G.h9)??null,sessionId:b.conversationId,message:(function(a){let b=(0,L.Qd)(a.raw.properties)?a.raw.properties:{};if(a.detail===N.aF)return(0,L.NZ)(b,["metadata","command"])??(0,L.O2)(b,"permission");if(a.detail===N.Tm){let a=b.questions;return Array.isArray(a)&&(0,L.Qd)(a[0])?(0,L.O2)(a[0],"question"):null}return a.detail===N.vE?(0,L.NZ)(b,["error","data","message"])??(0,L.NZ)(b,["error","name"]):null})(b)?.slice(0,K.lY)??null,model:b.model},g={sessionStartMayArriveLate:d.capabilities.sessionStartMayArriveLate};if("notification"===b.event&&b.detail===N.aF){f.decisionId=(0,L.O2)((0,L.Qd)(b.raw.properties)?b.raw.properties:{},"id");let d=(0,O.LF)(b.raw,b.receivedAt);f.toolName=d?.toolName??null,f.decisionPatterns=d?.patterns??null,f.promptSettled=await S(a,b,c),(0,J.recordAgentEvent)(a.worktreeId,Q.k,c,f,g);return}if("notification"===b.event&&b.detail===N.C8){f.decisionId=(0,N.Mn)(b.raw),f.promptSettled=!!(0,M.VM)(Q.k).capabilities.permissionReplyReleasesPrompt||(R.info("opencode-permission-reply-not-releasing",{worktreeId:a.worktreeId,instanceId:c,reason:"capability-permissionReplyReleasesPrompt-false"}),!1),(0,J.recordAgentEvent)(a.worktreeId,Q.k,c,f,g),R.info("opencode-permission-reply-observed",{worktreeId:a.worktreeId,instanceId:c,decisionId:f.decisionId,released:f.promptSettled});return}if((0,J.recordAgentEvent)(a.worktreeId,Q.k,c,f,g),"notification"===b.event&&b.detail===N.Tm){let d=(0,M.VM)(Q.k).parseQuestion(b.raw);d&&((0,J._N)(a.worktreeId,Q.k,c,d,b.receivedAt),(0,J.MU)(a.worktreeId,Q.k,c,{toolName:I.GF,decisionId:d.promptId,detail:N.Tm},b.receivedAt),R.info("opencode-question-recorded",{worktreeId:a.worktreeId,instanceId:c,decisionId:d.promptId,questionCount:d.questions.length,optionCounts:d.questions.map(a=>a.choices.length)})),await (0,P.Vo)(a,c,f.message??null,b.receivedAt);return}if("stop"===b.event)return void await T(a,c);"notification"===b.event&&b.detail===N.vE&&await (0,P.dJ)(a,c,(0,L.NZ)((0,L.Qd)(b.raw.properties)?b.raw.properties:{},["error","name"]),f.message??null,b.conversationId,b.receivedAt),R.info("opencode-event-received",{worktreeId:a.worktreeId,instanceId:c,event:b.event,detail:b.detail})}catch(d){R.error("opencode-event-ingest-failed",{worktreeId:a.worktreeId,instanceId:c,event:b.event,error:d instanceof Error?d.message:String(d)})}}var V=c(84574),W=c(85965),X=c(13602);let Y=(0,n.h)("lib/hooks/sources/opencode/runtime");function Z(a,b){return{worktreeId:a,cliToolId:"opencode",instanceId:b}}async function $(a,b){try{return await (0,V.CU)(a,b)}catch(b){return Y.warn("opencode-port-reserve-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),null}}let _=[0,500,1e3,2e3,4e3];async function aa(a,b){for(let[c,d]of _.entries()){d>0&&await new Promise(a=>setTimeout(a,d));let e=await (0,F.sc)(b);if("healthy"===e.kind)return c>0&&Y.info("opencode-server-reachable-after-retry",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,attempt:c}),e.health;if("rejected"===e.kind){Y.warn("opencode-server-refused-commandmate",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,status:e.status,consequence:"structured events are off for this session; the scraper decides"});break}}return null}async function ab(a){try{let b=(0,V.hC)(a);if(null===b)return!1;if((0,X.wb)(a))return!0;let c=await aa(a,b);if(!c)return Y.info("opencode-server-not-reachable",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,attempts:_.length}),!1;await W.cC.subscribe(a,b=>{U(a,b)});let d=await ac(a);return Y.info("opencode-event-stream-attached",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,version:c.version,activity:d}),!0}catch(b){return Y.warn("opencode-event-stream-attach-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),!1}}async function ac(a){let b=null;try{b=await W.cC.probeActivity(a)}catch(b){Y.debug("opencode-activity-probe-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)})}return(0,X.yn)(a,b,Date.now()),b}async function ad(a,b){try{if((0,X.wb)(a))return!0;let c=await (0,V.jp)(a,b);if(null===c)return!1;return await ab(a)}catch(b){return Y.warn("opencode-event-stream-resume-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),!1}}async function ae(a){let b=a.instanceId??a.cliToolId;try{let c=(0,V.hC)(a);if(null===c)return!1;let d=(0,X.lf)(a);if("live"!==d.state)return Y.info("opencode-abort-skipped-not-live",{worktreeId:a.worktreeId,instanceId:b,port:c,liveness:d.state}),!1;let e=(0,X.ym)(a);if(null===e)return Y.info("opencode-abort-skipped-no-session",{worktreeId:a.worktreeId,instanceId:b,port:c}),!1;let f=(0,X.H1)(a,e,2e3);if(!await (0,F.UR)(c,e))return f.cancel(),Y.warn("opencode-abort-rejected",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e}),!1;if(!await f.seen)return Y.warn("opencode-abort-unconfirmed",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e,timeoutMs:2e3}),!1;return Y.info("opencode-abort-confirmed",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e}),!0}catch(c){return Y.warn("opencode-abort-failed",{worktreeId:a.worktreeId,instanceId:b,error:c instanceof Error?c.message:String(c)}),!1}}async function af(a){try{await (0,X.FN)(a),(0,V.kE)(a)}catch(b){Y.warn("opencode-event-stream-release-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)})}}var ag=c(18529),ah=c(70849),ai=c(27939),aj=c(93949),ak=c(20610),al=c(2669);let am=(0,n.h)("cli-tools/opencode"),an=(0,C.promisify)(B.execFile);function ao(a){return a instanceof Error?a.message:String(a)}function ap(){let a=process.env[A.ao],b=(0,A._u)();return void 0!==a&&String(b)!==a.trim()?am.warn("opencode-pane-width-rejected",{requested:a,applied:b}):b>=A.Lg&&am.warn("opencode-pane-width-sidebar-visible",{width:b,sidebarMinWidth:A.Lg}),b}let aq=[0,50,100,200];function ar(a,b){return a?`${a}
1
+ "use strict";exports.id=1886,exports.ids=[1886],exports.modules={17287:(a,b,c)=>{c.d(b,{CD:()=>g,nL:()=>f});var d=c(24455);let e=globalThis.__permissionDecisions??(globalThis.__permissionDecisions=new Map);function f(a,b,c,f){e.set((0,d.v7)(a,b,c),f)}function g(a,b,c){return e.get((0,d.v7)(a,b,c))??null}},23365:(a,b,c)=>{c.d(b,{H:()=>g,y:()=>h});var d=c(16983),e=c(34405),f=c(15194);let g=200;function h(a){var b;return{statusLines:"opencode"===(b=a)?d.xT:"gemini"===b?g:e.G,usesAlternateScreen:(0,f.VA)(a)}}},34405:(a,b,c)=>{c.d(b,{G:()=>e,_:()=>d});let d=1e4,e=1e3},39333:(a,b,c)=>{c.d(b,{$Y:()=>g,Bg:()=>i,HB:()=>f,df:()=>h,f9:()=>d});let d=[".png",".jpg",".jpeg",".gif",".webp",".svg"],e=[{extension:".png",mimeType:"image/png",magicBytes:[137,80,78,71]},{extension:".jpg",mimeType:"image/jpeg",magicBytes:[255,216,255]},{extension:".jpeg",mimeType:"image/jpeg",magicBytes:[255,216,255]},{extension:".gif",mimeType:"image/gif",magicBytes:[71,73,70,56]},{extension:".webp",mimeType:"image/webp",magicBytes:[82,73,70,70]},{extension:".svg",mimeType:"image/svg+xml"}];function f(a){return a?a.startsWith(".")?a.toLowerCase():"."+a.toLowerCase():""}function g(a){let b=f(a),c=e.find(a=>a.extension===b);return c?.mimeType||"application/octet-stream"}function h(a){if(!a)return!1;let b=f(a);return d.includes(b)}function i(a,b){if(b.length>0x1400000)return{valid:!1,error:"File size exceeds 20MB limit"};if(".svg"===f(a)){var c;return(c=b.toString("utf-8")).includes("<svg")||c.startsWith("<?xml")?/<script[\s>]/i.test(c)?{valid:!1,error:"SVG contains script tags"}:/\s+on\w+\s*=/i.test(c)?{valid:!1,error:"SVG contains event handler attributes"}:/(?:xlink:)?href\s*=\s*["']?\s*(?:javascript|data|vbscript):/i.test(c)?{valid:!1,error:"SVG contains dangerous URI scheme"}:/<foreignObject[\s>]/i.test(c)?{valid:!1,error:"SVG contains foreignObject element"}:{valid:!0}:{valid:!1,error:"Invalid SVG format"}}return!function(a,b){let c=f(a),d=e.find(a=>a.extension===c);if(!d?.magicBytes)return".svg"===c;let g=d.magicBytesOffset||0;return!(b.length<g+d.magicBytes.length)&&d.magicBytes.every((a,c)=>b[g+c]===a)}(a,b)?{valid:!1,error:"Invalid image magic bytes"}:{valid:!0}}d.filter(a=>".svg"!==a).map(a=>g(a)).filter(a=>"application/octet-stream"!==a).join(",")},41466:(a,b,c)=>{c.d(b,{Ui:()=>as,TZ:()=>ar});var d=c(81886),e=c(8953),f=c(79892),g=c(85164),h=c(40236),i=c(93997),j=c(29021),k=c(21820),l=c(33873),m=c(8004),n=c(72626);let o=(0,n.h)("cli-tools/opencode-config"),p=/^[a-zA-Z0-9._:/-]{1,100}$/,q=/^[a-zA-Z0-9._:/@-]{1,200}$/,r="CM_OPENCODE_LOCAL_PROVIDER_CONFIG",s="OPENCODE_CONFIG",t=["opencode.json","opencode.jsonc",l.join(".opencode","opencode.json"),l.join(".opencode","opencode.jsonc")],u=["opencode.json","opencode.jsonc"];async function v(){let a={};try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch("http://localhost:11434/api/tags",{signal:b.signal}).finally(()=>{clearTimeout(c)});if(!d.ok)return o.warn("ollama-api-returned"),{};let e=await d.text();if(e.length>1048576)return o.warn("ollama-api-response"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.models))return o.warn("invalid-ollama-api"),{};for(let b of f.models.slice(0,100))"string"==typeof b?.name&&p.test(b.name)&&(a[b.name]={name:function(a){let b=String(a.name),c=a.details;if(!c)return b;let d=[b];return"string"==typeof c.parameter_size&&/^[\d.]+[BKMGT]?B?$/i.test(c.parameter_size)&&d.push(c.parameter_size),"string"==typeof c.quantization_level&&/^[A-Z0-9_]{1,20}$/i.test(c.quantization_level)&&d.push(c.quantization_level),d.length>1?`${b} (${d.slice(1).join(", ")})`:b}(b)})}catch(a){a instanceof Error&&"AbortError"===a.name?o.warn("ollama-api-timeout"):o.warn("failed-to-fetch")}return a}async function w(){let a={};try{let b=new AbortController,c=setTimeout(()=>b.abort(),3e3),d=await fetch("http://localhost:1234/v1/models",{signal:b.signal}).finally(()=>{clearTimeout(c)});if(!d.ok)return o.warn("lm-studio-api"),{};let e=await d.text();if(e.length>1048576)return o.warn("lm-studio-api"),{};let f=JSON.parse(e);if(!f||!Array.isArray(f.data))return o.warn("invalid-lm-studio"),{};for(let b of f.data.slice(0,100))"string"==typeof b?.id&&q.test(b.id)&&(a[b.id]={name:b.id})}catch(a){a instanceof Error&&"AbortError"===a.name?o.warn("lm-studio-api"):o.warn("failed-to-fetch")}return a}function x(a=process.env){let b=l.join(k.homedir(),".config");return l.join((0,m.T)(a.XDG_CONFIG_HOME,b,"XDG_CONFIG_HOME"),"opencode")}async function y(){let[a,b]=await Promise.all([v(),w()]),c={};return Object.keys(a).length>0&&(c.ollama={npm:"@ai-sdk/openai-compatible",name:"Ollama (local)",options:{baseURL:"http://localhost:11434/v1"},models:a}),Object.keys(b).length>0&&(c.lmstudio={npm:"@ai-sdk/openai-compatible",name:"LM Studio (local)",options:{baseURL:"http://localhost:1234/v1"},models:b}),c}async function z(a){let b=function(a=process.env){let b=(a[r]??"").trim().toLowerCase();return"worktree"===b||"project"===b?"worktree":"global"===b||"user"===b?"global":(""!==b&&"off"!==b&&"0"!==b&&"false"!==b&&"none"!==b&&o.warn("opencode-config-mode-unrecognised",{variable:r,value:b}),"off")}();if("off"===b)return{written:!1,configPath:null,reason:"disabled"};let c="worktree"===b?function(a){let b=l.resolve(a);try{if(!j.lstatSync(b).isDirectory())throw Error(`Path is not a directory: ${b}`)}catch(a){if("ENOENT"===a.code)throw Error(`Path does not exist: ${b}`);throw a}return j.realpathSync(b)}(a):null,d=function(a,b=process.env){if(""!==(b[s]??"").trim())return`env:${s}`;if(null!==a)for(let b of t){let c=l.join(a,b);if(j.existsSync(c))return c}let c=x(b);for(let a of u){let b=l.join(c,a);if(j.existsSync(b))return b}return null}(c);if(null!==d)return o.info("opencode-config-generation-skipped",{mode:b,owned:d}),{written:!1,configPath:null,reason:"existing-config"};let e=c??x(),f=l.join(e,"opencode.json"),g=await y();if(0===Object.keys(g).length)return{written:!1,configPath:null,reason:"no-providers"};try{"global"===b&&j.mkdirSync(e,{recursive:!0}),j.writeFileSync(f,JSON.stringify({$schema:"https://opencode.ai/config.json",provider:g},null,2),{encoding:"utf-8",flag:"wx"})}catch(a){if("EEXIST"===a.code)return{written:!1,configPath:null,reason:"existing-config"};return o.warn("failed-to-write-opencodejson:error-insta"),{written:!1,configPath:null,reason:"write-failed"}}return o.info("opencode-config-generated",{mode:b,configPath:f}),{written:!0,configPath:f,reason:"written"}}var A=c(16983),B=c(79646),C=c(28354),D=c(39333),E=c(4970),F=c(49791),G=c(62887),H=c(72272),I=c(49154),J=c(48083),K=c(36051),L=c(57510),M=c(97709),N=c(75356),O=c(98211),P=c(90488),Q=c(85322);let R=(0,n.h)("lib/hooks/sources/opencode/ingest");async function S(a,b,c){let d=(0,M.VM)(Q.k),e=(0,O.Lu)(b.raw,b.receivedAt);if(!e)return R.info("opencode-permission-unparsed",{worktreeId:a.worktreeId,instanceId:c}),!1;let f=await (0,H.t)(d,a,e,d.parsePermissionRequest(b.raw));return R.info("opencode-permission-decided",{worktreeId:a.worktreeId,instanceId:c,decisionId:e.id,behavior:f.behavior,reason:f.reason,delivered:f.delivered,settled:f.settled}),f.settled}async function T(a,b){let[{getDbInstance:d},{getWorktreeById:e},{applyAgentStopEvent:f}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.all([c.e(1356),c.e(6065),c.e(1191),c.e(6337),c.e(1501),c.e(7366),c.e(3707),c.e(6781)]).then(c.bind(c,16781))]),g=d(),h=e(g,a.worktreeId)??null;if(!h)return void R.info("opencode-stop-unresolved-target",{worktreeId:a.worktreeId});let i=await f(g,h,Q.k,b);R.info("opencode-stop-applied",{worktreeId:a.worktreeId,instanceId:b,taskId:i.taskId,taskEventApplied:i.taskEventApplied,verificationRunId:i.verificationRunId})}async function U(a,b){let c=a.instanceId??Q.k;try{let d=(0,M.VM)(Q.k),e=(0,J.qo)({worktreeId:a.worktreeId,cliToolId:Q.k,instanceId:c,event:b.event,detail:b.detail,sessionId:b.conversationId,at:b.receivedAt,identity:d.eventIdentityOf(b.raw),identityKind:d.capabilities.eventIdentity});if(e.duplicate)return void R.info("opencode-event-duplicate-dropped",{worktreeId:a.worktreeId,instanceId:c,event:b.event,detail:b.detail,by:e.by});let f={event:b.event,at:b.receivedAt,detail:b.detail?.slice(0,G.h9)??null,sessionId:b.conversationId,message:(function(a){let b=(0,L.Qd)(a.raw.properties)?a.raw.properties:{};if(a.detail===N.aF)return(0,L.NZ)(b,["metadata","command"])??(0,L.O2)(b,"permission");if(a.detail===N.Tm){let a=b.questions;return Array.isArray(a)&&(0,L.Qd)(a[0])?(0,L.O2)(a[0],"question"):null}return a.detail===N.vE?(0,L.NZ)(b,["error","data","message"])??(0,L.NZ)(b,["error","name"]):null})(b)?.slice(0,K.lY)??null,model:b.model},g={sessionStartMayArriveLate:d.capabilities.sessionStartMayArriveLate};if("notification"===b.event&&b.detail===N.aF){f.decisionId=(0,L.O2)((0,L.Qd)(b.raw.properties)?b.raw.properties:{},"id");let d=(0,O.LF)(b.raw,b.receivedAt);f.toolName=d?.toolName??null,f.decisionPatterns=d?.patterns??null,f.promptSettled=await S(a,b,c),(0,J.recordAgentEvent)(a.worktreeId,Q.k,c,f,g);return}if("notification"===b.event&&b.detail===N.C8){f.decisionId=(0,N.Mn)(b.raw),f.promptSettled=!!(0,M.VM)(Q.k).capabilities.permissionReplyReleasesPrompt||(R.info("opencode-permission-reply-not-releasing",{worktreeId:a.worktreeId,instanceId:c,reason:"capability-permissionReplyReleasesPrompt-false"}),!1),(0,J.recordAgentEvent)(a.worktreeId,Q.k,c,f,g),R.info("opencode-permission-reply-observed",{worktreeId:a.worktreeId,instanceId:c,decisionId:f.decisionId,released:f.promptSettled});return}if((0,J.recordAgentEvent)(a.worktreeId,Q.k,c,f,g),"notification"===b.event&&b.detail===N.Tm){let d=(0,M.VM)(Q.k).parseQuestion(b.raw);d&&((0,J._N)(a.worktreeId,Q.k,c,d,b.receivedAt),(0,J.MU)(a.worktreeId,Q.k,c,{toolName:I.GF,decisionId:d.promptId,detail:N.Tm},b.receivedAt),R.info("opencode-question-recorded",{worktreeId:a.worktreeId,instanceId:c,decisionId:d.promptId,questionCount:d.questions.length,optionCounts:d.questions.map(a=>a.choices.length)})),await (0,P.Vo)(a,c,f.message??null,b.receivedAt);return}if("stop"===b.event)return void await T(a,c);"notification"===b.event&&b.detail===N.vE&&await (0,P.dJ)(a,c,(0,L.NZ)((0,L.Qd)(b.raw.properties)?b.raw.properties:{},["error","name"]),f.message??null,b.conversationId,b.receivedAt),R.info("opencode-event-received",{worktreeId:a.worktreeId,instanceId:c,event:b.event,detail:b.detail})}catch(d){R.error("opencode-event-ingest-failed",{worktreeId:a.worktreeId,instanceId:c,event:b.event,error:d instanceof Error?d.message:String(d)})}}var V=c(84574),W=c(85965),X=c(13602);let Y=(0,n.h)("lib/hooks/sources/opencode/runtime");function Z(a,b){return{worktreeId:a,cliToolId:"opencode",instanceId:b}}async function $(a,b){try{return await (0,V.CU)(a,b)}catch(b){return Y.warn("opencode-port-reserve-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),null}}let _=[0,500,1e3,2e3,4e3];async function aa(a,b){for(let[c,d]of _.entries()){d>0&&await new Promise(a=>setTimeout(a,d));let e=await (0,F.sc)(b);if("healthy"===e.kind)return c>0&&Y.info("opencode-server-reachable-after-retry",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,attempt:c}),e.health;if("rejected"===e.kind){Y.warn("opencode-server-refused-commandmate",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,status:e.status,consequence:"structured events are off for this session; the scraper decides"});break}}return null}async function ab(a){try{let b=(0,V.hC)(a);if(null===b)return!1;if((0,X.wb)(a))return!0;let c=await aa(a,b);if(!c)return Y.info("opencode-server-not-reachable",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,attempts:_.length}),!1;await W.cC.subscribe(a,b=>{U(a,b)});let d=await ac(a);return Y.info("opencode-event-stream-attached",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:b,version:c.version,activity:d}),!0}catch(b){return Y.warn("opencode-event-stream-attach-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),!1}}async function ac(a){let b=null;try{b=await W.cC.probeActivity(a)}catch(b){Y.debug("opencode-activity-probe-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)})}return(0,X.yn)(a,b,Date.now()),b}async function ad(a,b){try{if((0,X.wb)(a))return!0;let c=await (0,V.jp)(a,b);if(null===c)return!1;return await ab(a)}catch(b){return Y.warn("opencode-event-stream-resume-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)}),!1}}async function ae(a){let b=a.instanceId??a.cliToolId;try{let c=(0,V.hC)(a);if(null===c)return!1;let d=(0,X.lf)(a);if("live"!==d.state)return Y.info("opencode-abort-skipped-not-live",{worktreeId:a.worktreeId,instanceId:b,port:c,liveness:d.state}),!1;let e=(0,X.ym)(a);if(null===e)return Y.info("opencode-abort-skipped-no-session",{worktreeId:a.worktreeId,instanceId:b,port:c}),!1;let f=(0,X.H1)(a,e,2e3);if(!await (0,F.UR)(c,e))return f.cancel(),Y.warn("opencode-abort-rejected",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e}),!1;if(!await f.seen)return Y.warn("opencode-abort-unconfirmed",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e,timeoutMs:2e3}),!1;return Y.info("opencode-abort-confirmed",{worktreeId:a.worktreeId,instanceId:b,port:c,sessionId:e}),!0}catch(c){return Y.warn("opencode-abort-failed",{worktreeId:a.worktreeId,instanceId:b,error:c instanceof Error?c.message:String(c)}),!1}}async function af(a){try{await (0,X.FN)(a),(0,V.kE)(a)}catch(b){Y.warn("opencode-event-stream-release-failed",{worktreeId:a.worktreeId,error:b instanceof Error?b.message:String(b)})}}var ag=c(18529),ah=c(70849),ai=c(27939),aj=c(93949),ak=c(20610),al=c(2669);let am=(0,n.h)("cli-tools/opencode"),an=(0,C.promisify)(B.execFile);function ao(a){return a instanceof Error?a.message:String(a)}function ap(){let a=process.env[A.ao],b=(0,A._u)();return void 0!==a&&String(b)!==a.trim()?am.warn("opencode-pane-width-rejected",{requested:a,applied:b}):b>=A.Lg&&am.warn("opencode-pane-width-sidebar-visible",{width:b,sidebarMinWidth:A.Lg}),b}let aq=[0,50,100,200];function ar(a,b){return a?`${a}
2
2
 
3
- [添付画像: ${b}]`:`[添付画像: ${b}]`}class as extends d.M{navigationKeys(){return{keys:e.sM,leaderKey:e.Mx}}async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,f.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw new al.lU(this.name,"OpenCode is not installed or not in PATH");let d=this.getSessionName(a,c),e=Z(a,c);if(await (0,f.N)(d)){await this.reconcileExistingSession(d,{windowWidth:ap(),windowHeight:A.xT}),await ad(e,b),am.info("opencode-session-sessionname");return}(0,E.Fq)(e);try{await z(b),await (0,f.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,ak.Uc));try{await an("tmux",["resize-window","-t",(0,f.lA)(d),"-x",String(ap()),"-y",String(A.xT)])}catch{}await $(e,b);let g=(0,E.wK)({target:e,executablePath:this.command,worktreePath:b}),h=(0,ai.pr)(e,b),i=null===h?g:(0,ai.XO)(g,h);null!==h&&am.info("opencode-session-resumed",{worktreeId:a,instanceId:c??this.id,sessionId:h}),await (0,f.V1)(d,i,!0),await this.waitForReady(d),await ab(e),am.info("started-opencode-session:sessionname")}catch(b){let a=ao(b);throw Error(`Failed to start OpenCode session: ${a}`)}}async waitForReady(a){for(let b=0;b<60;b++){try{let c=(0,g.aJ)(await (0,f.Xg)(a,50));if(g.vU.test(c))return am.info("opencode-composer-detected",{attempt:b}),!0;if(g.LO.test(c))return am.info("opencode-overlay-detected",{attempt:b}),!0}catch{}await new Promise(a=>setTimeout(a,500))}return am.info("opencode-ready-detection-timeout"),!1}async trySendViaServer(a,b,c){let d=a.instanceId??a.cliToolId;try{let e=(0,V.hC)(a);if(null===e)return!1;let f=(0,X.lf)(a);if("live"!==f.state)return am.info("opencode-send-skipped-not-live",{worktreeId:a.worktreeId,instanceId:d,port:e,liveness:f.state}),!1;let g=(0,X.ym)(a);if(null===g)return am.info("opencode-send-skipped-no-session",{worktreeId:a.worktreeId,instanceId:d,port:e}),!1;let h=[{type:"text",text:b}];void 0!==c&&h.push({type:"file",mime:(0,D.$Y)((0,l.extname)(c)),filename:(0,l.basename)(c),url:(0,F.fy)(c)});let i=(0,F.CH)(),j=(0,ag.QH)((0,ag.Q1)(a));if(!await (0,F.wZ)(e,g,i,h,j))return!1;if(!await this.verifyPostedMessage(e,g,i,b))return am.warn("opencode-send-unverified",{worktreeId:a.worktreeId,instanceId:d,port:e,sessionId:g,messageId:i,hasImage:void 0!==c}),!1;return am.info("opencode-send-delivered-via-api",{worktreeId:a.worktreeId,instanceId:d,port:e,sessionId:g,messageId:i,hasImage:void 0!==c}),!0}catch(b){return am.warn("opencode-send-api-failed",{worktreeId:a.worktreeId,instanceId:d,error:ao(b)}),!1}}async verifyPostedMessage(a,b,c,d){for(let e of aq){e>0&&await new Promise(a=>setTimeout(a,e));let f=await (0,F.ep)(a,b,c);if("found"===f.kind)return f.texts.includes(d);if("missing"===f.kind)break}return!1}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,f.N)(d))throw Error(`OpenCode session ${d} does not exist. Start the session first.`);if(await this.trySendViaServer(Z(a,c),b))return void(0,i.gm)(d);try{await (0,h.FW)({sessionName:d,message:b,cliToolId:"opencode",composer:this.describeComposer()}),(0,i.gm)(d),am.info("sent-message-to-opencode-session:session")}catch(b){let a=ao(b);throw Error(`Failed to send message to OpenCode: ${a}`)}}supportsImage(){return!0}async sendMessageWithImage(a,b,c,d){let e=this.getSessionName(a,d);if(!await (0,f.N)(e))throw Error(`OpenCode session ${e} does not exist. Start the session first.`);let g=Z(a,d);if(await this.trySendViaServer(g,b,c))return void(0,i.gm)(e);am.info("opencode-image-degraded-to-path",{worktreeId:a,instanceId:d??this.id}),await this.sendMessage(a,ar(b,c),d)}async killSession(a,b){let c=this.getSessionName(a,b),d=Z(a,b),e=(0,V.hC)(d),g=await (0,ah.LQ)(d).catch(()=>null);g&&!g.captured&&am.info("opencode-session-capture-skipped",{sessionName:c,reason:g.skipped}),await af(d);try{if(await (0,f.N)(c)){await (0,f.V1)(c,"/exit",!1),await new Promise(a=>setTimeout(a,ak.pL)),await (0,f.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,ak.KI));let a=await (0,aj.rY)({sessionAlive:()=>(0,f.N)(c),portAnswering:null===e?null:async()=>await (0,F.Ok)(e)!==null});a.ok||(am.warn("opencode-graceful-exit-postcondition-failed",{sessionName:c,reason:a.reason,...null!==e?{port:e}:{}}),await (0,f.fY)(c))}else await (0,f.fY)(c);(0,i.gm)(c),am.info("stopped-opencode-session:sessionname")}catch(a){throw am.error("session:stop-failed",{error:ao(a)}),a}}async interrupt(a,b){let c=this.getSessionName(a,b);if(await ae(Z(a,b))){(0,i.gm)(c),am.info("opencode-interrupt-aborted-via-api");return}await (0,f.ds)(c,"Escape"),await new Promise(a=>setTimeout(a,ak.os)),await (0,f.ds)(c,"Escape"),(0,i.gm)(c),am.info("opencode-interrupt-sent")}constructor(...a){super(...a),this.id="opencode",this.name="OpenCode",this.command="opencode"}}},56263:(a,b,c)=>{c.d(b,{L1:()=>e,MJ:()=>j,Rf:()=>f,ky:()=>g,lM:()=>i,pL:()=>h,wp:()=>d,zt:()=>k});let d=200,e=100,f=1e5,g="[... truncated ...]",h=3e4,i=/^[a-zA-Z0-9][a-zA-Z0-9\-._/:]*$/,j=128,k="Install with: brew install copilot-cli (macOS) or npm i -g @github/copilot"},59701:(a,b,c)=>{c.r(b),c.d(b,{CLIToolManager:()=>S});var d=c(81886),e=c(57905);class f extends d.M{async isInstalled(){return await (0,e.zw)()}async isRunning(a,b){return await (0,e.Yq)(a,b)}async launchSession(a,b,c){await (0,e.R7)({worktreeId:a,worktreePath:b,instanceId:c})}async sendMessage(a,b,c){await (0,e.pU)(a,b,c)}supportsImage(){return!0}async sendMessageWithImage(a,b,c,d){let e=`
4
- ![](${c})`,f=b?`${b}${e}`:e;await this.sendMessage(a,f,d)}async killSession(a,b){await (0,e.VU)(a,b)}constructor(...a){super(...a),this.id="claude",this.name="Claude Code",this.command="claude"}}var g=c(79892),h=c(40236),i=c(93997),j=c(85164),k=c(72626),l=c(22354),m=c(4970),n=c(20610),o=c(2669);let p=(0,k.h)("cli-tools/codex");function q(a){return a instanceof Error?a.message:String(a)}class r extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw new o.lU(this.name,"Codex CLI is not installed or not in PATH");let d=this.getSessionName(a,c);if(await (0,g.N)(d)){await this.reconcileExistingSession(d),p.info("codex-session-sessionname");return}(0,m.Fq)({worktreeId:a,cliToolId:l.c1,instanceId:c});try{await (0,g.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,n.Uc));let e=(0,m.wK)({target:{worktreeId:a,cliToolId:l.c1,instanceId:c},executablePath:this.command,worktreePath:b});await (0,g.V1)(d,e,!0),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(d),p.info("started-codex-session:sessionname")}catch(b){let a=q(b);throw Error(`Failed to start Codex session: ${a}`)}}async waitForReady(a){let b=!1,c=!1,d=!1,e=0;for(let f=0;f<30;f++){try{let f=await (0,g.Xg)(a,50),h=(0,j.aJ)(f);if((0,j.zZ)(h))return void p.info("codex-prompt-detected");if(!d&&function(a){return j.XV.every(b=>a.includes(b))}(h)){await (0,g.V1)(a,"3",!1),d=!0,p.info("codex-hooks-review-declined"),await new Promise(a=>setTimeout(a,n.CV));continue}let i=(0,j.E6)(h);if(("hooks-list"===i||"hooks-detail"===i)&&e<4){await (0,g.ds)(a,"Escape"),e++,p.info("codex-hooks-screen-escaped"),await new Promise(a=>setTimeout(a,n.CV));continue}let k=(0,j.Qh)(h);if("update"===k&&!b){await (0,g.V1)(a,"2",!1),b=!0,p.info("skipped-codex-update"),await new Promise(a=>setTimeout(a,n.CV));continue}if("press-enter"===k){await (0,g.ds)(a,"Enter"),p.info("dismissed-codex-notification"),await new Promise(a=>setTimeout(a,n.CV));continue}if("trust"===k&&!c){await (0,g.V1)(a,"1",!1),c=!0,p.info("auto-trusted-folder-for"),await new Promise(a=>setTimeout(a,n.CV));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}p.info("codex-prompt-detection")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,g.Xg)(a,50),c=(0,j.aJ)(b);if((0,j.zZ)(c))return}catch{}await new Promise(a=>setTimeout(a,500))}throw p.info("codex-prompt-not"),Error("Codex prompt not ready: timed out waiting for the input prompt before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Codex session ${d} does not exist. Start the session first.`);try{await this.waitForPrompt(d),await (0,h.FW)({sessionName:d,message:b,cliToolId:"codex",composer:this.describeComposer()}),(0,i.gm)(d),p.info("sent-message-to-codex-session:sessionnam")}catch(b){let a=q(b);throw Error(`Failed to send message to Codex: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,g.N)(c)&&(await (0,g.ds)(c,"C-d"),await new Promise(a=>setTimeout(a,n.Zf))),await (0,g.fY)(c)&&p.info("stopped-codex-session:sessionname")}catch(a){throw p.error("session:stop-failed",{error:q(a)}),a}}constructor(...a){super(...a),this.id="codex",this.name="Codex CLI",this.command="codex"}}var s=c(23365);let t=(0,k.h)("cli-tools/gemini");function u(a){return a instanceof Error?a.message:String(a)}class v extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw new o.lU(this.name,"Gemini CLI is not installed or not in PATH");let d=this.getSessionName(a,c);if(await (0,g.N)(d)){await this.reconcileExistingSession(d),t.info("gemini-session-sessionname");return}(0,m.Fq)({worktreeId:a,cliToolId:l.o,instanceId:c});try{await (0,g.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,n.Uc));let e=(0,m.wK)({target:{worktreeId:a,cliToolId:l.o,instanceId:c},executablePath:this.command,worktreePath:b});await (0,g.V1)(d,e,!0),await new Promise(a=>setTimeout(a,6e3)),await this.waitForReady(d),t.info("started-gemini-session:sessionname")}catch(b){let a=u(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,g.Xg)(a,s.H),d=(0,j.aJ)(c);if(j.wN.test(d))return void t.info("gemini-prompt-detected");!b&&d.includes("Do you trust this folder?")&&(await (0,g.ds)(a,"Enter"),b=!0,t.info("auto-trusted-folder-for"))}catch{}await new Promise(a=>setTimeout(a,1e3))}t.info("gemini-prompt-detection")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,g.Xg)(a,s.H),c=(0,j.aJ)(b);if(j.wN.test(c))return}catch{}await new Promise(a=>setTimeout(a,500))}t.info("gemini-prompt-not")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Gemini session ${d} does not exist. Start the session first.`);try{await this.waitForPrompt(d),await (0,h.FW)({sessionName:d,message:b,cliToolId:"gemini",composer:this.describeComposer()}),(0,i.gm)(d),t.info("sent-message-to-gemini-session:sessionna")}catch(b){let a=u(b);throw Error(`Failed to send message to Gemini: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,g.N)(c)&&(await (0,g.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,n.Is)),await (0,g.V1)(c,"/quit",!0),await new Promise(a=>setTimeout(a,n.Zf))),await (0,g.fY)(c)&&t.info("stopped-gemini-session:sessionname")}catch(a){throw t.error("session:stop-failed",{error:u(a)}),a}}constructor(...a){super(...a),this.id="gemini",this.name="Gemini CLI",this.command="gemini"}}var w=c(15194),x=c(88807),y=c(56791);let z=(0,k.h)("cli-tools/vibe-local");function A(a){return a instanceof Error?a.message:String(a)}class B extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw new o.lU(this.name,"vibe-local is not installed or not in PATH");let d=this.getSessionName(a,c);if(await (0,g.N)(d)){await this.reconcileExistingSession(d),z.info("vibe-local-session");return}try{await (0,g.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,n.Uc));let c="vibe-local -y";try{let b=(0,x.getDbInstance)(),d=(0,y.getWorktreeById)(b,a);d?.vibeLocalModel&&w.QP.test(d.vibeLocalModel)&&(c+=` -m ${d.vibeLocalModel}`);let e=d?.vibeLocalContextWindow;(0,w.FV)(e)&&(c+=` --context-window ${Number(e)}`)}catch{}await (0,g.V1)(d,c,!0),await new Promise(a=>setTimeout(a,5e3)),z.info("started-vibe-local-session:sessionname")}catch(b){let a=A(b);throw Error(`Failed to start Vibe Local session: ${a}`)}}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Vibe Local session ${d} does not exist. Start the session first.`);try{await (0,h.FW)({sessionName:d,message:b,cliToolId:"vibe-local",composer:this.describeComposer(),interEnterWaitMs:n.PY}),(0,i.gm)(d),z.info("sent-message-to-vibe-local-session:sessi")}catch(b){let a=A(b);throw Error(`Failed to send message to Vibe Local: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,g.N)(c)&&(await (0,g.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,n.Is)),await (0,g.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,n.Zf))),await (0,g.fY)(c)&&z.info("stopped-vibe-local-session:sessionname")}catch(a){throw z.error("session:stop-failed",{error:A(a)}),a}}constructor(...a){super(...a),this.id="vibe-local",this.name="Vibe Local",this.command="vibe-local"}}var C=c(41466),D=c(81776),E=c(56263),F=c(21758),G=c(54633),H=c(77093);let I=(0,k.h)("cli-tools/copilot"),J=new Set(["model","agent","theme","permissions","skills","mcp","settings","statusline","subagents","resume","session"]),K=/^[>❯](?:\s|$)/;class L extends d.M{async isInstalled(){return await (0,D.B0)()!==null}launchExecutable(a){return"path"===a.source?this.command:F.nL}async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async launchSession(a,b,c){let d=await (0,D.B0)();if(!d)throw new o.lU(this.name,`GitHub Copilot CLI is not installed. ${E.zt}`);let e=this.getSessionName(a,c);if(await (0,g.N)(e)){await this.reconcileExistingSession(e),I.info("copilot-session-exists");return}(0,m.Fq)({worktreeId:a,cliToolId:G.V,instanceId:c});try{await (0,g.jw)({sessionName:e,workingDirectory:b}),await new Promise(a=>setTimeout(a,n.Uc));let f=(0,m.wK)({target:{worktreeId:a,cliToolId:G.V,instanceId:c},executablePath:this.launchExecutable(d),worktreePath:b});await (0,g.V1)(e,f,!0),await this.waitForReady(e),I.info("started-copilot-session",{executableSource:d.source,version:d.version})}catch(b){let a=(0,H.u1)(b);throw Error(`Failed to start Copilot session: ${a}`)}}async answerFolderTrustDialog(a,b){return!!(0,j.Rx)(b)&&(await (0,g.V1)(a,j.oD,!1),(0,i.gm)(a),I.info("copilot-folder-trust-answered"),!0)}isComposerDrawn(a){let b=a.split("\n");for(let a=1;a<b.length-1;a++)if(K.test(b[a])&&j.A.test(b[a-1].trimEnd())&&j.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,g.Xg)(a,50),d=(0,j.aJ)(c);if(this.isComposerDrawn(d))return void I.info("copilot-prompt-detected");!b&&await this.answerFolderTrustDialog(a,d)&&(b=!0)}catch{}await new Promise(a=>setTimeout(a,1e3))}I.info("copilot-prompt-detection-timeout")}async waitForPrompt(a,b=15e3){let c=Date.now(),d=!1;for(;Date.now()-c<b;){try{let b=await (0,g.Xg)(a,50),c=(0,j.aJ)(b);if(j.Du.test(c))return;!d&&await this.answerFolderTrustDialog(a,c)&&(d=!0)}catch{}await new Promise(a=>setTimeout(a,500))}I.info("copilot-prompt-not-detected")}extractSlashCommand(a){let b=a.trim();if(!b.startsWith("/"))return null;let c=b.match(/^\/(\S+)/);return c?c[1]:null}async waitForSelectionList(a){let b=Date.now();for(;Date.now()-b<5e3;){await new Promise(a=>setTimeout(a,300));try{let b=await (0,g.Xg)(a,50),c=(0,j.aJ)(b);if((0,j.gT)(c.split("\n")))return I.info("copilot-selection-list-detected"),!0}catch{}}return I.info("copilot-selection-list-not-detected-timeout"),!1}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Copilot session ${d} does not exist. Start the session first.`);try{await this.waitForPrompt(d);let a=this.extractSlashCommand(b);if(a&&J.has(a)){await (0,g.V1)(d,b,!0),await this.waitForSelectionList(d),(0,i.gm)(d),I.info("sent-selection-list-command-to-copilot",{command:a});return}await (0,h.FW)({sessionName:d,message:b,cliToolId:"copilot",composer:this.describeComposer(),textInputWaitMs:E.L1,verifyDelayMs:E.wp}),(0,i.gm)(d),I.info("sent-message-to-copilot-session")}catch(b){let a=(0,H.u1)(b);throw Error(`Failed to send message to Copilot: ${a}`)}}async sendModelCommand(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Copilot session ${d} does not exist. Start the session first.`);try{await (0,g.V1)(d,`/model ${b}`,!0),await this.waitForPrompt(d,E.pL),(0,i.gm)(d),I.info("copilot-model-switched",{model:b})}catch(c){let a=(0,H.u1)(c);throw Error(`Failed to switch Copilot model to ${b}: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,g.N)(c)&&(await (0,g.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,n.Is)),await (0,g.V1)(c,"/exit",!1),await new Promise(a=>setTimeout(a,E.L1)),await (0,g.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,n.Rk))),await (0,g.fY)(c)&&I.info("stopped-copilot-session")}catch(a){throw I.error("session:stop-failed",{error:(0,H.u1)(a)}),a}}constructor(...a){super(...a),this.id="copilot",this.name="Copilot",this.command="copilot"}}let M=(0,k.h)("cli-tools/antigravity");function N(a){return a instanceof Error?a.message:String(a)}let O=/\?\s+for\s+shortcuts/,P=/Do you trust the contents of this project\?/;function Q(a){return O.test(a)&&!P.test(a)}class R extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async launchSession(a,b,c,d){if(!await this.isInstalled())throw new o.lU(this.name,"Antigravity CLI (agy) is not installed or not in PATH");let e=this.getSessionName(a,c);if(await (0,g.N)(e)){await this.reconcileExistingSession(e),M.info("antigravity-session-exists");return}(0,m.Fq)({worktreeId:a,cliToolId:l.F0,instanceId:c});try{await (0,g.jw)({sessionName:e,workingDirectory:b}),await new Promise(a=>setTimeout(a,n.Uc));let f=(0,m.wK)({target:{worktreeId:a,cliToolId:l.F0,instanceId:c},executablePath:this.command,worktreePath:b}),h=d?`${f} --model '${d.replace(/'/g,"'\\''")}'`:f;await (0,g.V1)(e,h,!0),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(e),M.info("started-antigravity-session")}catch(b){let a=N(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,g.Xg)(a,50),d=(0,j.aJ)(c);if(Q(d))return void M.info("antigravity-prompt-detected");if(!b&&P.test(d)){await (0,g.ds)(a,"Enter"),b=!0,M.info("auto-trusted-folder-for-antigravity"),await new Promise(a=>setTimeout(a,500));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}M.info("antigravity-prompt-detection-timeout")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,g.Xg)(a,50),c=(0,j.aJ)(b);if(Q(c))return}catch{}await new Promise(a=>setTimeout(a,500))}throw M.info("antigravity-prompt-not-ready"),Error("Antigravity prompt not ready: timed out waiting for the input prompt before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Antigravity session ${d} does not exist. Start the session first.`);try{await this.waitForPrompt(d),await (0,h.FW)({sessionName:d,message:b,cliToolId:"antigravity",composer:this.describeComposer()}),(0,i.gm)(d),M.info("sent-message-to-antigravity-session")}catch(b){let a=N(b);throw Error(`Failed to send message to Antigravity: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,g.N)(c)&&(await (0,g.ds)(c,"C-d"),await new Promise(a=>setTimeout(a,n.Zf)));let a=await (0,g.fY)(c);(0,i.gm)(c),a&&M.info("stopped-antigravity-session")}catch(a){throw M.error("session:stop-failed",{error:N(a)}),a}}constructor(...a){super(...a),this.id="antigravity",this.name="Antigravity CLI",this.command="agy"}}class S{constructor(){this.tools=new Map,this.tools.set("claude",new f),this.tools.set("codex",new r),this.tools.set("gemini",new v),this.tools.set("vibe-local",new B),this.tools.set("opencode",new C.Ui),this.tools.set("copilot",new L),this.tools.set("antigravity",new R)}static getInstance(){return S.instance||(S.instance=new S),S.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(1719),c.e(1191),c.e(6337),c.e(2759),c.e(7824),c.e(7472),c.e(5017),c.e(1058),c.e(1601),c.e(221),c.e(5220)]).then(c.bind(c,95220));e(a,b,d)}}},70849:(a,b,c)=>{c.d(b,{LQ:()=>k,SW:()=>l});var d=c(72626),e=c(84574),f=c(48083),g=c(77634),h=c(27939);let i=(0,d.h)("lib/session/opencode-session-recall");async function j(a,b){let c=new Set,d=await (0,g.GP)(a,b);for(let b=0;b<3;b+=1){if(null===d)return null;if(null===d.parentId||c.has(d.parentId))break;c.add(d.parentId),i.debug("opencode-session-parent-hop",{from:d.id,to:d.parentId}),d=await (0,g.GP)(a,d.parentId)}return d}async function k(a){let b=a.instanceId??a.cliToolId,c=(0,e.hC)(a);if(null===c)return{captured:!1,skipped:"no-port"};let d=(0,f.ak)(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.ak)(a.worktreeId,"opencode",a.instanceId)?.sessionId;if(null!==b&&(0,h.jp)(c)){let a=await j(b,c);if(null!==a)return a.id}return(0,h.KA)(a)?.sessionId??null}},72272:(a,b,c)=>{c.d(b,{t:()=>i});var d=c(72626),e=c(50474),f=c(25071),g=c(17287);let h=(0,d.h)("lib/hooks/permission-adjudication");async function i(a,b,d,j,k="event"){let l=b.instanceId??b.cliToolId,m={worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l},{resolvePermissionRequest:n}=await c.e(3241).then(c.bind(c,43241)),o=n(m,j),p="allow"===o.behavior?{kind:"allowOnce"}:{kind:"abstain"};if("abstain"===p.kind){let c=(0,e.y_)(a);c.safe||h.warn("permission-request-abstain-blocks-agent",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l,toolName:j?.toolName??null,decisionId:d.id,reason:o.reason,consequence:c.summary,blocksForMs:c.blocksForMs})}let{delivery:q}=await (0,f.GW)(a,b,d,p),r=q?.delivered===!0,s=r&&a.capabilities.permissionReplyReleasesPrompt;return(0,g.nL)(b.worktreeId,b.cliToolId,b.instanceId,{decisionId:d.id,toolName:j?.toolName??null,behavior:"allow"===o.behavior?"allow":null,reason:o.reason,delivered:r,releasedPrompt:s,trigger:k,at:d.askedAt}),h.info("permission-decision-adjudicated",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l,decisionId:d.id,toolName:j?.toolName??null,behavior:o.behavior,reason:o.reason,suppressedBy:o.suppressedBy,delivered:r,settled:s,trigger:k}),{decisionId:d.id,behavior:"allow"===o.behavior?"allow":null,reason:o.reason,delivered:r,settled:s}}},73434:(a,b,c)=>{c.d(b,{hh:()=>f});let d=["CLAUDECODE","CM_AUTH_TOKEN","CM_AUTH_TOKEN_HASH","CM_AUTH_EXPIRE","CM_HTTPS_KEY","CM_HTTPS_CERT","CM_ALLOWED_IPS","CM_TRUST_PROXY","CM_DB_PATH","GH_DEBUG"],e=["CM_AGENT_INSTANCE_ID","CM_AGENT_TOOL","CM_AGENT_WORKTREE_ID","CM_HOOK_PORT","CM_HOOK_URL","CM_PERMISSION_HOOK_URL"];function f(){let a={...process.env};for(let b of Object.keys(a))(d.includes(b)||e.includes(b)||b.startsWith("CM_HOOK_"))&&delete a[b];return a}},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})})}},81776:(a,b,c)=>{c.d(b,{B0:()=>n,En:()=>l});var d=c(79646),e=c(29021),f=c(21820),g=c(33873),h=c(73434);let i="copilot",j=/(\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)/;function k(a){try{if(!(0,e.statSync)(a).isFile())return!1;return(0,e.accessSync)(a,e.constants.X_OK),!0}catch{return!1}}function l(a){let b=process.env.PATH;if(!b)return null;for(let c of b.split(g.delimiter)){if(!c)continue;let b=(0,g.join)(c,a);if(k(b))return b}return null}function m(a){return new Promise(b=>{(0,d.execFile)(a,["--version"],{timeout:5e3,maxBuffer:65536,env:(0,h.hh)()},(a,c,d)=>{if(a)return void b(null);let e=j.exec(`${c??""}
5
- ${d??""}`);b(e?e[1]:null)})})}async function n(){let a=l(i);if(a){let b=await m(a);if(b)return{path:a,version:b,source:"path"}}if(!l("gh"))return null;for(let a of function(){let a=process.env.XDG_DATA_HOME||(0,g.join)((0,f.homedir)(),".local","share"),b=(0,g.join)(a,"gh",i);return[b,(0,g.join)(b,i)]}()){if(!k(a))continue;let b=await m(a);if(b)return{path:a,version:b,source:"gh-managed"}}return null}},81886:(a,b,c)=>{c.d(b,{M:()=>n});var d=c(79646),e=c(28354),f=c(40964),g=c(79892),h=c(56717),i=c(23365),j=c(93949),k=c(96287),l=c(8953);let m=(0,e.promisify)(d.exec);class n{async isInstalled(){try{return await m(`which ${this.command}`,{timeout:5e3}),!0}catch{return!1}}getSessionName(a,b){return(0,f.m)(this.id,a,b)}async startSession(a,b,c,d){try{await this.launchSession(a,b,c,d)}catch(b){throw(0,k.Zl)({worktreeId:a,cliToolId:this.id,instanceId:c,toolName:this.name},b),b}}async reconcileExistingSession(a,b){await (0,g.zT)(a,b)}async interrupt(a,b){let c=this.getSessionName(a,b);await (0,g.ds)(c,"Escape")}describeComposer(){return(0,h.gc)(this.id)}gracefulExitSequence(){return(0,j.JV)(this.id)}captureSpec(){return(0,i.y)(this.id)}navigationKeys(){return{keys:l.qD,leaderKey:null}}}},93949:(a,b,c)=>{c.d(b,{JV:()=>i,rY:()=>k});var d=c(56263),e=c(20610),f=c(86069);let g={keys:[(0,f.IS)("C-d")],exitWaitMs:e.Zf,ownsLoopbackServer:!1},h={claude:g,codex:g,antigravity:g,gemini:{keys:[(0,f.IS)("C-c",e.Is),(0,f.iF)(`/quit\r`,void 0)],exitWaitMs:e.Zf,ownsLoopbackServer:!1},"vibe-local":{keys:[(0,f.IS)("C-c",e.Is),(0,f.IS)("C-c")],exitWaitMs:e.Zf,ownsLoopbackServer:!1},copilot:{keys:[(0,f.IS)("C-c",e.Is),(0,f.iF)("/exit",d.L1),(0,f.IS)("Enter")],exitWaitMs:e.Rk,ownsLoopbackServer:!1},opencode:{keys:[(0,f.iF)("/exit",e.pL),(0,f.IS)("Enter")],exitWaitMs:e.KI,ownsLoopbackServer:!0}};function i(a){return h[a]??g}let j=a=>new Promise(b=>setTimeout(b,a));async function k(a){let b=Math.max(1,a.attempts??1),c=a.intervalMs??0,d=a.sleep??j,e=!0;for(let f=0;f<b&&(e=await a.sessionAlive());f+=1)f<b-1&&c>0&&await d(c);if(e)return{ok:!1,reason:"graceful_exit_timeout"};let f=a.portAnswering;if(!f)return{ok:!0};let g=!0;for(let a=0;a<b&&(g=await f());a+=1)a<b-1&&c>0&&await d(c);return g?{ok:!1,reason:"port_orphaned"}:{ok:!0}}},96287:(a,b,c)=>{c.d(b,{$k:()=>f,VI:()=>g,Zl:()=>e});var d=c(2669);function e(a,b){Promise.all([c.e(1356),c.e(1191),c.e(6337)]).then(c.bind(c,81099)).then(({notifySessionStartFailurePush:c})=>c({...a,error:b})).catch(()=>{})}async function f(a,b){if(await a.isInstalled())return;let c=new d.lU(a.name);throw e({worktreeId:b.worktreeId,cliToolId:a.id,instanceId:b.instanceId,toolName:a.name,subject:b.subject},c),c}function g(a,b){Promise.resolve().then(c.bind(c,59701)).then(({CLIToolManager:c})=>{let f=c.getInstance().getTool(a).name;e({worktreeId:b.worktreeId,cliToolId:a,instanceId:b.instanceId,toolName:f,subject:b.subject},new d.lU(f))}).catch(()=>{})}}};
3
+ [添付画像: ${b}]`:`[添付画像: ${b}]`}class as extends d.M{navigationKeys(){return{keys:e.sM,leaderKey:e.Mx}}async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,f.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw new al.lU(this.name,"OpenCode is not installed or not in PATH");let d=this.getSessionName(a,c),e=Z(a,c),g=await (0,f.N)(d);if(g){if(await this.reconcileExistingSession(d,{windowWidth:ap(),windowHeight:A.xT}),await this.isToolLive(d,{confirm:!0})){await ad(e,b),am.info("opencode-session-sessionname");return}am.warn("opencode-session-relaunch",{sessionName:d}),await af(e)}(0,E.Fq)(e);try{await z(b),g||(await (0,f.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,ak.Uc)));try{await an("tmux",["resize-window","-t",(0,f.lA)(d),"-x",String(ap()),"-y",String(A.xT)])}catch{}await $(e,b);let h=(0,E.wK)({target:e,executablePath:this.command,worktreePath:b}),i=(0,ai.pr)(e,b),j=null===i?h:(0,ai.XO)(h,i);null!==i&&am.info("opencode-session-resumed",{worktreeId:a,instanceId:c??this.id,sessionId:i}),await (0,f.V1)(d,j,!0),await this.waitForReady(d),await ab(e),am.info("started-opencode-session:sessionname")}catch(b){let a=ao(b);throw Error(`Failed to start OpenCode session: ${a}`)}}async waitForReady(a){for(let b=0;b<60;b++){try{let c=(0,g.aJ)(await (0,f.Xg)(a,50));if(g.vU.test(c))return am.info("opencode-composer-detected",{attempt:b}),!0;if(g.LO.test(c))return am.info("opencode-overlay-detected",{attempt:b}),!0}catch{}await new Promise(a=>setTimeout(a,500))}return am.info("opencode-ready-detection-timeout"),!1}async trySendViaServer(a,b,c){let d=a.instanceId??a.cliToolId;try{let e=(0,V.hC)(a);if(null===e)return!1;let f=(0,X.lf)(a);if("live"!==f.state)return am.info("opencode-send-skipped-not-live",{worktreeId:a.worktreeId,instanceId:d,port:e,liveness:f.state}),!1;let g=(0,X.ym)(a);if(null===g)return am.info("opencode-send-skipped-no-session",{worktreeId:a.worktreeId,instanceId:d,port:e}),!1;let h=[{type:"text",text:b}];void 0!==c&&h.push({type:"file",mime:(0,D.$Y)((0,l.extname)(c)),filename:(0,l.basename)(c),url:(0,F.fy)(c)});let i=(0,F.CH)(),j=(0,ag.QH)((0,ag.Q1)(a));if(!await (0,F.wZ)(e,g,i,h,j))return!1;if(!await this.verifyPostedMessage(e,g,i,b))return am.warn("opencode-send-unverified",{worktreeId:a.worktreeId,instanceId:d,port:e,sessionId:g,messageId:i,hasImage:void 0!==c}),!1;return am.info("opencode-send-delivered-via-api",{worktreeId:a.worktreeId,instanceId:d,port:e,sessionId:g,messageId:i,hasImage:void 0!==c}),!0}catch(b){return am.warn("opencode-send-api-failed",{worktreeId:a.worktreeId,instanceId:d,error:ao(b)}),!1}}async verifyPostedMessage(a,b,c,d){for(let e of aq){e>0&&await new Promise(a=>setTimeout(a,e));let f=await (0,F.ep)(a,b,c);if("found"===f.kind)return f.texts.includes(d);if("missing"===f.kind)break}return!1}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,f.N)(d))throw Error(`OpenCode session ${d} does not exist. Start the session first.`);if(await this.relaunchIfToolExited(a,c),await this.trySendViaServer(Z(a,c),b))return void(0,i.gm)(d);try{await (0,h.FW)({sessionName:d,message:b,cliToolId:"opencode",composer:this.describeComposer()}),(0,i.gm)(d),am.info("sent-message-to-opencode-session:session")}catch(b){let a=ao(b);throw Error(`Failed to send message to OpenCode: ${a}`)}}supportsImage(){return!0}async sendMessageWithImage(a,b,c,d){let e=this.getSessionName(a,d);if(!await (0,f.N)(e))throw Error(`OpenCode session ${e} does not exist. Start the session first.`);let g=Z(a,d);if(await this.trySendViaServer(g,b,c))return void(0,i.gm)(e);am.info("opencode-image-degraded-to-path",{worktreeId:a,instanceId:d??this.id}),await this.sendMessage(a,ar(b,c),d)}async killSession(a,b){let c=this.getSessionName(a,b),d=Z(a,b),e=(0,V.hC)(d),g=await (0,ah.LQ)(d).catch(()=>null);g&&!g.captured&&am.info("opencode-session-capture-skipped",{sessionName:c,reason:g.skipped}),await af(d);try{if(await (0,f.N)(c)){await (0,f.V1)(c,"/exit",!1),await new Promise(a=>setTimeout(a,ak.pL)),await (0,f.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,ak.KI));let a=await (0,aj.rY)({sessionAlive:()=>(0,f.N)(c),portAnswering:null===e?null:async()=>await (0,F.Ok)(e)!==null});a.ok||(am.warn("opencode-graceful-exit-postcondition-failed",{sessionName:c,reason:a.reason,...null!==e?{port:e}:{}}),await (0,f.fY)(c))}else await (0,f.fY)(c);(0,i.gm)(c),am.info("stopped-opencode-session:sessionname")}catch(a){throw am.error("session:stop-failed",{error:ao(a)}),a}}async interrupt(a,b){let c=this.getSessionName(a,b);if(await ae(Z(a,b))){(0,i.gm)(c),am.info("opencode-interrupt-aborted-via-api");return}await (0,f.ds)(c,"Escape"),await new Promise(a=>setTimeout(a,ak.os)),await (0,f.ds)(c,"Escape"),(0,i.gm)(c),am.info("opencode-interrupt-sent")}constructor(...a){super(...a),this.id="opencode",this.name="OpenCode",this.command="opencode"}}},56263:(a,b,c)=>{c.d(b,{L1:()=>e,MJ:()=>j,Rf:()=>f,ky:()=>g,lM:()=>i,pL:()=>h,wp:()=>d,zt:()=>k});let d=200,e=100,f=1e5,g="[... truncated ...]",h=3e4,i=/^[a-zA-Z0-9][a-zA-Z0-9\-._/:]*$/,j=128,k="Install with: brew install copilot-cli (macOS) or npm i -g @github/copilot"},70849:(a,b,c)=>{c.d(b,{LQ:()=>k,SW:()=>l});var d=c(72626),e=c(84574),f=c(48083),g=c(77634),h=c(27939);let i=(0,d.h)("lib/session/opencode-session-recall");async function j(a,b){let c=new Set,d=await (0,g.GP)(a,b);for(let b=0;b<3;b+=1){if(null===d)return null;if(null===d.parentId||c.has(d.parentId))break;c.add(d.parentId),i.debug("opencode-session-parent-hop",{from:d.id,to:d.parentId}),d=await (0,g.GP)(a,d.parentId)}return d}async function k(a){let b=a.instanceId??a.cliToolId,c=(0,e.hC)(a);if(null===c)return{captured:!1,skipped:"no-port"};let d=(0,f.ak)(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.ak)(a.worktreeId,"opencode",a.instanceId)?.sessionId;if(null!==b&&(0,h.jp)(c)){let a=await j(b,c);if(null!==a)return a.id}return(0,h.KA)(a)?.sessionId??null}},72272:(a,b,c)=>{c.d(b,{t:()=>i});var d=c(72626),e=c(50474),f=c(25071),g=c(17287);let h=(0,d.h)("lib/hooks/permission-adjudication");async function i(a,b,d,j,k="event"){let l=b.instanceId??b.cliToolId,m={worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l},{resolvePermissionRequest:n}=await c.e(3241).then(c.bind(c,43241)),o=n(m,j),p="allow"===o.behavior?{kind:"allowOnce"}:{kind:"abstain"};if("abstain"===p.kind){let c=(0,e.y_)(a);c.safe||h.warn("permission-request-abstain-blocks-agent",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l,toolName:j?.toolName??null,decisionId:d.id,reason:o.reason,consequence:c.summary,blocksForMs:c.blocksForMs})}let{delivery:q}=await (0,f.GW)(a,b,d,p),r=q?.delivered===!0,s=r&&a.capabilities.permissionReplyReleasesPrompt;return(0,g.nL)(b.worktreeId,b.cliToolId,b.instanceId,{decisionId:d.id,toolName:j?.toolName??null,behavior:"allow"===o.behavior?"allow":null,reason:o.reason,delivered:r,releasedPrompt:s,trigger:k,at:d.askedAt}),h.info("permission-decision-adjudicated",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:l,decisionId:d.id,toolName:j?.toolName??null,behavior:o.behavior,reason:o.reason,suppressedBy:o.suppressedBy,delivered:r,settled:s,trigger:k}),{decisionId:d.id,behavior:"allow"===o.behavior?"allow":null,reason:o.reason,delivered:r,settled:s}}},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})})}},81886:(a,b,c)=>{c.d(b,{M:()=>s});var d=c(79646),e=c(28354),f=c(40964),g=c(79892),h=c(56717),i=c(23365),j=c(93949),k=c(91536),l=c(50945),m=c(96287),n=c(72626),o=c(8953),p=c(20610);let q=(0,e.promisify)(d.exec),r=(0,n.h)("cli-tools/base");class s{async isInstalled(){try{return await q(`which ${this.command}`,{timeout:5e3}),!0}catch{return!1}}getSessionName(a,b){return(0,f.m)(this.id,a,b)}async startSession(a,b,c,d){try{await this.launchSession(a,b,c,d)}catch(b){throw(0,m.Zl)({worktreeId:a,cliToolId:this.id,instanceId:c,toolName:this.name},b),b}}async reconcileExistingSession(a,b){await (0,g.zT)(a,b)}async interrupt(a,b){let c=this.getSessionName(a,b);await (0,g.ds)(c,"Escape")}describeComposer(){return(0,h.gc)(this.id)}gracefulExitSequence(){return(0,j.JV)(this.id)}captureSpec(){return(0,i.y)(this.id)}livenessSpec(){return(0,k.H7)(this.id)}async isToolLive(a,b){let c=this.livenessSpec(),d=await (0,l.Q)(a,c);if(d.alive)return!0;if(!b?.confirm)return!1;await new Promise(a=>setTimeout(a,p.kZ));let e=await (0,l.Q)(a,c);return e.alive?(r.info("session:liveness-confirm-recovered",{cliToolId:this.id,firstReason:d.reason}),!0):(r.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 r.warn("session:relaunch-skipped-no-path",{cliToolId:this.id,worktreeId:a});r.info("session:relaunch-before-send",{cliToolId:this.id,sessionName:c}),await this.startSession(a,d,b)}navigationKeys(){return{keys:o.qD,leaderKey:null}}}},83468:(a,b,c)=>{c.r(b),c.d(b,{CLIToolManager:()=>Y});var d=c(81886),e=c(57905);class f extends d.M{async isInstalled(){return await (0,e.zw)()}async isRunning(a,b){return await (0,e.Yq)(a,b)}async launchSession(a,b,c){await (0,e.R7)({worktreeId:a,worktreePath:b,instanceId:c})}async sendMessage(a,b,c){await (0,e.pU)(a,b,c)}supportsImage(){return!0}async sendMessageWithImage(a,b,c,d){let e=`
4
+ ![](${c})`,f=b?`${b}${e}`:e;await this.sendMessage(a,f,d)}async killSession(a,b){await (0,e.VU)(a,b)}constructor(...a){super(...a),this.id="claude",this.name="Claude Code",this.command="claude"}}var g=c(79892),h=c(40236),i=c(93997),j=c(85164),k=c(11472);let l=["skip","skip-until-next-version","update","ask"],m=Object.freeze({update:"1",skip:"2","skip-until-next-version":"3",ask:null});function n(a){if("string"!=typeof a)return null;let b=a.trim().toLowerCase();return"string"==typeof b&&l.includes(b)?b:null}c(68847);var o=c(61260);c(48800);var p=c(72626),q=c(22354),r=c(4970),s=c(20610),t=c(2669);let u=(0,p.h)("cli-tools/codex");function v(a){return a instanceof Error?a.message:String(a)}let w="codex";class x extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw new t.lU(this.name,"Codex CLI is not installed or not in PATH");let d=this.getSessionName(a,c),e=await (0,g.N)(d);if(e){if(await this.reconcileExistingSession(d),await this.isToolLive(d,{confirm:!0}))return void u.info("codex-session-sessionname");u.warn("codex-session-relaunch",{sessionName:d})}(0,r.Fq)({worktreeId:a,cliToolId:q.c1,instanceId:c});try{e||(await (0,g.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,s.Uc)));let f=(0,r.wK)({target:{worktreeId:a,cliToolId:q.c1,instanceId:c},executablePath:this.command,worktreePath:b}),h=async()=>{(0,r.Fq)({worktreeId:a,cliToolId:q.c1,instanceId:c}),await (0,g.V1)(d,f,!0),await new Promise(a=>setTimeout(a,3e3))};await (0,g.V1)(d,f,!0),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(d,{relaunch:h}),u.info("started-codex-session:sessionname")}catch(b){let a=v(b);throw Error(`Failed to start Codex session: ${a}`)}}async waitForReady(a,b){let c=!1,d=!1,e=!1,f=0,h=function(a){let b=n(void 0);if(null!==b)return b;let c=n(((void 0)??process.env).CM_CODEX_UPDATE_DIALOG);return null!==c?c:"skip-until-next-version"}(),i=m[h],l=!1,p=!1,q=!1,r=30;try{for(let n=0;n<r;n++){try{let t=await (0,g.Xg)(a,50),v=(0,j.aJ)(t);if((0,j.zZ)(v))return void u.info("codex-prompt-detected");if(l&&!p&&b?.relaunch&&null!==(0,k.GE)(v,this.livenessSpec())){p=!0,r=Math.max(r,n+1+30),d=!1,e=!1,f=0,q&&(q=!1,(0,o.lM)(w),u.info("codex-update-lock-released",{sessionName:a})),u.info("codex-relaunched-after-update",{sessionName:a,policy:h}),await b.relaunch();continue}if(!e&&function(a){return j.XV.every(b=>a.includes(b))}(v)){await (0,g.V1)(a,"3",!1),e=!0,u.info("codex-hooks-review-declined"),await new Promise(a=>setTimeout(a,s.CV));continue}let x=(0,j.E6)(v);if(("hooks-list"===x||"hooks-detail"===x)&&f<4){await (0,g.ds)(a,"Escape"),f++,u.info("codex-hooks-screen-escaped"),await new Promise(a=>setTimeout(a,s.CV));continue}let y=(0,j.Qh)(v);if("update"===y){if(l=!0,null===i){await new Promise(a=>setTimeout(a,1e3));continue}if(!c){let b=i;b!==m.update||(0,o.mf)(w)?b===m.update&&(q=!0):(b=m["skip-until-next-version"],u.warn("codex-update-dialog-yielded-to-running-update",{sessionName:a,policy:h,requestedKey:i,key:b})),await (0,g.V1)(a,b,!1),c=!0,b===m.update&&(r=Math.max(r,n+1+120)),u.info("codex-update-dialog-answered",{sessionName:a,policy:h,key:b}),await new Promise(a=>setTimeout(a,s.CV));continue}}if("press-enter"===y){await (0,g.ds)(a,"Enter"),u.info("dismissed-codex-notification"),await new Promise(a=>setTimeout(a,s.CV));continue}if("trust"===y&&!d){await (0,g.V1)(a,"1",!1),d=!0,u.info("auto-trusted-folder-for"),await new Promise(a=>setTimeout(a,s.CV));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}u.info("codex-prompt-detection")}finally{q&&(q=!1,(0,o.lM)(w),u.warn("codex-update-lock-released-unfinished",{sessionName:a}))}}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,g.Xg)(a,50),c=(0,j.aJ)(b);if((0,j.zZ)(c))return}catch{}await new Promise(a=>setTimeout(a,500))}throw u.info("codex-prompt-not"),Error("Codex prompt not ready: timed out waiting for the input prompt before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Codex session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await this.waitForPrompt(d),await (0,h.FW)({sessionName:d,message:b,cliToolId:"codex",composer:this.describeComposer()}),(0,i.gm)(d),u.info("sent-message-to-codex-session:sessionnam")}catch(b){let a=v(b);throw Error(`Failed to send message to Codex: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,g.N)(c)&&(await (0,g.ds)(c,"C-d"),await new Promise(a=>setTimeout(a,s.Zf))),await (0,g.fY)(c)&&u.info("stopped-codex-session:sessionname")}catch(a){throw u.error("session:stop-failed",{error:v(a)}),a}}constructor(...a){super(...a),this.id="codex",this.name="Codex CLI",this.command="codex"}}var y=c(23365);let z=(0,p.h)("cli-tools/gemini");function A(a){return a instanceof Error?a.message:String(a)}class B extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw new t.lU(this.name,"Gemini CLI is not installed or not in PATH");let d=this.getSessionName(a,c),e=await (0,g.N)(d);if(e){if(await this.reconcileExistingSession(d),await this.isToolLive(d,{confirm:!0}))return void z.info("gemini-session-sessionname");z.warn("gemini-session-relaunch",{sessionName:d})}(0,r.Fq)({worktreeId:a,cliToolId:q.o,instanceId:c});try{e||(await (0,g.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,s.Uc)));let f=(0,r.wK)({target:{worktreeId:a,cliToolId:q.o,instanceId:c},executablePath:this.command,worktreePath:b});await (0,g.V1)(d,f,!0),await new Promise(a=>setTimeout(a,6e3)),await this.waitForReady(d),z.info("started-gemini-session:sessionname")}catch(b){let a=A(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,g.Xg)(a,y.H),d=(0,j.aJ)(c);if(j.wN.test(d))return void z.info("gemini-prompt-detected");!b&&d.includes("Do you trust this folder?")&&(await (0,g.ds)(a,"Enter"),b=!0,z.info("auto-trusted-folder-for"))}catch{}await new Promise(a=>setTimeout(a,1e3))}z.info("gemini-prompt-detection")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,g.Xg)(a,y.H),c=(0,j.aJ)(b);if(j.wN.test(c))return}catch{}await new Promise(a=>setTimeout(a,500))}z.info("gemini-prompt-not")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Gemini session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await this.waitForPrompt(d),await (0,h.FW)({sessionName:d,message:b,cliToolId:"gemini",composer:this.describeComposer()}),(0,i.gm)(d),z.info("sent-message-to-gemini-session:sessionna")}catch(b){let a=A(b);throw Error(`Failed to send message to Gemini: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,g.N)(c)&&(await (0,g.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,s.Is)),await (0,g.V1)(c,"/quit",!0),await new Promise(a=>setTimeout(a,s.Zf))),await (0,g.fY)(c)&&z.info("stopped-gemini-session:sessionname")}catch(a){throw z.error("session:stop-failed",{error:A(a)}),a}}constructor(...a){super(...a),this.id="gemini",this.name="Gemini CLI",this.command="gemini"}}var C=c(15194),D=c(88807),E=c(56791);let F=(0,p.h)("cli-tools/vibe-local");function G(a){return a instanceof Error?a.message:String(a)}class H extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async launchSession(a,b,c){if(!await this.isInstalled())throw new t.lU(this.name,"vibe-local is not installed or not in PATH");let d=this.getSessionName(a,c),e=await (0,g.N)(d);if(e){if(await this.reconcileExistingSession(d),await this.isToolLive(d,{confirm:!0}))return void F.info("vibe-local-session");F.warn("vibe-local-session-relaunch",{sessionName:d})}try{e||(await (0,g.jw)({sessionName:d,workingDirectory:b}),await new Promise(a=>setTimeout(a,s.Uc)));let c="vibe-local -y";try{let b=(0,D.getDbInstance)(),d=(0,E.getWorktreeById)(b,a);d?.vibeLocalModel&&C.QP.test(d.vibeLocalModel)&&(c+=` -m ${d.vibeLocalModel}`);let e=d?.vibeLocalContextWindow;(0,C.FV)(e)&&(c+=` --context-window ${Number(e)}`)}catch{}await (0,g.V1)(d,c,!0),await new Promise(a=>setTimeout(a,5e3)),F.info("started-vibe-local-session:sessionname")}catch(b){let a=G(b);throw Error(`Failed to start Vibe Local session: ${a}`)}}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Vibe Local session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await (0,h.FW)({sessionName:d,message:b,cliToolId:"vibe-local",composer:this.describeComposer(),interEnterWaitMs:s.PY}),(0,i.gm)(d),F.info("sent-message-to-vibe-local-session:sessi")}catch(b){let a=G(b);throw Error(`Failed to send message to Vibe Local: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,g.N)(c)&&(await (0,g.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,s.Is)),await (0,g.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,s.Zf))),await (0,g.fY)(c)&&F.info("stopped-vibe-local-session:sessionname")}catch(a){throw F.error("session:stop-failed",{error:G(a)}),a}}constructor(...a){super(...a),this.id="vibe-local",this.name="Vibe Local",this.command="vibe-local"}}var I=c(41466),J=c(81776),K=c(56263),L=c(21758),M=c(54633),N=c(77093);let O=(0,p.h)("cli-tools/copilot"),P=new Set(["model","agent","theme","permissions","skills","mcp","settings","statusline","subagents","resume","session"]),Q=/^[>❯](?:\s|$)/;class R extends d.M{async isInstalled(){return await (0,J.B0)()!==null}launchExecutable(a){return"path"===a.source?this.command:L.nL}async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async launchSession(a,b,c){let d=await (0,J.B0)();if(!d)throw new t.lU(this.name,`GitHub Copilot CLI is not installed. ${K.zt}`);let e=this.getSessionName(a,c),f=await (0,g.N)(e);if(f){if(await this.reconcileExistingSession(e),await this.isToolLive(e,{confirm:!0}))return void O.info("copilot-session-exists");O.warn("copilot-session-relaunch",{sessionName:e})}(0,r.Fq)({worktreeId:a,cliToolId:M.V,instanceId:c});try{f||(await (0,g.jw)({sessionName:e,workingDirectory:b}),await new Promise(a=>setTimeout(a,s.Uc)));let h=(0,r.wK)({target:{worktreeId:a,cliToolId:M.V,instanceId:c},executablePath:this.launchExecutable(d),worktreePath:b});await (0,g.V1)(e,h,!0),await this.waitForReady(e),O.info("started-copilot-session",{executableSource:d.source,version:d.version})}catch(b){let a=(0,N.u1)(b);throw Error(`Failed to start Copilot session: ${a}`)}}async answerFolderTrustDialog(a,b){return!!(0,j.Rx)(b)&&(await (0,g.V1)(a,j.oD,!1),(0,i.gm)(a),O.info("copilot-folder-trust-answered"),!0)}isComposerDrawn(a){let b=a.split("\n");for(let a=1;a<b.length-1;a++)if(Q.test(b[a])&&j.A.test(b[a-1].trimEnd())&&j.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,g.Xg)(a,50),d=(0,j.aJ)(c);if(this.isComposerDrawn(d))return void O.info("copilot-prompt-detected");!b&&await this.answerFolderTrustDialog(a,d)&&(b=!0)}catch{}await new Promise(a=>setTimeout(a,1e3))}O.info("copilot-prompt-detection-timeout")}async waitForPrompt(a,b=15e3){let c=Date.now(),d=!1;for(;Date.now()-c<b;){try{let b=await (0,g.Xg)(a,50),c=(0,j.aJ)(b);if(j.Du.test(c))return;!d&&await this.answerFolderTrustDialog(a,c)&&(d=!0)}catch{}await new Promise(a=>setTimeout(a,500))}O.info("copilot-prompt-not-detected")}extractSlashCommand(a){let b=a.trim();if(!b.startsWith("/"))return null;let c=b.match(/^\/(\S+)/);return c?c[1]:null}async waitForSelectionList(a){let b=Date.now();for(;Date.now()-b<5e3;){await new Promise(a=>setTimeout(a,300));try{let b=await (0,g.Xg)(a,50),c=(0,j.aJ)(b);if((0,j.gT)(c.split("\n")))return O.info("copilot-selection-list-detected"),!0}catch{}}return O.info("copilot-selection-list-not-detected-timeout"),!1}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Copilot session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await this.waitForPrompt(d);let a=this.extractSlashCommand(b);if(a&&P.has(a)){await (0,g.V1)(d,b,!0),await this.waitForSelectionList(d),(0,i.gm)(d),O.info("sent-selection-list-command-to-copilot",{command:a});return}await (0,h.FW)({sessionName:d,message:b,cliToolId:"copilot",composer:this.describeComposer(),textInputWaitMs:K.L1,verifyDelayMs:K.wp}),(0,i.gm)(d),O.info("sent-message-to-copilot-session")}catch(b){let a=(0,N.u1)(b);throw Error(`Failed to send message to Copilot: ${a}`)}}async sendModelCommand(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Copilot session ${d} does not exist. Start the session first.`);try{await (0,g.V1)(d,`/model ${b}`,!0),await this.waitForPrompt(d,K.pL),(0,i.gm)(d),O.info("copilot-model-switched",{model:b})}catch(c){let a=(0,N.u1)(c);throw Error(`Failed to switch Copilot model to ${b}: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,g.N)(c)&&(await (0,g.ds)(c,"C-c"),await new Promise(a=>setTimeout(a,s.Is)),await (0,g.V1)(c,"/exit",!1),await new Promise(a=>setTimeout(a,K.L1)),await (0,g.KB)(c,["Enter"]),await new Promise(a=>setTimeout(a,s.Rk))),await (0,g.fY)(c)&&O.info("stopped-copilot-session")}catch(a){throw O.error("session:stop-failed",{error:(0,N.u1)(a)}),a}}constructor(...a){super(...a),this.id="copilot",this.name="Copilot",this.command="copilot"}}let S=(0,p.h)("cli-tools/antigravity");function T(a){return a instanceof Error?a.message:String(a)}let U=/\?\s+for\s+shortcuts/,V=/Do you trust the contents of this project\?/;function W(a){return U.test(a)&&!V.test(a)}class X extends d.M{async isRunning(a,b){let c=this.getSessionName(a,b);return await (0,g.N)(c)}async launchSession(a,b,c,d){if(!await this.isInstalled())throw new t.lU(this.name,"Antigravity CLI (agy) is not installed or not in PATH");let e=this.getSessionName(a,c),f=await (0,g.N)(e);if(f){if(await this.reconcileExistingSession(e),await this.isToolLive(e,{confirm:!0}))return void S.info("antigravity-session-exists");S.warn("antigravity-session-relaunch",{sessionName:e})}(0,r.Fq)({worktreeId:a,cliToolId:q.F0,instanceId:c});try{f||(await (0,g.jw)({sessionName:e,workingDirectory:b}),await new Promise(a=>setTimeout(a,s.Uc)));let h=(0,r.wK)({target:{worktreeId:a,cliToolId:q.F0,instanceId:c},executablePath:this.command,worktreePath:b}),i=d?`${h} --model '${d.replace(/'/g,"'\\''")}'`:h;await (0,g.V1)(e,i,!0),await new Promise(a=>setTimeout(a,3e3)),await this.waitForReady(e),S.info("started-antigravity-session")}catch(b){let a=T(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,g.Xg)(a,50),d=(0,j.aJ)(c);if(W(d))return void S.info("antigravity-prompt-detected");if(!b&&V.test(d)){await (0,g.ds)(a,"Enter"),b=!0,S.info("auto-trusted-folder-for-antigravity"),await new Promise(a=>setTimeout(a,500));continue}}catch{}await new Promise(a=>setTimeout(a,1e3))}S.info("antigravity-prompt-detection-timeout")}async waitForPrompt(a){let b=Date.now();for(;Date.now()-b<15e3;){try{let b=await (0,g.Xg)(a,50),c=(0,j.aJ)(b);if(W(c))return}catch{}await new Promise(a=>setTimeout(a,500))}throw S.info("antigravity-prompt-not-ready"),Error("Antigravity prompt not ready: timed out waiting for the input prompt before sending")}async sendMessage(a,b,c){let d=this.getSessionName(a,c);if(!await (0,g.N)(d))throw Error(`Antigravity session ${d} does not exist. Start the session first.`);await this.relaunchIfToolExited(a,c);try{await this.waitForPrompt(d),await (0,h.FW)({sessionName:d,message:b,cliToolId:"antigravity",composer:this.describeComposer()}),(0,i.gm)(d),S.info("sent-message-to-antigravity-session")}catch(b){let a=T(b);throw Error(`Failed to send message to Antigravity: ${a}`)}}async killSession(a,b){let c=this.getSessionName(a,b);try{await (0,g.N)(c)&&(await (0,g.ds)(c,"C-d"),await new Promise(a=>setTimeout(a,s.Zf)));let a=await (0,g.fY)(c);(0,i.gm)(c),a&&S.info("stopped-antigravity-session")}catch(a){throw S.error("session:stop-failed",{error:T(a)}),a}}constructor(...a){super(...a),this.id="antigravity",this.name="Antigravity CLI",this.command="agy"}}class Y{constructor(){this.tools=new Map,this.tools.set("claude",new f),this.tools.set("codex",new x),this.tools.set("gemini",new B),this.tools.set("vibe-local",new H),this.tools.set("opencode",new I.Ui),this.tools.set("copilot",new R),this.tools.set("antigravity",new X)}static getInstance(){return Y.instance||(Y.instance=new Y),Y.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(1719),c.e(1191),c.e(6337),c.e(2759),c.e(7824),c.e(7472),c.e(5017),c.e(1058),c.e(221),c.e(5220)]).then(c.bind(c,95220));e(a,b,d)}}},93949:(a,b,c)=>{c.d(b,{JV:()=>i,rY:()=>k});var d=c(56263),e=c(20610),f=c(86069);let g={keys:[(0,f.IS)("C-d")],exitWaitMs:e.Zf,ownsLoopbackServer:!1},h={claude:g,codex:g,antigravity:g,gemini:{keys:[(0,f.IS)("C-c",e.Is),(0,f.iF)(`/quit\r`,void 0)],exitWaitMs:e.Zf,ownsLoopbackServer:!1},"vibe-local":{keys:[(0,f.IS)("C-c",e.Is),(0,f.IS)("C-c")],exitWaitMs:e.Zf,ownsLoopbackServer:!1},copilot:{keys:[(0,f.IS)("C-c",e.Is),(0,f.iF)("/exit",d.L1),(0,f.IS)("Enter")],exitWaitMs:e.Rk,ownsLoopbackServer:!1},opencode:{keys:[(0,f.iF)("/exit",e.pL),(0,f.IS)("Enter")],exitWaitMs:e.KI,ownsLoopbackServer:!0}};function i(a){return h[a]??g}let j=a=>new Promise(b=>setTimeout(b,a));async function k(a){let b=Math.max(1,a.attempts??1),c=a.intervalMs??0,d=a.sleep??j,e=!0;for(let f=0;f<b&&(e=await a.sessionAlive());f+=1)f<b-1&&c>0&&await d(c);if(e)return{ok:!1,reason:"graceful_exit_timeout"};let f=a.portAnswering;if(!f)return{ok:!0};let g=!0;for(let a=0;a<b&&(g=await f());a+=1)a<b-1&&c>0&&await d(c);return g?{ok:!1,reason:"port_orphaned"}:{ok:!0}}},96287:(a,b,c)=>{c.d(b,{$k:()=>f,VI:()=>g,Zl:()=>e});var d=c(2669);function e(a,b){Promise.all([c.e(1356),c.e(1191),c.e(6337)]).then(c.bind(c,81099)).then(({notifySessionStartFailurePush:c})=>c({...a,error:b})).catch(()=>{})}async function f(a,b){if(await a.isInstalled())return;let c=new d.lU(a.name);throw e({worktreeId:b.worktreeId,cliToolId:a.id,instanceId:b.instanceId,toolName:a.name,subject:b.subject},c),c}function g(a,b){Promise.resolve().then(c.bind(c,83468)).then(({CLIToolManager:c})=>{let f=c.getInstance().getTool(a).name;e({worktreeId:b.worktreeId,cliToolId:a,instanceId:b.instanceId,toolName:f,subject:b.subject},new d.lU(f))}).catch(()=>{})}}};