commandmate 0.31.1 → 0.31.3

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 (299) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +170 -170
  3. package/.next/app-path-routes-manifest.json +29 -29
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/update-check/route.js +1 -1
  12. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  14. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  16. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/assistant/messages/route.js +1 -1
  18. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  19. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/assistant/session/route.js +1 -1
  21. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  22. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/assistant/start/route.js +2 -2
  24. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  25. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/assistant/terminal/route.js +2 -2
  27. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  28. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  30. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/capabilities/route.js +1 -1
  35. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  44. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  45. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  47. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  48. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  50. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  51. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/push/escalation/route.js +2 -2
  55. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  56. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  58. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/push/vapid/route.js +2 -2
  60. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  61. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  67. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  68. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/repositories/clone/route.js +1 -1
  70. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  71. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/repositories/restore/route.js +1 -1
  74. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  75. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/repositories/route.js +1 -1
  77. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  78. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/repositories/scan/route.js +1 -1
  80. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  81. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/repositories/sync/route.js +1 -1
  83. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  84. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  87. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  105. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  107. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  110. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  116. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  146. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  148. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  151. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  163. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  167. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  177. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  190. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  198. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/worktrees/route.js +1 -1
  212. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  213. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  215. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  216. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  218. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  219. package/.next/server/app/page_client-reference-manifest.js +1 -1
  220. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  222. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  223. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  224. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  225. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  226. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  227. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  228. package/.next/server/app/worktrees/[id]/page.js +10 -10
  229. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  230. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  231. package/.next/server/app-paths-manifest.json +29 -29
  232. package/.next/server/chunks/1058.js +1 -1
  233. package/.next/server/chunks/1068.js +1 -1
  234. package/.next/server/chunks/1191.js +2 -2
  235. package/.next/server/chunks/1886.js +1 -1
  236. package/.next/server/chunks/2119.js +1 -1
  237. package/.next/server/chunks/2404.js +1 -1
  238. package/.next/server/chunks/2445.js +1 -1
  239. package/.next/server/chunks/261.js +1 -1
  240. package/.next/server/chunks/2739.js +1 -1
  241. package/.next/server/chunks/3241.js +1 -1
  242. package/.next/server/chunks/3484.js +1 -0
  243. package/.next/server/chunks/358.js +1 -0
  244. package/.next/server/chunks/4325.js +1 -1
  245. package/.next/server/chunks/4393.js +1 -1
  246. package/.next/server/chunks/4443.js +1 -1
  247. package/.next/server/chunks/5017.js +1 -1
  248. package/.next/server/chunks/5120.js +1 -1
  249. package/.next/server/chunks/5164.js +1 -1
  250. package/.next/server/chunks/552.js +3 -3
  251. package/.next/server/chunks/595.js +8 -0
  252. package/.next/server/chunks/6130.js +1 -1
  253. package/.next/server/chunks/8800.js +1 -1
  254. package/.next/server/chunks/8918.js +3 -3
  255. package/.next/server/chunks/9123.js +1 -1
  256. package/.next/server/chunks/9130.js +2 -2
  257. package/.next/server/chunks/9627.js +3 -3
  258. package/.next/server/chunks/9696.js +2 -2
  259. package/.next/server/chunks/9798.js +2 -2
  260. package/.next/server/middleware-manifest.json +5 -5
  261. package/.next/server/pages/500.html +1 -1
  262. package/.next/server/server-reference-manifest.json +1 -1
  263. package/.next/static/chunks/{1783-11c9b4d8a52ebd91.js → 2813-de885de8a4b11910.js} +1 -1
  264. package/.next/static/chunks/4718-07ec4e10186928db.js +1 -0
  265. package/.next/static/chunks/app/worktrees/[id]/page-91b639c90795baa9.js +1 -0
  266. package/.next/static/css/acc4b9c3feb04287.css +1 -0
  267. package/.next/trace +13 -13
  268. package/dist/lib/detection/tools/verified-against.d.ts +24 -24
  269. package/dist/lib/detection/tools/verified-against.js +24 -24
  270. package/dist/server/locales/en/worktree.json +1402 -0
  271. package/dist/server/locales/ja/worktree.json +1402 -0
  272. package/dist/server/src/lib/db/chat-db.js +44 -1
  273. package/dist/server/src/lib/detection/cli-patterns.js +157 -23
  274. package/dist/server/src/lib/detection/model-info-extractor.js +185 -4
  275. package/dist/server/src/lib/detection/tools/antigravity/detect.js +105 -25
  276. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +233 -0
  277. package/dist/server/src/lib/detection/tools/verified-against.js +24 -24
  278. package/dist/server/src/lib/hooks/hook-settings-generator.js +16 -0
  279. package/dist/server/src/lib/hooks/sources/claude/model-switch.js +169 -0
  280. package/dist/server/src/lib/hooks/sources/claude/source.js +14 -1
  281. package/dist/server/src/lib/polling/response-checker.js +17 -1
  282. package/dist/server/src/lib/polling/response-poller-core.js +143 -9
  283. package/dist/server/src/lib/push/index.js +13 -1
  284. package/dist/server/src/lib/push/model-change-push-notifier.js +174 -0
  285. package/dist/server/src/lib/push/notification-dedup.js +2 -1
  286. package/dist/server/src/lib/push/push-sender.js +48 -20
  287. package/dist/server/src/lib/realtime/model-change-broadcast.js +171 -0
  288. package/dist/server/src/lib/realtime/types.js +19 -1
  289. package/dist/server/src/lib/realtime/waiting-broadcast.js +13 -0
  290. package/dist/server/src/lib/session/agent-event-state.js +344 -12
  291. package/package.json +1 -1
  292. package/.next/server/chunks/6894.js +0 -8
  293. package/.next/server/chunks/7187.js +0 -1
  294. package/.next/server/chunks/7472.js +0 -1
  295. package/.next/static/chunks/4718-46e1d2f07c8423ba.js +0 -1
  296. package/.next/static/chunks/app/worktrees/[id]/page-64d4ec3051971760.js +0 -1
  297. package/.next/static/css/5c13ea243dfdcb66.css +0 -1
  298. /package/.next/static/{60mm4_QBuFtFTfo5UMyKU → 0hTIackGXw6v7diXJS6yN}/_buildManifest.js +0 -0
  299. /package/.next/static/{60mm4_QBuFtFTfo5UMyKU → 0hTIackGXw6v7diXJS6yN}/_ssgManifest.js +0 -0
@@ -1,5 +1,5 @@
1
- "use strict";exports.id=9130,exports.ids=[9130],exports.modules={129:(a,b,c)=>{c.d(b,{VM:()=>ad});var d=c(2466),e=c(13287),f=c(62887),g=c(43252),h=c(66101),i=c(57510),j=c(38367),k=c(70997);let l={};function m(a){return"allowOnce"!==a.kind?l:{hookSpecificOutput:{hookEventName:e.l9,decision:{behavior:"allow"}}}}let n=(0,h.UB)({cliToolId:k.v,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:f.b0,configScope:"per-instance",decisionTimeoutSeconds:g.sI,permissionHookPredictsDialog:!0,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none",transcriptHistory:"pull"},mappers:(0,i.mJ)(j.WK),nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:j.ue,modelFields:["model"],extractDetail:j.Jp,parsePermissionRequest:a=>(0,e.ss)(a),parseQuestion:a=>(0,d.ek)(a),encodeVerdict:m,prepareLaunch:({target:a,executablePath:b})=>{let c=(0,g.D2)(b,{worktreeId:a.worktreeId,instanceId:a.instanceId,cliToolId:a.cliToolId}),d=(0,g.q)()&&c!==b?(0,g.iR)({worktreeId:a.worktreeId,instanceId:a.instanceId,cliToolId:a.cliToolId}):null;return{command:c,settingsPath:d,env:{}}}});var o=c(92196),p=c(21758),q=c(54633);let r={},s=(0,h.UB)({cliToolId:q.V,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:["stop","session_start","session_end","user_prompt_submit","post_tool_use"],configScope:"global-singleton",decisionTimeoutSeconds:p.TV,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!0,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none",transcriptHistory:null},mappers:(0,i.mJ)(j.WK),nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:j.ue,extractDetail:j.Jp,parsePermissionRequest:function(a){if(!(0,i.Qd)(a)||a.hook_event_name!==p.cN)return null;let b=(0,i.O2)(a,"tool_name");if(!b||b.length>e.vy)return null;let c=(0,o.mw)(a.tool_input);return c?{toolName:b,toolInput:c.toolInput,toolInputNormalization:c.normalization,promptId:null,sessionId:(0,i.O2)(a,"session_id"),permissionMode:null,permissionSuggestions:null}:null},parseQuestion:()=>null,encodeVerdict:function(a){return"allowOnce"===a.kind?{hookSpecificOutput:{hookEventName:p.cN,permissionDecision:"allow"}}:"deny"===a.kind?{hookSpecificOutput:{hookEventName:p.cN,permissionDecision:"deny",permissionDecisionReason:a.message??"denied by CommandMate"}}:r},prepareLaunch:({target:a,executablePath:b})=>(0,p.Rv)(b,a)});var t=c(15194);let u={ToolPermission:"permission_prompt"};var v=c(33873),w=c(72626),x=c(45567),y=c(29021),z=c(7956);function A(a){if(!(0,y.existsSync)(a))return null;try{let b=JSON.parse((0,y.readFileSync)(a,"utf8"));return(0,i.Qd)(b)?b:null}catch{return null}}function B(a,b){if((0,z.Mb)(a))throw Error(`Refusing to write inside a virtual filesystem: ${a} (a recursive mkdir under /proc, /sys or /dev never returns on Linux; Issue #1774)`);(0,y.mkdirSync)((0,v.dirname)(a),{recursive:!0,mode:448}),(0,y.writeFileSync)(a,`${JSON.stringify(b,null,2)}
2
- `,{mode:384})}var C=c(77904);let D=(0,w.h)("lib/hooks/sources/gemini/settings-generator"),E=1e3*g.W6,F=[["SessionStart","session_start"],["BeforeAgent","user_prompt_submit"],["AfterAgent","stop"],["Notification","notification"],["SessionEnd","session_end"]];function G(a,b){return a.includes("cmate-agent-event.sh")&&a.includes(`--tool ${C.o}`)&&a.includes(`--worktree-id ${(0,g.ZL)(b)}`)}let H=(0,h.UB)({cliToolId:C.o,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:["session_start","user_prompt_submit","stop","notification","session_end"],configScope:"per-worktree",decisionTimeoutSeconds:0,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none",transcriptHistory:null},mappers:(0,i.mJ)({SessionStart:"session_start",SessionEnd:"session_end",BeforeAgent:"user_prompt_submit",AfterAgent:"stop",BeforeTool:"pre_tool_use",AfterTool:"post_tool_use",Notification:"notification"}),nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:[],extractDetail:function(a,b){if("notification"!==a)return(0,j.Jp)(a,b);let c=(0,i.O2)(b,"notification_type");return null===c?null:(0,i.Wv)(u[c]??c)},parsePermissionRequest:()=>null,parseQuestion:()=>null,encodeVerdict:()=>({}),prepareLaunch:function({target:a,executablePath:b,worktreePath:c}){let d={worktreeId:a.worktreeId,instanceId:a.instanceId,cliToolId:C.o},e=(0,t.n6)(a.instanceId??C.o)?function(a,b){if(!(0,g.q)())return null;let c=(0,g.Os)();if(!c)return D.warn("gemini-hook-relay-missing",{worktreeId:b.worktreeId}),null;let d=(0,v.join)(a,".gemini","settings.json");try{let a=A(d),e=function(a,b){let c={};for(let[e,f]of F){var d;c[e]=[{hooks:[{type:"command",command:(d=b.worktreeId,[(0,g.ZL)(a),"--tool",C.o,"--event",f,"--worktree-id",(0,g.ZL)(d),"--stdin-json"].join(" ")),timeout:E}]}]}return c}(c,b);return B(d,function(a,b,c){let d=(0,i.Qd)(a?.hooks)?a.hooks:{},e={};for(let[a,b]of Object.entries(d)){if(!Array.isArray(b)){e[a]=b;continue}let d=b.filter(a=>!function(a,b){if(!(0,i.Qd)(a))return!1;let c=a.hooks;return Array.isArray(c)?c.length>0&&c.every(a=>(0,i.Qd)(a)&&"string"==typeof a.command&&G(a.command,b)):"string"==typeof a.command&&G(a.command,b)}(a,c));e[a]=d.length===b.length?b:d}for(let[a,c]of Object.entries(b)){let b=e[a];e[a]=Array.isArray(b)?[...b,...c]:[...c]}return{...a,hooks:e}}(a,e,b.worktreeId)),d}catch(a){return D.warn("gemini-hook-settings-write-failed",{worktreeId:b.worktreeId,error:a instanceof Error?a.message:String(a)}),null}}(c,d):null,{command:f,env:h}=function(a,b,c={}){if(!(0,g.q)())return{command:a,env:{}};if(!(0,t.n6)((0,g.g5)(b)))return D.warn("gemini-hook-invalid-instance-id",{worktreeId:b.worktreeId}),{command:a,env:{}};let d=(0,g.xM)({...b,cliToolId:C.o},c);return{command:(0,g.ZL)(a),env:{[x.ZM]:d}}}(b,d);return{command:f,settingsPath:e,env:h}}});var I=c(21820),J=c(76835);let K=(0,w.h)("lib/hooks/sources/antigravity/hooks-config"),L=[["SessionStart","session_start"],["PostToolUse","post_tool_use"],["Stop","stop"]],M="CM_PERMISSION_HOOK_URL",N=g.sI,O=new Set(["PreToolUse","PostToolUse"]),P={decision:"ask"},Q=(0,h.UB)({cliToolId:J.F,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:["session_start","post_tool_use","stop"],configScope:"global-singleton",decisionTimeoutSeconds:N,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none",transcriptHistory:"pull"},mappers:[],nativeEventNameFields:[],conversationIdFields:["conversationId"],toolCallIdFields:[],modelFields:["modelName"],extractDetail:(a,b)=>"pre_tool_use"===a||"post_tool_use"===a?(0,i.Wv)((0,i.NZ)(b,["toolCall","name"])):null,parsePermissionRequest:function(a){if(!(0,i.Qd)(a))return null;let b=a.toolCall;if(!(0,i.Qd)(b))return null;let c=(0,i.O2)(b,"name");return c&&!(c.length>e.vy)&&(0,i.Qd)(b.args)?{toolName:c,toolInput:b.args,promptId:null,sessionId:(0,i.O2)(a,"conversationId"),permissionMode:null,permissionSuggestions:null}:null},parseQuestion:()=>null,encodeVerdict:function(a){return"allowOnce"===a.kind?{decision:"allow"}:"deny"===a.kind?{decision:"deny",reason:a.message??""}:{...P}},prepareLaunch:({target:a,executablePath:b})=>{let c=function(a={}){if(!(0,g.q)())return null;let b=(0,g.Os)();if(!b)return K.warn("antigravity-hook-relay-missing"),null;let c=function(a={}){return a.path??(0,v.join)((0,I.homedir)(),".gemini","config","hooks.json")}(a);try{var d;let a=A(c);return B(c,(d=function(a){let b={};for(let[c,d]of L){let e={type:"command",command:[(0,g.ZL)(a),"--tool",J.F,"--event",d,"--stdin-json"].join(" "),timeout:g.W6};b[c]=O.has(c)?[{matcher:"*",hooks:[e]}]:[e]}return b.PreToolUse=[{matcher:"*",hooks:[{type:"command",command:function(){let a=`"$${M}"`,b=`printf '%s' ${(0,g.ZL)('{"decision":"ask"}')}`;return`if [ -z "\${${M}:-}" ]; then cat >/dev/null; ${b}; exit 0; fi; set -- -sS -f -m 4 -X POST -H 'Content-Type: application/json'; if [ -n "\${${g.XE}:-}" ]; then set -- "$@" -H "Authorization: Bearer $${g.XE}"; fi; out=$(curl "$@" --data-binary @- ${a} 2>/dev/null); case "$out" in '{'*'"decision"'*) printf '%s' "$out" ;; *) ${b} ;; esac`}(),timeout:g.sI}]}],b}(b),{...a,commandmate:d})),c}catch(a){return K.warn("antigravity-hooks-config-write-failed",{error:a instanceof Error?a.message:String(a)}),null}}(),{command:d,env:e}=function(a,b,c={}){if(!(0,g.q)())return{command:a,env:{}};if(!(0,t.n6)((0,g.g5)(b)))return K.warn("antigravity-hook-invalid-instance-id",{worktreeId:b.worktreeId}),{command:a,env:{}};let d={...b,cliToolId:J.F};return{command:(0,g.ZL)(a),env:{[x.ZM]:(0,g.xM)(d,c),[M]:(0,g.O$)(d,c)}}}(b,{worktreeId:a.worktreeId,instanceId:a.instanceId,cliToolId:J.F});return{command:d,settingsPath:c,env:e}}});var R=c(99432),S=c(2734);let T={},U=(0,h.UB)({cliToolId:S.c,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:R.JD,configScope:"global-singleton",decisionTimeoutSeconds:5,permissionHookPredictsDialog:!0,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none",transcriptHistory:"pull"},mappers:(0,i.mJ)(j.WK),nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:j.ue,modelFields:["model"],extractDetail:j.Jp,parsePermissionRequest:a=>(0,e.ss)(a),parseQuestion:()=>null,encodeVerdict:function(a){return"allowOnce"===a.kind?{hookSpecificOutput:{hookEventName:R.l1,decision:{behavior:"allow"}}}:"deny"===a.kind?{hookSpecificOutput:{hookEventName:R.l1,decision:{behavior:"deny",message:a.message??""}}}:T},prepareLaunch:({target:a,executablePath:b})=>(0,R.S9)(b,a)});var V=c(85965),W=c(28862);let X=(0,w.h)("lib/hooks/sources/command-code/hooks-config"),Y=[["SessionStart","session_start"],["PreToolUse","pre_tool_use"],["PostToolUse","post_tool_use"],["Stop","stop"]],Z=g.W6;function $(a,b){return a.includes("cmate-agent-event.sh")&&a.includes(`--tool ${W.k}`)&&a.includes(`--worktree-id ${(0,g.ZL)(b)}`)}let _=(0,h.UB)({cliToolId:W.k,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:["session_start","pre_tool_use","post_tool_use","stop"],configScope:"per-worktree",decisionTimeoutSeconds:null,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none",transcriptHistory:"pull"},mappers:(0,i.mJ)({SessionStart:"session_start",PreToolUse:"pre_tool_use",PostToolUse:"post_tool_use",Stop:"stop"}),nativeEventNameFields:["hook_event_name"],conversationIdFields:["session_id"],toolCallIdFields:j.ue,extractDetail:j.Jp,parsePermissionRequest:()=>null,parseQuestion:()=>null,encodeVerdict:function(a){return{}},prepareLaunch:({target:a,executablePath:b,worktreePath:c})=>{let d={worktreeId:a.worktreeId,instanceId:a.instanceId,cliToolId:W.k},e=function(a,b){if(!(0,g.q)())return null;let c=(0,g.Os)();if(!c)return X.warn("command-code-hook-relay-missing",{worktreeId:b.worktreeId}),null;let d=(0,v.join)(a,".commandcode","settings.local.json");try{let a=A(d),e=function(a,b){let c={};for(let[e,f]of Y){var d;c[e]=[{matcher:"",hooks:[{type:"command",command:(d=b.worktreeId,[(0,g.ZL)(a),"--tool",W.k,"--event",f,"--worktree-id",(0,g.ZL)(d),"--stdin-json"].join(" ")),timeout:Z}]}]}return c}(c,b);return B(d,function(a,b,c){let d=(0,i.Qd)(a?.hooks)?a.hooks:{},e={};for(let[a,b]of Object.entries(d)){if(!Array.isArray(b)){e[a]=b;continue}let d=b.filter(a=>!function(a,b){if(!(0,i.Qd)(a))return!1;let c=a.hooks;return Array.isArray(c)?c.length>0&&c.every(a=>(0,i.Qd)(a)&&"string"==typeof a.command&&$(a.command,b)):"string"==typeof a.command&&$(a.command,b)}(a,c));e[a]=d.length===b.length?b:d}for(let[a,c]of Object.entries(b)){let b=e[a];e[a]=Array.isArray(b)?[...b,...c]:[...c]}return{...a,hooks:e}}(a,e,b.worktreeId)),d}catch(a){return X.warn("command-code-hook-settings-write-failed",{worktreeId:b.worktreeId,error:a instanceof Error?a.message:String(a)}),null}}(c,d),{command:f,env:h}=function(a,b,c={}){if(!(0,g.q)())return{command:a,env:{}};if(!(0,t.n6)((0,g.g5)(b)))return X.warn("command-code-hook-invalid-instance-id",{worktreeId:b.worktreeId}),{command:a,env:{}};let d=(0,g.xM)({...b,cliToolId:W.k},c);return{command:(0,g.ZL)(a),env:{[x.ZM]:d}}}(b,d);return{command:f,settingsPath:e,env:h}}}),aa=globalThis.__agentEventSources??=new Map,ab=globalThis.__agentEventLegacySources??=new Map;function ac(a){aa.set(a.cliToolId,a),ab.delete(a.cliToolId)}function ad(a){let b=aa.get(a);if(b)return b;let c=ab.get(a);if(c)return c;let f=(0,h.UB)({cliToolId:a,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:[],configScope:"none",decisionTimeoutSeconds:null,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none",transcriptHistory:null},mappers:(0,i.mJ)(j.WK),nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:j.ue,extractDetail:j.Jp,parsePermissionRequest:a=>(0,e.ss)(a),parseQuestion:a=>(0,d.ek)(a),encodeVerdict:m,prepareLaunch:({executablePath:a})=>({command:a,settingsPath:null,env:{}})});return ab.set(a,f),f}ac(n),ac(s),ac(H),ac(Q),ac(U),ac(V.cC),ac(_)},2669:(a,b,c)=>{c.d(b,{JI:()=>m,M7:()=>d,Sr:()=>h,Zf:()=>f,c7:()=>e,lU:()=>j,mR:()=>i,su:()=>l,wQ:()=>k});let d="SESSION_STARTING",e="SESSION_START_FAILED",f="SESSION_START_UNAVAILABLE",g=[d,e];class h extends Error{constructor(a,b,c){super(`${a} did not reach its input prompt within ${Math.round(c/1e3)}s (initialization timeout). The tmux session '${b}' and its process are still running, so this is a slow start, not a failed one — the message was not delivered, but nothing needs repairing. Retry the send in a few seconds, or run \`commandmate capture <worktree-id>\` to see what it is waiting on.`),this.toolName=a,this.sessionName=b,this.timeoutMs=c,this.code=d,this.name="SessionStartTimeoutError"}}class i extends Error{constructor(a,b,c){super(`${a} reported an error while starting in tmux session '${b}': "${c}". Retrying will not help until that is resolved; run \`commandmate capture <worktree-id>\` to see the session output.`),this.toolName=a,this.sessionName=b,this.detectedPattern=c,this.code=e,this.name="SessionStartFailedError"}}class j extends Error{constructor(a,b=`${a} is not installed. Please install it first.`){super(b),this.toolName=a,this.code=f,this.name="SessionStartUnavailableError"}}function k(a){return n(a)===d}function l(a){let b=n(a);return void 0!==b&&g.includes(b)}function m(a){return n(a)===f}function n(a){if("object"!=typeof a||null===a)return;let b=a.code;return"string"==typeof b?b:void 0}},2734:(a,b,c)=>{c.d(b,{c:()=>d});let d="codex"},21758:(a,b,c)=>{c.d(b,{Rv:()=>J,TV:()=>r,cN:()=>w,nL:()=>p});var d=c(29021),e=c(21820),f=c(33873),g=c(8004),h=c(15194),i=c(87447),j=c(43252),k=c(66007),l=c(72626),m=c(45567),n=c(54633);let o=(0,l.h)("lib/hooks/sources/copilot/hook-settings"),p="gh copilot",q="cmate-copilot-agent-hooks",r=10,s="CM_AGENT_WORKTREE_ID",t="CM_AGENT_INSTANCE_ID",u="CM_AUTH_TOKEN",v=m.wS,w="PreToolUse",x=[["SessionStart","session_start"],["UserPromptSubmit","user_prompt_submit"],["PostToolUse","post_tool_use"],["Stop","stop"],["SessionEnd","session_end"]];function y(a=""){return`: ${q}; if [ -z "\${${s}:-}" ]; then cat >/dev/null; ${a}exit 0; fi; case "$${v}" in ''|*[!0-9]*) cat >/dev/null; ${a}exit 0;; esac; `}let z=`"\${${t}:-${n.V}}"`,A=`"$${s}"`;function B(){return`set -- -fsS -m 4 -X POST -H 'Content-Type: application/json'; if [ -n "\${${u}:-}" ]; then set -- "$@" -H "Authorization: Bearer $${u}"; fi; `}function C(a){return`${(0,j.ZL)("http://127.0.0.1:")}"$${v}"${(0,j.ZL)(a)}`}function D(a){return`${C(`${a}?tool=${n.V}&worktreeId=`)}${A}'&instanceId='${z}`}function E(a){return`rc=$?; printf '%s\\n' "${q}: ${a} rc=$rc" >&2`}function F(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function G(a){return F(a)&&"string"==typeof a.command&&a.command.includes(q)}function H(a){try{return(0,d.readFileSync)(a,"utf8")}catch(a){if("ENOENT"===a.code)return"";throw a}}class I extends Error{constructor(a){super(`copilot config.json still has a "hooks" key (${a}); copilot migrates it over settings.json at startup, so CommandMate is not writing hooks this launch`),this.configPath=a,this.name="CopilotConfigHooksShadowError"}}function J(a,b,c={}){let l={command:a,settingsPath:null,env:{}};if("0"===process.env.CM_AGENT_HOOKS_INJECT)return l;let m=b.instanceId??n.V;if(!(0,h.n6)(m)||!(0,k.h6)(b.worktreeId))return o.warn("copilot-hook-invalid-correlation-key",{worktreeId:b.worktreeId}),l;try{let h=function(a={}){let b=a.settingsPath??(0,f.join)(function(){let a=(0,f.join)((0,e.homedir)(),".copilot");return(0,g.T)(process.env.COPILOT_HOME,a,"COPILOT_HOME")}(),"settings.json"),c=a.configPath??(0,f.join)((0,f.dirname)(b),"config.json"),h=function(a){let b,c=H(a);if(""===c.trim())return"absent";try{b=JSON.parse(function(a){let b="",c=!1,d=!1;for(let e=0;e<a.length;e+=1){let f=a[e];if(c){b+=f,d?d=!1:"\\"===f?d=!0:'"'===f&&(c=!1);continue}if('"'===f){c=!0,b+=f;continue}if("/"===f&&"/"===a[e+1]){for(;e<a.length&&"\n"!==a[e];)e+=1;b+="\n";continue}if("/"===f&&"*"===a[e+1]){for(e+=2;e<a.length&&("*"!==a[e]||"/"!==a[e+1]);)e+=1;e+=1;continue}b+=f}return b}(c))}catch{return"unreadable"}if(!F(b))return"unreadable";let d=b.hooks;return null==d||F(d)&&0===Object.keys(d).length||Array.isArray(d)&&0===d.length?"absent":"present"}(c);if("present"===h)throw new I(c);return"unreadable"===h&&o.warn("copilot-config-json-unreadable",{configPath:c}),(0,d.mkdirSync)((0,f.dirname)(b),{recursive:!0,mode:448}),function(a,b){let c,e=(0,f.join)(a,".cmate.lock");try{c=(0,d.openSync)(e,"wx",384)}catch(b){if("EEXIST"!==b.code)throw b;let a=Date.now()-(0,d.statSync)(e).mtimeMs;if(a<1e4)throw Error(`copilot settings.json is locked by another CommandMate server (${e})`);o.warn("copilot-hook-settings-lock-stale",{lockPath:e,heldForMs:a}),(0,d.unlinkSync)(e),c=(0,d.openSync)(e,"wx",384)}try{(0,d.writeSync)(c,`${process.pid}
1
+ "use strict";exports.id=9130,exports.ids=[9130],exports.modules={129:(a,b,c)=>{c.d(b,{VM:()=>ae});var d=c(2466),e=c(13287),f=c(62887),g=c(43252),h=c(66101),i=c(57510),j=c(38367),k=c(34257),l=c(70997);let m={};function n(a){return"allowOnce"!==a.kind?m:{hookSpecificOutput:{hookEventName:e.l9,decision:{behavior:"allow"}}}}let o=(0,h.UB)({cliToolId:l.v,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:f.b0,configScope:"per-instance",decisionTimeoutSeconds:g.sI,permissionHookPredictsDialog:!0,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none",transcriptHistory:"pull"},mappers:[...(0,i.mJ)(j.WK),k.Bo],nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:j.ue,modelFields:["model"],extractModel:k._P,extractDetail:j.Jp,parsePermissionRequest:a=>(0,e.ss)(a),parseQuestion:a=>(0,d.ek)(a),encodeVerdict:n,prepareLaunch:({target:a,executablePath:b})=>{let c=(0,g.D2)(b,{worktreeId:a.worktreeId,instanceId:a.instanceId,cliToolId:a.cliToolId}),d=(0,g.q)()&&c!==b?(0,g.iR)({worktreeId:a.worktreeId,instanceId:a.instanceId,cliToolId:a.cliToolId}):null;return{command:c,settingsPath:d,env:{}}}});var p=c(92196),q=c(21758),r=c(54633);let s={},t=(0,h.UB)({cliToolId:r.V,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:["stop","session_start","session_end","user_prompt_submit","post_tool_use"],configScope:"global-singleton",decisionTimeoutSeconds:q.TV,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!0,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none",transcriptHistory:null},mappers:(0,i.mJ)(j.WK),nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:j.ue,extractDetail:j.Jp,parsePermissionRequest:function(a){if(!(0,i.Qd)(a)||a.hook_event_name!==q.cN)return null;let b=(0,i.O2)(a,"tool_name");if(!b||b.length>e.vy)return null;let c=(0,p.mw)(a.tool_input);return c?{toolName:b,toolInput:c.toolInput,toolInputNormalization:c.normalization,promptId:null,sessionId:(0,i.O2)(a,"session_id"),permissionMode:null,permissionSuggestions:null}:null},parseQuestion:()=>null,encodeVerdict:function(a){return"allowOnce"===a.kind?{hookSpecificOutput:{hookEventName:q.cN,permissionDecision:"allow"}}:"deny"===a.kind?{hookSpecificOutput:{hookEventName:q.cN,permissionDecision:"deny",permissionDecisionReason:a.message??"denied by CommandMate"}}:s},prepareLaunch:({target:a,executablePath:b})=>(0,q.Rv)(b,a)});var u=c(15194);let v={ToolPermission:"permission_prompt"};var w=c(33873),x=c(72626),y=c(45567),z=c(29021),A=c(7956);function B(a){if(!(0,z.existsSync)(a))return null;try{let b=JSON.parse((0,z.readFileSync)(a,"utf8"));return(0,i.Qd)(b)?b:null}catch{return null}}function C(a,b){if((0,A.Mb)(a))throw Error(`Refusing to write inside a virtual filesystem: ${a} (a recursive mkdir under /proc, /sys or /dev never returns on Linux; Issue #1774)`);(0,z.mkdirSync)((0,w.dirname)(a),{recursive:!0,mode:448}),(0,z.writeFileSync)(a,`${JSON.stringify(b,null,2)}
2
+ `,{mode:384})}var D=c(77904);let E=(0,x.h)("lib/hooks/sources/gemini/settings-generator"),F=1e3*g.W6,G=[["SessionStart","session_start"],["BeforeAgent","user_prompt_submit"],["AfterAgent","stop"],["Notification","notification"],["SessionEnd","session_end"]];function H(a,b){return a.includes("cmate-agent-event.sh")&&a.includes(`--tool ${D.o}`)&&a.includes(`--worktree-id ${(0,g.ZL)(b)}`)}let I=(0,h.UB)({cliToolId:D.o,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:["session_start","user_prompt_submit","stop","notification","session_end"],configScope:"per-worktree",decisionTimeoutSeconds:0,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none",transcriptHistory:null},mappers:(0,i.mJ)({SessionStart:"session_start",SessionEnd:"session_end",BeforeAgent:"user_prompt_submit",AfterAgent:"stop",BeforeTool:"pre_tool_use",AfterTool:"post_tool_use",Notification:"notification"}),nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:[],extractDetail:function(a,b){if("notification"!==a)return(0,j.Jp)(a,b);let c=(0,i.O2)(b,"notification_type");return null===c?null:(0,i.Wv)(v[c]??c)},parsePermissionRequest:()=>null,parseQuestion:()=>null,encodeVerdict:()=>({}),prepareLaunch:function({target:a,executablePath:b,worktreePath:c}){let d={worktreeId:a.worktreeId,instanceId:a.instanceId,cliToolId:D.o},e=(0,u.n6)(a.instanceId??D.o)?function(a,b){if(!(0,g.q)())return null;let c=(0,g.Os)();if(!c)return E.warn("gemini-hook-relay-missing",{worktreeId:b.worktreeId}),null;let d=(0,w.join)(a,".gemini","settings.json");try{let a=B(d),e=function(a,b){let c={};for(let[e,f]of G){var d;c[e]=[{hooks:[{type:"command",command:(d=b.worktreeId,[(0,g.ZL)(a),"--tool",D.o,"--event",f,"--worktree-id",(0,g.ZL)(d),"--stdin-json"].join(" ")),timeout:F}]}]}return c}(c,b);return C(d,function(a,b,c){let d=(0,i.Qd)(a?.hooks)?a.hooks:{},e={};for(let[a,b]of Object.entries(d)){if(!Array.isArray(b)){e[a]=b;continue}let d=b.filter(a=>!function(a,b){if(!(0,i.Qd)(a))return!1;let c=a.hooks;return Array.isArray(c)?c.length>0&&c.every(a=>(0,i.Qd)(a)&&"string"==typeof a.command&&H(a.command,b)):"string"==typeof a.command&&H(a.command,b)}(a,c));e[a]=d.length===b.length?b:d}for(let[a,c]of Object.entries(b)){let b=e[a];e[a]=Array.isArray(b)?[...b,...c]:[...c]}return{...a,hooks:e}}(a,e,b.worktreeId)),d}catch(a){return E.warn("gemini-hook-settings-write-failed",{worktreeId:b.worktreeId,error:a instanceof Error?a.message:String(a)}),null}}(c,d):null,{command:f,env:h}=function(a,b,c={}){if(!(0,g.q)())return{command:a,env:{}};if(!(0,u.n6)((0,g.g5)(b)))return E.warn("gemini-hook-invalid-instance-id",{worktreeId:b.worktreeId}),{command:a,env:{}};let d=(0,g.xM)({...b,cliToolId:D.o},c);return{command:(0,g.ZL)(a),env:{[y.ZM]:d}}}(b,d);return{command:f,settingsPath:e,env:h}}});var J=c(21820),K=c(76835);let L=(0,x.h)("lib/hooks/sources/antigravity/hooks-config"),M=[["SessionStart","session_start"],["PostToolUse","post_tool_use"],["Stop","stop"]],N="CM_PERMISSION_HOOK_URL",O=g.sI,P=new Set(["PreToolUse","PostToolUse"]),Q={decision:"ask"},R=(0,h.UB)({cliToolId:K.F,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:["session_start","post_tool_use","stop"],configScope:"global-singleton",decisionTimeoutSeconds:O,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none",transcriptHistory:"pull"},mappers:[],nativeEventNameFields:[],conversationIdFields:["conversationId"],toolCallIdFields:[],modelFields:["modelName"],extractDetail:(a,b)=>"pre_tool_use"===a||"post_tool_use"===a?(0,i.Wv)((0,i.NZ)(b,["toolCall","name"])):null,parsePermissionRequest:function(a){if(!(0,i.Qd)(a))return null;let b=a.toolCall;if(!(0,i.Qd)(b))return null;let c=(0,i.O2)(b,"name");return c&&!(c.length>e.vy)&&(0,i.Qd)(b.args)?{toolName:c,toolInput:b.args,promptId:null,sessionId:(0,i.O2)(a,"conversationId"),permissionMode:null,permissionSuggestions:null}:null},parseQuestion:()=>null,encodeVerdict:function(a){return"allowOnce"===a.kind?{decision:"allow"}:"deny"===a.kind?{decision:"deny",reason:a.message??""}:{...Q}},prepareLaunch:({target:a,executablePath:b})=>{let c=function(a={}){if(!(0,g.q)())return null;let b=(0,g.Os)();if(!b)return L.warn("antigravity-hook-relay-missing"),null;let c=function(a={}){return a.path??(0,w.join)((0,J.homedir)(),".gemini","config","hooks.json")}(a);try{var d;let a=B(c);return C(c,(d=function(a){let b={};for(let[c,d]of M){let e={type:"command",command:[(0,g.ZL)(a),"--tool",K.F,"--event",d,"--stdin-json"].join(" "),timeout:g.W6};b[c]=P.has(c)?[{matcher:"*",hooks:[e]}]:[e]}return b.PreToolUse=[{matcher:"*",hooks:[{type:"command",command:function(){let a=`"$${N}"`,b=`printf '%s' ${(0,g.ZL)('{"decision":"ask"}')}`;return`if [ -z "\${${N}:-}" ]; then cat >/dev/null; ${b}; exit 0; fi; set -- -sS -f -m 4 -X POST -H 'Content-Type: application/json'; if [ -n "\${${g.XE}:-}" ]; then set -- "$@" -H "Authorization: Bearer $${g.XE}"; fi; out=$(curl "$@" --data-binary @- ${a} 2>/dev/null); case "$out" in '{'*'"decision"'*) printf '%s' "$out" ;; *) ${b} ;; esac`}(),timeout:g.sI}]}],b}(b),{...a,commandmate:d})),c}catch(a){return L.warn("antigravity-hooks-config-write-failed",{error:a instanceof Error?a.message:String(a)}),null}}(),{command:d,env:e}=function(a,b,c={}){if(!(0,g.q)())return{command:a,env:{}};if(!(0,u.n6)((0,g.g5)(b)))return L.warn("antigravity-hook-invalid-instance-id",{worktreeId:b.worktreeId}),{command:a,env:{}};let d={...b,cliToolId:K.F};return{command:(0,g.ZL)(a),env:{[y.ZM]:(0,g.xM)(d,c),[N]:(0,g.O$)(d,c)}}}(b,{worktreeId:a.worktreeId,instanceId:a.instanceId,cliToolId:K.F});return{command:d,settingsPath:c,env:e}}});var S=c(99432),T=c(2734);let U={},V=(0,h.UB)({cliToolId:T.c,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:S.JD,configScope:"global-singleton",decisionTimeoutSeconds:5,permissionHookPredictsDialog:!0,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none",transcriptHistory:"pull"},mappers:(0,i.mJ)(j.WK),nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:j.ue,modelFields:["model"],extractDetail:j.Jp,parsePermissionRequest:a=>(0,e.ss)(a),parseQuestion:()=>null,encodeVerdict:function(a){return"allowOnce"===a.kind?{hookSpecificOutput:{hookEventName:S.l1,decision:{behavior:"allow"}}}:"deny"===a.kind?{hookSpecificOutput:{hookEventName:S.l1,decision:{behavior:"deny",message:a.message??""}}}:U},prepareLaunch:({target:a,executablePath:b})=>(0,S.S9)(b,a)});var W=c(85965),X=c(28862);let Y=(0,x.h)("lib/hooks/sources/command-code/hooks-config"),Z=[["SessionStart","session_start"],["PreToolUse","pre_tool_use"],["PostToolUse","post_tool_use"],["Stop","stop"]],$=g.W6;function _(a,b){return a.includes("cmate-agent-event.sh")&&a.includes(`--tool ${X.k}`)&&a.includes(`--worktree-id ${(0,g.ZL)(b)}`)}let aa=(0,h.UB)({cliToolId:X.k,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:["session_start","pre_tool_use","post_tool_use","stop"],configScope:"per-worktree",decisionTimeoutSeconds:null,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none",transcriptHistory:"pull"},mappers:(0,i.mJ)({SessionStart:"session_start",PreToolUse:"pre_tool_use",PostToolUse:"post_tool_use",Stop:"stop"}),nativeEventNameFields:["hook_event_name"],conversationIdFields:["session_id"],toolCallIdFields:j.ue,extractDetail:j.Jp,parsePermissionRequest:()=>null,parseQuestion:()=>null,encodeVerdict:function(a){return{}},prepareLaunch:({target:a,executablePath:b,worktreePath:c})=>{let d={worktreeId:a.worktreeId,instanceId:a.instanceId,cliToolId:X.k},e=function(a,b){if(!(0,g.q)())return null;let c=(0,g.Os)();if(!c)return Y.warn("command-code-hook-relay-missing",{worktreeId:b.worktreeId}),null;let d=(0,w.join)(a,".commandcode","settings.local.json");try{let a=B(d),e=function(a,b){let c={};for(let[e,f]of Z){var d;c[e]=[{matcher:"",hooks:[{type:"command",command:(d=b.worktreeId,[(0,g.ZL)(a),"--tool",X.k,"--event",f,"--worktree-id",(0,g.ZL)(d),"--stdin-json"].join(" ")),timeout:$}]}]}return c}(c,b);return C(d,function(a,b,c){let d=(0,i.Qd)(a?.hooks)?a.hooks:{},e={};for(let[a,b]of Object.entries(d)){if(!Array.isArray(b)){e[a]=b;continue}let d=b.filter(a=>!function(a,b){if(!(0,i.Qd)(a))return!1;let c=a.hooks;return Array.isArray(c)?c.length>0&&c.every(a=>(0,i.Qd)(a)&&"string"==typeof a.command&&_(a.command,b)):"string"==typeof a.command&&_(a.command,b)}(a,c));e[a]=d.length===b.length?b:d}for(let[a,c]of Object.entries(b)){let b=e[a];e[a]=Array.isArray(b)?[...b,...c]:[...c]}return{...a,hooks:e}}(a,e,b.worktreeId)),d}catch(a){return Y.warn("command-code-hook-settings-write-failed",{worktreeId:b.worktreeId,error:a instanceof Error?a.message:String(a)}),null}}(c,d),{command:f,env:h}=function(a,b,c={}){if(!(0,g.q)())return{command:a,env:{}};if(!(0,u.n6)((0,g.g5)(b)))return Y.warn("command-code-hook-invalid-instance-id",{worktreeId:b.worktreeId}),{command:a,env:{}};let d=(0,g.xM)({...b,cliToolId:X.k},c);return{command:(0,g.ZL)(a),env:{[y.ZM]:d}}}(b,d);return{command:f,settingsPath:e,env:h}}}),ab=globalThis.__agentEventSources??=new Map,ac=globalThis.__agentEventLegacySources??=new Map;function ad(a){ab.set(a.cliToolId,a),ac.delete(a.cliToolId)}function ae(a){let b=ab.get(a);if(b)return b;let c=ac.get(a);if(c)return c;let f=(0,h.UB)({cliToolId:a,noDecision:{kind:"proceeds"},capabilities:{supportedEvents:[],configScope:"none",decisionTimeoutSeconds:null,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!1,eventIdentity:null,resync:"none",transcriptHistory:null},mappers:(0,i.mJ)(j.WK),nativeEventNameFields:["hook_event_name"],conversationIdFields:j.lb,toolCallIdFields:j.ue,extractDetail:j.Jp,parsePermissionRequest:a=>(0,e.ss)(a),parseQuestion:a=>(0,d.ek)(a),encodeVerdict:n,prepareLaunch:({executablePath:a})=>({command:a,settingsPath:null,env:{}})});return ac.set(a,f),f}ad(o),ad(t),ad(I),ad(R),ad(V),ad(W.cC),ad(aa)},2669:(a,b,c)=>{c.d(b,{JI:()=>m,M7:()=>d,Sr:()=>h,Zf:()=>f,c7:()=>e,lU:()=>j,mR:()=>i,su:()=>l,wQ:()=>k});let d="SESSION_STARTING",e="SESSION_START_FAILED",f="SESSION_START_UNAVAILABLE",g=[d,e];class h extends Error{constructor(a,b,c){super(`${a} did not reach its input prompt within ${Math.round(c/1e3)}s (initialization timeout). The tmux session '${b}' and its process are still running, so this is a slow start, not a failed one — the message was not delivered, but nothing needs repairing. Retry the send in a few seconds, or run \`commandmate capture <worktree-id>\` to see what it is waiting on.`),this.toolName=a,this.sessionName=b,this.timeoutMs=c,this.code=d,this.name="SessionStartTimeoutError"}}class i extends Error{constructor(a,b,c){super(`${a} reported an error while starting in tmux session '${b}': "${c}". Retrying will not help until that is resolved; run \`commandmate capture <worktree-id>\` to see the session output.`),this.toolName=a,this.sessionName=b,this.detectedPattern=c,this.code=e,this.name="SessionStartFailedError"}}class j extends Error{constructor(a,b=`${a} is not installed. Please install it first.`){super(b),this.toolName=a,this.code=f,this.name="SessionStartUnavailableError"}}function k(a){return n(a)===d}function l(a){let b=n(a);return void 0!==b&&g.includes(b)}function m(a){return n(a)===f}function n(a){if("object"!=typeof a||null===a)return;let b=a.code;return"string"==typeof b?b:void 0}},2734:(a,b,c)=>{c.d(b,{c:()=>d});let d="codex"},21758:(a,b,c)=>{c.d(b,{Rv:()=>J,TV:()=>r,cN:()=>w,nL:()=>p});var d=c(29021),e=c(21820),f=c(33873),g=c(8004),h=c(15194),i=c(87447),j=c(43252),k=c(66007),l=c(72626),m=c(45567),n=c(54633);let o=(0,l.h)("lib/hooks/sources/copilot/hook-settings"),p="gh copilot",q="cmate-copilot-agent-hooks",r=10,s="CM_AGENT_WORKTREE_ID",t="CM_AGENT_INSTANCE_ID",u="CM_AUTH_TOKEN",v=m.wS,w="PreToolUse",x=[["SessionStart","session_start"],["UserPromptSubmit","user_prompt_submit"],["PostToolUse","post_tool_use"],["Stop","stop"],["SessionEnd","session_end"]];function y(a=""){return`: ${q}; if [ -z "\${${s}:-}" ]; then cat >/dev/null; ${a}exit 0; fi; case "$${v}" in ''|*[!0-9]*) cat >/dev/null; ${a}exit 0;; esac; `}let z=`"\${${t}:-${n.V}}"`,A=`"$${s}"`;function B(){return`set -- -fsS -m 4 -X POST -H 'Content-Type: application/json'; if [ -n "\${${u}:-}" ]; then set -- "$@" -H "Authorization: Bearer $${u}"; fi; `}function C(a){return`${(0,j.ZL)("http://127.0.0.1:")}"$${v}"${(0,j.ZL)(a)}`}function D(a){return`${C(`${a}?tool=${n.V}&worktreeId=`)}${A}'&instanceId='${z}`}function E(a){return`rc=$?; printf '%s\\n' "${q}: ${a} rc=$rc" >&2`}function F(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function G(a){return F(a)&&"string"==typeof a.command&&a.command.includes(q)}function H(a){try{return(0,d.readFileSync)(a,"utf8")}catch(a){if("ENOENT"===a.code)return"";throw a}}class I extends Error{constructor(a){super(`copilot config.json still has a "hooks" key (${a}); copilot migrates it over settings.json at startup, so CommandMate is not writing hooks this launch`),this.configPath=a,this.name="CopilotConfigHooksShadowError"}}function J(a,b,c={}){let l={command:a,settingsPath:null,env:{}};if("0"===process.env.CM_AGENT_HOOKS_INJECT)return l;let m=b.instanceId??n.V;if(!(0,h.n6)(m)||!(0,k.h6)(b.worktreeId))return o.warn("copilot-hook-invalid-correlation-key",{worktreeId:b.worktreeId}),l;try{let h=function(a={}){let b=a.settingsPath??(0,f.join)(function(){let a=(0,f.join)((0,e.homedir)(),".copilot");return(0,g.T)(process.env.COPILOT_HOME,a,"COPILOT_HOME")}(),"settings.json"),c=a.configPath??(0,f.join)((0,f.dirname)(b),"config.json"),h=function(a){let b,c=H(a);if(""===c.trim())return"absent";try{b=JSON.parse(function(a){let b="",c=!1,d=!1;for(let e=0;e<a.length;e+=1){let f=a[e];if(c){b+=f,d?d=!1:"\\"===f?d=!0:'"'===f&&(c=!1);continue}if('"'===f){c=!0,b+=f;continue}if("/"===f&&"/"===a[e+1]){for(;e<a.length&&"\n"!==a[e];)e+=1;b+="\n";continue}if("/"===f&&"*"===a[e+1]){for(e+=2;e<a.length&&("*"!==a[e]||"/"!==a[e+1]);)e+=1;e+=1;continue}b+=f}return b}(c))}catch{return"unreadable"}if(!F(b))return"unreadable";let d=b.hooks;return null==d||F(d)&&0===Object.keys(d).length||Array.isArray(d)&&0===d.length?"absent":"present"}(c);if("present"===h)throw new I(c);return"unreadable"===h&&o.warn("copilot-config-json-unreadable",{configPath:c}),(0,d.mkdirSync)((0,f.dirname)(b),{recursive:!0,mode:448}),function(a,b){let c,e=(0,f.join)(a,".cmate.lock");try{c=(0,d.openSync)(e,"wx",384)}catch(b){if("EEXIST"!==b.code)throw b;let a=Date.now()-(0,d.statSync)(e).mtimeMs;if(a<1e4)throw Error(`copilot settings.json is locked by another CommandMate server (${e})`);o.warn("copilot-hook-settings-lock-stale",{lockPath:e,heldForMs:a}),(0,d.unlinkSync)(e),c=(0,d.openSync)(e,"wx",384)}try{(0,d.writeSync)(c,`${process.pid}
3
3
  `)}finally{(0,d.closeSync)(c)}try{return b()}finally{try{(0,d.unlinkSync)(e)}catch{}}}((0,f.dirname)(b),()=>{let c=H(b),e=function(a,b){let c=a.hooks;if(void 0!==c&&!F(c))throw Error('copilot settings.json has a non-object "hooks" key');let d={...c??{}};for(let[a,c]of Object.entries(b.hooks)){let b=d[a];if(void 0!==b&&!Array.isArray(b)){o.warn("copilot-hook-event-not-an-array",{event:a});continue}d[a]=[...function(a){let b=[];for(let c of a)if(!G(c)){if(F(c)&&Array.isArray(c.hooks)){let a=c.hooks.filter(a=>!G(a));if(0===a.length&&c.hooks.length>0)continue;b.push({...c,hooks:a});continue}b.push(c)}return b}(b??[]),...c]}return{...a,hooks:d}}(function(a){if(""===a.trim())return{};let b=JSON.parse(a);if(!F(b))throw Error("copilot settings.json is not a JSON object");return b}(c),function(a={}){let b={};for(let[c,d]of x)b[c]=[{hooks:[{type:"command",command:function(a,b={}){let c=void 0===b.relayScriptPath?(0,j.Os)():b.relayScriptPath,d=B()+`curl "$@" --data-binary @- ${D(j.jx)} >/dev/null 2>&1 || `+`{ ${E("agent_event_post_failed")}; }`;return c?y()+`if [ -x ${(0,j.ZL)(c)} ]; then `+[(0,j.ZL)(c),"--tool",(0,j.ZL)(n.V),"--event",(0,j.ZL)(a),"--worktree-id",A,"--instance-id",z,"--url",C(j.jx),"--stdin-json"].join(" ")+"; exit 0; fi; "+d:y()+d}(d,a)}]}];return b[w]=[{hooks:[{type:"command",command:function(a={}){return y("printf '{}'; ")+B()+`out=$(curl "$@" --data-binary @- ${D(j.WZ)} `+`2>/dev/null) || { ${E("permission_request_failed")}; out=''; }; `+"[ -n \"$out\" ] || out='{}'; printf '%s' \"$out\""}(a)}]}],{hooks:b}}(a)),f=`${JSON.stringify(e,null,2)}
4
4
  `;if(c===f)return b;""!==c&&(0,d.copyFileSync)(b,`${b}.cmate-backup`);let g=`${b}.${process.pid}.tmp`;try{(0,d.writeFileSync)(g,f,{mode:384}),(0,d.renameSync)(g,b)}catch(a){try{(0,d.unlinkSync)(g)}catch{}throw a}return b})}(c);return{command:a,settingsPath:h,env:function(a,b,c={}){return{[s]:a,[t]:b,[v]:String(c.port??(0,i.D0)())}}(b.worktreeId,m,c)}}catch(a){if(a instanceof I)return o.warn("copilot-hook-config-json-shadows-settings",{worktreeId:b.worktreeId,configPath:a.configPath}),l;return o.warn("copilot-hook-settings-write-failed",{worktreeId:b.worktreeId,error:a instanceof Error?a.message:String(a)}),l}}},22354:(a,b,c)=>{c.d(b,{F0:()=>j.F,K9:()=>e.K9,VM:()=>d.VM,_0:()=>f._0,c1:()=>k.c,o:()=>i.o,vm:()=>h.v,y_:()=>g.y_});var d=c(129);c(66101);var e=c(45567);c(57510),c(38367);var f=c(25071),g=c(50474),h=c(70997),i=c(77904),j=c(76835),k=c(2734)},25071:(a,b,c)=>{c.d(b,{GW:()=>l,_0:()=>k,o4:()=>j,oy:()=>i,qK:()=>h});var d=c(24455);let e=(0,c(72626).h)("lib/hooks/sources/pending-decisions"),f=globalThis.__agentSourcePendingDecisions??=new Map;function g(a){return(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId)}function h(a){return(f.get(g(a))??[]).map(a=>a.decision)}function i(a,b,c){let d=f.get(g(a));if(!d)return!1;let e=d.find(a=>a.decision.id===b);return!!e&&(e.delivery=c,!0)}function j(a,b,c){let d=f.get(g(a));if(!d)return!1;let e=d.find(a=>a.decision.id===b);return!!e&&(e.body=c,!0)}async function k(a,b,c,d){return(await l(a,b,c,d)).body}async function l(a,b,c,d){let h=function(a,b){let c=g(a),d={key:c,ref:a,decision:b,body:null,delivery:null},e=f.get(c)??[];for(e.push(d);e.length>16;)e.shift();return f.set(c,e),d}(b,c);try{await a.decide(b,c,d)}catch(a){e.warn("agent-source-decide-failed",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:b.instanceId??b.cliToolId,decisionId:c.id,error:a instanceof Error?a.message:String(a)}),h.delivery={delivered:!1,reason:a instanceof Error?`decide-threw:${a.message}`:"decide-threw"}}let i=h.delivery;return{body:function(a){let b=f.get(a.key);if(b){let c=b.indexOf(a);c>=0&&b.splice(c,1),0===b.length&&f.delete(a.key)}return a.body??{}}(h),delivery:i}}},28862:(a,b,c)=>{c.d(b,{k:()=>d});let d="command-code"},38367:(a,b,c)=>{c.d(b,{Jp:()=>h,WK:()=>e,lb:()=>f,ue:()=>g});var d=c(57510);let e={Stop:"stop",SubagentStop:"stop",Notification:"notification",SessionStart:"session_start",SessionEnd:"session_end",UserPromptSubmit:"user_prompt_submit",PreToolUse:"pre_tool_use",PostToolUse:"post_tool_use"},f=["session_id","conversationId"],g=["tool_use_id"];function h(a,b){let c="notification"===a?"notification_type":"session_end"===a?"reason":"session_start"===a?"source":"pre_tool_use"===a||"post_tool_use"===a?"tool_name":null;return null===c?null:(0,d.Wv)((0,d.O2)(b,c))}},45567:(a,b,c)=>{c.d(b,{K9:()=>g,ZM:()=>e,wS:()=>f});var d=c(43252);let e="CM_HOOK_URL",f="CM_HOOK_PORT";function g(a){let b=Object.entries(a.env).map(([a,b])=>`${a}=${(0,d.ZL)(b)}`);return 0===b.length?a.command:`${b.join(" ")} ${a.command}`}},50474:(a,b,c)=>{c.d(b,{y_:()=>d});function d(a){var b=a.noDecision;switch(b.kind){case"proceeds":return{safe:!0,blocksForMs:0,summary:"the agent continues with its own approval flow"};case"blocks":return{safe:!1,blocksForMs:null,summary:"the agent waits indefinitely; nothing else will unblock it"};case"blocksUntil":return{safe:!1,blocksForMs:b.timeoutMs,summary:`the agent waits up to ${b.timeoutMs}ms before continuing`}}}},54633:(a,b,c)=>{c.d(b,{V:()=>d});let d="copilot"},66101:(a,b,c)=>{c.d(b,{Kf:()=>j,UB:()=>h,kS:()=>i});var d=c(62887),e=c(57510),f=c(25071);let g={close:async()=>{},liveness:{state:"unknown"}};function h(a){let b=a.nativeEventNameFields??["hook_event_name"];return{cliToolId:a.cliToolId,transport:"push",noDecision:a.noDecision,capabilities:a.capabilities,normalizeEvent(c){let f=c.receivedAt??Date.now(),g=b.length>0?(0,e.oJ)(c.payload,b):null;if(null!=c.event&&(0,d.o0)(c.event))return(0,e.Uq)({event:c.event},c.payload,f,{detail:a.extractDetail,conversationId:a.conversationIdFields,toolCallId:a.toolCallIdFields,modelFields:a.modelFields,extractModel:a.extractModel});let h=(0,e.qU)(a.mappers,g,c.payload);return h?(0,e.Uq)(h,c.payload,f,{detail:a.extractDetail,conversationId:a.conversationIdFields,toolCallId:a.toolCallIdFields,modelFields:a.modelFields,extractModel:a.extractModel}):((0,e.ex)(a.cliToolId,g),null)},eventIdentityOf:b=>a.extractEventIdentity?.(b)??null,parsePermissionRequest:a.parsePermissionRequest,parseQuestion:a.parseQuestion,encodeVerdict:b=>({kind:"responseBody",body:a.encodeVerdict(b)}),prepareLaunch:a.prepareLaunch,subscribe:async()=>g,async decide(b,c,d){let e=(0,f.o4)(b,c.id,a.encodeVerdict(d));(0,f.oy)(b,c.id,{delivered:e,reason:e?"response-body":"slot-closed"})},listPending:async a=>(0,f.qK)(a),probeActivity:async()=>null,liveness:()=>({state:"unknown"})}}function i(a){let b=a.nativeEventNameFields??["type"];return{cliToolId:a.cliToolId,transport:"pull",noDecision:a.noDecision,capabilities:a.capabilities,normalizeEvent(c){let f=c.receivedAt??Date.now(),g=b.length>0?(0,e.oJ)(c.payload,b):null;if(null!=c.event&&(0,d.o0)(c.event))return(0,e.Uq)({event:c.event},c.payload,f,{detail:a.extractDetail,conversationId:a.conversationIdFields,toolCallId:a.toolCallIdFields,modelFields:a.modelFields,extractModel:a.extractModel});let h=(0,e.qU)(a.mappers,g,c.payload);return h?(0,e.Uq)(h,c.payload,f,{detail:a.extractDetail,conversationId:a.conversationIdFields,toolCallId:a.toolCallIdFields,modelFields:a.modelFields,extractModel:a.extractModel}):((0,e.ex)(a.cliToolId,g),null)},eventIdentityOf:b=>a.extractEventIdentity?.(b)??null,parsePermissionRequest:a.parsePermissionRequest,parseQuestion:a.parseQuestion,encodeVerdict:()=>({kind:"outOfBand"}),prepareLaunch:a.prepareLaunch??(a=>({command:a.executablePath,settingsPath:null,env:{}})),subscribe:a.subscribe,decide:a.decide,listPending:a.listPending,probeActivity:a.probeActivity,liveness:a.liveness}}function j(a,b,c){let d="pull"===a.transport?"sse":0===a.capabilities.supportedEvents.length?"scraper":"hooks";if("sse"!==d)return{kind:d};switch(b.state){case"live":return c-b.lastHeartbeatAt>=3e4?{kind:"sse",liveness:"stale",degradedReason:"heartbeat_stale"}:{kind:"sse",liveness:"live"};case"lost":return{kind:"scraper",liveness:"stale",degradedReason:b.reason};case"unknown":return{kind:"scraper",degradedReason:"not_subscribed"}}}},76835:(a,b,c)=>{c.d(b,{F:()=>d});let d="antigravity"},77904:(a,b,c)=>{c.d(b,{o:()=>d});let d="gemini"},85965:(a,b,c)=>{c.d(b,{cC:()=>u});var d=c(62887),e=c(43252),f=c(72626),g=c(66101),h=c(25071),i=c(49791),j=c(75356),k=c(98211),l=c(18529),m=c(84574),n=c(53163),o=c(85322);let p=(0,f.h)("lib/hooks/sources/opencode/source"),q=d.b0;async function r(a,b,c){let d=a.instanceId??a.cliToolId;if("abstain"===c.kind){p.warn("opencode-verdict-abstained",{worktreeId:a.worktreeId,instanceId:d,decisionId:b.id,consequence:"the agent waits indefinitely; nothing else will unblock it"}),(0,h.oy)(a,b.id,{delivered:!1,reason:"abstained"});return}let e=(0,m.hC)(a);if(null===e){p.warn("opencode-verdict-undeliverable-no-port",{worktreeId:a.worktreeId,instanceId:d,decisionId:b.id}),(0,h.oy)(a,b.id,{delivered:!1,reason:"no-port"});return}if("question"===b.kind){if("answer"!==c.kind){p.info("opencode-question-not-answerable",{worktreeId:a.worktreeId,instanceId:d,decisionId:b.id,verdict:c.kind}),(0,h.oy)(a,b.id,{delivered:!1,reason:"question-needs-answer-verdict"});return}let f=await (0,i.Ei)(e,b.id,c.answers);p.info("opencode-question-replied",{worktreeId:a.worktreeId,instanceId:d,decisionId:b.id,delivered:f}),(0,h.oy)(a,b.id,{delivered:f,reason:f?"question-reply":"question-reply-failed"});return}let f=function(a){switch(a.kind){case"allowOnce":return"once";case"allowAlways":return"always";case"deny":return"reject";case"answer":case"abstain":return null}}(c);if(null===f)return void(0,h.oy)(a,b.id,{delivered:!1,reason:"no-wire-value"});let g=await (0,i.LV)(e,b.id,f,"deny"===c.kind?c.message:void 0);p.info("opencode-permission-replied",{worktreeId:a.worktreeId,instanceId:d,decisionId:b.id,reply:f,delivered:g}),(0,h.oy)(a,b.id,{delivered:g,reason:g?`permission-reply:${f}`:"permission-reply-failed"})}async function s(a){let b=(0,m.hC)(a);if(null===b)return[];let c=Date.now(),[d,e]=await Promise.all([(0,i.Li)(b),(0,i.er)(b)]),f=[];for(let a of d){let b=(0,k.Lu)(a,c);b&&f.push(b)}for(let a of e){let b=(0,k.AB)(a,c);b&&f.push(b)}return f}async function t(a){let b=(0,m.hC)(a);return null===b?null:(0,i.xR)(b)}let u=(0,g.kS)({cliToolId:o.k,noDecision:{kind:"blocks"},capabilities:{supportedEvents:q,configScope:"none",decisionTimeoutSeconds:null,permissionHookPredictsDialog:!1,sessionStartMayArriveLate:!1,permissionReplyReleasesPrompt:!0,eventIdentity:"permission-id",resync:"session-status-poll",transcriptHistory:"push"},mappers:j.lu,nativeEventNameFields:["type"],conversationIdFields:[],extractModel:j.pV,extractEventIdentity:j.oG,parsePermissionRequest:k.FZ,parseQuestion:k.v1,subscribe:(a,b)=>(0,n.bP)(a,b,a=>u.normalizeEvent(a),{resync:u.capabilities.resync}),decide:r,listPending:s,probeActivity:t,liveness:a=>(0,n.lf)(a),prepareLaunch:function({target:a,executablePath:b}){let c={command:b,settingsPath:null,env:{}};if(!(0,e.q)())return c;let d=(0,m.hC)(a);if(null===d)return c;let f=(0,l.Lj)((0,l.Q1)(a));return{command:`${(0,e.ZL)(b)} --port ${d} --hostname ${i.Vc}`+f,settingsPath:null,env:{}}}})},99432:(a,b,c)=>{c.d(b,{l1:()=>z,JD:()=>A,S9:()=>F,dO:()=>C});var d=c(29021),e=c(21820),f=c(33873),g=c(8004),h=c(15194),i=c(87447),j=c(43252),k=c(72626),l=c(66007),m=c(57510);let n=(0,k.h)("lib/hooks/sources/codex/relay-install");function o(a){return(0,f.join)(a,"commandmate","cmate-agent-event.sh")}var p=c(2734);let q=(0,k.h)("lib/hooks/sources/codex/hooks-config"),r="127.0.0.1",s="commandmate:agent-hooks",t="CODEX_HOME",u="CM_AGENT_WORKTREE_ID",v="CM_AGENT_INSTANCE_ID",w="CM_HOOK_URL",x="CM_PERMISSION_HOOK_URL",y={SessionStart:"session_start",UserPromptSubmit:"user_prompt_submit",Stop:"stop",SessionEnd:"session_end"},z="PermissionRequest",A=Object.values(y);function B(){let a=process.env.CM_CODEX_HOOK_TRUST;return"bypass"===a||"never"===a||"auto"===a?a:"auto"}function C(a){if("never"===B())return!1;try{if((0,d.existsSync)((0,f.join)(a,".codex","hooks.json")))return q.info("codex-hooks-trust-withheld-repo-hooks",{worktreePath:a}),!1}catch{return!1}return!0}function D(a={}){let b=(0,f.join)((0,e.homedir)(),".codex");return a.codexHome?(0,g.T)(a.codexHome,b,"CodexHookOptions.codexHome"):(0,g.T)(process.env[t],b,t)}function E(a,b){return`http://${r}:\${CM_PORT:-3000}${a}${b}`}function F(a,b,c={}){let e={command:a,settingsPath:null,env:{}};if(!(0,j.q)())return e;let g=b.instanceId??p.c;if(!(0,l.h6)(b.worktreeId)||!(0,h.n6)(g))return q.warn("codex-hooks-invalid-correlation-key",{worktreeId:b.worktreeId}),e;try{let h=function(a={}){let b=function(a={}){return(0,f.join)(D(a),"hooks.json")}(a);void 0===a.relayScriptPath&&function(a,b){let c=o(a);if(b&&b!==c)try{let a=(0,d.readFileSync)(b,"utf8");if(((0,d.existsSync)(c)?(0,d.readFileSync)(c,"utf8"):null)!==a){(0,d.mkdirSync)((0,f.dirname)(c),{recursive:!0,mode:448});let b=`${c}.tmp`;try{(0,d.writeFileSync)(b,a,{mode:448}),(0,d.renameSync)(b,c)}catch(a){try{(0,d.unlinkSync)(b)}catch{}throw a}n.info("codex-relay-installed",{target:c})}}catch(a){n.warn("codex-relay-install-failed",{target:c,error:a instanceof Error?a.message:String(a)})}(0,d.existsSync)(c)}(D(a),(0,j.Os)());let c=null,e=null;if((0,d.existsSync)(b))try{e=(0,d.readFileSync)(b,"utf8"),c=JSON.parse(e)}catch(a){return q.warn("codex-hooks-config-unreadable",{settingsPath:b,error:a instanceof Error?a.message:String(a)}),null}let g=`${JSON.stringify(function(a,b){let c=(0,m.Qd)(a)?{...a}:{},d=(0,m.Qd)(c.hooks)?c.hooks:{},e={};for(let[a,b]of Object.entries(d))e[a]=Array.isArray(b)?b.map(a=>{if(!(0,m.Qd)(a)||!Array.isArray(a.hooks))return a;let b=a.hooks.filter(a=>!((0,m.Qd)(a)&&"string"==typeof a.command&&a.command.includes(s)));return b.length===a.hooks.length?a:{...a,hooks:b}}).filter(a=>!((0,m.Qd)(a)&&Array.isArray(a.hooks))||a.hooks.length>0):b;for(let[a,c]of Object.entries(b.hooks)){let b=e[a];(void 0===b||Array.isArray(b))&&(e[a]=[...b??[],...c])}return c.hooks=e,c}(c,function(a={}){let b=(b,c)=>({hooks:[{type:"command",command:function(a,b={}){let c=` # ${s}`,e=function(a={}){if(void 0!==a.relayScriptPath)return a.relayScriptPath;var b=D(a);let c=o(b);return(0,d.existsSync)(c)?c:null}(b);if(e)return[(0,j.ZL)(e),"--tool",p.c,"--event",a,"--worktree-id",`"$${u}"`,"--instance-id",`"$${v}"`,"--stdin-json"].join(" ")+c;let f=b.withAuthHeader??(0,j.yc)()?` -H "Authorization: Bearer $${j.XE}"`:"",g=`"\${${w}:-${E(j.jx,"")}}?tool=${p.c}\${${u}:+&worktreeId=$${u}}\${${v}:+&instanceId=$${v}}"`;return`curl -sS -f -m ${j.W6} -X POST -H 'Content-Type: application/json'${f} --data-binary @- ${g} >/dev/null 2>&1 || true${c}`}(b,a),timeout:c}]}),c={};for(let[a,d]of Object.entries(y)){let e="SessionEnd"===a?3:j.W6;c[a]=[b(d,e)]}return c[z]=[{hooks:[{type:"command",command:function(a={}){let b=a.withAuthHeader??(0,j.yc)()?` -H "Authorization: Bearer $${j.XE}"`:"",c=`"\${${x}:-${E(j.WZ,`?tool=${p.c}`)}}"`;return`curl -sS -f -m ${j.sI} -X POST -H 'Content-Type: application/json'${b} --data-binary @- ${c} 2>/dev/null || true # ${s}`}(a),timeout:j.sI}]}],{hooks:c}}(a)),null,2)}
5
5
  `;return e===g||((0,d.mkdirSync)((0,f.dirname)(b),{recursive:!0,mode:448}),(0,d.writeFileSync)(b,g,{mode:384})),b}(c);if(!h)return e;let k=c.port??(0,i.D0)(),l=new URLSearchParams({tool:p.c,worktreeId:b.worktreeId,instanceId:g}),A={[t]:D(c),CM_AGENT_TOOL:p.c,[u]:b.worktreeId,[v]:g,[w]:`http://${r}:${k}${j.jx}`,[x]:`http://${r}:${k}${j.WZ}?${l.toString()}`},C="bypass"===B()?" --dangerously-bypass-hook-trust":"";return{command:`${(0,j.ZL)(a)}${C}`,settingsPath:h,env:A}}catch(a){return q.warn("codex-hooks-config-write-failed",{worktreeId:b.worktreeId,error:a instanceof Error?a.message:String(a)}),e}}}};
@@ -62,8 +62,8 @@
62
62
  VALUES (?, ?, ?)
63
63
  ON CONFLICT(old_id) DO UPDATE SET
64
64
  worktree_id = excluded.worktree_id,
65
- created_at = excluded.created_at`).run(b,c,d))}function f(a,b,c=(0,d.xE)(a)){if(0===b.length)return;let{noDelete:e}=(0,d.ld)(a),g=b.map(()=>"?").join(",");for(let{table:d,column:f}of c)e.has(d)||a.prepare(`DELETE FROM "${d}" WHERE "${f}" IN (${g})`).run(...b)}function g(a,b,c,h=Date.now()){if(b===c||!a.prepare("SELECT 1 FROM worktrees WHERE id = ?").get(b))return;a.pragma("defer_foreign_keys = ON");let i=a.prepare("SELECT 1 FROM worktrees WHERE id = ?").get(c),{noUpdate:j}=(0,d.ld)(a),k=(0,d.xE)(a),l=k.filter(({table:a})=>!j.has(a));if(i){for(let{table:d,column:e}of l)a.prepare(`UPDATE OR IGNORE "${d}" SET "${e}" = ? WHERE "${e}" = ?`).run(c,b);f(a,[b],k),a.prepare("DELETE FROM worktrees WHERE id = ?").run(b),e(a,b,c,h);return}for(let{table:d,column:e}of(a.prepare("UPDATE worktrees SET id = ? WHERE id = ?").run(c,b),l))a.prepare(`UPDATE "${d}" SET "${e}" = ? WHERE "${e}" = ?`).run(c,b);e(a,b,c,h)}},38186:(a,b,c)=>{c.d(b,{AG:()=>e,jg:()=>f,wf:()=>d});let d="terminal",e=new Set(["terminal","chat"]);function f(a){return"string"==typeof a&&e.has(a)}},40277:(a,b,c)=>{c.d(b,{ZN:()=>g,ld:()=>f,xE:()=>e});let d="worktree_id";function e(a){let b=a.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'").all(),c=[],e=new Set,f=(a,b)=>{let d=JSON.stringify([a,b]);e.has(d)||(e.add(d),c.push({table:a,column:b}))};for(let{name:c}of b)if("worktrees"!==c)for(let b of(a.prepare(`PRAGMA table_info("${c}")`).all().some(a=>a.name===d)&&f(c,d),a.prepare(`PRAGMA foreign_key_list("${c}")`).all()))"worktrees"===b.table&&("id"===b.to||null===b.to)&&f(c,b.from);return c}function f(a){let b=a.prepare("SELECT tbl_name, sql FROM sqlite_master WHERE type = 'trigger'").all(),c=new Set,d=new Set;for(let a of b)a.sql&&/\bRAISE\s*\(\s*ABORT/i.test(a.sql)&&(/\bBEFORE\s+UPDATE\b/i.test(a.sql)&&c.add(a.tbl_name),/\bBEFORE\s+DELETE\b/i.test(a.sql)&&d.add(a.tbl_name));return{noUpdate:c,noDelete:d}}function g(a){let{noDelete:b}=f(a);return e(a).filter(({table:a})=>!b.has(a))}},43252:(a,b,c)=>{c.d(b,{D2:()=>G,O$:()=>B,Os:()=>D,W6:()=>p,WZ:()=>o,XE:()=>r,ZL:()=>E,g5:()=>y,iR:()=>z,jx:()=>n,q:()=>v,sI:()=>q,xM:()=>A,yc:()=>w});var d=c(55511),e=c(29021),f=c(21820),g=c(33873),h=c(8004),i=c(87447),j=c(15194),k=c(70997),l=c(13287);let m=(0,c(72626).h)("lib/hooks/hook-settings-generator"),n="/api/hooks/agent-event",o="/api/hooks/permission-request",p=5,q=5,r="CM_AUTH_TOKEN",s=l.k$,t=["Bash(pkill:*)","Bash(killall:*)","Bash(kill -9:*)"],u=(0,g.join)("scripts","hooks","cmate-agent-event.sh");function v(){return"0"!==process.env.CM_AGENT_HOOKS_INJECT}function w(){return!!(process.env[r]||process.env.CM_AUTH_TOKEN_HASH)}function x(a={}){let b=(0,g.join)((0,f.homedir)(),".commandmate","hooks");return a.directory?(0,h.T)(a.directory,b,"HookSettingsOptions.directory"):(0,h.T)(process.env.CM_AGENT_HOOKS_DIR,b,"CM_AGENT_HOOKS_DIR")}function y(a){let b=a.cliToolId??k.v;return a.instanceId??b}function z(a,b={}){let c=a.cliToolId??k.v,e=y(a),f=`${c}-${a.worktreeId}-${e}`.replace(/[^a-zA-Z0-9_-]/g,"_"),h=(0,d.createHash)("sha256").update(JSON.stringify([c,a.worktreeId,e])).digest("hex").slice(0,12);return(0,g.join)(x(b),`${f.slice(0,80)}-${h}.json`)}function A(a,b={}){return C(n,a,b)}function B(a,b={}){return C(o,a,b)}function C(a,b,c){let d=b.cliToolId??k.v,e=c.port??(0,i.D0)(),f=new URLSearchParams({tool:d,worktreeId:b.worktreeId,instanceId:y(b)});return`http://127.0.0.1:${e}${a}?${f.toString()}`}function D(){let a=(0,g.resolve)(process.cwd(),u);return(0,e.existsSync)(a)?a:null}function E(a){return`'${a.replace(/'/g,"'\\''")}'`}function F(a,b,c=p){let d={"Content-Type":"application/json"},e={type:"http",url:a,headers:d,timeout:c};return b&&(d.Authorization=`Bearer $${r}`,e.allowedEnvVars=[r]),e}function G(a,b,c={}){if(!v())return a;if(!(0,j.n6)(y(b)))return m.warn("hook-settings-invalid-instance-id",{worktreeId:b.worktreeId}),a;try{let d=function(a,b={}){let c=z(a,b);return(0,e.mkdirSync)(x(b),{recursive:!0,mode:448}),(0,e.writeFileSync)(c,`${JSON.stringify(function(a,b={}){let c=A(a,b),d=b.withAuthHeader??w(),e=()=>F(c,d);return{hooks:{SessionStart:[{hooks:[{type:"command",command:function(a,b={}){let c=A(a,b),d=b.withAuthHeader??w(),e=void 0===b.relayScriptPath?D():b.relayScriptPath;if(e)return[E(e),"--tool",E(a.cliToolId??k.v),"--event session_start --worktree-id",E(a.worktreeId),"--instance-id",E(y(a)),"--url",E(c),"--stdin-json"].join(" ");let f=d?` -H "Authorization: Bearer $${r}"`:"";return`curl -sS -m ${p} -X POST -H 'Content-Type: application/json'${f} --data-binary @- ${E(c)} >/dev/null 2>&1 || true`}(a,b),timeout:p}]}],UserPromptSubmit:[{hooks:[e()]}],Stop:[{hooks:[e()]}],Notification:[{matcher:"permission_prompt|idle_prompt",hooks:[e()]}],SessionEnd:[{hooks:[e()]}],PreToolUse:[{matcher:s,hooks:[e()]}],PostToolUse:[{matcher:s,hooks:[e()]}],PermissionRequest:[{hooks:[F(B(a,b),d,q)]}]},permissions:{deny:[...t]}}}(a,b),null,2)}
66
- `,{mode:384}),c}(b,c);return`${E(a)} --settings ${E(d)}`}catch(c){return m.warn("hook-settings-write-failed",{worktreeId:b.worktreeId,error:c instanceof Error?c.message:String(c)}),a}}},49791:(a,b,c)=>{c.d(b,{CH:()=>B,CI:()=>N,De:()=>X,EI:()=>J,Ei:()=>F,K1:()=>M,LV:()=>E,Lf:()=>K,Li:()=>v,M:()=>R,M2:()=>p,Mq:()=>W,Ok:()=>t,T0:()=>j,UR:()=>z,Vc:()=>i,_M:()=>Y,_t:()=>l,bg:()=>P,ep:()=>D,er:()=>w,fy:()=>A,iv:()=>S,mY:()=>x,mi:()=>G,oO:()=>Z,pm:()=>U,sc:()=>s,uS:()=>k,wZ:()=>C,xR:()=>y,zu:()=>V});var d=c(55511),e=c(79551),f=c(72626),g=c(99499);let h=(0,f.h)("lib/hooks/sources/opencode/client"),i="127.0.0.1",j=5e3,k="manual",l="application/json",m="text/event-stream";async function n(a,b){return fetch(a,{...b,redirect:k})}function o(a,b){let c=a.headers?.get?.("content-type");return"string"==typeof c&&c.split(";",1)[0]?.trim().toLowerCase()===b}function p(a){return`http://${i}:${a}`}function q(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}async function r(a,b){try{let c=await n(a,{...b,signal:AbortSignal.timeout(j)});if(!c.ok)return null;if(!o(c,l))return h.debug("opencode-request-content-type",{url:a,contentType:c.headers?.get?.("content-type")??null}),null;return await c.json()}catch(b){return h.debug("opencode-request-failed",{url:a,error:b instanceof Error?b.message:String(b)}),null}}async function s(a){let b,c,d=`${p(a)}/global/health`;try{b=await n(d,{signal:AbortSignal.timeout(j)})}catch(b){let a=b instanceof Error?b.message:String(b);return h.debug("opencode-request-failed",{url:d,error:a}),{kind:"refused",error:a}}if(!b.ok)return{kind:"rejected",status:b.status};if(!o(b,l))return{kind:"rejected",status:0};try{c=await b.json()}catch{return{kind:"rejected",status:b.status}}return q(c)&&!0===c.healthy?{kind:"healthy",health:{healthy:!0,version:"string"==typeof c.version?c.version:null}}:{kind:"rejected",status:0}}async function t(a){let b=await s(a);return"healthy"===b.kind?b.health:null}function u(a){return Array.isArray(a)?a.filter(q):[]}async function v(a){return u(await r(`${p(a)}/permission`))}async function w(a){return u(await r(`${p(a)}/question`))}async function x(a){let b=await r(`${p(a)}/session/status`);if(!q(b))return null;let c={},d=0;for(let[e,f]of Object.entries(b)){if(d>=128){h.warn("opencode-session-status-truncated",{port:a,kept:d,total:Object.keys(b).length,limit:128});break}q(f)&&("busy"===f.type||"idle"===f.type)&&(c[e]=f.type,d+=1)}return c}async function y(a){let b=await x(a);return null===b?null:Object.values(b).includes("busy")?"busy":"idle"}async function z(a,b){return!0===await r(`${p(a)}/session/${encodeURIComponent(b)}/abort`,{method:"POST"})}function A(a){return(0,e.pathToFileURL)(a).href}function B(){return`msg_cmate${(0,d.randomBytes)(12).toString("hex")}`}async function C(a,b,c,d,e){let f=`${p(a)}/session/${encodeURIComponent(b)}/prompt_async`;try{let g=await n(f,{method:"POST",headers:{"Content-Type":l},body:JSON.stringify({messageID:c,...function(a){if(!a)return{};let b={};return a.agent&&(b.agent=a.agent),a.model?.providerID&&a.model.modelID&&(b.model={providerID:a.model.providerID,modelID:a.model.modelID}),a.variant&&(b.variant=a.variant),b}(e),parts:d}),signal:AbortSignal.timeout(j)});if(204!==g.status)return h.warn("opencode-prompt-rejected",{port:a,sessionId:b,status:g.status}),!1;return!0}catch(a){return h.debug("opencode-request-failed",{url:f,error:a instanceof Error?a.message:String(a)}),!1}}async function D(a,b,c){let d,e,f=`${p(a)}/session/${encodeURIComponent(b)}/message/${encodeURIComponent(c)}`;try{d=await n(f,{signal:AbortSignal.timeout(j)})}catch(a){return{kind:"unknown",reason:a instanceof Error?a.message:String(a)}}if(404===d.status)return{kind:"missing"};if(!d.ok)return{kind:"unknown",reason:`status ${d.status}`};if(!o(d,l))return{kind:"unknown",reason:"content-type"};try{e=await d.json()}catch{return{kind:"unknown",reason:"body"}}if(!q(e))return{kind:"unknown",reason:"body"};let g=q(e.info)?e.info:null;return null===g||"user"!==g.role?{kind:"unknown",reason:"role"}:{kind:"found",texts:(Array.isArray(e.parts)?e.parts:[]).filter(q).filter(a=>"text"===a.type&&"string"==typeof a.text).map(a=>a.text)}}async function E(a,b,c,d){let e={reply:c};return d&&(e.message=d),null!==await r(`${p(a)}/permission/${encodeURIComponent(b)}/reply`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function F(a,b,c){return null!==await r(`${p(a)}/question/${encodeURIComponent(b)}/reply`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({answers:c})})}async function G(a,b){let c=await n(`${p(a)}/event`,{signal:b,headers:{Accept:m}});if(!c.ok||!c.body)throw Error(`opencode /event responded ${c.status}`);if(!o(c,m))throw Error(`opencode /event answered ${c.headers?.get?.("content-type")??"no content-type"}`);return H(a,c.body.getReader())}async function*H(a,b){let c=new TextDecoder,d=function(){let a="",b=[],c=0,d=!1,e=0,f=[],g=()=>{b=[],c=0,d=!0,e+=1},h=()=>{0!==b.length&&(f.push(b.join("\n")),b=[],c=0)},i=a=>{let e=a.endsWith("\r")?a.slice(0,-1):a;if(""===e)return void(d?d=!1:h());if(!d&&!e.startsWith(":")&&e.startsWith("data:")){let a=e.slice(5).replace(/^ /,"");if(c+a.length>262144)return void g();b.push(a),c+=a.length}};return{push(b){let c=(a+=b).indexOf("\n");for(;c>=0;)i(a.slice(0,c)),c=(a=a.slice(c+1)).indexOf("\n");return a.length>262144&&(a="",g()),f.splice(0,f.length)},flush:()=>(""!==a&&(i(a),a=""),d?d=!1:h(),f.splice(0,f.length)),oversizedFrames:()=>e}}(),e=0,f=()=>{let b=d.oversizedFrames();b!==e&&(h.warn("opencode-sse-frame-oversized",{port:a,dropped:b,newlyDropped:b-e,limitChars:262144}),e=b)};try{for(;;){let{done:a,value:e}=await b.read();if(a)break;let g=c.decode(e,{stream:!0});for(let a of d.push(g)){let b=I(a);b&&(yield b)}f()}for(let a of d.flush()){let b=I(a);b&&(yield b)}f()}finally{await b.cancel().catch(()=>{})}}function I(a){try{let b=JSON.parse(a);return q(b)?b:null}catch{return null}}async function J(a,b){let c=`${p(a)}/session/${encodeURIComponent(b)}/message`,d=await r(c);if(!Array.isArray(d))return null;let e=d.filter(q);return e.length>500?e.slice(e.length-500):e}async function K(a,b,c){return function(a,b,c){if(!q(a))return null;for(let d of Array.isArray(a.providers)?a.providers:[]){if(!q(d)||d.id!==b)continue;let a=q(d.models)?d.models:null;if(!a)break;let e=a[c];if(!q(e))break;let f=q(e.limit)?e.limit:null;if(!f)break;let g=f.context;if("number"!=typeof g||!Number.isFinite(g)||g<=0)break;return g}return null}(await L(a),b,c)}async function L(a){return r(`${p(a)}/config/providers`)}async function M(a){return function(a){if(!q(a))return[];let b=Array.isArray(a.providers)?a.providers:[],c=[];for(let a of b){if(!q(a))continue;let b="string"==typeof a.id?a.id:null;if(!b)continue;let d=[];for(let[b,c]of Object.entries(q(a.models)?a.models:{})){if(!q(c))continue;let a=q(c.variants)?Object.keys(c.variants):[];d.push({id:b,name:"string"==typeof c.name&&c.name.length>0?c.name:b,variants:a.sort()})}d.sort((a,b)=>a.id.localeCompare(b.id)),c.push({id:b,name:"string"==typeof a.name&&a.name.length>0?a.name:b,models:d})}return c.sort((a,b)=>a.id.localeCompare(b.id)),c}(await L(a))}async function N(a){var b=await r(`${p(a)}/agent`);if(!Array.isArray(b))return[];let c=[];for(let a of b){if(!q(a))continue;let b="string"==typeof a.name?a.name:null;b&&!0!==a.hidden&&c.push({name:b,mode:"string"==typeof a.mode?a.mode:"",description:"string"==typeof a.description?a.description:null})}return c}function O(a,b){let c=a[b];return"number"==typeof c&&Number.isFinite(c)&&c>0?c:0}async function P(a,b){let c=`${p(a)}/session/${encodeURIComponent(b)}/message?limit=4`,d=await r(c);if(!Array.isArray(d))return null;for(let a=d.length-1;a>=0;a-=1){let b=d[a];if(!q(b))continue;let c=q(b.info)?b.info:null;if(!c||"assistant"!==c.role)continue;let e=q(c.tokens)?c.tokens:null;if(!e)continue;let f=O(e,"output");if(f<=0)continue;let g=q(e.cache)?e.cache:{};return O(e,"input")+f+O(e,"reasoning")+O(g,"read")+O(g,"write")}return null}let Q=["added","deleted","modified"];function R(a){if(!Array.isArray(a))return[];let b=[];for(let c of a){if(!q(c))continue;let a="string"==typeof c.patch?c.patch:null;if(b.push({file:"string"==typeof c.file&&c.file.length>0?c.file:null,patch:null===a?null:a.slice(0,65536),additions:"number"==typeof c.additions&&Number.isFinite(c.additions)?c.additions:0,deletions:"number"==typeof c.deletions&&Number.isFinite(c.deletions)?c.deletions:0,status:"string"==typeof c.status&&Q.includes(c.status)?c.status:null}),b.length>=200)break}return b}async function S(a,b,c){let d=`${p(a)}/session/${encodeURIComponent(b)}/diff?messageID=${encodeURIComponent(c)}`,e=await r(d);return Array.isArray(e)?R(e):null}async function T(a,b){let c;try{c=await n(a,{method:"POST",headers:{"Content-Type":l},body:JSON.stringify(b),signal:AbortSignal.timeout(j)})}catch(b){return h.debug("opencode-request-failed",{url:a,error:b instanceof Error?b.message:String(b)}),{outcome:{kind:"unreachable"}}}if(409===c.status)return{outcome:{kind:"busy"}};if(!c.ok)return h.warn("opencode-revert-rejected",{url:a,status:c.status}),{outcome:{kind:"rejected",status:c.status}};if(!o(c,l))return{outcome:{kind:"unreachable"}};try{return{revertedTo:function(a){if(!q(a))return null;let b=q(a.revert)?a.revert:null;return b&&"string"==typeof b.messageID&&b.messageID.length>0?b.messageID:null}(await c.json())}}catch{return{outcome:{kind:"unreachable"}}}}async function U(a,b,c){let d=`${p(a)}/session/${encodeURIComponent(b)}/revert`,e=await T(d,{messageID:c});return"outcome"in e?e.outcome:e.revertedTo===c?{kind:"reverted",messageId:c}:{kind:"no_op"}}async function V(a,b){let c=`${p(a)}/session/${encodeURIComponent(b)}/unrevert`,d=await T(c,{});return"outcome"in d?d.outcome:null===d.revertedTo?{kind:"restored"}:{kind:"no_op"}}async function W(a){let b=await r(`${p(a)}/config`);return(0,g.ac)(b)}async function X(a,b){let c=`${p(a)}/session/${encodeURIComponent(b)}/share`;try{let d=await n(c,{method:"POST",signal:AbortSignal.timeout(2e4)});if(404===d.status)return{kind:"not-found"};if(!d.ok)return h.warn("opencode-share-refused",{port:a,sessionId:b,status:d.status}),{kind:"refused",status:d.status};if(!o(d,l))return{kind:"failed",reason:"response was not JSON"};let e=await d.json(),f=(0,g.gn)(e);if(null===f)return h.warn("opencode-share-no-url",{port:a,sessionId:b}),{kind:"failed",reason:"server returned no share URL"};return h.info("opencode-share-created",{port:a,sessionId:b}),{kind:"shared",url:f}}catch(a){return{kind:"failed",reason:a instanceof Error?a.message:String(a)}}}async function Y(a,b){let c=`${p(a)}/session/${encodeURIComponent(b)}/share`;try{let d=await n(c,{method:"DELETE",signal:AbortSignal.timeout(2e4)});if(!d.ok)return h.warn("opencode-unshare-refused",{port:a,sessionId:b,status:d.status}),!1;return h.info("opencode-share-removed",{port:a,sessionId:b}),!0}catch(c){return h.warn("opencode-unshare-failed",{port:a,sessionId:b,error:c instanceof Error?c.message:String(c)}),!1}}async function Z(a,b){let c=await r(`${p(a)}/session/${encodeURIComponent(b)}`);return(0,g.gn)(c)}},52201:(a,b,c)=>{c.d(b,{Lt:()=>h,MJ:()=>l,Wj:()=>f,eG:()=>j,eu:()=>e,fJ:()=>g,nW:()=>k});var d=c(15194);let e=2,f=6,g=["claude","codex","antigravity"];function h(a){return a.length<e||a.length>f?{valid:!1,error:`Must be ${e}-${f} elements`}:a.every(a=>"string"==typeof a&&d.XH.includes(a))?new Set(a).size!==a.length?{valid:!1,error:"Duplicate tool IDs not allowed"}:{valid:!0,value:a}:{valid:!1,error:"Invalid CLI tool ID"}}let i=["worktree","repo","appSettings"];function j(a={}){for(let b of i){let c=a[b];if(null==c)continue;let d=h([...c]);if(d.valid)return d.value}return g}function k(a,b,c){let d=null;if(a)try{let b=JSON.parse(a);Array.isArray(b)&&(d=b)}catch{}return j({worktree:d,repo:c,appSettings:b})}function l(a){return!Array.isArray(a)||a.length<e||a.length>f?{valid:!1,error:`selected_agents must be an array of ${e}-${f} elements`}:h(a)}},52660:(a,b,c)=>{c.r(b),c.d(b,{ACTIVE_FILTER:()=>f,UNKEYED_USER_MESSAGE_LIMIT:()=>n,clearLastUserMessage:()=>w,createMessage:()=>i,deleteAllMessages:()=>r,deleteMessageById:()=>s,deleteMessagesByCliTool:()=>t,deleteMessagesByInstance:()=>u,findMessageByRequestId:()=>m,findUnkeyedUserMessages:()=>o,getLastAssistantMessageAt:()=>h,getLastMessage:()=>q,getLastUserMessage:()=>l,getMessageById:()=>z,getMessages:()=>k,getMessagesByDateRange:()=>y,markPendingPromptsAsAnswered:()=>B,recomputeLastUserMessage:()=>x,recordAnsweredPrompt:()=>C,setMessageRequestId:()=>p,updateLastUserMessage:()=>v,updateMessageContent:()=>j,updatePromptData:()=>A});var d=c(55511);let e=(0,c(72626).h)("chat-db"),f="AND archived = 0";function g(a){let b=a.cli_tool_id??"claude";return{id:a.id,worktreeId:a.worktree_id,role:a.role,content:a.content,summary:a.summary||void 0,timestamp:new Date(a.timestamp),logFileName:a.log_file_name||void 0,requestId:a.request_id||void 0,messageType:a.message_type||"normal",promptData:a.prompt_data?JSON.parse(a.prompt_data):void 0,cliToolId:b,instanceId:a.instance_id??b,archived:1===a.archived}}function h(a,b){let c=a.prepare(`
65
+ created_at = excluded.created_at`).run(b,c,d))}function f(a,b,c=(0,d.xE)(a)){if(0===b.length)return;let{noDelete:e}=(0,d.ld)(a),g=b.map(()=>"?").join(",");for(let{table:d,column:f}of c)e.has(d)||a.prepare(`DELETE FROM "${d}" WHERE "${f}" IN (${g})`).run(...b)}function g(a,b,c,h=Date.now()){if(b===c||!a.prepare("SELECT 1 FROM worktrees WHERE id = ?").get(b))return;a.pragma("defer_foreign_keys = ON");let i=a.prepare("SELECT 1 FROM worktrees WHERE id = ?").get(c),{noUpdate:j}=(0,d.ld)(a),k=(0,d.xE)(a),l=k.filter(({table:a})=>!j.has(a));if(i){for(let{table:d,column:e}of l)a.prepare(`UPDATE OR IGNORE "${d}" SET "${e}" = ? WHERE "${e}" = ?`).run(c,b);f(a,[b],k),a.prepare("DELETE FROM worktrees WHERE id = ?").run(b),e(a,b,c,h);return}for(let{table:d,column:e}of(a.prepare("UPDATE worktrees SET id = ? WHERE id = ?").run(c,b),l))a.prepare(`UPDATE "${d}" SET "${e}" = ? WHERE "${e}" = ?`).run(c,b);e(a,b,c,h)}},34257:(a,b,c)=>{c.d(b,{Bo:()=>h,_P:()=>i,gj:()=>e});var d=c(57510);let e="PostModelSwitch",f="model_switch",g="to_model",h=(a,b)=>a===e?{event:"notification",detail:function(a){return null===a?f:`${f}:${a}`}((0,d.O2)(b,g))}:null;function i(a){return(0,d.O2)(a,"hook_event_name")!==e?null:(0,d.O2)(a,g)}},38186:(a,b,c)=>{c.d(b,{AG:()=>e,jg:()=>f,wf:()=>d});let d="terminal",e=new Set(["terminal","chat"]);function f(a){return"string"==typeof a&&e.has(a)}},40277:(a,b,c)=>{c.d(b,{ZN:()=>g,ld:()=>f,xE:()=>e});let d="worktree_id";function e(a){let b=a.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'").all(),c=[],e=new Set,f=(a,b)=>{let d=JSON.stringify([a,b]);e.has(d)||(e.add(d),c.push({table:a,column:b}))};for(let{name:c}of b)if("worktrees"!==c)for(let b of(a.prepare(`PRAGMA table_info("${c}")`).all().some(a=>a.name===d)&&f(c,d),a.prepare(`PRAGMA foreign_key_list("${c}")`).all()))"worktrees"===b.table&&("id"===b.to||null===b.to)&&f(c,b.from);return c}function f(a){let b=a.prepare("SELECT tbl_name, sql FROM sqlite_master WHERE type = 'trigger'").all(),c=new Set,d=new Set;for(let a of b)a.sql&&/\bRAISE\s*\(\s*ABORT/i.test(a.sql)&&(/\bBEFORE\s+UPDATE\b/i.test(a.sql)&&c.add(a.tbl_name),/\bBEFORE\s+DELETE\b/i.test(a.sql)&&d.add(a.tbl_name));return{noUpdate:c,noDelete:d}}function g(a){let{noDelete:b}=f(a);return e(a).filter(({table:a})=>!b.has(a))}},43252:(a,b,c)=>{c.d(b,{D2:()=>H,O$:()=>C,Os:()=>E,W6:()=>q,WZ:()=>p,XE:()=>s,ZL:()=>F,g5:()=>z,iR:()=>A,jx:()=>o,q:()=>w,sI:()=>r,xM:()=>B,yc:()=>x});var d=c(55511),e=c(29021),f=c(21820),g=c(33873),h=c(8004),i=c(87447),j=c(15194),k=c(34257),l=c(70997),m=c(13287);let n=(0,c(72626).h)("lib/hooks/hook-settings-generator"),o="/api/hooks/agent-event",p="/api/hooks/permission-request",q=5,r=5,s="CM_AUTH_TOKEN",t=m.k$,u=["Bash(pkill:*)","Bash(killall:*)","Bash(kill -9:*)"],v=(0,g.join)("scripts","hooks","cmate-agent-event.sh");function w(){return"0"!==process.env.CM_AGENT_HOOKS_INJECT}function x(){return!!(process.env[s]||process.env.CM_AUTH_TOKEN_HASH)}function y(a={}){let b=(0,g.join)((0,f.homedir)(),".commandmate","hooks");return a.directory?(0,h.T)(a.directory,b,"HookSettingsOptions.directory"):(0,h.T)(process.env.CM_AGENT_HOOKS_DIR,b,"CM_AGENT_HOOKS_DIR")}function z(a){let b=a.cliToolId??l.v;return a.instanceId??b}function A(a,b={}){let c=a.cliToolId??l.v,e=z(a),f=`${c}-${a.worktreeId}-${e}`.replace(/[^a-zA-Z0-9_-]/g,"_"),h=(0,d.createHash)("sha256").update(JSON.stringify([c,a.worktreeId,e])).digest("hex").slice(0,12);return(0,g.join)(y(b),`${f.slice(0,80)}-${h}.json`)}function B(a,b={}){return D(o,a,b)}function C(a,b={}){return D(p,a,b)}function D(a,b,c){let d=b.cliToolId??l.v,e=c.port??(0,i.D0)(),f=new URLSearchParams({tool:d,worktreeId:b.worktreeId,instanceId:z(b)});return`http://127.0.0.1:${e}${a}?${f.toString()}`}function E(){let a=(0,g.resolve)(process.cwd(),v);return(0,e.existsSync)(a)?a:null}function F(a){return`'${a.replace(/'/g,"'\\''")}'`}function G(a,b,c=q){let d={"Content-Type":"application/json"},e={type:"http",url:a,headers:d,timeout:c};return b&&(d.Authorization=`Bearer $${s}`,e.allowedEnvVars=[s]),e}function H(a,b,c={}){if(!w())return a;if(!(0,j.n6)(z(b)))return n.warn("hook-settings-invalid-instance-id",{worktreeId:b.worktreeId}),a;try{let d=function(a,b={}){let c=A(a,b);return(0,e.mkdirSync)(y(b),{recursive:!0,mode:448}),(0,e.writeFileSync)(c,`${JSON.stringify(function(a,b={}){let c=B(a,b),d=b.withAuthHeader??x(),e=()=>G(c,d);return{hooks:{SessionStart:[{hooks:[{type:"command",command:function(a,b={}){let c=B(a,b),d=b.withAuthHeader??x(),e=void 0===b.relayScriptPath?E():b.relayScriptPath;if(e)return[F(e),"--tool",F(a.cliToolId??l.v),"--event session_start --worktree-id",F(a.worktreeId),"--instance-id",F(z(a)),"--url",F(c),"--stdin-json"].join(" ");let f=d?` -H "Authorization: Bearer $${s}"`:"";return`curl -sS -m ${q} -X POST -H 'Content-Type: application/json'${f} --data-binary @- ${F(c)} >/dev/null 2>&1 || true`}(a,b),timeout:q}]}],UserPromptSubmit:[{hooks:[e()]}],Stop:[{hooks:[e()]}],Notification:[{matcher:"permission_prompt|idle_prompt",hooks:[e()]}],SessionEnd:[{hooks:[e()]}],PreToolUse:[{matcher:t,hooks:[e()]}],PostToolUse:[{matcher:t,hooks:[e()]}],[k.gj]:[{hooks:[e()]}],PermissionRequest:[{hooks:[G(C(a,b),d,r)]}]},permissions:{deny:[...u]}}}(a,b),null,2)}
66
+ `,{mode:384}),c}(b,c);return`${F(a)} --settings ${F(d)}`}catch(c){return n.warn("hook-settings-write-failed",{worktreeId:b.worktreeId,error:c instanceof Error?c.message:String(c)}),a}}},49791:(a,b,c)=>{c.d(b,{CH:()=>B,CI:()=>N,De:()=>X,EI:()=>J,Ei:()=>F,K1:()=>M,LV:()=>E,Lf:()=>K,Li:()=>v,M:()=>R,M2:()=>p,Mq:()=>W,Ok:()=>t,T0:()=>j,UR:()=>z,Vc:()=>i,_M:()=>Y,_t:()=>l,bg:()=>P,ep:()=>D,er:()=>w,fy:()=>A,iv:()=>S,mY:()=>x,mi:()=>G,oO:()=>Z,pm:()=>U,sc:()=>s,uS:()=>k,wZ:()=>C,xR:()=>y,zu:()=>V});var d=c(55511),e=c(79551),f=c(72626),g=c(99499);let h=(0,f.h)("lib/hooks/sources/opencode/client"),i="127.0.0.1",j=5e3,k="manual",l="application/json",m="text/event-stream";async function n(a,b){return fetch(a,{...b,redirect:k})}function o(a,b){let c=a.headers?.get?.("content-type");return"string"==typeof c&&c.split(";",1)[0]?.trim().toLowerCase()===b}function p(a){return`http://${i}:${a}`}function q(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}async function r(a,b){try{let c=await n(a,{...b,signal:AbortSignal.timeout(j)});if(!c.ok)return null;if(!o(c,l))return h.debug("opencode-request-content-type",{url:a,contentType:c.headers?.get?.("content-type")??null}),null;return await c.json()}catch(b){return h.debug("opencode-request-failed",{url:a,error:b instanceof Error?b.message:String(b)}),null}}async function s(a){let b,c,d=`${p(a)}/global/health`;try{b=await n(d,{signal:AbortSignal.timeout(j)})}catch(b){let a=b instanceof Error?b.message:String(b);return h.debug("opencode-request-failed",{url:d,error:a}),{kind:"refused",error:a}}if(!b.ok)return{kind:"rejected",status:b.status};if(!o(b,l))return{kind:"rejected",status:0};try{c=await b.json()}catch{return{kind:"rejected",status:b.status}}return q(c)&&!0===c.healthy?{kind:"healthy",health:{healthy:!0,version:"string"==typeof c.version?c.version:null}}:{kind:"rejected",status:0}}async function t(a){let b=await s(a);return"healthy"===b.kind?b.health:null}function u(a){return Array.isArray(a)?a.filter(q):[]}async function v(a){return u(await r(`${p(a)}/permission`))}async function w(a){return u(await r(`${p(a)}/question`))}async function x(a){let b=await r(`${p(a)}/session/status`);if(!q(b))return null;let c={},d=0;for(let[e,f]of Object.entries(b)){if(d>=128){h.warn("opencode-session-status-truncated",{port:a,kept:d,total:Object.keys(b).length,limit:128});break}q(f)&&("busy"===f.type||"idle"===f.type)&&(c[e]=f.type,d+=1)}return c}async function y(a){let b=await x(a);return null===b?null:Object.values(b).includes("busy")?"busy":"idle"}async function z(a,b){return!0===await r(`${p(a)}/session/${encodeURIComponent(b)}/abort`,{method:"POST"})}function A(a){return(0,e.pathToFileURL)(a).href}function B(){return`msg_cmate${(0,d.randomBytes)(12).toString("hex")}`}async function C(a,b,c,d,e){let f=`${p(a)}/session/${encodeURIComponent(b)}/prompt_async`;try{let g=await n(f,{method:"POST",headers:{"Content-Type":l},body:JSON.stringify({messageID:c,...function(a){if(!a)return{};let b={};return a.agent&&(b.agent=a.agent),a.model?.providerID&&a.model.modelID&&(b.model={providerID:a.model.providerID,modelID:a.model.modelID}),a.variant&&(b.variant=a.variant),b}(e),parts:d}),signal:AbortSignal.timeout(j)});if(204!==g.status)return h.warn("opencode-prompt-rejected",{port:a,sessionId:b,status:g.status}),!1;return!0}catch(a){return h.debug("opencode-request-failed",{url:f,error:a instanceof Error?a.message:String(a)}),!1}}async function D(a,b,c){let d,e,f=`${p(a)}/session/${encodeURIComponent(b)}/message/${encodeURIComponent(c)}`;try{d=await n(f,{signal:AbortSignal.timeout(j)})}catch(a){return{kind:"unknown",reason:a instanceof Error?a.message:String(a)}}if(404===d.status)return{kind:"missing"};if(!d.ok)return{kind:"unknown",reason:`status ${d.status}`};if(!o(d,l))return{kind:"unknown",reason:"content-type"};try{e=await d.json()}catch{return{kind:"unknown",reason:"body"}}if(!q(e))return{kind:"unknown",reason:"body"};let g=q(e.info)?e.info:null;return null===g||"user"!==g.role?{kind:"unknown",reason:"role"}:{kind:"found",texts:(Array.isArray(e.parts)?e.parts:[]).filter(q).filter(a=>"text"===a.type&&"string"==typeof a.text).map(a=>a.text)}}async function E(a,b,c,d){let e={reply:c};return d&&(e.message=d),null!==await r(`${p(a)}/permission/${encodeURIComponent(b)}/reply`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function F(a,b,c){return null!==await r(`${p(a)}/question/${encodeURIComponent(b)}/reply`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({answers:c})})}async function G(a,b){let c=await n(`${p(a)}/event`,{signal:b,headers:{Accept:m}});if(!c.ok||!c.body)throw Error(`opencode /event responded ${c.status}`);if(!o(c,m))throw Error(`opencode /event answered ${c.headers?.get?.("content-type")??"no content-type"}`);return H(a,c.body.getReader())}async function*H(a,b){let c=new TextDecoder,d=function(){let a="",b=[],c=0,d=!1,e=0,f=[],g=()=>{b=[],c=0,d=!0,e+=1},h=()=>{0!==b.length&&(f.push(b.join("\n")),b=[],c=0)},i=a=>{let e=a.endsWith("\r")?a.slice(0,-1):a;if(""===e)return void(d?d=!1:h());if(!d&&!e.startsWith(":")&&e.startsWith("data:")){let a=e.slice(5).replace(/^ /,"");if(c+a.length>262144)return void g();b.push(a),c+=a.length}};return{push(b){let c=(a+=b).indexOf("\n");for(;c>=0;)i(a.slice(0,c)),c=(a=a.slice(c+1)).indexOf("\n");return a.length>262144&&(a="",g()),f.splice(0,f.length)},flush:()=>(""!==a&&(i(a),a=""),d?d=!1:h(),f.splice(0,f.length)),oversizedFrames:()=>e}}(),e=0,f=()=>{let b=d.oversizedFrames();b!==e&&(h.warn("opencode-sse-frame-oversized",{port:a,dropped:b,newlyDropped:b-e,limitChars:262144}),e=b)};try{for(;;){let{done:a,value:e}=await b.read();if(a)break;let g=c.decode(e,{stream:!0});for(let a of d.push(g)){let b=I(a);b&&(yield b)}f()}for(let a of d.flush()){let b=I(a);b&&(yield b)}f()}finally{await b.cancel().catch(()=>{})}}function I(a){try{let b=JSON.parse(a);return q(b)?b:null}catch{return null}}async function J(a,b){let c=`${p(a)}/session/${encodeURIComponent(b)}/message`,d=await r(c);if(!Array.isArray(d))return null;let e=d.filter(q);return e.length>500?e.slice(e.length-500):e}async function K(a,b,c){return function(a,b,c){if(!q(a))return null;for(let d of Array.isArray(a.providers)?a.providers:[]){if(!q(d)||d.id!==b)continue;let a=q(d.models)?d.models:null;if(!a)break;let e=a[c];if(!q(e))break;let f=q(e.limit)?e.limit:null;if(!f)break;let g=f.context;if("number"!=typeof g||!Number.isFinite(g)||g<=0)break;return g}return null}(await L(a),b,c)}async function L(a){return r(`${p(a)}/config/providers`)}async function M(a){return function(a){if(!q(a))return[];let b=Array.isArray(a.providers)?a.providers:[],c=[];for(let a of b){if(!q(a))continue;let b="string"==typeof a.id?a.id:null;if(!b)continue;let d=[];for(let[b,c]of Object.entries(q(a.models)?a.models:{})){if(!q(c))continue;let a=q(c.variants)?Object.keys(c.variants):[];d.push({id:b,name:"string"==typeof c.name&&c.name.length>0?c.name:b,variants:a.sort()})}d.sort((a,b)=>a.id.localeCompare(b.id)),c.push({id:b,name:"string"==typeof a.name&&a.name.length>0?a.name:b,models:d})}return c.sort((a,b)=>a.id.localeCompare(b.id)),c}(await L(a))}async function N(a){var b=await r(`${p(a)}/agent`);if(!Array.isArray(b))return[];let c=[];for(let a of b){if(!q(a))continue;let b="string"==typeof a.name?a.name:null;b&&!0!==a.hidden&&c.push({name:b,mode:"string"==typeof a.mode?a.mode:"",description:"string"==typeof a.description?a.description:null})}return c}function O(a,b){let c=a[b];return"number"==typeof c&&Number.isFinite(c)&&c>0?c:0}async function P(a,b){let c=`${p(a)}/session/${encodeURIComponent(b)}/message?limit=4`,d=await r(c);if(!Array.isArray(d))return null;for(let a=d.length-1;a>=0;a-=1){let b=d[a];if(!q(b))continue;let c=q(b.info)?b.info:null;if(!c||"assistant"!==c.role)continue;let e=q(c.tokens)?c.tokens:null;if(!e)continue;let f=O(e,"output");if(f<=0)continue;let g=q(e.cache)?e.cache:{};return O(e,"input")+f+O(e,"reasoning")+O(g,"read")+O(g,"write")}return null}let Q=["added","deleted","modified"];function R(a){if(!Array.isArray(a))return[];let b=[];for(let c of a){if(!q(c))continue;let a="string"==typeof c.patch?c.patch:null;if(b.push({file:"string"==typeof c.file&&c.file.length>0?c.file:null,patch:null===a?null:a.slice(0,65536),additions:"number"==typeof c.additions&&Number.isFinite(c.additions)?c.additions:0,deletions:"number"==typeof c.deletions&&Number.isFinite(c.deletions)?c.deletions:0,status:"string"==typeof c.status&&Q.includes(c.status)?c.status:null}),b.length>=200)break}return b}async function S(a,b,c){let d=`${p(a)}/session/${encodeURIComponent(b)}/diff?messageID=${encodeURIComponent(c)}`,e=await r(d);return Array.isArray(e)?R(e):null}async function T(a,b){let c;try{c=await n(a,{method:"POST",headers:{"Content-Type":l},body:JSON.stringify(b),signal:AbortSignal.timeout(j)})}catch(b){return h.debug("opencode-request-failed",{url:a,error:b instanceof Error?b.message:String(b)}),{outcome:{kind:"unreachable"}}}if(409===c.status)return{outcome:{kind:"busy"}};if(!c.ok)return h.warn("opencode-revert-rejected",{url:a,status:c.status}),{outcome:{kind:"rejected",status:c.status}};if(!o(c,l))return{outcome:{kind:"unreachable"}};try{return{revertedTo:function(a){if(!q(a))return null;let b=q(a.revert)?a.revert:null;return b&&"string"==typeof b.messageID&&b.messageID.length>0?b.messageID:null}(await c.json())}}catch{return{outcome:{kind:"unreachable"}}}}async function U(a,b,c){let d=`${p(a)}/session/${encodeURIComponent(b)}/revert`,e=await T(d,{messageID:c});return"outcome"in e?e.outcome:e.revertedTo===c?{kind:"reverted",messageId:c}:{kind:"no_op"}}async function V(a,b){let c=`${p(a)}/session/${encodeURIComponent(b)}/unrevert`,d=await T(c,{});return"outcome"in d?d.outcome:null===d.revertedTo?{kind:"restored"}:{kind:"no_op"}}async function W(a){let b=await r(`${p(a)}/config`);return(0,g.ac)(b)}async function X(a,b){let c=`${p(a)}/session/${encodeURIComponent(b)}/share`;try{let d=await n(c,{method:"POST",signal:AbortSignal.timeout(2e4)});if(404===d.status)return{kind:"not-found"};if(!d.ok)return h.warn("opencode-share-refused",{port:a,sessionId:b,status:d.status}),{kind:"refused",status:d.status};if(!o(d,l))return{kind:"failed",reason:"response was not JSON"};let e=await d.json(),f=(0,g.gn)(e);if(null===f)return h.warn("opencode-share-no-url",{port:a,sessionId:b}),{kind:"failed",reason:"server returned no share URL"};return h.info("opencode-share-created",{port:a,sessionId:b}),{kind:"shared",url:f}}catch(a){return{kind:"failed",reason:a instanceof Error?a.message:String(a)}}}async function Y(a,b){let c=`${p(a)}/session/${encodeURIComponent(b)}/share`;try{let d=await n(c,{method:"DELETE",signal:AbortSignal.timeout(2e4)});if(!d.ok)return h.warn("opencode-unshare-refused",{port:a,sessionId:b,status:d.status}),!1;return h.info("opencode-share-removed",{port:a,sessionId:b}),!0}catch(c){return h.warn("opencode-unshare-failed",{port:a,sessionId:b,error:c instanceof Error?c.message:String(c)}),!1}}async function Z(a,b){let c=await r(`${p(a)}/session/${encodeURIComponent(b)}`);return(0,g.gn)(c)}},52201:(a,b,c)=>{c.d(b,{Lt:()=>h,MJ:()=>l,Wj:()=>f,eG:()=>j,eu:()=>e,fJ:()=>g,nW:()=>k});var d=c(15194);let e=2,f=6,g=["claude","codex","antigravity"];function h(a){return a.length<e||a.length>f?{valid:!1,error:`Must be ${e}-${f} elements`}:a.every(a=>"string"==typeof a&&d.XH.includes(a))?new Set(a).size!==a.length?{valid:!1,error:"Duplicate tool IDs not allowed"}:{valid:!0,value:a}:{valid:!1,error:"Invalid CLI tool ID"}}let i=["worktree","repo","appSettings"];function j(a={}){for(let b of i){let c=a[b];if(null==c)continue;let d=h([...c]);if(d.valid)return d.value}return g}function k(a,b,c){let d=null;if(a)try{let b=JSON.parse(a);Array.isArray(b)&&(d=b)}catch{}return j({worktree:d,repo:c,appSettings:b})}function l(a){return!Array.isArray(a)||a.length<e||a.length>f?{valid:!1,error:`selected_agents must be an array of ${e}-${f} elements`}:h(a)}},52660:(a,b,c)=>{c.r(b),c.d(b,{ACTIVE_FILTER:()=>f,MODEL_CHANGE_REQUEST_ID_PREFIX:()=>D,UNKEYED_USER_MESSAGE_LIMIT:()=>n,clearLastUserMessage:()=>w,createMessage:()=>i,createModelChangeMessage:()=>E,deleteAllMessages:()=>r,deleteMessageById:()=>s,deleteMessagesByCliTool:()=>t,deleteMessagesByInstance:()=>u,findMessageByRequestId:()=>m,findUnkeyedUserMessages:()=>o,getLastAssistantMessageAt:()=>h,getLastMessage:()=>q,getLastUserMessage:()=>l,getMessageById:()=>z,getMessages:()=>k,getMessagesByDateRange:()=>y,markPendingPromptsAsAnswered:()=>B,recomputeLastUserMessage:()=>x,recordAnsweredPrompt:()=>C,setMessageRequestId:()=>p,updateLastUserMessage:()=>v,updateMessageContent:()=>j,updatePromptData:()=>A});var d=c(55511);let e=(0,c(72626).h)("chat-db"),f="AND archived = 0";function g(a){let b=a.cli_tool_id??"claude";return{id:a.id,worktreeId:a.worktree_id,role:a.role,content:a.content,summary:a.summary||void 0,timestamp:new Date(a.timestamp),logFileName:a.log_file_name||void 0,requestId:a.request_id||void 0,messageType:a.message_type||"normal",promptData:a.prompt_data?JSON.parse(a.prompt_data):void 0,cliToolId:b,instanceId:a.instance_id??b,archived:1===a.archived}}function h(a,b){let c=a.prepare(`
67
67
  SELECT MAX(timestamp) as last_assistant_message_at
68
68
  FROM chat_messages
69
69
  WHERE worktree_id = ? AND role = 'assistant' ${f}
@@ -176,7 +176,7 @@
176
176
  AND json_extract(prompt_data, '$.status') = 'pending'
177
177
  ${f}
178
178
  ORDER BY timestamp DESC
179
- `).all(c,j),l=null;for(let a of k)try{let b=JSON.parse(a.prompt_data);if(l||(l={id:a.id,parsed:b}),b.question===e.question){l={id:a.id,parsed:b};break}}catch{}let m=new Date().toISOString();if(l){let b={...l.parsed,status:"answered",answer:g,answeredAt:m,answeredBy:h};return A(a,l.id,b),{message:z(a,l.id),created:!1}}return{message:i(a,{worktreeId:c,role:"assistant",content:b.content||e.question||"[prompt]",messageType:"prompt",promptData:{...e,status:"answered",answer:g,answeredAt:m,answeredBy:h},timestamp:new Date,cliToolId:d,instanceId:j}),created:!0}}},64185:(a,b,c)=>{c.d(b,{DE:()=>n,oZ:()=>m});var d=c(29021),e=c(33873),f=c(4689),g=c(72626),h=c(52201);let i=(0,g.h)("repo-agents-config"),j=["version","agents","primary"],k=new Map;function l(a,b=120){let c=("string"==typeof a?a:Array.isArray(a)?"a list":null===a?"null":"object"==typeof a?"a mapping":String(a)).replace(/[\u0000-\u001F\u007F-\u009F]/g," ");return c.length>b?`${c.slice(0,b)}...`:c}function m(a,b=Date.now()){let c=function(a){let b,c=(0,e.join)(a,".commandmate/agents.yaml");try{b=(0,d.readFileSync)(c,"utf8")}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return null;return i.warn("repo-agents:read-failed",{source:c,code:a,error:l(b.message)}),null}let g=Buffer.byteLength(b,"utf8");return g>65536?(i.warn("repo-agents:too-large",{source:c,bytes:g,limit:65536}),null):function(a,b){var c;let d;try{d=(0,f.qg)(a)}catch(a){return i.warn("repo-agents:yaml-parse-failed",{source:b,error:l(a.message)}),null}if(null==d)return i.debug("repo-agents:empty",{source:b}),null;if(!("object"==typeof(c=d)&&null!==c&&!Array.isArray(c)))return i.warn("repo-agents:not-a-mapping",{source:b,got:l(d)}),null;let e=Object.keys(d).filter(a=>!j.includes(a));if(e.length>0)return i.warn("repo-agents:unknown-keys",{source:b,keys:e.map(a=>l(a,40))}),null;if(void 0!==d.version&&null!==d.version&&1!==("number"==typeof d.version?d.version:"string"==typeof d.version&&/^\d+$/.test(d.version)?Number(d.version):null))return i.warn("repo-agents:unsupported-version",{source:b,got:l(d.version)}),null;if(!Array.isArray(d.agents))return i.warn("repo-agents:agents-not-a-list",{source:b,got:l(d.agents)}),null;let g=(0,h.Lt)(d.agents);if(!g.valid)return i.warn("repo-agents:invalid-agents",{source:b,error:g.error,got:d.agents.map(a=>l(a,40))}),null;let k=g.value;if(void 0===d.primary||null===d.primary)return k;if("string"!=typeof d.primary||!k.includes(d.primary))return i.warn("repo-agents:primary-not-in-agents",{source:b,got:l(d.primary,40),agents:k}),null;let m=d.primary;return[m,...k.filter(a=>a!==m)]}(b,c)}(a);return k.set(a,{value:c,expiresAt:b+6e4}),c}function n(a,b=Date.now()){if(!a)return null;let c=k.get(a);return c&&c.expiresAt>b?c.value:m(a,b)}},66007:(a,b,c)=>{c.d(b,{B9:()=>m,Px:()=>o,Uc:()=>l,b$:()=>n,h6:()=>k});var d=c(33873),e=c.n(d),f=c(29021),g=c(72626),h=c(80438);let i=(0,g.h)("path-validator"),j=/^[a-zA-Z0-9_-]+$/;function k(a){return!!a&&0!==a.length&&j.test(a)}function l(a,b){return a===b||a.startsWith(b+e().sep)}function m(a,b){if(!a||""===a.trim()||a.includes("\0"))return!1;let c=a;try{c=decodeURIComponent(a)}catch{c=a}if(c.includes("\0"))return!1;let d=e().resolve(b),f=e().resolve(b,c),g=e().relative(d,f);return!(g.startsWith("..")||e().isAbsolute(g))}function n(a,b){if(!a||""===a.trim())throw Error("Invalid path: Path cannot be empty");if(a.includes("\0"))throw Error("Invalid path: Null bytes not allowed");if(!m(a,b))throw Error(`Path is outside allowed directory: ${a} (allowed root: ${b})`);let c=a;try{c=decodeURIComponent(a)}catch{c=a}return e().resolve(b,c)}function o(a,b){let c;try{c=(0,f.realpathSync)(b)}catch{return!1}let d=e().resolve(b,a);if((0,f.existsSync)(d))try{let b=(0,f.realpathSync)(d),e=l(b,c);return e||(0,h.h)(i,"symlink-rejected",{targetPath:a,resolvedTarget:b}),e}catch{return!1}try{if((0,f.lstatSync)(d).isSymbolicLink())try{let b=(0,f.readlinkSync)(d),g=e().resolve(e().dirname(d),b),j=l(g,c);return j||(0,h.h)(i,"dangling-symlink-rejected",{targetPath:a,resolvedLinkTarget:g}),j}catch{return!1}}catch{}let g=e().dirname(d);for(;g!==e().dirname(g);){if((0,f.existsSync)(g))try{let a=(0,f.realpathSync)(g),b=l(a,c);return b||(0,h.h)(i,"symlink-ancestor-rejected",{currentPath:g,resolvedAncestor:a}),b}catch{break}g=e().dirname(g)}return!1}},68901:(a,b,c)=>{c.d(b,{FW:()=>l,Ke:()=>k,P0:()=>n,QN:()=>j,dR:()=>i,eJ:()=>o,t6:()=>h,ul:()=>m});var d=c(82366),e=c.n(d),f=c(16983);let g=[36e5,108e5,288e5],h=36e5;function i(a){return"number"==typeof a&&g.includes(a)}let j=5e3,k=f.sO,l=5e3,m=20;function n(a){if(a.length>500)return{valid:!1,error:"Pattern must be 500 characters or less"};if(!e()(a))return{valid:!1,error:"Pattern may cause performance issues (catastrophic backtracking detected)"};try{return new RegExp(a),{valid:!0}}catch{return{valid:!1,error:"Invalid regular expression syntax"}}}function o(a,b,c=100){try{return a.test(b)}catch{return null}}},70997:(a,b,c)=>{c.d(b,{v:()=>d});let d="claude"},73753:(a,b,c)=>{c.d(b,{DC:()=>v,Dx:()=>u,GA:()=>A,HZ:()=>r,NV:()=>l,O:()=>s,P9:()=>C,Rm:()=>H,Sj:()=>E,ZL:()=>n,_D:()=>w,_h:()=>o,ef:()=>x,getWorktreeById:()=>m,hq:()=>p,iu:()=>y,nO:()=>D,oZ:()=>G,p4:()=>B,s:()=>z,uJ:()=>F,vi:()=>k,yB:()=>t,z1:()=>q});var d=c(52201),e=c(64185),f=c(26923),g=c(52660),h=c(27923);let i=new Set;function j(a){return new Set(a.prepare("SELECT DISTINCT worktree_id FROM agent_instances").all().map(a=>a.worktree_id))}function k(a,b){let c=`
179
+ `).all(c,j),l=null;for(let a of k)try{let b=JSON.parse(a.prompt_data);if(l||(l={id:a.id,parsed:b}),b.question===e.question){l={id:a.id,parsed:b};break}}catch{}let m=new Date().toISOString();if(l){let b={...l.parsed,status:"answered",answer:g,answeredAt:m,answeredBy:h};return A(a,l.id,b),{message:z(a,l.id),created:!1}}return{message:i(a,{worktreeId:c,role:"assistant",content:b.content||e.question||"[prompt]",messageType:"prompt",promptData:{...e,status:"answered",answer:g,answeredAt:m,answeredBy:h},timestamp:new Date,cliToolId:d,instanceId:j}),created:!0}}let D="model-changed:";function E(a,b){return i(a,{worktreeId:b.worktreeId,role:"assistant",content:b.content,messageType:"normal",timestamp:new Date(b.at),requestId:`${D}${b.at}`,cliToolId:b.cliToolId,instanceId:b.instanceId??b.cliToolId})}},57510:(a,b,c)=>{c.d(b,{KR:()=>e,NZ:()=>p,O2:()=>j,Qd:()=>o,Uq:()=>q,Wv:()=>l,ex:()=>i,hY:()=>n,mJ:()=>f,oJ:()=>k,qU:()=>g});var d=c(62887);function e(a,b,c){return d=>d===a?{event:b,detail:c??null}:null}function f(a){return Object.entries(a).map(([a,b])=>e(a,b))}function g(a,b,c){for(let d of a){let a=d(b,c);if(a)return a}return null}let h=globalThis.__agentSourceUnknownEvents??=new Map;function i(a,b){let c=h.get(a)??{count:0,names:[]};c.count+=1;let d=b??"(unnamed)";!c.names.includes(d)&&c.names.length<32&&c.names.push(d),h.set(a,c)}function j(a,b){let c=a[b];return"string"==typeof c&&""!==c?c:null}function k(a,b){for(let c of b){let b=j(a,c);if(null!==b)return b}return null}function l(a){return null===a||""===a?null:a.slice(0,d.h9)}let m=/^[A-Za-z0-9._:-]+$/;function n(a){return null===a||a.length>128?null:m.test(a)?a:null}function o(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function p(a,b){let c=a;for(let a of b){if(!o(c))return null;c=c[a]}return"string"==typeof c&&""!==c?c:null}function q(a,b,c,e={}){var f;let g=void 0!==a.detail&&null!==a.detail?l(a.detail):l(e.detail?.(a.event,b)??null);return{event:a.event,detail:g,conversationId:a.conversationId??(e.conversationId?k(b,e.conversationId):null),toolCallId:a.toolCallId??(e.toolCallId?k(b,e.toolCallId):null),model:null===(f=e.extractModel?.(b)??(e.modelFields?k(b,e.modelFields):null))||""===f?null:f.slice(0,d.h9),raw:b,receivedAt:c}}},62887:(a,b,c)=>{c.d(b,{KC:()=>g,b0:()=>d,h9:()=>f,o0:()=>e});let d=["stop","notification","session_start","user_prompt_submit","session_end","pre_tool_use","post_tool_use"];function e(a){return"string"==typeof a&&d.includes(a)}let f=128,g="permission_replied"},64185:(a,b,c)=>{c.d(b,{DE:()=>n,oZ:()=>m});var d=c(29021),e=c(33873),f=c(4689),g=c(72626),h=c(52201);let i=(0,g.h)("repo-agents-config"),j=["version","agents","primary"],k=new Map;function l(a,b=120){let c=("string"==typeof a?a:Array.isArray(a)?"a list":null===a?"null":"object"==typeof a?"a mapping":String(a)).replace(/[\u0000-\u001F\u007F-\u009F]/g," ");return c.length>b?`${c.slice(0,b)}...`:c}function m(a,b=Date.now()){let c=function(a){let b,c=(0,e.join)(a,".commandmate/agents.yaml");try{b=(0,d.readFileSync)(c,"utf8")}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return null;return i.warn("repo-agents:read-failed",{source:c,code:a,error:l(b.message)}),null}let g=Buffer.byteLength(b,"utf8");return g>65536?(i.warn("repo-agents:too-large",{source:c,bytes:g,limit:65536}),null):function(a,b){var c;let d;try{d=(0,f.qg)(a)}catch(a){return i.warn("repo-agents:yaml-parse-failed",{source:b,error:l(a.message)}),null}if(null==d)return i.debug("repo-agents:empty",{source:b}),null;if(!("object"==typeof(c=d)&&null!==c&&!Array.isArray(c)))return i.warn("repo-agents:not-a-mapping",{source:b,got:l(d)}),null;let e=Object.keys(d).filter(a=>!j.includes(a));if(e.length>0)return i.warn("repo-agents:unknown-keys",{source:b,keys:e.map(a=>l(a,40))}),null;if(void 0!==d.version&&null!==d.version&&1!==("number"==typeof d.version?d.version:"string"==typeof d.version&&/^\d+$/.test(d.version)?Number(d.version):null))return i.warn("repo-agents:unsupported-version",{source:b,got:l(d.version)}),null;if(!Array.isArray(d.agents))return i.warn("repo-agents:agents-not-a-list",{source:b,got:l(d.agents)}),null;let g=(0,h.Lt)(d.agents);if(!g.valid)return i.warn("repo-agents:invalid-agents",{source:b,error:g.error,got:d.agents.map(a=>l(a,40))}),null;let k=g.value;if(void 0===d.primary||null===d.primary)return k;if("string"!=typeof d.primary||!k.includes(d.primary))return i.warn("repo-agents:primary-not-in-agents",{source:b,got:l(d.primary,40),agents:k}),null;let m=d.primary;return[m,...k.filter(a=>a!==m)]}(b,c)}(a);return k.set(a,{value:c,expiresAt:b+6e4}),c}function n(a,b=Date.now()){if(!a)return null;let c=k.get(a);return c&&c.expiresAt>b?c.value:m(a,b)}},66007:(a,b,c)=>{c.d(b,{B9:()=>m,Px:()=>o,Uc:()=>l,b$:()=>n,h6:()=>k});var d=c(33873),e=c.n(d),f=c(29021),g=c(72626),h=c(80438);let i=(0,g.h)("path-validator"),j=/^[a-zA-Z0-9_-]+$/;function k(a){return!!a&&0!==a.length&&j.test(a)}function l(a,b){return a===b||a.startsWith(b+e().sep)}function m(a,b){if(!a||""===a.trim()||a.includes("\0"))return!1;let c=a;try{c=decodeURIComponent(a)}catch{c=a}if(c.includes("\0"))return!1;let d=e().resolve(b),f=e().resolve(b,c),g=e().relative(d,f);return!(g.startsWith("..")||e().isAbsolute(g))}function n(a,b){if(!a||""===a.trim())throw Error("Invalid path: Path cannot be empty");if(a.includes("\0"))throw Error("Invalid path: Null bytes not allowed");if(!m(a,b))throw Error(`Path is outside allowed directory: ${a} (allowed root: ${b})`);let c=a;try{c=decodeURIComponent(a)}catch{c=a}return e().resolve(b,c)}function o(a,b){let c;try{c=(0,f.realpathSync)(b)}catch{return!1}let d=e().resolve(b,a);if((0,f.existsSync)(d))try{let b=(0,f.realpathSync)(d),e=l(b,c);return e||(0,h.h)(i,"symlink-rejected",{targetPath:a,resolvedTarget:b}),e}catch{return!1}try{if((0,f.lstatSync)(d).isSymbolicLink())try{let b=(0,f.readlinkSync)(d),g=e().resolve(e().dirname(d),b),j=l(g,c);return j||(0,h.h)(i,"dangling-symlink-rejected",{targetPath:a,resolvedLinkTarget:g}),j}catch{return!1}}catch{}let g=e().dirname(d);for(;g!==e().dirname(g);){if((0,f.existsSync)(g))try{let a=(0,f.realpathSync)(g),b=l(a,c);return b||(0,h.h)(i,"symlink-ancestor-rejected",{currentPath:g,resolvedAncestor:a}),b}catch{break}g=e().dirname(g)}return!1}},68901:(a,b,c)=>{c.d(b,{FW:()=>l,Ke:()=>k,P0:()=>n,QN:()=>j,dR:()=>i,eJ:()=>o,t6:()=>h,ul:()=>m});var d=c(82366),e=c.n(d),f=c(16983);let g=[36e5,108e5,288e5],h=36e5;function i(a){return"number"==typeof a&&g.includes(a)}let j=5e3,k=f.sO,l=5e3,m=20;function n(a){if(a.length>500)return{valid:!1,error:"Pattern must be 500 characters or less"};if(!e()(a))return{valid:!1,error:"Pattern may cause performance issues (catastrophic backtracking detected)"};try{return new RegExp(a),{valid:!0}}catch{return{valid:!1,error:"Invalid regular expression syntax"}}}function o(a,b,c=100){try{return a.test(b)}catch{return null}}},70997:(a,b,c)=>{c.d(b,{v:()=>d});let d="claude"},73753:(a,b,c)=>{c.d(b,{DC:()=>v,Dx:()=>u,GA:()=>A,HZ:()=>r,NV:()=>l,O:()=>s,P9:()=>C,Rm:()=>H,Sj:()=>E,ZL:()=>n,_D:()=>w,_h:()=>o,ef:()=>x,getWorktreeById:()=>m,hq:()=>p,iu:()=>y,nO:()=>D,oZ:()=>G,p4:()=>B,s:()=>z,uJ:()=>F,vi:()=>k,yB:()=>t,z1:()=>q});var d=c(52201),e=c(64185),f=c(26923),g=c(52660),h=c(27923);let i=new Set;function j(a){return new Set(a.prepare("SELECT DISTINCT worktree_id FROM agent_instances").all().map(a=>a.worktree_id))}function k(a,b){let c=`
180
180
  SELECT
181
181
  w.id, w.name, w.path, w.repository_path, w.repository_name, w.description,
182
182
  w.last_user_message, w.last_user_message_at, w.last_message_summary,
@@ -1,3 +1,3 @@
1
- "use strict";exports.id=9696,exports.ids=[9696],exports.modules={18201:(a,b,c)=>{c.d(b,{Ce:()=>g});let d=(0,c(72626).h)("lib/history/user-turn-recorder");function e(a){return a.replace(/\r\n?/g,"\n").split("\n").map(a=>a.replace(/[ \t ]+$/u,"")).join("\n").trim()}function f(a){return{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId}}async function g(a,b,h,i,j={}){let k=a.instanceId??a.cliToolId,l=e(h);if(0===b.length||0===l.length)return{outcome:"skipped",messageId:null,timestampMs:null};try{let[{getDbInstance:g},m,{broadcastMessage:n}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,52660)),Promise.all([c.e(1503),c.e(4299),c.e(1719),c.e(6894),c.e(5120)]).then(c.bind(c,79129))]),o=g(),p=m.findMessageByRequestId(o,a.worktreeId,b);if(p)return{outcome:"already-recorded",messageId:p.id,timestampMs:p.timestamp.getTime()};let q=i>0?i:Date.now(),r=function(a,b,c,g,h,i,j,k){let l=Math.min(j-12e4,k.adoptionFromMs??1/0);for(let k of a.findUnkeyedUserMessages(b,{worktreeId:c.worktreeId,cliToolId:c.cliToolId,instanceId:g,fromMs:l,toMs:j+12e4}).filter(a=>e(a.content)===i).sort((a,b)=>Math.abs(a.timestamp.getTime()-j)-Math.abs(b.timestamp.getTime()-j)))if(a.setMessageRequestId(b,k.id,h))return d.info("user-turn-adopted",{...f(c),requestId:h,messageId:k.id,driftMs:k.timestamp.getTime()-j}),{outcome:"adopted",messageId:k.id,timestampMs:k.timestamp.getTime()};return null}(m,o,a,k,b,l,q,j);if(r)return r;let s=m.createMessage(o,{worktreeId:a.worktreeId,role:"user",content:h,messageType:"normal",timestamp:new Date(q),cliToolId:a.cliToolId,instanceId:k,requestId:b});return n("message",{worktreeId:a.worktreeId,message:s}),d.info("user-turn-recorded",{...f(a),requestId:b,contentLength:h.length}),{outcome:"inserted",messageId:s.id,timestampMs:q}}catch(c){return d.error("user-turn-record-failed",{...f(a),requestId:b,error:c instanceof Error?c.message:String(c)}),{outcome:"failed",messageId:null,timestampMs:null}}}},79696:(a,b,c)=>{c.d(b,{K$:()=>G,readClaudeTurnProgress:()=>J,Oi:()=>I});var d=c(79748),e=c(21820),f=c(33873),g=c(24455),h=c(18201),i=c(72626),j=c(86594),k=c(57510),l=c(27128);let m=[".claude","projects"],n="\n\n_(truncated)_",o=["<local-command-caveat>","<local-command-stdout>","<command-name>"],p="<command-message>",q=/<command-name>([\s\S]*?)<\/command-name>/,r=/<command-args>([\s\S]*?)<\/command-args>/;function s(a){let b=a.trim();if(!b.startsWith(p))return null;let c=q.exec(b)?.[1].trim()??"";if(0===c.length)return null;let d=r.exec(b)?.[1].trim()??"";return 0===d.length?c:`${c} ${d}`}let t=["command","file_path","notebook_path","path","pattern","query","url","description"];function u(a){let b=[],c=0;for(let d of a.split("\n")){let a;if(0===d.trim().length)continue;try{a=JSON.parse(d)}catch{c+=1;continue}let e=function(a){if(!(0,k.Qd)(a))return null;let b=(0,k.O2)(a,"type");if(!b)return null;let c=(0,k.Qd)(a.message)?a.message:null,d=c?.content,e=[],f="";if("string"==typeof d)f=d;else if(Array.isArray(d))for(let a of d){let b=function(a){if(!(0,k.Qd)(a))return null;let b=(0,k.O2)(a,"type");if(!b)return null;if("tool_use"===b)return{type:b,text:null,toolName:(0,k.O2)(a,"name"),toolDetail:function(a){if(!(0,k.Qd)(a))return null;for(let c of t){let d=(0,k.O2)(a,c);if(d){var b;return(b=d.replace(/\s+/g," ").trim()).length<=200?b:`${b.slice(0,199)}…`}}return null}(a.input)};let c="text"===b?(0,k.O2)(a,"text")??"":"thinking"===b?(0,k.O2)(a,"thinking")??"":null;return{type:b,text:c,toolName:null,toolDetail:null}}(a);b&&(e.push(b),b.text&&(f+=b.text))}let g=(0,k.O2)(a,"timestamp"),h=g?Date.parse(g):NaN,i=(0,k.Qd)(a.origin)?a.origin:null;return{type:b,uuid:(0,k.O2)(a,"uuid"),sessionId:(0,k.O2)(a,"sessionId")??(0,k.O2)(a,"session_id"),cwd:(0,k.O2)(a,"cwd"),isSidechain:!0===a.isSidechain,isMeta:!0===a.isMeta,originKind:i?(0,k.O2)(i,"kind"):null,promptSource:(0,k.O2)(a,"promptSource"),isCompactSummary:!0===a.isCompactSummary,isInterruption:null!==(0,k.O2)(a,"interruptedMessageId"),timestampMs:Number.isFinite(h)?h:null,stopReason:c?(0,k.O2)(c,"stop_reason"):null,blocks:e,text:f}}(a);e?b.push(e):c+=1}return{records:b,malformedLines:c}}function v(a){if("user"!==a.type||a.isMeta||!a.uuid||a.blocks.some(a=>"tool_result"===a.type))return!1;let b=a.text.trim();return 0!==b.length&&(b.startsWith(p)?null!==s(b):!o.some(a=>b.startsWith(a)))}let w=["typed","queued"];function x(a){return!!a.closed||!!a.superseded||!a.stopReasonObserved}function y(a,b){let c=[],d=null,e=0,f=0;for(let g of a){if(g.isSidechain){f+=1;continue}if(v(g)){d=function(a,b){return{sessionId:a.sessionId??b,promptUuid:a.uuid,startedAt:a.timestampMs??0,promptText:s(a.text)??a.text,promptIsOperatorInput:!!v(a)&&!a.isCompactSummary&&!a.isInterruption&&(null!==a.originKind?"human"===a.originKind:null!==a.promptSource&&w.includes(a.promptSource)),blocks:[],assistantRecords:0,closed:!1,superseded:!1,stopReasonObserved:!1,overflowed:!1}}(g,b),c.push(d);continue}if("assistant"===g.type){if(!d){e+=1;continue}for(let a of(d.assistantRecords+=1,d.closed="assistant"===g.type&&"end_turn"===g.stopReason&&g.blocks.some(a=>"text"===a.type&&(a.text??"").trim().length>0),null!==g.stopReason&&(d.stopReasonObserved=!0),g.blocks)){if(d.blocks.length>=2048){d.overflowed=!0;break}d.blocks.push(a)}}}for(let a=0;a<c.length-1;a+=1)c[a].superseded=!0;return{turns:c,orphanedAssistantRecords:e,sidechainRecords:f}}let z=new Set(["tool_result"]);function A(a){let b=[],c=new Set,d=0,e=0;for(let f of a.blocks){if("text"===f.type){let a=f.text?.trim()??"";if(0===a.length)continue;b.push({kind:"prose",text:a}),d+=1;continue}if("thinking"===f.type){let a=f.text?.trim()??"";if(0===a.length)continue;b.push({kind:"aside",text:function(a){let b=a.trim().split("\n").map(a=>a.length>0?`> ${a}`:">").join("\n");return`> **Thinking**
1
+ "use strict";exports.id=9696,exports.ids=[9696],exports.modules={18201:(a,b,c)=>{c.d(b,{Ce:()=>g});let d=(0,c(72626).h)("lib/history/user-turn-recorder");function e(a){return a.replace(/\r\n?/g,"\n").split("\n").map(a=>a.replace(/[ \t ]+$/u,"")).join("\n").trim()}function f(a){return{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId}}async function g(a,b,h,i,j={}){let k=a.instanceId??a.cliToolId,l=e(h);if(0===b.length||0===l.length)return{outcome:"skipped",messageId:null,timestampMs:null};try{let[{getDbInstance:g},m,{broadcastMessage:n}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,52660)),Promise.all([c.e(1356),c.e(1503),c.e(1191),c.e(4299),c.e(1719),c.e(2119),c.e(2445),c.e(595),c.e(5120)]).then(c.bind(c,49640))]),o=g(),p=m.findMessageByRequestId(o,a.worktreeId,b);if(p)return{outcome:"already-recorded",messageId:p.id,timestampMs:p.timestamp.getTime()};let q=i>0?i:Date.now(),r=function(a,b,c,g,h,i,j,k){let l=Math.min(j-12e4,k.adoptionFromMs??1/0);for(let k of a.findUnkeyedUserMessages(b,{worktreeId:c.worktreeId,cliToolId:c.cliToolId,instanceId:g,fromMs:l,toMs:j+12e4}).filter(a=>e(a.content)===i).sort((a,b)=>Math.abs(a.timestamp.getTime()-j)-Math.abs(b.timestamp.getTime()-j)))if(a.setMessageRequestId(b,k.id,h))return d.info("user-turn-adopted",{...f(c),requestId:h,messageId:k.id,driftMs:k.timestamp.getTime()-j}),{outcome:"adopted",messageId:k.id,timestampMs:k.timestamp.getTime()};return null}(m,o,a,k,b,l,q,j);if(r)return r;let s=m.createMessage(o,{worktreeId:a.worktreeId,role:"user",content:h,messageType:"normal",timestamp:new Date(q),cliToolId:a.cliToolId,instanceId:k,requestId:b});return n("message",{worktreeId:a.worktreeId,message:s}),d.info("user-turn-recorded",{...f(a),requestId:b,contentLength:h.length}),{outcome:"inserted",messageId:s.id,timestampMs:q}}catch(c){return d.error("user-turn-record-failed",{...f(a),requestId:b,error:c instanceof Error?c.message:String(c)}),{outcome:"failed",messageId:null,timestampMs:null}}}},79696:(a,b,c)=>{c.d(b,{K$:()=>G,readClaudeTurnProgress:()=>J,Oi:()=>I});var d=c(79748),e=c(21820),f=c(33873),g=c(24455),h=c(18201),i=c(72626),j=c(86594),k=c(57510),l=c(27128);let m=[".claude","projects"],n="\n\n_(truncated)_",o=["<local-command-caveat>","<local-command-stdout>","<command-name>"],p="<command-message>",q=/<command-name>([\s\S]*?)<\/command-name>/,r=/<command-args>([\s\S]*?)<\/command-args>/;function s(a){let b=a.trim();if(!b.startsWith(p))return null;let c=q.exec(b)?.[1].trim()??"";if(0===c.length)return null;let d=r.exec(b)?.[1].trim()??"";return 0===d.length?c:`${c} ${d}`}let t=["command","file_path","notebook_path","path","pattern","query","url","description"];function u(a){let b=[],c=0;for(let d of a.split("\n")){let a;if(0===d.trim().length)continue;try{a=JSON.parse(d)}catch{c+=1;continue}let e=function(a){if(!(0,k.Qd)(a))return null;let b=(0,k.O2)(a,"type");if(!b)return null;let c=(0,k.Qd)(a.message)?a.message:null,d=c?.content,e=[],f="";if("string"==typeof d)f=d;else if(Array.isArray(d))for(let a of d){let b=function(a){if(!(0,k.Qd)(a))return null;let b=(0,k.O2)(a,"type");if(!b)return null;if("tool_use"===b)return{type:b,text:null,toolName:(0,k.O2)(a,"name"),toolDetail:function(a){if(!(0,k.Qd)(a))return null;for(let c of t){let d=(0,k.O2)(a,c);if(d){var b;return(b=d.replace(/\s+/g," ").trim()).length<=200?b:`${b.slice(0,199)}…`}}return null}(a.input)};let c="text"===b?(0,k.O2)(a,"text")??"":"thinking"===b?(0,k.O2)(a,"thinking")??"":null;return{type:b,text:c,toolName:null,toolDetail:null}}(a);b&&(e.push(b),b.text&&(f+=b.text))}let g=(0,k.O2)(a,"timestamp"),h=g?Date.parse(g):NaN,i=(0,k.Qd)(a.origin)?a.origin:null;return{type:b,uuid:(0,k.O2)(a,"uuid"),sessionId:(0,k.O2)(a,"sessionId")??(0,k.O2)(a,"session_id"),cwd:(0,k.O2)(a,"cwd"),isSidechain:!0===a.isSidechain,isMeta:!0===a.isMeta,originKind:i?(0,k.O2)(i,"kind"):null,promptSource:(0,k.O2)(a,"promptSource"),isCompactSummary:!0===a.isCompactSummary,isInterruption:null!==(0,k.O2)(a,"interruptedMessageId"),timestampMs:Number.isFinite(h)?h:null,stopReason:c?(0,k.O2)(c,"stop_reason"):null,blocks:e,text:f}}(a);e?b.push(e):c+=1}return{records:b,malformedLines:c}}function v(a){if("user"!==a.type||a.isMeta||!a.uuid||a.blocks.some(a=>"tool_result"===a.type))return!1;let b=a.text.trim();return 0!==b.length&&(b.startsWith(p)?null!==s(b):!o.some(a=>b.startsWith(a)))}let w=["typed","queued"];function x(a){return!!a.closed||!!a.superseded||!a.stopReasonObserved}function y(a,b){let c=[],d=null,e=0,f=0;for(let g of a){if(g.isSidechain){f+=1;continue}if(v(g)){d=function(a,b){return{sessionId:a.sessionId??b,promptUuid:a.uuid,startedAt:a.timestampMs??0,promptText:s(a.text)??a.text,promptIsOperatorInput:!!v(a)&&!a.isCompactSummary&&!a.isInterruption&&(null!==a.originKind?"human"===a.originKind:null!==a.promptSource&&w.includes(a.promptSource)),blocks:[],assistantRecords:0,closed:!1,superseded:!1,stopReasonObserved:!1,overflowed:!1}}(g,b),c.push(d);continue}if("assistant"===g.type){if(!d){e+=1;continue}for(let a of(d.assistantRecords+=1,d.closed="assistant"===g.type&&"end_turn"===g.stopReason&&g.blocks.some(a=>"text"===a.type&&(a.text??"").trim().length>0),null!==g.stopReason&&(d.stopReasonObserved=!0),g.blocks)){if(d.blocks.length>=2048){d.overflowed=!0;break}d.blocks.push(a)}}}for(let a=0;a<c.length-1;a+=1)c[a].superseded=!0;return{turns:c,orphanedAssistantRecords:e,sidechainRecords:f}}let z=new Set(["tool_result"]);function A(a){let b=[],c=new Set,d=0,e=0;for(let f of a.blocks){if("text"===f.type){let a=f.text?.trim()??"";if(0===a.length)continue;b.push({kind:"prose",text:a}),d+=1;continue}if("thinking"===f.type){let a=f.text?.trim()??"";if(0===a.length)continue;b.push({kind:"aside",text:function(a){let b=a.trim().split("\n").map(a=>a.length>0?`> ${a}`:">").join("\n");return`> **Thinking**
2
2
  >
3
- ${b}`}(a)});continue}if("tool_use"===f.type){b.push({kind:"tool",text:function(a){let b=a.toolName??"tool";return a.toolDetail?`- \`${b}\` — ${a.toolDetail}`:`- \`${b}\``}(f)}),e+=1;continue}z.has(f.type)||c.add(f.type)}let f=(0,l.t3)(b).body;return f.length>2e5&&(f=f.slice(0,2e5-n.length)+n),{sessionId:a.sessionId,promptUuid:a.promptUuid,body:f,textBlocks:d,toolBlocks:e,unknownBlockTypes:[...c]}}let B=(0,i.h)("lib/hooks/sources/claude/history"),C=".jsonl",D=globalThis.__claudeTranscriptSessions??=new Map;async function E(a){let b=(0,g.v7)(a.worktreeId,a.cliToolId,a.instanceId);try{let{getLastAgentEvent:d}=await Promise.resolve().then(c.bind(c,48083)),e=d(a.worktreeId,a.cliToolId,a.instanceId)?.sessionId;if("string"==typeof e&&e.length>0)return D.set(b,e),e}catch(b){B.debug("claude-transcript-session-lookup-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)})}return D.get(b)??null}function F(a){return(0,f.join)(a,...m)}async function G(a,b){let c=a.instanceId??a.cliToolId;try{let d=b.homeDir??(0,e.homedir)();if("string"!=typeof b.worktreePath||0===b.worktreePath.length)return!1;let f=await E(a),g=await L(d,b,f);if(!g)return B.debug("claude-transcript-unavailable",{worktreeId:a.worktreeId,instanceId:c,sessionId:f,reason:f?"no-file":"no-session-pointer"}),!1;let h=await N(g);if(null===h)return!1;let i=u(h),j=y(i.records,f??"");if(0===j.turns.length)return B.info("claude-transcript-no-turn",{worktreeId:a.worktreeId,instanceId:c,path:g,records:i.records.length,malformedLines:i.malformedLines,orphanedAssistantRecords:j.orphanedAssistantRecords}),!1;(i.malformedLines>0||j.orphanedAssistantRecords>0)&&B.info("claude-transcript-partial-read",{worktreeId:a.worktreeId,instanceId:c,path:g,malformedLines:i.malformedLines,orphanedAssistantRecords:j.orphanedAssistantRecords,sidechainRecords:j.sidechainRecords});let k=await H(a,j.turns);if(await Q(a,j.turns.slice(0,j.turns.length-k.turns.length).slice(-O),g),0===k.turns.length)return B.debug("claude-transcript-turns-already-saved",{worktreeId:a.worktreeId,instanceId:c,turnsInWindow:j.turns.length}),!0;k.turns.length>1&&B.info("claude-transcript-backfilling-turns",{worktreeId:a.worktreeId,instanceId:c,path:g,pendingTurns:k.turns.length,turnsInWindow:j.turns.length,anchored:k.anchored});let l=[];for(let b=0;b<k.turns.length;b+=1){let c=0===b?k.previousStartedAt:k.turns[b-1].startedAt;l.push(await K(a,k.turns[b],c))}let m=function(a){let b=new Map,c=null;for(let d of a)if(!d.isSidechain){if(v(d)){c=d.uuid;continue}"assistant"===d.type&&null!==c&&null!==d.timestampMs&&d.timestampMs>(b.get(c)??0)&&b.set(c,d.timestampMs)}return b}(i.records),n=!1;for(let b=0;b<k.turns.length;b+=1){let c=k.turns[b];n=await R(a,c,A(c),function(a,b,c=0,d=null){let e=null===b.timestampMs?a.startedAt:Math.max(a.startedAt,b.timestampMs+1);return Math.max(e,Math.min(c,null===d?1/0:d-1))}(c,l[b],m.get(c.promptUuid)??0,function(a,b,c){let d=a[c+1];return d?b[c+1]?.timestampMs??d.startedAt:null}(k.turns,l,b)),g)}return n}catch(b){return B.error("claude-transcript-capture-failed",{worktreeId:a.worktreeId,instanceId:c,error:b instanceof Error?b.message:String(b)}),!1}}async function H(a,b){let[{getDbInstance:d},{findMessageByRequestId:e}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791))]),f=d();for(let c=b.length-1;c>=0;c-=1){let d=(0,j.qe)(b[c].promptUuid);if(e(f,a.worktreeId,d))return{turns:b.slice(c+1),previousStartedAt:b[c].startedAt,anchored:!0}}return{turns:b.slice(-1),previousStartedAt:b.length>1?b[b.length-2].startedAt:0,anchored:!1}}async function I(a,b){try{let c=b.homeDir??(0,e.homedir)();if("string"!=typeof b.worktreePath||0===b.worktreePath.length)return null;return await L(c,b,await E(a))}catch{return null}}async function J(a,b){let c=a.instanceId??a.cliToolId;try{var d;let f=b.homeDir??(0,e.homedir)();if("string"!=typeof b.worktreePath||0===b.worktreePath.length)return null;let g=await E(a),h=await L(f,b,g);if(!h)return null;let i=await N(h);if(null===i)return null;let k=u(i),l=y(k.records,g??""),m=l.turns.at(-1);if(m){let a=A(m);if(0===a.body.length)return null;return{turnKey:(0,j.qe)(a.promptUuid),body:a.body,partial:!1}}if(0===l.orphanedAssistantRecords)return null;let n=function(a,b){let c=[],d=0,e=!1;for(let b of a){if(v(b))break;if(!b.isSidechain&&"assistant"===b.type)for(let a of(d+=1,b.blocks)){if(c.length>=2048){e=!0;break}c.push(a)}}return{sessionId:b,promptUuid:`partial:${b}`,startedAt:0,promptText:"",promptIsOperatorInput:!1,blocks:c,assistantRecords:d,closed:!1,superseded:!1,stopReasonObserved:!1,overflowed:e}}(k.records,g??""),o=A(n);if(0===o.body.length)return null;return B.info("claude-transcript-progress-headless",{worktreeId:a.worktreeId,instanceId:c,path:h,orphanedAssistantRecords:l.orphanedAssistantRecords,malformedLines:k.malformedLines}),{turnKey:(d=g??"",(0,j.qe)(`partial:${d}`)),body:o.body,partial:!0}}catch(b){return B.debug("claude-transcript-progress-failed",{worktreeId:a.worktreeId,instanceId:c,error:b instanceof Error?b.message:String(b)}),null}}async function K(a,b,c=0){let d=a.instanceId??a.cliToolId;if(!b.promptIsOperatorInput)return B.debug("claude-transcript-user-turn-skipped",{worktreeId:a.worktreeId,instanceId:d,promptUuid:b.promptUuid,reason:"not-operator-input"}),{outcome:"skipped",messageId:null,timestampMs:null};let e=await (0,h.Ce)(a,(0,j.H_)(b.promptUuid),b.promptText,b.startedAt,c>0?{adoptionFromMs:c}:{});return"failed"===e.outcome&&B.warn("claude-transcript-user-turn-failed",{worktreeId:a.worktreeId,instanceId:d,sessionId:b.sessionId,promptUuid:b.promptUuid}),e}async function L(a,b,c){if(c){var d,e,g;let h=(d=a,e=b.worktreePath,g=c,(0,f.join)(F(d),e.replace(/[^a-zA-Z0-9]/g,"-"),`${g}${C}`));if(await M(h))return h}let h=b.transcriptPathHint;if("string"==typeof h&&h.length>0){let b=function(a,b){if(!b.endsWith(C)||b.includes("\0"))return null;let c=(0,f.resolve)(F(a)),d=(0,f.resolve)(b);return d===c||d.startsWith(c+f.sep)?d:null}(a,h);if(b&&await M(b))return b}return null}async function M(a){try{return(await (0,d.stat)(a)).isFile()}catch{return!1}}async function N(a){let b;try{b=await (0,d.open)(a,"r");let{size:c}=await b.stat(),e=Math.max(0,c-4194304),f=c-e;if(f<=0)return"";let g=Buffer.alloc(f),{bytesRead:h}=await b.read(g,0,f,e),i=g.subarray(0,h).toString("utf8");if(0===e)return i;let j=i.indexOf("\n");return -1===j?"":i.slice(j+1)}catch(b){return B.warn("claude-transcript-read-failed",{path:a,error:b instanceof Error?b.message:String(b)}),null}finally{await b?.close().catch(()=>{})}}let O=3;async function P(a,b,d,e){let f=a.instanceId??a.cliToolId,g=b.content.length;if(d.body.length<=g)return!1;let[{getDbInstance:h},{updateMessageContent:i},{broadcastMessage:j}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.all([c.e(1503),c.e(4299),c.e(1719),c.e(6894),c.e(5120)]).then(c.bind(c,79129))]);return i(h(),b.id,d.body),j("message_updated",{worktreeId:a.worktreeId,message:{...b,content:d.body}}),B.info("claude-transcript-turn-updated",{worktreeId:a.worktreeId,instanceId:f,sessionId:d.sessionId,requestId:b.requestId,path:e,previousLength:g,bodyLength:d.body.length,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!0}async function Q(a,b,d){if(0===b.length)return 0;let[{getDbInstance:e},{findMessageByRequestId:f}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791))]),g=e(),h=0;for(let c of b){if(!x(c))continue;let b=f(g,a.worktreeId,(0,j.qe)(c.promptUuid));b&&await P(a,b,A(c),d)&&(h+=1)}return h}async function R(a,b,d,e,f){let g=a.instanceId??a.cliToolId;if(!x(b))return B.info("claude-transcript-turn-open",{worktreeId:a.worktreeId,instanceId:g,sessionId:d.sessionId,promptUuid:d.promptUuid,assistantRecords:b.assistantRecords,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!1;if(0===d.body.length)return B.info("claude-transcript-turn-empty",{worktreeId:a.worktreeId,instanceId:g,sessionId:d.sessionId,promptUuid:d.promptUuid}),!1;d.unknownBlockTypes.length>0&&B.info("claude-transcript-unknown-blocks",{worktreeId:a.worktreeId,instanceId:g,sessionId:d.sessionId,blockTypes:d.unknownBlockTypes});let h=(0,j.qe)(d.promptUuid),[{getDbInstance:i},{createMessage:k,findMessageByRequestId:l},{broadcastMessage:m}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.all([c.e(1503),c.e(4299),c.e(1719),c.e(6894),c.e(5120)]).then(c.bind(c,79129))]),n=i(),o=l(n,a.worktreeId,h);if(o)return B.debug("claude-transcript-turn-already-saved",{worktreeId:a.worktreeId,instanceId:g,requestId:h}),await P(a,o,d,f),!0;let p=k(n,{worktreeId:a.worktreeId,role:"assistant",content:d.body,messageType:"normal",timestamp:new Date(e>0?e:Date.now()),cliToolId:a.cliToolId,instanceId:g,requestId:h});return m("message",{worktreeId:a.worktreeId,message:p}),B.info("claude-transcript-turn-saved",{worktreeId:a.worktreeId,instanceId:g,sessionId:d.sessionId,requestId:h,path:f,bodyLength:d.body.length,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!0}}};
3
+ ${b}`}(a)});continue}if("tool_use"===f.type){b.push({kind:"tool",text:function(a){let b=a.toolName??"tool";return a.toolDetail?`- \`${b}\` — ${a.toolDetail}`:`- \`${b}\``}(f)}),e+=1;continue}z.has(f.type)||c.add(f.type)}let f=(0,l.t3)(b).body;return f.length>2e5&&(f=f.slice(0,2e5-n.length)+n),{sessionId:a.sessionId,promptUuid:a.promptUuid,body:f,textBlocks:d,toolBlocks:e,unknownBlockTypes:[...c]}}let B=(0,i.h)("lib/hooks/sources/claude/history"),C=".jsonl",D=globalThis.__claudeTranscriptSessions??=new Map;async function E(a){let b=(0,g.v7)(a.worktreeId,a.cliToolId,a.instanceId);try{let{getLastAgentEvent:d}=await Promise.resolve().then(c.bind(c,48083)),e=d(a.worktreeId,a.cliToolId,a.instanceId)?.sessionId;if("string"==typeof e&&e.length>0)return D.set(b,e),e}catch(b){B.debug("claude-transcript-session-lookup-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)})}return D.get(b)??null}function F(a){return(0,f.join)(a,...m)}async function G(a,b){let c=a.instanceId??a.cliToolId;try{let d=b.homeDir??(0,e.homedir)();if("string"!=typeof b.worktreePath||0===b.worktreePath.length)return!1;let f=await E(a),g=await L(d,b,f);if(!g)return B.debug("claude-transcript-unavailable",{worktreeId:a.worktreeId,instanceId:c,sessionId:f,reason:f?"no-file":"no-session-pointer"}),!1;let h=await N(g);if(null===h)return!1;let i=u(h),j=y(i.records,f??"");if(0===j.turns.length)return B.info("claude-transcript-no-turn",{worktreeId:a.worktreeId,instanceId:c,path:g,records:i.records.length,malformedLines:i.malformedLines,orphanedAssistantRecords:j.orphanedAssistantRecords}),!1;(i.malformedLines>0||j.orphanedAssistantRecords>0)&&B.info("claude-transcript-partial-read",{worktreeId:a.worktreeId,instanceId:c,path:g,malformedLines:i.malformedLines,orphanedAssistantRecords:j.orphanedAssistantRecords,sidechainRecords:j.sidechainRecords});let k=await H(a,j.turns);if(await Q(a,j.turns.slice(0,j.turns.length-k.turns.length).slice(-O),g),0===k.turns.length)return B.debug("claude-transcript-turns-already-saved",{worktreeId:a.worktreeId,instanceId:c,turnsInWindow:j.turns.length}),!0;k.turns.length>1&&B.info("claude-transcript-backfilling-turns",{worktreeId:a.worktreeId,instanceId:c,path:g,pendingTurns:k.turns.length,turnsInWindow:j.turns.length,anchored:k.anchored});let l=[];for(let b=0;b<k.turns.length;b+=1){let c=0===b?k.previousStartedAt:k.turns[b-1].startedAt;l.push(await K(a,k.turns[b],c))}let m=function(a){let b=new Map,c=null;for(let d of a)if(!d.isSidechain){if(v(d)){c=d.uuid;continue}"assistant"===d.type&&null!==c&&null!==d.timestampMs&&d.timestampMs>(b.get(c)??0)&&b.set(c,d.timestampMs)}return b}(i.records),n=!1;for(let b=0;b<k.turns.length;b+=1){let c=k.turns[b];n=await R(a,c,A(c),function(a,b,c=0,d=null){let e=null===b.timestampMs?a.startedAt:Math.max(a.startedAt,b.timestampMs+1);return Math.max(e,Math.min(c,null===d?1/0:d-1))}(c,l[b],m.get(c.promptUuid)??0,function(a,b,c){let d=a[c+1];return d?b[c+1]?.timestampMs??d.startedAt:null}(k.turns,l,b)),g)}return n}catch(b){return B.error("claude-transcript-capture-failed",{worktreeId:a.worktreeId,instanceId:c,error:b instanceof Error?b.message:String(b)}),!1}}async function H(a,b){let[{getDbInstance:d},{findMessageByRequestId:e}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791))]),f=d();for(let c=b.length-1;c>=0;c-=1){let d=(0,j.qe)(b[c].promptUuid);if(e(f,a.worktreeId,d))return{turns:b.slice(c+1),previousStartedAt:b[c].startedAt,anchored:!0}}return{turns:b.slice(-1),previousStartedAt:b.length>1?b[b.length-2].startedAt:0,anchored:!1}}async function I(a,b){try{let c=b.homeDir??(0,e.homedir)();if("string"!=typeof b.worktreePath||0===b.worktreePath.length)return null;return await L(c,b,await E(a))}catch{return null}}async function J(a,b){let c=a.instanceId??a.cliToolId;try{var d;let f=b.homeDir??(0,e.homedir)();if("string"!=typeof b.worktreePath||0===b.worktreePath.length)return null;let g=await E(a),h=await L(f,b,g);if(!h)return null;let i=await N(h);if(null===i)return null;let k=u(i),l=y(k.records,g??""),m=l.turns.at(-1);if(m){let a=A(m);if(0===a.body.length)return null;return{turnKey:(0,j.qe)(a.promptUuid),body:a.body,partial:!1}}if(0===l.orphanedAssistantRecords)return null;let n=function(a,b){let c=[],d=0,e=!1;for(let b of a){if(v(b))break;if(!b.isSidechain&&"assistant"===b.type)for(let a of(d+=1,b.blocks)){if(c.length>=2048){e=!0;break}c.push(a)}}return{sessionId:b,promptUuid:`partial:${b}`,startedAt:0,promptText:"",promptIsOperatorInput:!1,blocks:c,assistantRecords:d,closed:!1,superseded:!1,stopReasonObserved:!1,overflowed:e}}(k.records,g??""),o=A(n);if(0===o.body.length)return null;return B.info("claude-transcript-progress-headless",{worktreeId:a.worktreeId,instanceId:c,path:h,orphanedAssistantRecords:l.orphanedAssistantRecords,malformedLines:k.malformedLines}),{turnKey:(d=g??"",(0,j.qe)(`partial:${d}`)),body:o.body,partial:!0}}catch(b){return B.debug("claude-transcript-progress-failed",{worktreeId:a.worktreeId,instanceId:c,error:b instanceof Error?b.message:String(b)}),null}}async function K(a,b,c=0){let d=a.instanceId??a.cliToolId;if(!b.promptIsOperatorInput)return B.debug("claude-transcript-user-turn-skipped",{worktreeId:a.worktreeId,instanceId:d,promptUuid:b.promptUuid,reason:"not-operator-input"}),{outcome:"skipped",messageId:null,timestampMs:null};let e=await (0,h.Ce)(a,(0,j.H_)(b.promptUuid),b.promptText,b.startedAt,c>0?{adoptionFromMs:c}:{});return"failed"===e.outcome&&B.warn("claude-transcript-user-turn-failed",{worktreeId:a.worktreeId,instanceId:d,sessionId:b.sessionId,promptUuid:b.promptUuid}),e}async function L(a,b,c){if(c){var d,e,g;let h=(d=a,e=b.worktreePath,g=c,(0,f.join)(F(d),e.replace(/[^a-zA-Z0-9]/g,"-"),`${g}${C}`));if(await M(h))return h}let h=b.transcriptPathHint;if("string"==typeof h&&h.length>0){let b=function(a,b){if(!b.endsWith(C)||b.includes("\0"))return null;let c=(0,f.resolve)(F(a)),d=(0,f.resolve)(b);return d===c||d.startsWith(c+f.sep)?d:null}(a,h);if(b&&await M(b))return b}return null}async function M(a){try{return(await (0,d.stat)(a)).isFile()}catch{return!1}}async function N(a){let b;try{b=await (0,d.open)(a,"r");let{size:c}=await b.stat(),e=Math.max(0,c-4194304),f=c-e;if(f<=0)return"";let g=Buffer.alloc(f),{bytesRead:h}=await b.read(g,0,f,e),i=g.subarray(0,h).toString("utf8");if(0===e)return i;let j=i.indexOf("\n");return -1===j?"":i.slice(j+1)}catch(b){return B.warn("claude-transcript-read-failed",{path:a,error:b instanceof Error?b.message:String(b)}),null}finally{await b?.close().catch(()=>{})}}let O=3;async function P(a,b,d,e){let f=a.instanceId??a.cliToolId,g=b.content.length;if(d.body.length<=g)return!1;let[{getDbInstance:h},{updateMessageContent:i},{broadcastMessage:j}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.all([c.e(1356),c.e(1503),c.e(1191),c.e(4299),c.e(1719),c.e(2119),c.e(2445),c.e(595),c.e(5120)]).then(c.bind(c,49640))]);return i(h(),b.id,d.body),j("message_updated",{worktreeId:a.worktreeId,message:{...b,content:d.body}}),B.info("claude-transcript-turn-updated",{worktreeId:a.worktreeId,instanceId:f,sessionId:d.sessionId,requestId:b.requestId,path:e,previousLength:g,bodyLength:d.body.length,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!0}async function Q(a,b,d){if(0===b.length)return 0;let[{getDbInstance:e},{findMessageByRequestId:f}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791))]),g=e(),h=0;for(let c of b){if(!x(c))continue;let b=f(g,a.worktreeId,(0,j.qe)(c.promptUuid));b&&await P(a,b,A(c),d)&&(h+=1)}return h}async function R(a,b,d,e,f){let g=a.instanceId??a.cliToolId;if(!x(b))return B.info("claude-transcript-turn-open",{worktreeId:a.worktreeId,instanceId:g,sessionId:d.sessionId,promptUuid:d.promptUuid,assistantRecords:b.assistantRecords,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!1;if(0===d.body.length)return B.info("claude-transcript-turn-empty",{worktreeId:a.worktreeId,instanceId:g,sessionId:d.sessionId,promptUuid:d.promptUuid}),!1;d.unknownBlockTypes.length>0&&B.info("claude-transcript-unknown-blocks",{worktreeId:a.worktreeId,instanceId:g,sessionId:d.sessionId,blockTypes:d.unknownBlockTypes});let h=(0,j.qe)(d.promptUuid),[{getDbInstance:i},{createMessage:k,findMessageByRequestId:l},{broadcastMessage:m}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.all([c.e(1356),c.e(1503),c.e(1191),c.e(4299),c.e(1719),c.e(2119),c.e(2445),c.e(595),c.e(5120)]).then(c.bind(c,49640))]),n=i(),o=l(n,a.worktreeId,h);if(o)return B.debug("claude-transcript-turn-already-saved",{worktreeId:a.worktreeId,instanceId:g,requestId:h}),await P(a,o,d,f),!0;let p=k(n,{worktreeId:a.worktreeId,role:"assistant",content:d.body,messageType:"normal",timestamp:new Date(e>0?e:Date.now()),cliToolId:a.cliToolId,instanceId:g,requestId:h});return m("message",{worktreeId:a.worktreeId,message:p}),B.info("claude-transcript-turn-saved",{worktreeId:a.worktreeId,instanceId:g,sessionId:d.sessionId,requestId:h,path:f,bodyLength:d.body.length,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!0}}};
@@ -1,2 +1,2 @@
1
- "use strict";exports.id=9798,exports.ids=[9798],exports.modules={24581:(a,b,c)=>{c.d(b,{Mu:()=>f,RY:()=>i,Tt:()=>h,Ui:()=>p,Xq:()=>l,ZV:()=>s,h_:()=>g,jF:()=>q,kT:()=>o,nY:()=>k,qX:()=>r,wt:()=>n});var d=c(62887),e=c(36051);let f=18e5,g={predicted:2e4,confirmed:18e5},h=3,i=16,j={turnId:null,openedAt:null,closedAt:null,closedBy:null};function k(a){return null===a?j:{turnId:a.turnId,openedAt:a.openedAt,closedAt:a.closedAt,closedBy:a.closedBy}}function l(a){if("string"!=typeof a||0===a.length||a.length>128)return null;for(let b=0;b<a.length;b++){let c=a.charCodeAt(b);if(c<32||127===c)return null}return a}function m(a,b){return"string"!=typeof a||""===a?null:a.slice(0,b)}function n(a){return m(a,e.lY)}function o(a){return m(a,d.h9)}function p(a){if(!Array.isArray(a))return null;let b=[];for(let c of a)if("string"==typeof c&&""!==c&&(b.push(c.slice(0,200)),b.length>=8))break;return b.length>0?b:null}function q(a,b){let c=null===a.confirmedAt?g.predicted:g.confirmed;return b-a.at<c}function r(a,b,c){return null!==b&&c-a.at>=1e3*b}function s(a,b){return null===a.sessionId||null===b||a.sessionId===b}},26547:(a,b,c)=>{c.d(b,{Yz:()=>B,jw:()=>z});var d=c(51297),e=c(85164);let f=["minimal","low","medium","high","xhigh"];function g(){return{model:null,effort:null}}let h=/^[A-Za-z0-9][A-Za-z0-9._:@/-]*$/,i=/^[A-Za-z0-9][A-Za-z0-9 .()[\]_:@/-]*$/;function j(a){return a.length>0&&a.length<=64&&h.test(a)}function k(a){return a.length>0&&a.length<=64&&i.test(a)}function l(a,b={}){let c=a.trim().toLowerCase();if(""===c)return null;if(f.includes(c))return c;if(!b.allowTruncated||c.length<2)return null;let d=f.filter(a=>a.length===c.length+1&&a.startsWith(c));return 1===d.length?d[0]:null}let m=/^\s*([^\s·]+)(?:\s+(minimal|low|medium|high|xhigh)\b)?/i;function n(a){if(!e.aW.test(a))return null;let b=a.indexOf("\xb7");if(b<0)return null;let c=m.exec(a.slice(0,b));if(!c)return null;let d=c[1];if(!j(d))return null;let f=c[2]?l(c[2]):null;return null!==f||/\d/.test(d)?{model:d,effort:f}:null}let o=/^\s*[\u2500-\u259F][\s\u2500-\u259F]*(\S[^\u2500-\u259F]*?)\s+with\s+(minimal|low|medium|high|xhigh)\s+effort\b/i;function p(a){let b=o.exec(a);if(!b)return null;let c=b[1].trim();return k(c)?{model:c,effort:l(b[2])}:null}let q=/^\s*(?:\?\s+for\s+shortcuts|esc\s+to\s+cancel)\b/i,r=/^\s*[\u2500-\u259F][\s\u2500-\u259F]*(\S[^\u2500-\u259F]*?)\s+\((minimal|low|medium|high|xhigh)\)\s*$/i;function s(a){if(!q.test(a))return null;let b=a.lastIndexOf("\xb7");if(b<0)return null;let c=l(a.slice(b+1),{allowTruncated:!0});if(!c)return null;let d=a.slice(0,b).trimEnd().split(/\s{2,}/),e=(d[d.length-1]??"").trim();return{model:k(e)?e:null,effort:c}}function t(a){let b=r.exec(a);if(!b)return null;let c=b[1].trim();return k(c)?{model:c,effort:l(b[2])}:null}let u=/^\s*[●◉◎○]\s+Model\s+changed\s+from\s+\S+(?:\s+\([^)]*\))?\s+to\s+(\S+)(?:\s+\((minimal|low|medium|high|xhigh)\))?\s+for\s+this\s+session\b/i;function v(a){let b=u.exec(a);if(!b)return null;let c=b[1];return j(c)?{model:c,effort:b[2]?l(b[2]):null}:null}let w=/^\s*▣\s+[A-Za-z][A-Za-z0-9-]*\s+·\s+([^·]+?)(?:\s+·\s+[\d.]+\s?m?s)?\s*$/;function x(a){let b=w.exec(a);if(!b)return null;let c=b[1].trim();return k(c)?{model:c,effort:null}:null}function y(a,b){let c=a.split("\n");for(let a=c.length-1;a>=0;a--){let e=b((0,d.aJ)(c[a]));if(e)return e}return null}function z(a,b){if(!b)return g();switch(a){case"codex":return y(b,n)??g();case"claude":return y(b,p)??g();case"antigravity":return y(b,s)??y(b,t)??g();case"copilot":{let a=function(a){let b=a.split("\n");for(let a=b.length-1;a>=0;a--){let c=(0,d.aJ)(b[a]);if(""!==c.trim()){if(!e.Ub.test(c)&&!e.tJ.test(c))return null;let a=c.trim().split(/\s{2,}/);if(a.length<2)return null;let b=a[a.length-1].split("\xb7").map(a=>a.trim());if(b.length>2)return null;let d=b[0];if(!k(d))return null;if(1===b.length)return{model:d,effort:null};let f=l(b[1]);return null===f?null:{model:d,effort:f}}}return null}(b),c=y(b,v);if(!a)return c??g();if(null!==a.effort||null===c||null===c.effort)return a;return!function(a,b){let c=a=>a.toLowerCase().replace(/[^a-z0-9]/g,"");return c(a)===c(b)}(a.model,c.model)?a:{model:a.model,effort:c.effort}}case"opencode":return y(b,x)??g();default:return g()}}let A=/-(low|medium|high)$/i;function B(a,b,c,d){let e=(b||null)??c?.model??null,f=c?.effort??null,g="antigravity"===a?function(a){if(!a)return null;let b=A.exec(a);return b?b[1].toLowerCase():null}(e)??f:f;return{model:e,effort:(d||null)??g}}},27939:(a,b,c)=>{c.d(b,{F_:()=>r,KA:()=>s,XO:()=>v,Y2:()=>l,jp:()=>k,lr:()=>t,pr:()=>u});var d=c(29021),e=c(21820),f=c(33873),g=c(8004),h=c(24455);let i=(0,c(72626).h)("lib/session/opencode-session-store"),j=/^ses[A-Za-z0-9_-]{1,128}$/;function k(a){return"string"==typeof a&&j.test(a)}let l=200,m=globalThis.__opencodeSessionMemories??=new Map;function n(a){return(0,h.v7)(a.worktreeId,a.cliToolId,a.instanceId)}function o(){let a=(0,f.join)((0,e.homedir)(),".commandmate","opencode-sessions.json");return(0,g.T)(process.env.CM_OPENCODE_SESSION_FILE,a,"CM_OPENCODE_SESSION_FILE")}function p(){try{let a=JSON.parse((0,d.readFileSync)(o(),"utf8"));if("object"!=typeof a||null===a||Array.isArray(a))return{};let b={};for(let[c,d]of Object.entries(a))!("object"!=typeof d||null===d||Array.isArray(d))&&k(d.sessionId)&&"string"==typeof d.worktreePath&&d.worktreePath.length>0&&(b[c]={sessionId:d.sessionId,title:"string"==typeof d.title?d.title:null,worktreePath:d.worktreePath,updatedAt:"number"==typeof d.updatedAt?d.updatedAt:0});return b}catch{return{}}}function q(a){let b=o();try{(0,d.mkdirSync)((0,f.dirname)(b),{recursive:!0}),(0,d.writeFileSync)(b,`${JSON.stringify(a,null,2)}
2
- `,{mode:384})}catch(a){i.warn("opencode-session-file-write-failed",{path:b,error:a instanceof Error?a.message:String(a)})}}function r(a,b,c=Date.now()){if(!k(b.sessionId))return i.warn("opencode-session-id-rejected",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId}),!1;if(0===b.worktreePath.length)return!1;let d={sessionId:b.sessionId,title:"string"==typeof b.title?b.title.slice(0,l):null,worktreePath:b.worktreePath,updatedAt:c},e=n(a);m.set(e,d);let f=p();return f[e]=d,q(f),!0}function s(a){let b=n(a),c=m.get(b);if(c)return c;let d=p()[b];return d?(m.set(b,d),d):null}function t(a){let b=n(a);m.delete(b);let c=p();b in c&&(delete c[b],q(c))}function u(a,b){let c=s(a);return c?c.worktreePath!==b?(i.info("opencode-session-recovery-path-mismatch",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,recorded:c.worktreePath}),null):k(c.sessionId)?c.sessionId:null:null}function v(a,b){return k(b)?`${a} -s ${b}`:a}},36051:(a,b,c)=>{c.d(b,{PP:()=>g,QB:()=>e,Yo:()=>j,fO:()=>k,lY:()=>f});var d=c(81254);let e=[{number:1,label:"Allow once",reply:"once"},{number:2,label:"Allow always",reply:"always"},{number:3,label:"Reject",reply:"reject"}],f=500;function g(a){return"string"==typeof a&&""!==a}let h={notification:"Notification(permission_prompt)","permission-request":"PermissionRequest (no decision)"};function i(a,b){let c=[`A dialog is open in ${a}: the agent reported it via ${h[b.source]}${b.toolName?` for ${b.toolName}`:""}, but the detection layer published no options for it.`];if(b.decisionOptions&&b.decisionOptions.length>0?c.push(`Answer it with \`commandmate respond ${a} <number>\`: `+b.decisionOptions.map(a=>`${a.number} = ${a.label} (${a.reply})`).join(", ")+". The reply goes to the agent's own API, so no keys are sent to the terminal "+`and the label works too (\`respond ${a} "Allow once"\`).`):c.push(`Answer it in the terminal, or send the option NUMBER with \`commandmate respond ${a} <number>\` — yes/no is not resolved on a numbered dialog (Issue #1681).`),b.message&&c.push(`Agent message: "${b.message}"`),b.askUserQuestion){let{question:d,labels:e,questionCount:f}=b.askUserQuestion,h=g(b.decisionId)&&1===f&&!(b.decisionOptions&&b.decisionOptions.length>0);c.push(`The agent asked${f>1?` ${f} questions, the first being`:""}: "${d}" — offering: ${e.join(" / ")}. `+(h?`Answer it with \`commandmate respond ${a} <number>\`: `+e.map((a,b)=>`${b+1} = ${a}`).join(", ")+". The number is this list's own position and the reply goes to the agent's own API, so no keys are sent to the terminal (the label works too).":"The picker renumbers and adds its own entries, so read the option NUMBER off the terminal rather than counting this list."))}return c.join(" ")}function j(a,b){return{type:d.LT,status:"pending",question:i(a,b),options:[],source:b.source,...b.message?{message:b.message}:{},...b.toolName?{toolName:b.toolName}:{},...b.askUserQuestion?{askUserQuestion:b.askUserQuestion}:{},...b.decisionOptions&&b.decisionOptions.length>0?{decisionOptions:b.decisionOptions}:{},decisionId:g(b.decisionId)?b.decisionId:null,...b.patterns&&b.patterns.length>0?{patterns:[...b.patterns]}:{}}}function k(a,b){return{type:d.LT,status:"unclassified",question:i(a,b),options:[],source:b.source,...b.message?{message:b.message}:{},...b.toolName?{toolName:b.toolName}:{},...b.askUserQuestion?{askUserQuestion:b.askUserQuestion}:{}}}},48083:(a,b,c)=>{c.d(b,{BJ:()=>ah,CE:()=>I,Fw:()=>ai,HR:()=>ae,In:()=>X,MU:()=>ab,NW:()=>E,P5:()=>ac,R4:()=>_,S9:()=>H,_N:()=>ag,_i:()=>G,dj:()=>Z,fY:()=>F,getLastAgentEvent:()=>U,ik:()=>aa,je:()=>$,jl:()=>W,m5:()=>af,n5:()=>y,pI:()=>N,qo:()=>ak,recordAgentEvent:()=>K,sA:()=>Y,vm:()=>V,zA:()=>ad});var d=c(24455),e=c(62887),f=c(49154),g=c(26547),h=c(67882),i=c(24581);let j=globalThis.__agentEventLastStopAt??(globalThis.__agentEventLastStopAt=new Map),k=globalThis.__agentEventLast??(globalThis.__agentEventLast=new Map),l=globalThis.__agentEventGenerationStartedAt??(globalThis.__agentEventGenerationStartedAt=new Map),m=globalThis.__agentEventTurns??(globalThis.__agentEventTurns=new Map),n=globalThis.__agentEventDrops??(globalThis.__agentEventDrops=new Map),o=globalThis.__agentEventTurnSeq??(globalThis.__agentEventTurnSeq={value:0}),p=globalThis.__agentEventAskUserQuestion??(globalThis.__agentEventAskUserQuestion=new Map),q=globalThis.__agentEventRecentKeys??(globalThis.__agentEventRecentKeys=new Map),r=globalThis.__agentEventRecentIdentities??(globalThis.__agentEventRecentIdentities=new Map),s=globalThis.__agentEventAwaitingInstruction??(globalThis.__agentEventAwaitingInstruction=new Map),t=globalThis.__agentEventLastModel??(globalThis.__agentEventLastModel=new Map),u=globalThis.__agentCapturedModelInfo??(globalThis.__agentCapturedModelInfo=new Map),v=globalThis.__agentEventLastEffort??(globalThis.__agentEventLastEffort=new Map);function w(){return{dedupDropped:{identity:0,timeWindow:0},decisionEvicted:0,idsDiscarded:0,dialogTimedOut:0,decisionOverflow:0}}function x(a){let b=n.get(a);return b||(b=w(),n.set(a,b),al(n,512)),b}function y(a,b,c){let e=n.get((0,d.v7)(a,b,c));return e?{...e,dedupDropped:{...e.dedupDropped}}:w()}function z(a){return l.get(a)??null}function A(a){let b=m.get(a);return b&&b.generationAt===z(a)?b:null}function B(a,b){let c=A(a);return null===c?null:(null===c.closedAt&&b-c.displayEvent.at>=i.Mu&&(c.closedAt=c.displayEvent.at+i.Mu,c.closedBy="stale"),c)}function C(a){return o.value+=1,`turn-${a}-${o.value}`}function D(a,b,c){let d=b.pendingDecisions.filter(a=>(0,i.jF)(a,c)),e=b.pendingDecisions.length-d.length;return e>0&&(x(a).dialogTimedOut+=e,b.pendingDecisions=d),d}function E(a,b,c,e=Date.now()){let f=(0,d.v7)(a,b,c),g=B(f,e);return null===g?[]:D(f,g,e)}function F(a,b,c,e=Date.now()){return(0,i.nY)(function(a,b,c,e=Date.now()){return B((0,d.v7)(a,b,c),e)}(a,b,c,e))}function G(a,b,c,e,f=Date.now()){let g=A((0,d.v7)(a,b,c));return null!==g&&null===g.closedAt&&(e?(g.scraperCompletionPolls+=1,!(g.scraperCompletionPolls<i.Tt)&&(g.closedAt=f,g.closedBy="scraper_evidence",!0)):(g.scraperCompletionPolls=0,!1))}function H(a,b,c,e=Date.now()){j.set((0,d.v7)(a,b,c),e)}function I(a,b,c){return j.get((0,d.v7)(a,b,c))??null}let J=["running","waiting"];function K(a,b,c,g,h={}){let j=(0,d.v7)(a,b,c);return!function(a,b,c,e,f){if("session_start"!==e.event||!0!==f.sessionStartMayArriveLate)return!1;let g=_(a,b,c,e.at);if(null===g||!J.includes(g.status))return!1;let h=k.get((0,d.v7)(a,b,c))?.sessionId??null;return null===h||null==e.sessionId||e.sessionId===h}(a,b,c,g,h)?(k.set(j,g),M(j,g),function(a,b){switch(b.event){case"pre_tool_use":f.mW.includes(b.detail??"")||p.delete(a);return;case"notification":"idle_prompt"===b.detail&&p.delete(a);return;case"post_tool_use":case"stop":case"user_prompt_submit":case"session_start":case"session_end":p.delete(a);return;default:b.event;return}}(j,g),"session_start"===g.event&&(l.set(j,g.at),L(j,g.at)),function(a,b){let c=z(a);if(null===c||!(b.at<c))switch(b.event){case"user_prompt_submit":P(a,b,c,{continueOpen:!1}),R(a);return;case"post_tool_use":P(a,b,c,{continueOpen:!0}),R(a);return;case"pre_tool_use":P(a,b,c,{continueOpen:!0});return;case"stop":!function(a,b,c){let d=A(a);if(null!==d&&null===d.closedAt&&null!==d.openedAt){if(!(0,i.ZV)(d,b.sessionId))return;d.closedAt=b.at,d.closedBy="stop",d.displayEvent=O(b),R(a);return}m.set(a,{turnId:C(b.at),sessionId:b.sessionId,openedAt:null,closedAt:b.at,closedBy:"stop",generationAt:c,displayEvent:O(b),pendingDecisions:[],scraperCompletionPolls:0}),T()}(a,b,c);return;case"session_end":(function(a,b){let c=A(a);null!==c&&(0,i.ZV)(c,b.sessionId)&&(c.closedAt=b.at,c.closedBy="session_end")})(a,b),R(a);return;case"session_start":return;case"notification":!function(a,b,c){if("permission_prompt"===b.detail)return!0===b.promptSettled?S(a,b):Q(a,c,{source:"notification",at:b.at,message:b.message??null,toolName:b.toolName??null,patterns:b.decisionPatterns??null,decisionId:b.decisionId??null,bootstrapDisplay:O(b)});if(b.detail===e.KC){!0===b.promptSettled&&S(a,b);return}if("idle_prompt"===b.detail){R(a);let d=A(a);if(null!==d&&null===d.closedAt){d.displayEvent=O(b);return}if(null!==d)return;m.set(a,{turnId:C(b.at),sessionId:b.sessionId,openedAt:null,closedAt:null,closedBy:null,generationAt:c,displayEvent:O(b),pendingDecisions:[],scraperCompletionPolls:0}),T()}}(a,b,c);return;default:b.event;return}}(j,g),function(a,b){switch(b.event){case"notification":"idle_prompt"===b.detail&&s.set(a,{at:b.at,message:b.message??null});return;case"user_prompt_submit":case"session_start":case"session_end":s.delete(a);return;case"stop":case"pre_tool_use":case"post_tool_use":return;default:b.event;return}}(j,g),{recorded:!0}):(M(j,g),{recorded:!1,skipped:"late-session-start"})}function L(a,b){let c=m.get(a);c&&(0!==c.pendingDecisions.length&&(x(a).decisionEvicted+=c.pendingDecisions.length,c.pendingDecisions=[]),null===c.closedAt&&(c.closedAt=b,c.closedBy="generation",c.generationAt=b))}function M(a,b){"string"==typeof b.model&&""!==b.model&&t.set(a,b.model.slice(0,e.h9))}function N(a,b,c){return null!==function(a,b,c){let e=(0,d.v7)(a,b,c),f=s.get(e);if(!f)return null;let g=l.get(e);return void 0!==g&&f.at<g?null:f}(a,b,c)}function O(a){return{event:a.event,at:a.at,detail:a.detail}}function P(a,b,c,{continueOpen:d}){let e=A(a),f=null!==e&&null===e.closedAt&&null!==e.openedAt&&(0,i.ZV)(e,b.sessionId);if(d&&f){e.displayEvent=O(b),e.sessionId??=b.sessionId,e.scraperCompletionPolls=0;return}let g=null!==e&&null===e.openedAt&&null===e.closedAt?e.pendingDecisions:[];m.set(a,{turnId:C(b.at),sessionId:b.sessionId,openedAt:b.at,closedAt:null,closedBy:null,generationAt:c,displayEvent:O(b),pendingDecisions:g,scraperCompletionPolls:0}),T()}function Q(a,b,c){let d=A(a);null===d?(d={turnId:C(c.at),sessionId:null,openedAt:null,closedAt:null,closedBy:null,generationAt:b,displayEvent:c.bootstrapDisplay,pendingDecisions:[],scraperCompletionPolls:0},m.set(a,d),T()):null!==d.closedAt&&(d={turnId:C(c.at),sessionId:null,openedAt:null,closedAt:null,closedBy:null,generationAt:b,displayEvent:c.bootstrapDisplay,pendingDecisions:[],scraperCompletionPolls:0},m.set(a,d),T());let e=null===c.decisionId?null:(0,i.Xq)(c.decisionId);null!==c.decisionId&&null===e&&(x(a).idsDiscarded+=1);let f="notification"===c.source,g=null!==e?d.pendingDecisions.find(a=>a.decisionId===e)??d.pendingDecisions.find(a=>null===a.decisionId&&"permission-request"===a.source):d.pendingDecisions.find(a=>null===a.decisionId);if(g){g.message=(0,i.wt)(c.message)??g.message,g.toolName=(0,i.kT)(c.toolName)??g.toolName,g.patterns=(0,i.Ui)(c.patterns)??g.patterns,g.decisionId??=e,f&&(g.source="notification",g.confirmedAt??=c.at);return}if(d.pendingDecisions.length>=i.RY){x(a).decisionOverflow+=1;return}d.pendingDecisions.push({decisionId:e,at:c.at,source:c.source,message:(0,i.wt)(c.message),toolName:(0,i.kT)(c.toolName),patterns:(0,i.Ui)(c.patterns),confirmedAt:f?c.at:null,scraperCorroborated:!1,recorded:!1})}function R(a){let b=A(a);null!==b&&(b.pendingDecisions=[])}function S(a,b){let c=A(a);if(null===c||0===c.pendingDecisions.length)return;let d=null===b.decisionId||void 0===b.decisionId?null:(0,i.Xq)(b.decisionId);if(null===d){c.pendingDecisions=[];return}c.pendingDecisions=c.pendingDecisions.filter(a=>null!==a.decisionId&&a.decisionId!==d)}function T(){al(m,512)}function U(a,b,c){return k.get((0,d.v7)(a,b,c))??null}function V(a,b,c,f){if(!f.model&&!f.effort)return;let g=(0,d.v7)(a,b,c),h=u.get(g);u.set(g,{model:f.model?f.model.slice(0,e.h9):h?.model??null,effort:f.effort??h?.effort??null})}function W(a,b,c){var e,f,h;return(0,g.Yz)(b,t.get((0,d.v7)(a,b,c))??null,function(a,b,c){let e=u.get((0,d.v7)(a,b,c));return{model:e?.model??null,effort:e?.effort??null}}(a,b,c),(e=a,f=b,h=c,v.get((0,d.v7)(e,f,h))??null))}function X(a,b,c,f){"string"==typeof f&&""!==f&&v.set((0,d.v7)(a,b,c),f.slice(0,e.h9))}let Y=i.Mu;function Z(a,b,c,e=Date.now()){let f=(0,d.v7)(a,b,c);l.set(f,e),L(f,e),p.delete(f),s.delete(f),t.delete(f),u.delete(f),v.delete(f),r.delete(f)}function $(a,b,c){let e=(0,d.v7)(a,b,c);k.delete(e),l.delete(e),m.delete(e),n.delete(e),p.delete(e),s.delete(e),t.delete(e),u.delete(e),v.delete(e),r.delete(e)}function _(a,b,c,e=Date.now()){let f=(0,d.v7)(a,b,c),g=B(f,e);if(null===g)return null;let i=g.displayEvent;if(e-i.at>=Y)return null;let j={event:i.event,at:i.at,detail:i.detail},k=D(f,g,e);if(k.length>0)return{status:"waiting",reason:"notification"===k[0].source?h.Oh.PERMISSION_PROMPT:h.Oh.PERMISSION_REQUEST,...j};if(null!==g.closedAt)return"stop"===g.closedBy?{status:"ready",reason:h.Oh.STOP,...j}:null;let l=(0,h.DA)(i.event,i.detail);return null===l||"waiting"===l.status?null===g.openedAt?null:{status:"running",reason:h.Oh.PROMPT_SUBMIT,...j}:{...l,...j}}function aa(a,b,c,e,f=Date.now()){let g=(0,d.v7)(a,b,c);Q(g,z(g),{source:"permission-request",at:f,message:null,toolName:e,patterns:null,decisionId:null,bootstrapDisplay:{event:"notification",at:f,detail:"permission_prompt"}})}function ab(a,b,c,e,f=Date.now()){let g=(0,d.v7)(a,b,c);Q(g,z(g),{source:"notification",at:f,message:null,toolName:e.toolName,patterns:null,decisionId:e.decisionId,bootstrapDisplay:{event:"notification",at:f,detail:e.detail}})}function ac(a,b,c,d=Date.now()){return E(a,b,c,d)[0]??null}function ad(a,b,c,d=Date.now()){let e=ac(a,b,c,d);e&&(e.scraperCorroborated=!0,e.confirmedAt??=d)}function ae(a,b,c){let d=ac(a,b,c);d&&(d.recorded=!0)}function af(a,b,c){R((0,d.v7)(a,b,c))}function ag(a,b,c,e,f=Date.now()){p.set((0,d.v7)(a,b,c),{at:f,spec:e})}function ah(a,b,c,e=Date.now()){let f=(0,d.v7)(a,b,c),g=p.get(f);if(!g)return null;let h=l.get(f);return void 0!==h&&g.at<h||e-g.at>=Y?null:g}function ai(a,b,c,e,f,g=Date.now(),h=null){if(!f)return!1;let i=[(0,d.v7)(a,b,c),e,h??"",f].join(" "),j=q.get(i);return void 0!==j&&g-j<3e3||(q.set(i,g),function(a){for(let[b,c]of q)a-c>=3e3&&q.delete(b);for(;q.size>512;){let a=q.keys().next();if(a.done)break;q.delete(a.value)}}(g),!1)}i.h_.predicted;let aj=["stop","session_end"];function ak(a){let b=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId);if(null!==a.identityKind){let c=null===a.identity?null:(0,i.Xq)(a.identity);if(null!==a.identity&&null===c&&(x(b).idsDiscarded+=1),null!==c)return!function(a,b){let c=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId),e=r.get(c);e||(e=new Map,r.set(c,e),al(r,512));let f=[a.event,a.detail??"",b].join(" ");return!!e.has(f)||(e.set(f,a.at),al(e,512),!1)}(a,c)?{duplicate:!1}:(x(b).dedupDropped.identity+=1,{duplicate:!0,by:"identity"});if(aj.includes(a.event))return{duplicate:!1}}return ai(a.worktreeId,a.cliToolId,a.instanceId,a.event,a.sessionId,a.at,a.detail)?(x(b).dedupDropped.timeWindow+=1,{duplicate:!0,by:"time-window"}):{duplicate:!1}}function al(a,b){for(;a.size>b;){let b=a.keys().next();if(b.done)break;a.delete(b.value)}}},49154:(a,b,c)=>{c.d(b,{GF:()=>e,Wk:()=>g,mW:()=>f});var d=c(13287);let e="question",f=[d.k$,e];function g(a){return null!==a&&f.includes(a)?"question":"permission"}},56791:(a,b,c)=>{c.r(b),c.d(b,{ACTIVE_FILTER:()=>d.ks,ACTIVE_TASK_STATUSES:()=>d.EL,AgentInstanceLimitError:()=>d.AC,CURRENT_SCHEMA_VERSION:()=>f.FT,DEFAULT_RUN_HISTORY_LIMIT:()=>d.Tu,InvalidAgentInstanceError:()=>d.ug,MAX_DISABLED_REPOSITORIES:()=>h.nc,MAX_RUN_HISTORY_DAYS:()=>d.eP,MAX_RUN_HISTORY_LIMIT:()=>d.mg,MemoDbError:()=>d.lm,NEW_SUBSCRIPTION_DEFAULTS:()=>d.s6,PUSH_DEFAULTS_VERSION:()=>d.VP,RepositoryDbError:()=>h.j8,TASK_STATUSES:()=>d.Hi,TERMINAL_TASK_STATUSES:()=>d.sA,VERIFICATION_GATE_SOURCES:()=>d.Dx,VERIFICATION_TRIGGERS:()=>d.af,WORKTREE_TODO_STATUSES:()=>d.KG,addAgentInstance:()=>d.Uq,archiveAllAssistantMessages:()=>d.cD,archiveAssistantMessagesFrom:()=>d.Jj,cancelTimer:()=>d.Ud,cancelTimersByWorktree:()=>d.$$,cleanupOldTimers:()=>d.ul,clearInProgressMessageId:()=>d.YX,clearLastUserMessage:()=>d.cf,clearTimerHistory:()=>d.jf,closeDbInstance:()=>e.closeDbInstance,countAgentInstances:()=>d.fs,countDisabledRepositories:()=>h.QJ,countPushSubscriptionsForKind:()=>d.rC,countWorktreesByRepositoryPath:()=>h.kp,createAssistantConversation:()=>d.G4,createAssistantExecution:()=>d.hL,createAssistantMessage:()=>d.qp,createCloneJob:()=>h.tw,createGateResult:()=>d.hl,createMemo:()=>d.To,createMessage:()=>d.oH,createRepository:()=>h.vB,createTask:()=>d.UT,createTimer:()=>d.CR,createTodo:()=>d.py,createVerificationRun:()=>d.rY,createWorktreeTodo:()=>d.yy,deleteAllMessages:()=>d.pE,deleteAssistantSessionState:()=>d.z2,deleteMemo:()=>d.cP,deleteMessageById:()=>d.DF,deleteMessagesByCliTool:()=>d.lA,deleteMessagesByInstance:()=>d.Qp,deletePushSubscriptionByEndpoint:()=>d.th,deleteRepository:()=>h.oG,deleteRepositoryWorktrees:()=>d.oZ,deleteSessionState:()=>d.ZP,deleteTodo:()=>d.Ys,deleteWorktreeTodo:()=>d.vg,deleteWorktreesByIds:()=>d.Rm,disableExistingRepository:()=>h.eP,disableRepository:()=>h.l$,ensureEnvRepositoriesRegistered:()=>h.ES,filterExcludedPaths:()=>h.Ho,findMessageByRequestId:()=>d.Ow,finishGateResult:()=>d.C8,finishVerificationRun:()=>d.u$,getActiveCloneJobByUrl:()=>h.fD,getActiveTask:()=>d.__,getActiveTaskForInstance:()=>d.MH,getAgentInstance:()=>d.BN,getAgentInstances:()=>d.m0,getAliasedWorktreeIds:()=>d.r3,getAllPushSubscriptions:()=>d.Se,getAllRepositories:()=>h.Yg,getAllRepositoriesWithWorktreeCount:()=>h._D,getAllTodos:()=>d.Tk,getAllWorktreeAliases:()=>d.fX,getAllWorktreeIds:()=>d.nO,getAllWorktreePathIds:()=>d.Sj,getAssistantConversationById:()=>d.iT,getAssistantConversationByRepositoryAndCliTool:()=>d.gp,getAssistantExecutionById:()=>d.$r,getAssistantMessageById:()=>d.yE,getAssistantMessages:()=>d.BE,getAssistantSessionState:()=>d.qK,getCloneJob:()=>h.bM,getCloneJobsByStatus:()=>h.n_,getCurrentVersion:()=>f.Mj,getDailyReport:()=>d.ap,getDbInstance:()=>e.getDbInstance,getDefaultDbPath:()=>g.$b,getExcludedRepositories:()=>h.lS,getExcludedRepositoryPaths:()=>h.pr,getInitialBranch:()=>d.p4,getIssueDbPath:()=>g.zm,getLastAssistantMessageAt:()=>d.nP,getLastMessage:()=>d.sy,getLastUserMessage:()=>d.r8,getLatestAssistantExecutionByConversation:()=>d.of,getLegacyDbPaths:()=>q,getMemoById:()=>d.DN,getMemosByWorktreeId:()=>d.pZ,getMessageById:()=>d.kA,getMessages:()=>d.VL,getMessagesByDateRange:()=>d.lr,getMigrationHistory:()=>f.PS,getPendingTimerCountByWorktree:()=>d.GF,getPendingTimers:()=>d._O,getPushSubscriptionByEndpoint:()=>d.CF,getPushSubscriptionsForKind:()=>d.gn,getRepositories:()=>d.NV,getRepositoryById:()=>h.r,getRepositoryByNormalizedUrl:()=>h.Uj,getRepositoryByPath:()=>h.Dp,getRunningAssistantExecutionByConversation:()=>d.ce,getRunningVerificationRun:()=>d.WZ,getSessionState:()=>d.y1,getTask:()=>d.gg,getTimerById:()=>d.kx,getTimersByWorktree:()=>d.DP,getTodoById:()=>d.Nr,getTodosByRepositoryId:()=>d.ob,getTodosByWorktreeId:()=>d.fr,getVerificationRun:()=>d.J6,getWorktreeAliases:()=>d.Q2,getWorktreeById:()=>d.Ui,getWorktreeIdsByRepository:()=>d.P9,getWorktreeTodoById:()=>d.eN,getWorktrees:()=>d.vi,getWorktreesByRepository:()=>d.uJ,initDatabase:()=>d.s4,isTerminalTaskStatus:()=>d.uB,isWorktreeTodoStatus:()=>d.yT,listRunningAssistantExecutions:()=>d.b2,listRunningVerificationRuns:()=>d.Fi,listTaskEvents:()=>d.HB,listTasks:()=>d.Vk,listVerificationRuns:()=>d.Mt,listVerificationRunsForPeriod:()=>d.UE,markPendingPromptsAsAnswered:()=>d.PL,migrateDbIfNeeded:()=>r,migrateWorktreeIdPreservingChildren:()=>d._h,pushSubscriptionNeedsDefaultsNotice:()=>d.Zj,recomputeLastUserMessage:()=>d.jp,recordAnsweredPrompt:()=>d.pG,recordWorktreeAlias:()=>d.xJ,recoverStuckSendingTimers:()=>d.Xm,registerAndFilterRepositories:()=>h.$G,removeAgentInstance:()=>d.NU,reorderMemos:()=>d.nQ,reorderWorktreeTodos:()=>d.yb,resolveAndValidatePath:()=>p,resolveRepositoryPath:()=>h.mE,resolveWorktreeIdWithAlias:()=>d.l0,restoreRepository:()=>h.RS,rollbackMigrations:()=>f.Wy,runMigrations:()=>f.vI,saveDailyReport:()=>d.tt,saveInitialBranch:()=>d.GA,setAgentInstances:()=>d.Cs,setInProgressMessageId:()=>d.OF,setRepositoryEnabled:()=>h.iQ,updateAssistantConversation:()=>d.xR,updateAssistantExecution:()=>d.az,updateAssistantMessageStatus:()=>d.nZ,updateAssistantSessionState:()=>d.PP,updateCliToolId:()=>d.WU,updateCloneJob:()=>h.k5,updateDailyReportContent:()=>d.IF,updateFavorite:()=>d.O,updateLastUserMessage:()=>d.EU,updateLastViewedAt:()=>d.HZ,updateMemo:()=>d.UY,updateMessageContent:()=>d.e8,updatePromptData:()=>d.cw,updatePushSubscriptionPreferences:()=>d.jJ,updateRepository:()=>h.Ir,updateSelectedAgents:()=>d.DC,updateSessionState:()=>d.gb,updateStatus:()=>d.yB,updateTimerStatus:()=>d.j2,updateTodo:()=>d.uy,updateVibeLocalContextWindow:()=>d.s,updateVibeLocalModel:()=>d.iu,updateWorktreeDescription:()=>d.hq,updateWorktreeLink:()=>d.z1,updateWorktreeTodo:()=>d.bl,upsertPushSubscription:()=>d.jA,upsertWorktree:()=>d.ZL,validateDbPath:()=>g.Sv,validateRepositoryPath:()=>h.Ux,validateSchema:()=>f.i6});var d=c(90444),e=c(88807),f=c(27727),g=c(20416),h=c(10406),i=c(29021),j=c.n(i),k=c(33873),l=c.n(k),m=c(21820),n=c(7956);let o=(0,c(72626).h)("db-migration-path");function p(a,b){try{if(!j().existsSync(a))return null;let c=j().realpathSync(a);if((0,n.fW)(c))return o.warn(`[Security] ${b} points to system directory, skipping: ${c}`),null;return c}catch{return o.warn(`[Security] Failed to resolve ${b}: ${a}`),null}}function q(){let a=[];a.push(l().join(process.cwd(),"data","db.sqlite")),a.push(l().join(process.cwd(),"data","cm.db")),a.push(l().join((0,m.homedir)(),".commandmate","data","db.sqlite"));let b=process.env.DATABASE_PATH;if(b)try{let c=l().resolve(b);(0,n.fW)(c)?o.warn(`[Security] Skipping DATABASE_PATH in system directory: ${c}`):a.push(b)}catch{o.warn(`[Security] Invalid DATABASE_PATH: ${b}`)}return a}function r(a){let b=l().resolve(a);if((0,n.fW)(b))throw Error(`Security error: Target path cannot be in system directory: ${b}`);if(j().existsSync(a)){let b=p(a,"target path");if(b)return{migrated:!1,targetPath:b}}for(let a of q()){let c=p(a,"legacy path");if(!c)continue;let d=`${c}.bak`;j().copyFileSync(c,d),j().chmodSync(d,384);let e=l().dirname(b);return j().existsSync(e)||j().mkdirSync(e,{recursive:!0,mode:448}),j().copyFileSync(c,b),o.info(`[Migration] Database migrated from ${c} to ${b}`),o.info(`[Migration] Backup created at ${d}`),{migrated:!0,sourcePath:c,targetPath:b,backupPath:d}}return{migrated:!1,targetPath:b}}},62887:(a,b,c)=>{c.d(b,{KC:()=>g,b0:()=>d,h9:()=>f,o0:()=>e});let d=["stop","notification","session_start","user_prompt_submit","session_end","pre_tool_use","post_tool_use"];function e(a){return"string"==typeof a&&d.includes(a)}let f=128,g="permission_replied"},67882:(a,b,c)=>{c.d(b,{DA:()=>e,O_:()=>f,Oh:()=>d,_K:()=>h,kA:()=>g});let d={PROMPT_SUBMIT:"hook_prompt_submit",STOP:"hook_stop",PERMISSION_PROMPT:"hook_permission_prompt",PERMISSION_REQUEST:"hook_permission_request",IDLE_PROMPT:"hook_idle_prompt",PRE_TOOL_USE:"hook_pre_tool_use",POST_TOOL_USE:"hook_post_tool_use"};function e(a,b){switch(a){case"user_prompt_submit":return{status:"running",reason:d.PROMPT_SUBMIT};case"pre_tool_use":return{status:"running",reason:d.PRE_TOOL_USE};case"post_tool_use":return{status:"running",reason:d.POST_TOOL_USE};case"stop":return{status:"ready",reason:d.STOP};case"notification":if("permission_prompt"===b)return{status:"waiting",reason:d.PERMISSION_PROMPT};if("idle_prompt"===b)return{status:"ready",reason:d.IDLE_PROMPT};return null;default:return null}}function f(a){switch(a){case"waiting":return{isWaitingForResponse:!0,isProcessing:!1};case"running":return{isWaitingForResponse:!1,isProcessing:!0};default:return{isWaitingForResponse:!1,isProcessing:!1}}}function g(a){return a?a.isWaitingForResponse?"waiting":a.isProcessing?"running":a.isRunning?"ready":"idle":"idle"}function h(a){return a.isSessionRunning?a.isWaitingForResponse?"waiting":a.isProcessing?"running":"ready":null}},81254:(a,b,c)=>{function d(a){return"answer_only"===a||"answer_then_enter"===a}c.d(b,{LT:()=>e,MI:()=>d,XF:()=>f});let e="unclassified";function f(a){return null!=a&&a.type!==e}},85322:(a,b,c)=>{c.d(b,{k:()=>d});let d="opencode"}};
1
+ "use strict";exports.id=9798,exports.ids=[9798],exports.modules={24581:(a,b,c)=>{c.d(b,{Mu:()=>f,RY:()=>i,Tt:()=>h,Ui:()=>p,Xq:()=>l,ZV:()=>s,h_:()=>g,jF:()=>q,kT:()=>o,nY:()=>k,qX:()=>r,wt:()=>n});var d=c(62887),e=c(36051);let f=18e5,g={predicted:2e4,confirmed:18e5},h=3,i=16,j={turnId:null,openedAt:null,closedAt:null,closedBy:null};function k(a){return null===a?j:{turnId:a.turnId,openedAt:a.openedAt,closedAt:a.closedAt,closedBy:a.closedBy}}function l(a){if("string"!=typeof a||0===a.length||a.length>128)return null;for(let b=0;b<a.length;b++){let c=a.charCodeAt(b);if(c<32||127===c)return null}return a}function m(a,b){return"string"!=typeof a||""===a?null:a.slice(0,b)}function n(a){return m(a,e.lY)}function o(a){return m(a,d.h9)}function p(a){if(!Array.isArray(a))return null;let b=[];for(let c of a)if("string"==typeof c&&""!==c&&(b.push(c.slice(0,200)),b.length>=8))break;return b.length>0?b:null}function q(a,b){let c=null===a.confirmedAt?g.predicted:g.confirmed;return b-a.at<c}function r(a,b,c){return null!==b&&c-a.at>=1e3*b}function s(a,b){return null===a.sessionId||null===b||a.sessionId===b}},26547:(a,b,c)=>{c.d(b,{Yz:()=>F,jw:()=>D});var d=c(51297),e=c(85164);let f=["minimal","low","medium","high","xhigh"];function g(){return{model:null,effort:null}}let h=/^[A-Za-z0-9][A-Za-z0-9._:@/-]*$/,i=/^[A-Za-z0-9][A-Za-z0-9 .()[\]_:@/-]*$/;function j(a){return a.length>0&&a.length<=64&&h.test(a)}function k(a){return a.length>0&&a.length<=64&&i.test(a)}function l(a,b={}){let c=a.trim().toLowerCase();if(""===c)return null;if(f.includes(c))return c;if(!b.allowTruncated||c.length<2)return null;let d=f.filter(a=>a.length===c.length+1&&a.startsWith(c));return 1===d.length?d[0]:null}let m=/^\s*([^\s·]+)(?:\s+(minimal|low|medium|high|xhigh)\b)?/i;function n(a){if(!e.aW.test(a))return null;let b=a.indexOf("\xb7");if(b<0)return null;let c=m.exec(a.slice(0,b));if(!c)return null;let d=c[1];if(!j(d))return null;let f=c[2]?l(c[2]):null;return null!==f||/\d/.test(d)?{model:d,effort:f}:null}let o=/^\s*[\u2500-\u259F][\s\u2500-\u259F]*(\S[^\u2500-\u259F]*?)\s+with\s+(minimal|low|medium|high|xhigh)\s+effort\b/i;function p(a){let b=o.exec(a);if(!b)return null;let c=b[1].trim();return k(c)?{model:c,effort:l(b[2])}:null}let q=/^\s*⎿\s+(?:Set model to|Kept model as)\s+(?!(?:and saved as your default|for this session only)\b)([A-Za-z0-9][A-Za-z0-9 .()[\]_:@/-]*?)(?:\s+(?:and saved as your default for new sessions|for this session only))?(?:\s+with\s+([A-Za-z]+)\s+effort\b[^·]*)?\s*(?:·.*)?$/;function r(a){let b=q.exec(a);if(!b)return null;let c=b[1].trim();return k(c)?{model:c,effort:b[2]?l(b[2]):null}:null}let s=/^\s*(?:\?\s+for\s+shortcuts|esc\s+to\s+cancel)\b/i,t=/^\s*[\u2500-\u259F][\s\u2500-\u259F]*(\S[^\u2500-\u259F]*?)\s+\((minimal|low|medium|high|xhigh)\)\s*$/i;function u(a){if(!s.test(a))return null;let b=a.lastIndexOf("\xb7");if(b<0)return null;let c=l(a.slice(b+1),{allowTruncated:!0});if(!c)return null;let d=a.slice(0,b).trimEnd().split(/\s{2,}/),e=(d[d.length-1]??"").trim();return{model:k(e)?e:null,effort:c}}function v(a){let b=t.exec(a);if(!b)return null;let c=b[1].trim();return k(c)?{model:c,effort:l(b[2])}:null}let w=/^\s*[●◉◎○]\s+Model\s+changed\s+from\s+\S+(?:\s+\([^)]*\))?\s+to\s+(\S+)(?:\s+\((minimal|low|medium|high|xhigh)\))?\s+for\s+this\s+session\b/i;function x(a){let b=w.exec(a);if(!b)return null;let c=b[1];return j(c)?{model:c,effort:b[2]?l(b[2]):null}:null}let y=/^\s*▣\s+[A-Za-z][A-Za-z0-9-]*\s+·\s+([^·]+?)(?:\s+·\s+[\d.]+\s?m?s)?\s*$/;function z(a){let b=y.exec(a);if(!b)return null;let c=b[1].trim();return k(c)?{model:c,effort:null}:null}let A=/^\s*#\s+models:\s*([^·]+?)(?:\s+with\s+([A-Za-z]+)\s+effort)?\s*(?:·|$)/i;function B(a){let b=A.exec(a);if(!b)return null;let c=b[1].trim();return k(c)?{model:c,effort:b[2]?l(b[2]):null}:null}function C(a,b){let c=a.split("\n");for(let a=c.length-1;a>=0;a--){let e=b((0,d.aJ)(c[a]));if(e)return e}return null}function D(a,b){if(!b)return g();switch(a){case"codex":return C(b,n)??g();case"claude":return C(b,p)??C(b,r)??g();case"antigravity":return C(b,u)??C(b,v)??g();case"copilot":{let a=function(a){let b=a.split("\n");for(let a=b.length-1;a>=0;a--){let c=(0,d.aJ)(b[a]);if(""!==c.trim()){if(!e.Ub.test(c)&&!e.tJ.test(c))return null;let a=c.trim().split(/\s{2,}/);if(a.length<2)return null;let b=a[a.length-1].split("\xb7").map(a=>a.trim());if(b.length>2)return null;let d=b[0];if(!k(d))return null;if(1===b.length)return{model:d,effort:null};let f=l(b[1]);return null===f?null:{model:d,effort:f}}}return null}(b),c=C(b,x);if(!a)return c??g();if(null!==a.effort||null===c||null===c.effort)return a;return!function(a,b){let c=a=>a.toLowerCase().replace(/[^a-z0-9]/g,"");return c(a)===c(b)}(a.model,c.model)?a:{model:a.model,effort:c.effort}}case"opencode":return C(b,z)??g();case"command-code":return C(b,B)??g();default:return g()}}let E=/-(low|medium|high)$/i;function F(a,b,c,d){let e=(b||null)??c?.model??null,f=c?.effort??null,g="antigravity"===a?function(a){if(!a)return null;let b=E.exec(a);return b?b[1].toLowerCase():null}(e)??f:f;return{model:e,effort:(d||null)??g}}},27939:(a,b,c)=>{c.d(b,{F_:()=>r,KA:()=>s,XO:()=>v,Y2:()=>l,jp:()=>k,lr:()=>t,pr:()=>u});var d=c(29021),e=c(21820),f=c(33873),g=c(8004),h=c(24455);let i=(0,c(72626).h)("lib/session/opencode-session-store"),j=/^ses[A-Za-z0-9_-]{1,128}$/;function k(a){return"string"==typeof a&&j.test(a)}let l=200,m=globalThis.__opencodeSessionMemories??=new Map;function n(a){return(0,h.v7)(a.worktreeId,a.cliToolId,a.instanceId)}function o(){let a=(0,f.join)((0,e.homedir)(),".commandmate","opencode-sessions.json");return(0,g.T)(process.env.CM_OPENCODE_SESSION_FILE,a,"CM_OPENCODE_SESSION_FILE")}function p(){try{let a=JSON.parse((0,d.readFileSync)(o(),"utf8"));if("object"!=typeof a||null===a||Array.isArray(a))return{};let b={};for(let[c,d]of Object.entries(a))!("object"!=typeof d||null===d||Array.isArray(d))&&k(d.sessionId)&&"string"==typeof d.worktreePath&&d.worktreePath.length>0&&(b[c]={sessionId:d.sessionId,title:"string"==typeof d.title?d.title:null,worktreePath:d.worktreePath,updatedAt:"number"==typeof d.updatedAt?d.updatedAt:0});return b}catch{return{}}}function q(a){let b=o();try{(0,d.mkdirSync)((0,f.dirname)(b),{recursive:!0}),(0,d.writeFileSync)(b,`${JSON.stringify(a,null,2)}
2
+ `,{mode:384})}catch(a){i.warn("opencode-session-file-write-failed",{path:b,error:a instanceof Error?a.message:String(a)})}}function r(a,b,c=Date.now()){if(!k(b.sessionId))return i.warn("opencode-session-id-rejected",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId}),!1;if(0===b.worktreePath.length)return!1;let d={sessionId:b.sessionId,title:"string"==typeof b.title?b.title.slice(0,l):null,worktreePath:b.worktreePath,updatedAt:c},e=n(a);m.set(e,d);let f=p();return f[e]=d,q(f),!0}function s(a){let b=n(a),c=m.get(b);if(c)return c;let d=p()[b];return d?(m.set(b,d),d):null}function t(a){let b=n(a);m.delete(b);let c=p();b in c&&(delete c[b],q(c))}function u(a,b){let c=s(a);return c?c.worktreePath!==b?(i.info("opencode-session-recovery-path-mismatch",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,recorded:c.worktreePath}),null):k(c.sessionId)?c.sessionId:null:null}function v(a,b){return k(b)?`${a} -s ${b}`:a}},36051:(a,b,c)=>{c.d(b,{PP:()=>g,QB:()=>e,Yo:()=>j,fO:()=>k,lY:()=>f});var d=c(81254);let e=[{number:1,label:"Allow once",reply:"once"},{number:2,label:"Allow always",reply:"always"},{number:3,label:"Reject",reply:"reject"}],f=500;function g(a){return"string"==typeof a&&""!==a}let h={notification:"Notification(permission_prompt)","permission-request":"PermissionRequest (no decision)"};function i(a,b){let c=[`A dialog is open in ${a}: the agent reported it via ${h[b.source]}${b.toolName?` for ${b.toolName}`:""}, but the detection layer published no options for it.`];if(b.decisionOptions&&b.decisionOptions.length>0?c.push(`Answer it with \`commandmate respond ${a} <number>\`: `+b.decisionOptions.map(a=>`${a.number} = ${a.label} (${a.reply})`).join(", ")+". The reply goes to the agent's own API, so no keys are sent to the terminal "+`and the label works too (\`respond ${a} "Allow once"\`).`):c.push(`Answer it in the terminal, or send the option NUMBER with \`commandmate respond ${a} <number>\` — yes/no is not resolved on a numbered dialog (Issue #1681).`),b.message&&c.push(`Agent message: "${b.message}"`),b.askUserQuestion){let{question:d,labels:e,questionCount:f}=b.askUserQuestion,h=g(b.decisionId)&&1===f&&!(b.decisionOptions&&b.decisionOptions.length>0);c.push(`The agent asked${f>1?` ${f} questions, the first being`:""}: "${d}" — offering: ${e.join(" / ")}. `+(h?`Answer it with \`commandmate respond ${a} <number>\`: `+e.map((a,b)=>`${b+1} = ${a}`).join(", ")+". The number is this list's own position and the reply goes to the agent's own API, so no keys are sent to the terminal (the label works too).":"The picker renumbers and adds its own entries, so read the option NUMBER off the terminal rather than counting this list."))}return c.join(" ")}function j(a,b){return{type:d.LT,status:"pending",question:i(a,b),options:[],source:b.source,...b.message?{message:b.message}:{},...b.toolName?{toolName:b.toolName}:{},...b.askUserQuestion?{askUserQuestion:b.askUserQuestion}:{},...b.decisionOptions&&b.decisionOptions.length>0?{decisionOptions:b.decisionOptions}:{},decisionId:g(b.decisionId)?b.decisionId:null,...b.patterns&&b.patterns.length>0?{patterns:[...b.patterns]}:{}}}function k(a,b){return{type:d.LT,status:"unclassified",question:i(a,b),options:[],source:b.source,...b.message?{message:b.message}:{},...b.toolName?{toolName:b.toolName}:{},...b.askUserQuestion?{askUserQuestion:b.askUserQuestion}:{}}}},48083:(a,b,c)=>{c.d(b,{BJ:()=>at,CE:()=>S,Fw:()=>au,G5:()=>D,HR:()=>aq,In:()=>ah,MU:()=>an,NW:()=>O,P5:()=>ao,R4:()=>al,S9:()=>R,_N:()=>as,_i:()=>Q,dj:()=>aj,fY:()=>P,getLastAgentEvent:()=>ac,ik:()=>am,je:()=>ak,jl:()=>ae,m5:()=>ar,n5:()=>I,pI:()=>X,qo:()=>aw,recordAgentEvent:()=>U,sA:()=>ai,vm:()=>ad,zA:()=>ap});var d=c(24455),e=c(62887),f=c(49154),g=c(26547),h=c(67882),i=c(24581);let j=globalThis.__agentEventLastStopAt??(globalThis.__agentEventLastStopAt=new Map),k=globalThis.__agentEventLast??(globalThis.__agentEventLast=new Map),l=globalThis.__agentEventGenerationStartedAt??(globalThis.__agentEventGenerationStartedAt=new Map),m=globalThis.__agentEventTurns??(globalThis.__agentEventTurns=new Map),n=globalThis.__agentEventDrops??(globalThis.__agentEventDrops=new Map),o=globalThis.__agentEventTurnSeq??(globalThis.__agentEventTurnSeq={value:0}),p=globalThis.__agentEventAskUserQuestion??(globalThis.__agentEventAskUserQuestion=new Map),q=globalThis.__agentEventRecentKeys??(globalThis.__agentEventRecentKeys=new Map),r=globalThis.__agentEventRecentIdentities??(globalThis.__agentEventRecentIdentities=new Map),s=globalThis.__agentEventAwaitingInstruction??(globalThis.__agentEventAwaitingInstruction=new Map),t=globalThis.__agentEventLastModel??(globalThis.__agentEventLastModel=new Map),u=globalThis.__agentEventLastModelAt??(globalThis.__agentEventLastModelAt=new Map),v=globalThis.__agentCapturedModelInfo??(globalThis.__agentCapturedModelInfo=new Map),w=globalThis.__agentEventLastEffort??(globalThis.__agentEventLastEffort=new Map),x=globalThis.__agentModelBaseline??(globalThis.__agentModelBaseline=new Map),y=globalThis.__agentModelChangeListeners??(globalThis.__agentModelChangeListeners=new Set),z=/[-_ ](?:minimal|low|medium|high|xhigh)$/i,A=/\bcontext\b/gi;function B(a){return a.replace(z,"").replace(A,"").toLowerCase().replace(/[^a-z0-9]/g,"")}function C(a,b,c={}){let d=B(a),e=B(b);return d===e||!!c.crossSource&&0!==d.length&&0!==e.length&&(d.includes(e)||e.includes(d))}function D(a){return y.add(a),()=>{y.delete(a)}}function E(a,b,c,e,f){let g=(0,d.v7)(a,b,c),{info:h,source:i}=ag(g,b),j=h.model;if(null===j||null===i)return;let k=x.get(g),l={model:j,source:i};if(void 0===k){x.set(g,l),ax(x,F);return}if(C(k.model,j,{crossSource:k.source!==i}))return void x.set(g,l);x.set(g,l);var m={worktreeId:a,cliToolId:b,instanceId:c??b,from:k.model,to:j,source:e,at:f};for(let a of y)try{a(m)}catch{}}let F=512;function G(){return{dedupDropped:{identity:0,timeWindow:0},decisionEvicted:0,idsDiscarded:0,dialogTimedOut:0,decisionOverflow:0}}function H(a){let b=n.get(a);return b||(b=G(),n.set(a,b),ax(n,F)),b}function I(a,b,c){let e=n.get((0,d.v7)(a,b,c));return e?{...e,dedupDropped:{...e.dedupDropped}}:G()}function J(a){return l.get(a)??null}function K(a){let b=m.get(a);return b&&b.generationAt===J(a)?b:null}function L(a,b){let c=K(a);return null===c?null:(null===c.closedAt&&b-c.displayEvent.at>=i.Mu&&(c.closedAt=c.displayEvent.at+i.Mu,c.closedBy="stale"),c)}function M(a){return o.value+=1,`turn-${a}-${o.value}`}function N(a,b,c){let d=b.pendingDecisions.filter(a=>(0,i.jF)(a,c)),e=b.pendingDecisions.length-d.length;return e>0&&(H(a).dialogTimedOut+=e,b.pendingDecisions=d),d}function O(a,b,c,e=Date.now()){let f=(0,d.v7)(a,b,c),g=L(f,e);return null===g?[]:N(f,g,e)}function P(a,b,c,e=Date.now()){return(0,i.nY)(function(a,b,c,e=Date.now()){return L((0,d.v7)(a,b,c),e)}(a,b,c,e))}function Q(a,b,c,e,f=Date.now()){let g=K((0,d.v7)(a,b,c));return null!==g&&null===g.closedAt&&(e?(g.scraperCompletionPolls+=1,!(g.scraperCompletionPolls<i.Tt)&&(g.closedAt=f,g.closedBy="scraper_evidence",!0)):(g.scraperCompletionPolls=0,!1))}function R(a,b,c,e=Date.now()){j.set((0,d.v7)(a,b,c),e)}function S(a,b,c){return j.get((0,d.v7)(a,b,c))??null}let T=["running","waiting"];function U(a,b,c,g,h={}){let j=(0,d.v7)(a,b,c);return!function(a,b,c,e,f){if("session_start"!==e.event||!0!==f.sessionStartMayArriveLate)return!1;let g=al(a,b,c,e.at);if(null===g||!T.includes(g.status))return!1;let h=k.get((0,d.v7)(a,b,c))?.sessionId??null;return null===h||null==e.sessionId||e.sessionId===h}(a,b,c,g,h)?(k.set(j,g),"session_start"===g.event&&x.delete(j),W(j,g),E(a,b,c,"hook",g.at),function(a,b){switch(b.event){case"pre_tool_use":f.mW.includes(b.detail??"")||p.delete(a);return;case"notification":"idle_prompt"===b.detail&&p.delete(a);return;case"post_tool_use":case"stop":case"user_prompt_submit":case"session_start":case"session_end":p.delete(a);return;default:b.event;return}}(j,g),"session_start"===g.event&&(l.set(j,g.at),V(j,g.at)),function(a,b){let c=J(a);if(null===c||!(b.at<c))switch(b.event){case"user_prompt_submit":Z(a,b,c,{continueOpen:!1}),_(a);return;case"post_tool_use":Z(a,b,c,{continueOpen:!0}),_(a);return;case"pre_tool_use":Z(a,b,c,{continueOpen:!0});return;case"stop":!function(a,b,c){let d=K(a);if(null!==d&&null===d.closedAt&&null!==d.openedAt){if(!(0,i.ZV)(d,b.sessionId))return;d.closedAt=b.at,d.closedBy="stop",d.displayEvent=Y(b),_(a);return}m.set(a,{turnId:M(b.at),sessionId:b.sessionId,openedAt:null,closedAt:b.at,closedBy:"stop",generationAt:c,displayEvent:Y(b),pendingDecisions:[],scraperCompletionPolls:0}),ab()}(a,b,c);return;case"session_end":(function(a,b){let c=K(a);null!==c&&(0,i.ZV)(c,b.sessionId)&&(c.closedAt=b.at,c.closedBy="session_end")})(a,b),_(a);return;case"session_start":return;case"notification":!function(a,b,c){if("permission_prompt"===b.detail)return!0===b.promptSettled?aa(a,b):$(a,c,{source:"notification",at:b.at,message:b.message??null,toolName:b.toolName??null,patterns:b.decisionPatterns??null,decisionId:b.decisionId??null,bootstrapDisplay:Y(b)});if(b.detail===e.KC){!0===b.promptSettled&&aa(a,b);return}if("idle_prompt"===b.detail){_(a);let d=K(a);if(null!==d&&null===d.closedAt){d.displayEvent=Y(b);return}if(null!==d)return;m.set(a,{turnId:M(b.at),sessionId:b.sessionId,openedAt:null,closedAt:null,closedBy:null,generationAt:c,displayEvent:Y(b),pendingDecisions:[],scraperCompletionPolls:0}),ab()}}(a,b,c);return;default:b.event;return}}(j,g),function(a,b){switch(b.event){case"notification":"idle_prompt"===b.detail&&s.set(a,{at:b.at,message:b.message??null});return;case"user_prompt_submit":case"session_start":case"session_end":s.delete(a);return;case"stop":case"pre_tool_use":case"post_tool_use":return;default:b.event;return}}(j,g),{recorded:!0}):(W(j,g),E(a,b,c,"hook",g.at),{recorded:!1,skipped:"late-session-start"})}function V(a,b){let c=m.get(a);c&&(0!==c.pendingDecisions.length&&(H(a).decisionEvicted+=c.pendingDecisions.length,c.pendingDecisions=[]),null===c.closedAt&&(c.closedAt=b,c.closedBy="generation",c.generationAt=b))}function W(a,b){"string"==typeof b.model&&""!==b.model&&(t.set(a,b.model.slice(0,e.h9)),u.set(a,b.at))}function X(a,b,c){return null!==function(a,b,c){let e=(0,d.v7)(a,b,c),f=s.get(e);if(!f)return null;let g=l.get(e);return void 0!==g&&f.at<g?null:f}(a,b,c)}function Y(a){return{event:a.event,at:a.at,detail:a.detail}}function Z(a,b,c,{continueOpen:d}){let e=K(a),f=null!==e&&null===e.closedAt&&null!==e.openedAt&&(0,i.ZV)(e,b.sessionId);if(d&&f){e.displayEvent=Y(b),e.sessionId??=b.sessionId,e.scraperCompletionPolls=0;return}let g=null!==e&&null===e.openedAt&&null===e.closedAt?e.pendingDecisions:[];m.set(a,{turnId:M(b.at),sessionId:b.sessionId,openedAt:b.at,closedAt:null,closedBy:null,generationAt:c,displayEvent:Y(b),pendingDecisions:g,scraperCompletionPolls:0}),ab()}function $(a,b,c){let d=K(a);null===d?(d={turnId:M(c.at),sessionId:null,openedAt:null,closedAt:null,closedBy:null,generationAt:b,displayEvent:c.bootstrapDisplay,pendingDecisions:[],scraperCompletionPolls:0},m.set(a,d),ab()):null!==d.closedAt&&(d={turnId:M(c.at),sessionId:null,openedAt:null,closedAt:null,closedBy:null,generationAt:b,displayEvent:c.bootstrapDisplay,pendingDecisions:[],scraperCompletionPolls:0},m.set(a,d),ab());let e=null===c.decisionId?null:(0,i.Xq)(c.decisionId);null!==c.decisionId&&null===e&&(H(a).idsDiscarded+=1);let f="notification"===c.source,g=null!==e?d.pendingDecisions.find(a=>a.decisionId===e)??d.pendingDecisions.find(a=>null===a.decisionId&&"permission-request"===a.source):d.pendingDecisions.find(a=>null===a.decisionId);if(g){g.message=(0,i.wt)(c.message)??g.message,g.toolName=(0,i.kT)(c.toolName)??g.toolName,g.patterns=(0,i.Ui)(c.patterns)??g.patterns,g.decisionId??=e,f&&(g.source="notification",g.confirmedAt??=c.at);return}if(d.pendingDecisions.length>=i.RY){H(a).decisionOverflow+=1;return}d.pendingDecisions.push({decisionId:e,at:c.at,source:c.source,message:(0,i.wt)(c.message),toolName:(0,i.kT)(c.toolName),patterns:(0,i.Ui)(c.patterns),confirmedAt:f?c.at:null,scraperCorroborated:!1,recorded:!1})}function _(a){let b=K(a);null!==b&&(b.pendingDecisions=[])}function aa(a,b){let c=K(a);if(null===c||0===c.pendingDecisions.length)return;let d=null===b.decisionId||void 0===b.decisionId?null:(0,i.Xq)(b.decisionId);if(null===d){c.pendingDecisions=[];return}c.pendingDecisions=c.pendingDecisions.filter(a=>null!==a.decisionId&&a.decisionId!==d)}function ab(){ax(m,F)}function ac(a,b,c){return k.get((0,d.v7)(a,b,c))??null}function ad(a,b,c,f,g=Date.now()){if(!f.model&&!f.effort)return;let h=(0,d.v7)(a,b,c),i=v.get(h),j=f.model?f.model.slice(0,e.h9):i?.model??null;v.set(h,{model:j,effort:f.effort??i?.effort??null,modelChangedAt:null===j?null:j===(i?.model??null)?i?.modelChangedAt??g:g}),f.model&&E(a,b,c,"frame",g)}function ae(a,b,c){return ag((0,d.v7)(a,b,c),b).info}let af=new Set(["claude"]);function ag(a,b){let c=t.get(a)??null,d=v.get(a),e={model:d?.model??null,effort:d?.effort??null},f=w.get(a)??null,h=d?.modelChangedAt??null,i=null!==c&&null!==e.model&&null!==h&&af.has(b)&&h>(u.get(a)??0)&&!C(c,e.model,{crossSource:!0}),j=(0,g.Yz)(b,i?null:c,e,f);return null===j.model?{info:j,source:null}:{info:j,source:null===c||i?"frame":"hook"}}function ah(a,b,c,f){"string"==typeof f&&""!==f&&w.set((0,d.v7)(a,b,c),f.slice(0,e.h9))}let ai=i.Mu;function aj(a,b,c,e=Date.now()){let f=(0,d.v7)(a,b,c);l.set(f,e),V(f,e),p.delete(f),s.delete(f),t.delete(f),u.delete(f),v.delete(f),w.delete(f),x.delete(f),r.delete(f)}function ak(a,b,c){let e=(0,d.v7)(a,b,c);k.delete(e),l.delete(e),m.delete(e),n.delete(e),p.delete(e),s.delete(e),t.delete(e),u.delete(e),v.delete(e),w.delete(e),x.delete(e),r.delete(e)}function al(a,b,c,e=Date.now()){let f=(0,d.v7)(a,b,c),g=L(f,e);if(null===g)return null;let i=g.displayEvent;if(e-i.at>=ai)return null;let j={event:i.event,at:i.at,detail:i.detail},k=N(f,g,e);if(k.length>0)return{status:"waiting",reason:"notification"===k[0].source?h.Oh.PERMISSION_PROMPT:h.Oh.PERMISSION_REQUEST,...j};if(null!==g.closedAt)return"stop"===g.closedBy?{status:"ready",reason:h.Oh.STOP,...j}:null;let l=(0,h.DA)(i.event,i.detail);return null===l||"waiting"===l.status?null===g.openedAt?null:{status:"running",reason:h.Oh.PROMPT_SUBMIT,...j}:{...l,...j}}function am(a,b,c,e,f=Date.now()){let g=(0,d.v7)(a,b,c);$(g,J(g),{source:"permission-request",at:f,message:null,toolName:e,patterns:null,decisionId:null,bootstrapDisplay:{event:"notification",at:f,detail:"permission_prompt"}})}function an(a,b,c,e,f=Date.now()){let g=(0,d.v7)(a,b,c);$(g,J(g),{source:"notification",at:f,message:null,toolName:e.toolName,patterns:null,decisionId:e.decisionId,bootstrapDisplay:{event:"notification",at:f,detail:e.detail}})}function ao(a,b,c,d=Date.now()){return O(a,b,c,d)[0]??null}function ap(a,b,c,d=Date.now()){let e=ao(a,b,c,d);e&&(e.scraperCorroborated=!0,e.confirmedAt??=d)}function aq(a,b,c){let d=ao(a,b,c);d&&(d.recorded=!0)}function ar(a,b,c){_((0,d.v7)(a,b,c))}function as(a,b,c,e,f=Date.now()){p.set((0,d.v7)(a,b,c),{at:f,spec:e})}function at(a,b,c,e=Date.now()){let f=(0,d.v7)(a,b,c),g=p.get(f);if(!g)return null;let h=l.get(f);return void 0!==h&&g.at<h||e-g.at>=ai?null:g}function au(a,b,c,e,f,g=Date.now(),h=null){if(!f)return!1;let i=[(0,d.v7)(a,b,c),e,h??"",f].join(" "),j=q.get(i);return void 0!==j&&g-j<3e3||(q.set(i,g),function(a){for(let[b,c]of q)a-c>=3e3&&q.delete(b);for(;q.size>F;){let a=q.keys().next();if(a.done)break;q.delete(a.value)}}(g),!1)}i.h_.predicted;let av=["stop","session_end"];function aw(a){let b=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId);if(null!==a.identityKind){let c=null===a.identity?null:(0,i.Xq)(a.identity);if(null!==a.identity&&null===c&&(H(b).idsDiscarded+=1),null!==c)return!function(a,b){let c=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId),e=r.get(c);e||(e=new Map,r.set(c,e),ax(r,F));let f=[a.event,a.detail??"",b].join(" ");return!!e.has(f)||(e.set(f,a.at),ax(e,F),!1)}(a,c)?{duplicate:!1}:(H(b).dedupDropped.identity+=1,{duplicate:!0,by:"identity"});if(av.includes(a.event))return{duplicate:!1}}return au(a.worktreeId,a.cliToolId,a.instanceId,a.event,a.sessionId,a.at,a.detail)?(H(b).dedupDropped.timeWindow+=1,{duplicate:!0,by:"time-window"}):{duplicate:!1}}function ax(a,b){for(;a.size>b;){let b=a.keys().next();if(b.done)break;a.delete(b.value)}}},49154:(a,b,c)=>{c.d(b,{GF:()=>e,Wk:()=>g,mW:()=>f});var d=c(13287);let e="question",f=[d.k$,e];function g(a){return null!==a&&f.includes(a)?"question":"permission"}},56791:(a,b,c)=>{c.r(b),c.d(b,{ACTIVE_FILTER:()=>d.ks,ACTIVE_TASK_STATUSES:()=>d.EL,AgentInstanceLimitError:()=>d.AC,CURRENT_SCHEMA_VERSION:()=>f.FT,DEFAULT_RUN_HISTORY_LIMIT:()=>d.Tu,InvalidAgentInstanceError:()=>d.ug,MAX_DISABLED_REPOSITORIES:()=>h.nc,MAX_RUN_HISTORY_DAYS:()=>d.eP,MAX_RUN_HISTORY_LIMIT:()=>d.mg,MemoDbError:()=>d.lm,NEW_SUBSCRIPTION_DEFAULTS:()=>d.s6,PUSH_DEFAULTS_VERSION:()=>d.VP,RepositoryDbError:()=>h.j8,TASK_STATUSES:()=>d.Hi,TERMINAL_TASK_STATUSES:()=>d.sA,VERIFICATION_GATE_SOURCES:()=>d.Dx,VERIFICATION_TRIGGERS:()=>d.af,WORKTREE_TODO_STATUSES:()=>d.KG,addAgentInstance:()=>d.Uq,archiveAllAssistantMessages:()=>d.cD,archiveAssistantMessagesFrom:()=>d.Jj,cancelTimer:()=>d.Ud,cancelTimersByWorktree:()=>d.$$,cleanupOldTimers:()=>d.ul,clearInProgressMessageId:()=>d.YX,clearLastUserMessage:()=>d.cf,clearTimerHistory:()=>d.jf,closeDbInstance:()=>e.closeDbInstance,countAgentInstances:()=>d.fs,countDisabledRepositories:()=>h.QJ,countPushSubscriptionsForKind:()=>d.rC,countWorktreesByRepositoryPath:()=>h.kp,createAssistantConversation:()=>d.G4,createAssistantExecution:()=>d.hL,createAssistantMessage:()=>d.qp,createCloneJob:()=>h.tw,createGateResult:()=>d.hl,createMemo:()=>d.To,createMessage:()=>d.oH,createRepository:()=>h.vB,createTask:()=>d.UT,createTimer:()=>d.CR,createTodo:()=>d.py,createVerificationRun:()=>d.rY,createWorktreeTodo:()=>d.yy,deleteAllMessages:()=>d.pE,deleteAssistantSessionState:()=>d.z2,deleteMemo:()=>d.cP,deleteMessageById:()=>d.DF,deleteMessagesByCliTool:()=>d.lA,deleteMessagesByInstance:()=>d.Qp,deletePushSubscriptionByEndpoint:()=>d.th,deleteRepository:()=>h.oG,deleteRepositoryWorktrees:()=>d.oZ,deleteSessionState:()=>d.ZP,deleteTodo:()=>d.Ys,deleteWorktreeTodo:()=>d.vg,deleteWorktreesByIds:()=>d.Rm,disableExistingRepository:()=>h.eP,disableRepository:()=>h.l$,ensureEnvRepositoriesRegistered:()=>h.ES,filterExcludedPaths:()=>h.Ho,findMessageByRequestId:()=>d.Ow,finishGateResult:()=>d.C8,finishVerificationRun:()=>d.u$,getActiveCloneJobByUrl:()=>h.fD,getActiveTask:()=>d.__,getActiveTaskForInstance:()=>d.MH,getAgentInstance:()=>d.BN,getAgentInstances:()=>d.m0,getAliasedWorktreeIds:()=>d.r3,getAllPushSubscriptions:()=>d.Se,getAllRepositories:()=>h.Yg,getAllRepositoriesWithWorktreeCount:()=>h._D,getAllTodos:()=>d.Tk,getAllWorktreeAliases:()=>d.fX,getAllWorktreeIds:()=>d.nO,getAllWorktreePathIds:()=>d.Sj,getAssistantConversationById:()=>d.iT,getAssistantConversationByRepositoryAndCliTool:()=>d.gp,getAssistantExecutionById:()=>d.$r,getAssistantMessageById:()=>d.yE,getAssistantMessages:()=>d.BE,getAssistantSessionState:()=>d.qK,getCloneJob:()=>h.bM,getCloneJobsByStatus:()=>h.n_,getCurrentVersion:()=>f.Mj,getDailyReport:()=>d.ap,getDbInstance:()=>e.getDbInstance,getDefaultDbPath:()=>g.$b,getExcludedRepositories:()=>h.lS,getExcludedRepositoryPaths:()=>h.pr,getInitialBranch:()=>d.p4,getIssueDbPath:()=>g.zm,getLastAssistantMessageAt:()=>d.nP,getLastMessage:()=>d.sy,getLastUserMessage:()=>d.r8,getLatestAssistantExecutionByConversation:()=>d.of,getLegacyDbPaths:()=>q,getMemoById:()=>d.DN,getMemosByWorktreeId:()=>d.pZ,getMessageById:()=>d.kA,getMessages:()=>d.VL,getMessagesByDateRange:()=>d.lr,getMigrationHistory:()=>f.PS,getPendingTimerCountByWorktree:()=>d.GF,getPendingTimers:()=>d._O,getPushSubscriptionByEndpoint:()=>d.CF,getPushSubscriptionsForKind:()=>d.gn,getRepositories:()=>d.NV,getRepositoryById:()=>h.r,getRepositoryByNormalizedUrl:()=>h.Uj,getRepositoryByPath:()=>h.Dp,getRunningAssistantExecutionByConversation:()=>d.ce,getRunningVerificationRun:()=>d.WZ,getSessionState:()=>d.y1,getTask:()=>d.gg,getTimerById:()=>d.kx,getTimersByWorktree:()=>d.DP,getTodoById:()=>d.Nr,getTodosByRepositoryId:()=>d.ob,getTodosByWorktreeId:()=>d.fr,getVerificationRun:()=>d.J6,getWorktreeAliases:()=>d.Q2,getWorktreeById:()=>d.Ui,getWorktreeIdsByRepository:()=>d.P9,getWorktreeTodoById:()=>d.eN,getWorktrees:()=>d.vi,getWorktreesByRepository:()=>d.uJ,initDatabase:()=>d.s4,isTerminalTaskStatus:()=>d.uB,isWorktreeTodoStatus:()=>d.yT,listRunningAssistantExecutions:()=>d.b2,listRunningVerificationRuns:()=>d.Fi,listTaskEvents:()=>d.HB,listTasks:()=>d.Vk,listVerificationRuns:()=>d.Mt,listVerificationRunsForPeriod:()=>d.UE,markPendingPromptsAsAnswered:()=>d.PL,migrateDbIfNeeded:()=>r,migrateWorktreeIdPreservingChildren:()=>d._h,pushSubscriptionNeedsDefaultsNotice:()=>d.Zj,recomputeLastUserMessage:()=>d.jp,recordAnsweredPrompt:()=>d.pG,recordWorktreeAlias:()=>d.xJ,recoverStuckSendingTimers:()=>d.Xm,registerAndFilterRepositories:()=>h.$G,removeAgentInstance:()=>d.NU,reorderMemos:()=>d.nQ,reorderWorktreeTodos:()=>d.yb,resolveAndValidatePath:()=>p,resolveRepositoryPath:()=>h.mE,resolveWorktreeIdWithAlias:()=>d.l0,restoreRepository:()=>h.RS,rollbackMigrations:()=>f.Wy,runMigrations:()=>f.vI,saveDailyReport:()=>d.tt,saveInitialBranch:()=>d.GA,setAgentInstances:()=>d.Cs,setInProgressMessageId:()=>d.OF,setRepositoryEnabled:()=>h.iQ,updateAssistantConversation:()=>d.xR,updateAssistantExecution:()=>d.az,updateAssistantMessageStatus:()=>d.nZ,updateAssistantSessionState:()=>d.PP,updateCliToolId:()=>d.WU,updateCloneJob:()=>h.k5,updateDailyReportContent:()=>d.IF,updateFavorite:()=>d.O,updateLastUserMessage:()=>d.EU,updateLastViewedAt:()=>d.HZ,updateMemo:()=>d.UY,updateMessageContent:()=>d.e8,updatePromptData:()=>d.cw,updatePushSubscriptionPreferences:()=>d.jJ,updateRepository:()=>h.Ir,updateSelectedAgents:()=>d.DC,updateSessionState:()=>d.gb,updateStatus:()=>d.yB,updateTimerStatus:()=>d.j2,updateTodo:()=>d.uy,updateVibeLocalContextWindow:()=>d.s,updateVibeLocalModel:()=>d.iu,updateWorktreeDescription:()=>d.hq,updateWorktreeLink:()=>d.z1,updateWorktreeTodo:()=>d.bl,upsertPushSubscription:()=>d.jA,upsertWorktree:()=>d.ZL,validateDbPath:()=>g.Sv,validateRepositoryPath:()=>h.Ux,validateSchema:()=>f.i6});var d=c(90444),e=c(88807),f=c(27727),g=c(20416),h=c(10406),i=c(29021),j=c.n(i),k=c(33873),l=c.n(k),m=c(21820),n=c(7956);let o=(0,c(72626).h)("db-migration-path");function p(a,b){try{if(!j().existsSync(a))return null;let c=j().realpathSync(a);if((0,n.fW)(c))return o.warn(`[Security] ${b} points to system directory, skipping: ${c}`),null;return c}catch{return o.warn(`[Security] Failed to resolve ${b}: ${a}`),null}}function q(){let a=[];a.push(l().join(process.cwd(),"data","db.sqlite")),a.push(l().join(process.cwd(),"data","cm.db")),a.push(l().join((0,m.homedir)(),".commandmate","data","db.sqlite"));let b=process.env.DATABASE_PATH;if(b)try{let c=l().resolve(b);(0,n.fW)(c)?o.warn(`[Security] Skipping DATABASE_PATH in system directory: ${c}`):a.push(b)}catch{o.warn(`[Security] Invalid DATABASE_PATH: ${b}`)}return a}function r(a){let b=l().resolve(a);if((0,n.fW)(b))throw Error(`Security error: Target path cannot be in system directory: ${b}`);if(j().existsSync(a)){let b=p(a,"target path");if(b)return{migrated:!1,targetPath:b}}for(let a of q()){let c=p(a,"legacy path");if(!c)continue;let d=`${c}.bak`;j().copyFileSync(c,d),j().chmodSync(d,384);let e=l().dirname(b);return j().existsSync(e)||j().mkdirSync(e,{recursive:!0,mode:448}),j().copyFileSync(c,b),o.info(`[Migration] Database migrated from ${c} to ${b}`),o.info(`[Migration] Backup created at ${d}`),{migrated:!0,sourcePath:c,targetPath:b,backupPath:d}}return{migrated:!1,targetPath:b}}},67882:(a,b,c)=>{c.d(b,{DA:()=>e,O_:()=>f,Oh:()=>d,_K:()=>h,kA:()=>g});let d={PROMPT_SUBMIT:"hook_prompt_submit",STOP:"hook_stop",PERMISSION_PROMPT:"hook_permission_prompt",PERMISSION_REQUEST:"hook_permission_request",IDLE_PROMPT:"hook_idle_prompt",PRE_TOOL_USE:"hook_pre_tool_use",POST_TOOL_USE:"hook_post_tool_use"};function e(a,b){switch(a){case"user_prompt_submit":return{status:"running",reason:d.PROMPT_SUBMIT};case"pre_tool_use":return{status:"running",reason:d.PRE_TOOL_USE};case"post_tool_use":return{status:"running",reason:d.POST_TOOL_USE};case"stop":return{status:"ready",reason:d.STOP};case"notification":if("permission_prompt"===b)return{status:"waiting",reason:d.PERMISSION_PROMPT};if("idle_prompt"===b)return{status:"ready",reason:d.IDLE_PROMPT};return null;default:return null}}function f(a){switch(a){case"waiting":return{isWaitingForResponse:!0,isProcessing:!1};case"running":return{isWaitingForResponse:!1,isProcessing:!0};default:return{isWaitingForResponse:!1,isProcessing:!1}}}function g(a){return a?a.isWaitingForResponse?"waiting":a.isProcessing?"running":a.isRunning?"ready":"idle":"idle"}function h(a){return a.isSessionRunning?a.isWaitingForResponse?"waiting":a.isProcessing?"running":"ready":null}},81254:(a,b,c)=>{function d(a){return"answer_only"===a||"answer_then_enter"===a}c.d(b,{LT:()=>e,MI:()=>d,XF:()=>f});let e="unclassified";function f(a){return null!=a&&a.type!==e}},85322:(a,b,c)=>{c.d(b,{k:()=>d});let d="opencode"}};
@@ -17,11 +17,11 @@
17
17
  "wasm": [],
18
18
  "assets": [],
19
19
  "env": {
20
- "__NEXT_BUILD_ID": "60mm4_QBuFtFTfo5UMyKU",
21
- "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "ww32vzO1xuZNaCVX142AB8MROf7wf/2WUIlvsqhsDfk=",
22
- "__NEXT_PREVIEW_MODE_ID": "c0af0e82d58ca9f846446f35d6e77967",
23
- "__NEXT_PREVIEW_MODE_SIGNING_KEY": "0b8177d1272c1d4d509cc26acda90df0b4a5486db9668e62d026d55aa5bdbf2f",
24
- "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "655a29a1c3cf96b187f6bb31b7d48c3c973711a5f9e7d81d393228979aedd4ed"
20
+ "__NEXT_BUILD_ID": "0hTIackGXw6v7diXJS6yN",
21
+ "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "IyBQV0BfAAIdTx4SPy8F+SrFg6nErAfgUwlvPN1pcLI=",
22
+ "__NEXT_PREVIEW_MODE_ID": "4b5e033a7445da66d3e0a945fd79051c",
23
+ "__NEXT_PREVIEW_MODE_SIGNING_KEY": "f13bfc6d994213e4d80eb164e2d79d1f39483267b93846a5feecce0be7f5c2e9",
24
+ "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "9092e3c0910f88ee9e207cbcde4d3e041f552fbddcf62b1731b8248fb6626d02"
25
25
  }
26
26
  }
27
27
  },
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-9f75198882fdaf08.js" defer=""></script><script src="/_next/static/chunks/framework-eaf13c96191cb608.js" defer=""></script><script src="/_next/static/chunks/main-6092074a0dc78280.js" defer=""></script><script src="/_next/static/chunks/pages/_app-4b3fb5e477a0267f.js" defer=""></script><script src="/_next/static/chunks/pages/_error-c970d8b55ace1b48.js" defer=""></script><script src="/_next/static/60mm4_QBuFtFTfo5UMyKU/_buildManifest.js" defer=""></script><script src="/_next/static/60mm4_QBuFtFTfo5UMyKU/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"60mm4_QBuFtFTfo5UMyKU","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-9f75198882fdaf08.js" defer=""></script><script src="/_next/static/chunks/framework-eaf13c96191cb608.js" defer=""></script><script src="/_next/static/chunks/main-6092074a0dc78280.js" defer=""></script><script src="/_next/static/chunks/pages/_app-4b3fb5e477a0267f.js" defer=""></script><script src="/_next/static/chunks/pages/_error-c970d8b55ace1b48.js" defer=""></script><script src="/_next/static/0hTIackGXw6v7diXJS6yN/_buildManifest.js" defer=""></script><script src="/_next/static/0hTIackGXw6v7diXJS6yN/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"0hTIackGXw6v7diXJS6yN","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"ww32vzO1xuZNaCVX142AB8MROf7wf/2WUIlvsqhsDfk="}
1
+ {"node":{},"edge":{},"encryptionKey":"IyBQV0BfAAIdTx4SPy8F+SrFg6nErAfgUwlvPN1pcLI="}