commandmate 0.44.3 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +266 -266
  3. package/.next/app-path-routes-manifest.json +18 -18
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/next-server.js.nft.json +1 -1
  6. package/.next/prerender-manifest.json +3 -3
  7. package/.next/react-loadable-manifest.json +26 -26
  8. package/.next/required-server-files.json +1 -1
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/capabilities/route.js +1 -1
  19. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  28. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  29. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  31. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  32. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  34. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  35. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  42. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  43. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/relays/route.js +1 -1
  45. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  46. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  50. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  51. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/repositories/clone/route.js +1 -1
  53. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  54. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/repositories/restore/route.js +1 -1
  57. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  58. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/repositories/route.js +1 -1
  60. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  61. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/repositories/scan/route.js +1 -1
  63. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  64. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/sync/route.js +1 -1
  66. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  67. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  70. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  71. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  87. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  88. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  90. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  91. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  93. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  94. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  99. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  100. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  102. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  103. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  135. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  138. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  141. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +3 -3
  145. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  154. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  158. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  161. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  168. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
  170. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  171. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  182. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  186. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  190. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/route.js +1 -1
  204. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  205. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  207. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  209. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  210. package/.next/server/app/page_client-reference-manifest.js +1 -1
  211. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  213. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  214. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  215. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  216. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  217. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  218. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  219. package/.next/server/app/worktrees/[id]/page.js +4 -4
  220. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  221. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  222. package/.next/server/app-paths-manifest.json +18 -18
  223. package/.next/server/chunks/1503.js +2 -2
  224. package/.next/server/chunks/1559.js +2 -2
  225. package/.next/server/chunks/1944.js +1 -1
  226. package/.next/server/chunks/2119.js +1 -1
  227. package/.next/server/chunks/22.js +1 -1
  228. package/.next/server/chunks/2404.js +1 -1
  229. package/.next/server/chunks/2445.js +1 -1
  230. package/.next/server/chunks/2460.js +1 -1
  231. package/.next/server/chunks/2710.js +2 -2
  232. package/.next/server/chunks/2908.js +1 -1
  233. package/.next/server/chunks/3241.js +1 -1
  234. package/.next/server/chunks/4802.js +1 -1
  235. package/.next/server/chunks/5048.js +1 -1
  236. package/.next/server/chunks/5064.js +1 -1
  237. package/.next/server/chunks/5292.js +7 -0
  238. package/.next/server/chunks/5625.js +2 -2
  239. package/.next/server/chunks/5737.js +1 -1
  240. package/.next/server/chunks/6065.js +1 -1
  241. package/.next/server/chunks/6130.js +1 -1
  242. package/.next/server/chunks/6401.js +1 -1
  243. package/.next/server/chunks/850.js +1 -1
  244. package/.next/server/chunks/8728.js +2 -2
  245. package/.next/server/chunks/8918.js +4 -6
  246. package/.next/server/chunks/9051.js +1 -1
  247. package/.next/server/chunks/9130.js +1 -1
  248. package/.next/server/chunks/9390.js +1 -1
  249. package/.next/server/chunks/9584.js +1 -1
  250. package/.next/server/chunks/9731.js +1 -1
  251. package/.next/server/middleware-build-manifest.js +1 -1
  252. package/.next/server/middleware-manifest.json +5 -5
  253. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  254. package/.next/server/pages/500.html +1 -1
  255. package/.next/server/server-reference-manifest.json +1 -1
  256. package/.next/static/chunks/1464.09cd37fee202ec4b.js +1 -0
  257. package/.next/static/chunks/2053-390e77fce43b555c.js +1 -0
  258. package/.next/static/chunks/{2407-06d35bb1aa02de80.js → 2407-dd4a0f04f1349221.js} +1 -1
  259. package/.next/static/chunks/{2751-9ef0f4b450bd4ef0.js → 2751-5f0b2702accd164d.js} +1 -1
  260. package/.next/static/chunks/{282.6b6f2e31a96674dd.js → 282.a1013532fd9a61b4.js} +1 -1
  261. package/.next/static/chunks/3237.94c29281d9ec122e.js +1 -0
  262. package/.next/static/chunks/3480.2e21f62e5e9d3ba5.js +1 -0
  263. package/.next/static/chunks/4290.c06dbe243819fea0.js +66 -0
  264. package/.next/static/chunks/{5222.305dc0ebba9c0784.js → 5222.39e2034d3fce233c.js} +1 -1
  265. package/.next/static/chunks/{7095.8c869e553133a40e.js → 7095.87323a4fdf426341.js} +1 -1
  266. package/.next/static/chunks/{7485.442b21101fca7257.js → 7485.8a2a9d7c5396aa26.js} +3 -3
  267. package/.next/static/chunks/app/{layout-0d1750b833f5cc3e.js → layout-07d040cb3d3ea657.js} +1 -1
  268. package/.next/static/chunks/app/worktrees/[id]/page-35f0e31a725d1c89.js +1 -0
  269. package/.next/static/chunks/{webpack-021f0741f22dd16a.js → webpack-165d8df9acd1c5d4.js} +1 -1
  270. package/.next/trace +13 -13
  271. package/dist/cli/commands/skill-format.d.ts +8 -0
  272. package/dist/cli/commands/skill-format.d.ts.map +1 -1
  273. package/dist/cli/commands/skill-format.js +13 -3
  274. package/dist/cli/commands/wait.d.ts.map +1 -1
  275. package/dist/cli/commands/wait.js +71 -3
  276. package/dist/cli/types/api-responses.d.ts +7 -10
  277. package/dist/cli/types/api-responses.d.ts.map +1 -1
  278. package/dist/cli/utils/verify-runner.d.ts +21 -0
  279. package/dist/cli/utils/verify-runner.d.ts.map +1 -1
  280. package/dist/cli/utils/verify-runner.js +38 -1
  281. package/dist/server/locales/en/worktree.json +5 -1
  282. package/dist/server/locales/ja/worktree.json +5 -1
  283. package/dist/server/src/lib/detection/model-info-extractor.js +57 -3
  284. package/dist/server/src/lib/detection/status-detector.js +1 -1
  285. package/dist/server/src/lib/git/git-exec.js +23 -5
  286. package/dist/server/src/lib/hooks/sources/claude/self-resume.js +213 -0
  287. package/dist/server/src/lib/hooks/sources/claude/source.js +24 -7
  288. package/dist/server/src/lib/session/agent-event-dedup.js +2 -2
  289. package/dist/server/src/lib/session/agent-event-state.js +2 -1
  290. package/dist/server/src/lib/session/agent-event-turn.js +51 -0
  291. package/dist/server/src/lib/session/current-output-builder.js +0 -5
  292. package/dist/server/src/lib/skills/install-plan.js +1 -0
  293. package/dist/server/src/lib/skills/preview-diff.js +24 -3
  294. package/dist/server/src/lib/skills/uninstall-plan.js +1 -0
  295. package/dist/server/src/lib/verification/env-clean-gate.js +6 -5
  296. package/docs/en/user-guide/commands-guide.md +0 -1
  297. package/package.json +3 -2
  298. package/release-notes/0.45.0.json +41 -0
  299. package/scripts/hooks/cmate-agent-event.sh +20 -0
  300. package/.next/server/chunks/4672.js +0 -5
  301. package/.next/static/chunks/2053-85a974ddfe7498fe.js +0 -1
  302. package/.next/static/chunks/4290.6cf86f68d73b6e77.js +0 -82
  303. package/.next/static/chunks/4459.a94b52985a76509a.js +0 -1
  304. package/.next/static/chunks/5951.616956b6aa5df63f.js +0 -1
  305. package/.next/static/chunks/9856.15463dd58437e2ac.js +0 -1
  306. package/.next/static/chunks/app/worktrees/[id]/page-e36898c3a80e7302.js +0 -1
  307. /package/.next/static/{tWwHQzmvc-rv9KKUtDWfQ → TPWbZB3zBp3Zv_eFEOlmt}/_buildManifest.js +0 -0
  308. /package/.next/static/{tWwHQzmvc-rv9KKUtDWfQ → TPWbZB3zBp3Zv_eFEOlmt}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- exports.id=8728,exports.ids=[8728],exports.modules={3453:(a,b,c)=>{"use strict";c.d(b,{Rh:()=>r,T1:()=>o,Z2:()=>m,c$:()=>n,nu:()=>q});var d=c(72626),e=c(80438);let f=(0,d.h)("ip-restriction"),g="::ffff:",h=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/,i=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/(\d{1,2})$/,j=process.env.CM_ALLOWED_IPS?.trim()||"",k=process.env.CM_TRUST_PROXY?.trim()||"";""!==k&&"true"!==k&&"false"!==k&&(0,e.h)(f,"trust-proxy-unexpected",{value:k});let l="true"===k;function m(a){return a?a.toLowerCase().startsWith(g)?a.substring(g.length):a:""}function n(a,b){if(0===b.length)return!1;let c=function(a){let b=a.match(h);if(!b)return null;let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)];for(let a of c)if(a<0||a>255)return null;return(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0}(m(a));if(null===c)return!1;for(let a of b)if((c&a.mask)>>>0===a.network)return!0;return!1}function o(a){if(l){let b=a.get("x-forwarded-for");if(b){let a=b.split(",")[0].trim();if(a)return a}}return a.get("x-real-ip")||null}let p=j.length>0?function(a){let b=a.trim();if(0===b.length)return[];let c=b.split(",").map(a=>a.trim()).filter(a=>a.length>0);if(c.length>256)throw Error(`CM_ALLOWED_IPS: too many entries (${c.length}). Maximum is 256.`);let d=[];for(let a of c){if(a.length>18)throw Error(`CM_ALLOWED_IPS: entry "${a}" exceeds maximum length of 18 characters.`);let b=a.match(i);if(b){let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)],e=parseInt(b[5],10);for(let b of c)if(b<0||b>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);if(e<0||e>32)throw Error(`CM_ALLOWED_IPS: invalid prefix length in "${a}". Must be 0-32.`);let f=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0,g=0===e?0:0xffffffff<<32-e>>>0;d.push({network:(f&g)>>>0,mask:g});continue}let c=a.match(h);if(c){let b=[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10),parseInt(c[4],10)];for(let c of b)if(c<0||c>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);let e=(b[0]<<24|b[1]<<16|b[2]<<8|b[3])>>>0;d.push({network:e,mask:0xffffffff});continue}throw Error(`CM_ALLOWED_IPS: invalid entry "${a}". Expected IPv4 address or CIDR notation.`)}return d}(j):[];function q(){return p}function r(){return j.length>0}},7015:(a,b,c)=>{"use strict";c.d(b,{Ds:()=>g});var d=c(81719);class e{constructor(a,b=3e4){this.cache=new Map,this.allAppsCache=null,this.lastRefresh=0,this.db=a,this.ttl=b}getTTL(){return this.ttl}isStale(){return Date.now()-this.lastRefresh>this.ttl}async refresh(){let a=(0,d.$i)(this.db);for(let b of(this.cache.clear(),a))this.cache.set(b.pathPrefix,b);this.allAppsCache=a,this.lastRefresh=Date.now()}async getByPathPrefix(a){return this.isStale()&&await this.refresh(),this.cache.get(a)??null}async getAll(){return this.isStale()&&await this.refresh(),this.allAppsCache??[]}invalidate(){this.cache.clear(),this.allAppsCache=null,this.lastRefresh=0}invalidateByIssueNo(a){this.invalidate()}}let f=null;function g(a){if(!f){if(!a)throw Error("Database instance required to initialize cache");f=new e(a)}return f}},23854:(a,b,c)=>{"use strict";c.d(b,{$G:()=>f,AL:()=>h,DZ:()=>d,Qe:()=>g,ie:()=>e});let d=4e3,e=15e3;function f(a){var b,c;if(b=a.from,c=a.to,b.worktreeId===c.worktreeId&&b.instanceId===c.instanceId)return{code:"RELAY_SELF_TARGET",message:"A session cannot relay a reply to itself. --reply-to must name a different worktree or a different agent instance."};let d=null===a.parentHops?1:a.parentHops+1;return null===a.parentHops||a.allowRelayChain?d>3?{code:"RELAY_HOPS_EXCEEDED",message:`Relay chains stop at 3 hops; this one would be ${d}. Report the reply to whoever asked instead of forwarding it again.`}:a.openBetween>=1?{code:"RELAY_DUPLICATE_PENDING",message:"There is already an open relay between these two sessions. Wait for it, or withdraw it with `commandmate relays cancel <id>`."}:{ok:!0,hops:d}:{code:"RELAY_CHAIN_BLOCKED",message:"The last message this session was given arrived over a relay, so opening another one would chain two deliveries together. Pass --allow-relay-chain if that is what you mean."}}function g(a){return"code"in a}function h(a){return void 0!==a&&Number.isFinite(a)?Math.min(6048e5,Math.max(6e4,Math.trunc(a))):864e5}},26838:(a,b,c)=>{"use strict";c.d(b,{E2:()=>q,MQ:()=>m,Mj:()=>o,Sw:()=>n,lX:()=>r});var d=c(29021),e=c(33873),f=c(54325),g=c(90164),h=c(36925);let i=/^v?\d+\.\d+\.\d+$/,j=/^[a-zA-Z0-9.\-\s_v]+$/,k=[".next","required-server-files.json"],l=(0,h.v)("__versionCheckCache",()=>({result:null,fetchedAt:0,rateLimitResetAt:null}));function m(a,b){if(!i.test(a)||!i.test(b))return!1;let c=a=>a.replace(/^v/,"").split(".").map(Number),[d,e,f]=c(a),[g,h,j]=c(b);return g!==d?g>d:h!==e?h>e:j>f}function n(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.44.3"}function o(){return n()}let p=null;function q(a){let b=p??=function(){{let a=function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),...k),"utf-8"),b=JSON.parse(a),c=b.config?.env?.NEXT_PUBLIC_APP_VERSION;if("string"==typeof c&&c.length>0)return c;return null}catch{return null}}();if(a)return a}return"0.44.3"}();return(0,f.LE)(b,a)?{serverVersion:b,clientVersion:a}:null}async function r(){try{var a,b,c;if(null!==l.result&&Date.now()-l.fetchedAt<36e5||l.rateLimitResetAt&&(!(Date.now()>=l.rateLimitResetAt)||(l.rateLimitResetAt=null,0)))return l.result;let d=await fetch("https://api.github.com/repos/Kewton/CommandMate/releases/latest",{headers:{Accept:"application/vnd.github+json","User-Agent":`CommandMate/${o()}`},cache:"no-store",signal:AbortSignal.timeout(5e3)});if(403===d.status)return function(a){let b=a.headers.get("X-RateLimit-Reset");b?l.rateLimitResetAt=1e3*parseInt(b,10):l.rateLimitResetAt=Date.now()+36e5}(d),l.result;if(!d.ok)return l.result;let e=await d.json(),f=o(),h=e.tag_name.replace(/^v/,""),i={hasUpdate:m(f,e.tag_name),currentVersion:f,latestVersion:h,releaseUrl:(a=e.html_url).startsWith(g.Dk)?a:null,releaseName:(b=e.name,c=e.tag_name,j.test(b)&&b.length<=128?b:c),publishedAt:e.published_at};return l.result=i,l.fetchedAt=Date.now(),i}catch{return l.result}}},30008:(a,b,c)=>{"use strict";c.d(b,{$G:()=>g,F1:()=>j,_G:()=>l,j0:()=>i,rB:()=>k,xF:()=>m,yg:()=>h});var d=c(33294),e=c(67882),f=c(27870);function g(a,b){return null!==a&&"notification"===a.source&&"permission-id"===b&&(0,f.PP)(a.decisionId)}function h(a,b,c,e){return g((0,d.getStructuredPromptWaiting)(a,b,c),e)}let i=3e5,j="CM_STRUCTURED_SEND_GUARD";function k(a){return"notification"===a.source?e.Oh.PERMISSION_PROMPT:e.Oh.PERMISSION_REQUEST}function l({worktreeId:a,cliToolId:b,instanceId:c,scraper:e,ignoreStructured:f=!1,now:g=Date.now()}){var h,l,m;let n=(0,d.getStructuredPromptWaiting)(a,b,c,g);null!==n&&("waiting"===e.status?(0,d.corroborateStructuredPromptWaiting)(a,b,c,g):n.scraperCorroborated&&((0,d.clearStructuredPromptWaiting)(a,b,c),n=null));let o=e.hasActivePrompt||null!==n;if(e.hasActivePrompt)return{waiting:o,scraperWaiting:!0,structured:n,blocksSend:!0,blockedBy:"scraper",blockReason:e.reason,structuredSendBlockSuppressed:null};if(null===n)return{waiting:o,scraperWaiting:!1,structured:null,blocksSend:!1,blockedBy:null,blockReason:null,structuredSendBlockSuppressed:null};let p=(h=n,l=f,m=g,l?"caller_opt_out":!function(){let a=process.env[j]?.trim().toLowerCase();return"off"===a||"0"===a||"false"===a}()?m-h.at>=i?"expired":null:"disabled");return{waiting:o,scraperWaiting:!1,structured:n,blocksSend:null===p,blockedBy:null===p?"structured":null,blockReason:null===p?k(n):null,structuredSendBlockSuppressed:p}}function m({worktreeId:a,cliToolId:b,instanceId:c,scraper:e,now:f=Date.now()}){let g=(0,d.getStructuredPromptWaiting)(a,b,c,f);return{waiting:e.hasActivePrompt||null!==g,scraperWaiting:e.hasActivePrompt,structured:g}}},39727:()=>{},43015:(a,b,c)=>{"use strict";c.r(b),c.d(b,{CM_INGRESS_HEADER:()=>W,REMOTE_ONLY_AUTH_SCOPE:()=>X,WORKTREE_RENAMED_EVENT_TYPE:()=>ax,__internal:()=>aD,broadcast:()=>au,broadcastMessage:()=>aw,cleanupRooms:()=>aA,closeWebSocket:()=>aC,handleProxyUpgrade:()=>_,hasRoomSubscribers:()=>av,isIngressAuthExempt:()=>Z,migrateWorktreeRooms:()=>ay,setupWebSocket:()=>ad,stampIngress:()=>Y});var d=c(81503),e=c(91645),f=c(88081),g=c(3453),h=c(15194),i=c(40964),j=c(88807),k=c(56791);let l={capturePaneCalls:0,activeControlSessions:0,subscriberCount:0,cleanupCount:0,firstOutputLatencyCount:0,firstOutputLatencyTotalMs:0,firstOutputLatencyLastMs:null,firstOutputLatencyMinMs:null,firstOutputLatencyMaxMs:null};var m=c(79892),n=c(72626),o=c(79646);class p{push(a){if(0===a.length)return[];let b=(this.remainder+a).split("\n");this.remainder=b.pop()??"";let c=[];for(let a of b){let b=a.endsWith("\r")?a.slice(0,-1):a,d=this.parseLine(b);d&&c.push(d)}return c}flush(){if(0===this.remainder.length)return[];let a=this.parseLine(this.remainder);return this.remainder="",a?[a]:[]}parseLine(a){return 0===a.length?{type:"output",data:"\n"}:a.startsWith("%output ")?{type:"output",data:`${a.slice(8)}
1
+ exports.id=8728,exports.ids=[8728],exports.modules={3453:(a,b,c)=>{"use strict";c.d(b,{Rh:()=>r,T1:()=>o,Z2:()=>m,c$:()=>n,nu:()=>q});var d=c(72626),e=c(80438);let f=(0,d.h)("ip-restriction"),g="::ffff:",h=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/,i=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/(\d{1,2})$/,j=process.env.CM_ALLOWED_IPS?.trim()||"",k=process.env.CM_TRUST_PROXY?.trim()||"";""!==k&&"true"!==k&&"false"!==k&&(0,e.h)(f,"trust-proxy-unexpected",{value:k});let l="true"===k;function m(a){return a?a.toLowerCase().startsWith(g)?a.substring(g.length):a:""}function n(a,b){if(0===b.length)return!1;let c=function(a){let b=a.match(h);if(!b)return null;let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)];for(let a of c)if(a<0||a>255)return null;return(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0}(m(a));if(null===c)return!1;for(let a of b)if((c&a.mask)>>>0===a.network)return!0;return!1}function o(a){if(l){let b=a.get("x-forwarded-for");if(b){let a=b.split(",")[0].trim();if(a)return a}}return a.get("x-real-ip")||null}let p=j.length>0?function(a){let b=a.trim();if(0===b.length)return[];let c=b.split(",").map(a=>a.trim()).filter(a=>a.length>0);if(c.length>256)throw Error(`CM_ALLOWED_IPS: too many entries (${c.length}). Maximum is 256.`);let d=[];for(let a of c){if(a.length>18)throw Error(`CM_ALLOWED_IPS: entry "${a}" exceeds maximum length of 18 characters.`);let b=a.match(i);if(b){let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)],e=parseInt(b[5],10);for(let b of c)if(b<0||b>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);if(e<0||e>32)throw Error(`CM_ALLOWED_IPS: invalid prefix length in "${a}". Must be 0-32.`);let f=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0,g=0===e?0:0xffffffff<<32-e>>>0;d.push({network:(f&g)>>>0,mask:g});continue}let c=a.match(h);if(c){let b=[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10),parseInt(c[4],10)];for(let c of b)if(c<0||c>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);let e=(b[0]<<24|b[1]<<16|b[2]<<8|b[3])>>>0;d.push({network:e,mask:0xffffffff});continue}throw Error(`CM_ALLOWED_IPS: invalid entry "${a}". Expected IPv4 address or CIDR notation.`)}return d}(j):[];function q(){return p}function r(){return j.length>0}},7015:(a,b,c)=>{"use strict";c.d(b,{Ds:()=>g});var d=c(81719);class e{constructor(a,b=3e4){this.cache=new Map,this.allAppsCache=null,this.lastRefresh=0,this.db=a,this.ttl=b}getTTL(){return this.ttl}isStale(){return Date.now()-this.lastRefresh>this.ttl}async refresh(){let a=(0,d.$i)(this.db);for(let b of(this.cache.clear(),a))this.cache.set(b.pathPrefix,b);this.allAppsCache=a,this.lastRefresh=Date.now()}async getByPathPrefix(a){return this.isStale()&&await this.refresh(),this.cache.get(a)??null}async getAll(){return this.isStale()&&await this.refresh(),this.allAppsCache??[]}invalidate(){this.cache.clear(),this.allAppsCache=null,this.lastRefresh=0}invalidateByIssueNo(a){this.invalidate()}}let f=null;function g(a){if(!f){if(!a)throw Error("Database instance required to initialize cache");f=new e(a)}return f}},23854:(a,b,c)=>{"use strict";c.d(b,{$G:()=>f,AL:()=>h,DZ:()=>d,Qe:()=>g,ie:()=>e});let d=4e3,e=15e3;function f(a){var b,c;if(b=a.from,c=a.to,b.worktreeId===c.worktreeId&&b.instanceId===c.instanceId)return{code:"RELAY_SELF_TARGET",message:"A session cannot relay a reply to itself. --reply-to must name a different worktree or a different agent instance."};let d=null===a.parentHops?1:a.parentHops+1;return null===a.parentHops||a.allowRelayChain?d>3?{code:"RELAY_HOPS_EXCEEDED",message:`Relay chains stop at 3 hops; this one would be ${d}. Report the reply to whoever asked instead of forwarding it again.`}:a.openBetween>=1?{code:"RELAY_DUPLICATE_PENDING",message:"There is already an open relay between these two sessions. Wait for it, or withdraw it with `commandmate relays cancel <id>`."}:{ok:!0,hops:d}:{code:"RELAY_CHAIN_BLOCKED",message:"The last message this session was given arrived over a relay, so opening another one would chain two deliveries together. Pass --allow-relay-chain if that is what you mean."}}function g(a){return"code"in a}function h(a){return void 0!==a&&Number.isFinite(a)?Math.min(6048e5,Math.max(6e4,Math.trunc(a))):864e5}},26838:(a,b,c)=>{"use strict";c.d(b,{E2:()=>q,MQ:()=>m,Mj:()=>o,Sw:()=>n,lX:()=>r});var d=c(29021),e=c(33873),f=c(54325),g=c(90164),h=c(36925);let i=/^v?\d+\.\d+\.\d+$/,j=/^[a-zA-Z0-9.\-\s_v]+$/,k=[".next","required-server-files.json"],l=(0,h.v)("__versionCheckCache",()=>({result:null,fetchedAt:0,rateLimitResetAt:null}));function m(a,b){if(!i.test(a)||!i.test(b))return!1;let c=a=>a.replace(/^v/,"").split(".").map(Number),[d,e,f]=c(a),[g,h,j]=c(b);return g!==d?g>d:h!==e?h>e:j>f}function n(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.45.0"}function o(){return n()}let p=null;function q(a){let b=p??=function(){{let a=function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),...k),"utf-8"),b=JSON.parse(a),c=b.config?.env?.NEXT_PUBLIC_APP_VERSION;if("string"==typeof c&&c.length>0)return c;return null}catch{return null}}();if(a)return a}return"0.45.0"}();return(0,f.LE)(b,a)?{serverVersion:b,clientVersion:a}:null}async function r(){try{var a,b,c;if(null!==l.result&&Date.now()-l.fetchedAt<36e5||l.rateLimitResetAt&&(!(Date.now()>=l.rateLimitResetAt)||(l.rateLimitResetAt=null,0)))return l.result;let d=await fetch("https://api.github.com/repos/Kewton/CommandMate/releases/latest",{headers:{Accept:"application/vnd.github+json","User-Agent":`CommandMate/${o()}`},cache:"no-store",signal:AbortSignal.timeout(5e3)});if(403===d.status)return function(a){let b=a.headers.get("X-RateLimit-Reset");b?l.rateLimitResetAt=1e3*parseInt(b,10):l.rateLimitResetAt=Date.now()+36e5}(d),l.result;if(!d.ok)return l.result;let e=await d.json(),f=o(),h=e.tag_name.replace(/^v/,""),i={hasUpdate:m(f,e.tag_name),currentVersion:f,latestVersion:h,releaseUrl:(a=e.html_url).startsWith(g.Dk)?a:null,releaseName:(b=e.name,c=e.tag_name,j.test(b)&&b.length<=128?b:c),publishedAt:e.published_at};return l.result=i,l.fetchedAt=Date.now(),i}catch{return l.result}}},30008:(a,b,c)=>{"use strict";c.d(b,{$G:()=>g,F1:()=>j,_G:()=>l,j0:()=>i,rB:()=>k,xF:()=>m,yg:()=>h});var d=c(33294),e=c(67882),f=c(27870);function g(a,b){return null!==a&&"notification"===a.source&&"permission-id"===b&&(0,f.PP)(a.decisionId)}function h(a,b,c,e){return g((0,d.getStructuredPromptWaiting)(a,b,c),e)}let i=3e5,j="CM_STRUCTURED_SEND_GUARD";function k(a){return"notification"===a.source?e.Oh.PERMISSION_PROMPT:e.Oh.PERMISSION_REQUEST}function l({worktreeId:a,cliToolId:b,instanceId:c,scraper:e,ignoreStructured:f=!1,now:g=Date.now()}){var h,l,m;let n=(0,d.getStructuredPromptWaiting)(a,b,c,g);null!==n&&("waiting"===e.status?(0,d.corroborateStructuredPromptWaiting)(a,b,c,g):n.scraperCorroborated&&((0,d.clearStructuredPromptWaiting)(a,b,c),n=null));let o=e.hasActivePrompt||null!==n;if(e.hasActivePrompt)return{waiting:o,scraperWaiting:!0,structured:n,blocksSend:!0,blockedBy:"scraper",blockReason:e.reason,structuredSendBlockSuppressed:null};if(null===n)return{waiting:o,scraperWaiting:!1,structured:null,blocksSend:!1,blockedBy:null,blockReason:null,structuredSendBlockSuppressed:null};let p=(h=n,l=f,m=g,l?"caller_opt_out":!function(){let a=process.env[j]?.trim().toLowerCase();return"off"===a||"0"===a||"false"===a}()?m-h.at>=i?"expired":null:"disabled");return{waiting:o,scraperWaiting:!1,structured:n,blocksSend:null===p,blockedBy:null===p?"structured":null,blockReason:null===p?k(n):null,structuredSendBlockSuppressed:p}}function m({worktreeId:a,cliToolId:b,instanceId:c,scraper:e,now:f=Date.now()}){let g=(0,d.getStructuredPromptWaiting)(a,b,c,f);return{waiting:e.hasActivePrompt||null!==g,scraperWaiting:e.hasActivePrompt,structured:g}}},39727:()=>{},43015:(a,b,c)=>{"use strict";c.r(b),c.d(b,{CM_INGRESS_HEADER:()=>W,REMOTE_ONLY_AUTH_SCOPE:()=>X,WORKTREE_RENAMED_EVENT_TYPE:()=>ax,__internal:()=>aD,broadcast:()=>au,broadcastMessage:()=>aw,cleanupRooms:()=>aA,closeWebSocket:()=>aC,handleProxyUpgrade:()=>_,hasRoomSubscribers:()=>av,isIngressAuthExempt:()=>Z,migrateWorktreeRooms:()=>ay,setupWebSocket:()=>ad,stampIngress:()=>Y});var d=c(81503),e=c(91645),f=c(88081),g=c(3453),h=c(15194),i=c(40964),j=c(88807),k=c(56791);let l={capturePaneCalls:0,activeControlSessions:0,subscriberCount:0,cleanupCount:0,firstOutputLatencyCount:0,firstOutputLatencyTotalMs:0,firstOutputLatencyLastMs:null,firstOutputLatencyMinMs:null,firstOutputLatencyMaxMs:null};var m=c(79892),n=c(72626),o=c(79646);class p{push(a){if(0===a.length)return[];let b=(this.remainder+a).split("\n");this.remainder=b.pop()??"";let c=[];for(let a of b){let b=a.endsWith("\r")?a.slice(0,-1):a,d=this.parseLine(b);d&&c.push(d)}return c}flush(){if(0===this.remainder.length)return[];let a=this.parseLine(this.remainder);return this.remainder="",a?[a]:[]}parseLine(a){return 0===a.length?{type:"output",data:"\n"}:a.startsWith("%output ")?{type:"output",data:`${a.slice(8)}
2
2
  `}:"%exit"===a||a.startsWith("%exit ")?{type:"exit",exitCode:null}:a.startsWith("%error ")?{type:"error",error:Error(a.slice(7))}:a.startsWith("%")?null:{type:"output",data:`${a}
3
3
  `}}constructor(){this.remainder=""}}let q=(0,n.h)("tmux-control-client");class r{constructor(a={}){this.parser=new p,this.handlers=new Set,this.child=null,this.sessionName=null,this.idleTimer=null,this.started=!1,this.spawnProcess=a.spawnProcess??((a,b,c)=>(0,o.spawn)(a,b,c)),this.tmuxBinary=a.tmuxBinary??"tmux",this.idleTimeoutMs=a.idleTimeoutMs??3e4}start(a){this.started||(this.sessionName=a,this.child=this.spawnProcess(this.tmuxBinary,["-C","attach-session","-t",(0,m.lA)(a)],{stdio:"pipe"}),this.started=!0,this.child.stdout.setEncoding("utf8"),this.child.stdout.on("data",a=>{this.touch();let b="string"==typeof a?a:a.toString("utf8");for(let a of this.parser.push(b))this.emit(a)}),this.child.stderr.setEncoding("utf8"),this.child.stderr.on("data",a=>{let b="string"==typeof a?a:a.toString("utf8");this.emit({type:"error",error:Error(b.trim()||"tmux control stderr")})}),this.child.on("close",a=>{for(let a of this.parser.flush())this.emit(a);this.emit({type:"exit",exitCode:a}),this.stop()}),this.child.on("error",a=>{this.emit({type:"error",error:a}),this.stop()}),this.resetIdleTimer(),q.debug("start",{sessionName:a}))}onEvent(a){return this.handlers.add(a),()=>{this.handlers.delete(a)}}sendInput(a){if(!this.child?.stdin.writable||null===this.sessionName)throw Error("Tmux control client is not writable");this.touch();let b=Buffer.from(a,"utf8");for(let a=0;a<b.length;a+=256){let c=Array.from(b.subarray(a,a+256),a=>a.toString(16).padStart(2,"0")).join(" ");this.child.stdin.write(`send-keys -t ${(0,m.lA)(this.sessionName)} -H ${c}
4
4
  `)}}resize(a,b){if(!this.child?.stdin.writable)throw Error("Tmux control client is not writable");this.touch(),this.child.stdin.write(`refresh-client -C ${a}x${b}
@@ -6,4 +6,4 @@ exports.id=8728,exports.ids=[8728],exports.modules={3453:(a,b,c)=>{"use strict";
6
6
  Content-Length: 0\r
7
7
  Connection: close\r
8
8
  \r
9
- `)}catch{}a.destroy()}async function _(a,b,c,d){let e,f=(a.url||"/").split("?")[0].split("/")[2]||"";if(!f)return void $(b,"400 Bad Request");try{let a=d.getDb(),b=d.getCache(a);e=await b.getByPathPrefix(f)}catch(a){P.error("ws-proxy:cache-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable&&$(b,"502 Bad Gateway");return}if(b.destroyed||!b.writable)return;if(!e)return void $(b,"404 Not Found");if(!e.enabled)return void $(b,"503 Service Unavailable");if(!e.websocketEnabled)return void $(b,"403 Forbidden");if(!V.has(e.targetHost)){P.warn("ws-proxy:ssrf-blocked",{pathPrefix:f}),$(b,"403 Forbidden");return}let g=d.netConnect({host:e.targetHost,port:e.targetPort}),h=!1,i=!1,j=()=>{if(!i){i=!0;try{g.destroy()}catch{}try{b.destroy()}catch{}}};g.on("connect",()=>{h=!0;try{let b=function(a){let b=a.method||"GET",c=a.url||"/",d=a.httpVersion||"1.1",e=[`${b} ${c} HTTP/${d}`];for(let[b,c]of Object.entries(a.headers))if(void 0!==c)if(Array.isArray(c))for(let a of c)e.push(`${b}: ${a}`);else e.push(`${b}: ${c}`);return e.join("\r\n")+"\r\n\r\n"}(a);g.write(b)}catch(a){P.error("ws-proxy:upstream-write-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),j();return}b.pipe(g),g.pipe(b)}),g.on("error",a=>{P.error("ws-proxy:upstream-error",{pathPrefix:f,error:a.message}),h||b.destroyed||!b.writable?j():$(b,"502 Bad Gateway")}),g.on("close",()=>{j()}),b.on("error",a=>{P.error("ws-proxy:client-error",{pathPrefix:f,error:a.message}),j()}),b.on("close",()=>{j()})}function aa(){R.forEach((a,b)=>{if(!a.isAlive){P.warn("heartbeat:terminate",{rooms:a.worktreeIds.size});try{b.terminate()}catch{}ah(b);return}a.isAlive=!1;try{b.ping()}catch(a){P.error("heartbeat:ping-failed",{error:a instanceof Error?a.message:String(a)})}if(b.readyState===d.kb.OPEN)try{b.send(JSON.stringify({type:"heartbeat",at:Date.now()}))}catch{}})}function ab(){ac(),U=setInterval(aa,3e4),U.unref?.()}function ac(){null!==U&&(clearInterval(U),U=null)}function ad(a,b){Q=new d.zu({noServer:!0}),T=function(a){let b=(globalThis.__realtimeRoomPublisherGeneration??0)+1;return globalThis.__realtimeRoomPublisherGeneration=b,globalThis.__realtimeRoomPublisher={generation:b,publisher:a},globalThis.__realtimeUnroutedPublish=void 0,{token:b,unregister:()=>(function(a){let b=globalThis.__realtimeRoomPublisher;return!!b&&b.generation===a&&(globalThis.__realtimeRoomPublisher=void 0,!0)})(b)}}(ar),function(a){L();let b=(0,K.wN)(b=>{a(b.worktreeId,{type:"session_status_changed",worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId??b.cliToolId,isWaitingForResponse:b.waiting,waitingKind:b.kind??null,waitingSince:b.since})});globalThis.__waitingStatusBroadcastUnsubscribe=b,function(a){I();let b=(0,G.onAgentModelChange)(b=>{H.info("model-changed",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:b.instanceId,from:b.from,to:b.to,source:b.source});let c=function(a){try{let b=(0,j.getDbInstance)(),c=(0,F.dV)(b),d=(0,E.createModelChangeMessage)(b,{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,content:(0,F.DH)(c,a.from,a.to),at:a.at});return{type:"message",worktreeId:a.worktreeId,message:d}}catch(b){return H.warn("model-change-history-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)}),null}}(b);try{c&&a(b.worktreeId,c),a(b.worktreeId,{type:D.T4,worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId,from:b.from,to:b.to,source:b.source,at:b.at})}catch(a){H.warn("model-change-broadcast-failed",{worktreeId:b.worktreeId,instanceId:b.instanceId,error:a instanceof Error?a.message:String(a)})}(0,F.b3)(b)});globalThis.__modelChangeBroadcastUnsubscribe=b}(a),(0,J.PJ)()}(ag),ab();let c=(a,b,c)=>{let d=a.url||"/";if(d.startsWith("/_next/")){b.write("HTTP/1.1 426 Upgrade Required\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}if((0,g.Rh)()){let c=(0,g.Z2)(a.socket.remoteAddress||"");if(!(0,g.c$)(c,(0,g.nu)())){let a=c.substring(0,45);P.warn("websocket:denied",{ip:a}),b.write("HTTP/1.1 403 Forbidden\r\n\r\n"),b.destroy();return}}if((0,f.y2)()&&!Z(a.headers)){let c=a.headers.cookie||"",d=(0,f.JT)(c)[f.aq];if(!d||!(0,f.nr)(d)){b.write("HTTP/1.1 401 Unauthorized\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}}if(d.startsWith("/proxy/"))return void(async()=>{try{await _(a,b,c,{getDb:()=>(0,j.getDbInstance)(),getCache:a=>(0,B.Ds)(a),netConnect:a=>(0,e.connect)(a)})}catch(a){if(P.error("ws-proxy:unhandled-error",{error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable){try{b.write("HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\nConnection: close\r\n\r\n")}catch{}b.destroy()}}})();Q.handleUpgrade(a,b,c,b=>{Q.emit("connection",b,a)})};for(let d of[a,...b?.additionalServers??[]])d.on("upgrade",c);Q.on("error",a=>{P.error("server:error",{error:a.message})}),Q.on("connection",a=>{let b={ws:a,worktreeIds:new Set,terminalSubscription:null,isAlive:!0};R.set(a,b),a.on("pong",()=>{let b=R.get(a);b&&(b.isAlive=!0)}),a.on("message",b=>{try{let c=JSON.parse(b.toString());ae(a,c)}catch(a){P.error("message:parse-failed",{error:a instanceof Error?a.message:String(a)})}}),a.on("close",()=>{ah(a)}),a.on("error",b=>{"WS_ERR_INVALID_CLOSE_CODE"===b.code||b.message?.includes("Invalid WebSocket frame")||b.message?.includes("write after end")||b.message?.includes("ECONNRESET")||b.message?.includes("EPIPE")||P.error("websocket:error",{error:b.message});try{a.terminate()}catch{}ah(a)})})}function ae(a,b){switch(b.type){case"subscribe":if(!b.worktreeId)return;var c=a,d=b.worktreeId;let e=R.get(c);e&&(e.worktreeIds.add(d),S.has(d)||S.set(d,new Set),S.get(d).add(c));break;case"unsubscribe":if(!b.worktreeId)return;!function(a,b){let c=R.get(a);if(!c)return;c.worktreeIds.delete(b);let d=S.get(b);d&&(d.delete(a),0===d.size&&S.delete(b))}(a,b.worktreeId);break;case"broadcast":if(!b.worktreeId)return;ag(b.worktreeId,b.data);break;case D.ST:af(a,b);break;case"terminal_subscribe":aj(a,b);break;case"terminal_input":al(a,b);break;case"terminal_resize":am(a,b);break;case"terminal_unsubscribe":ap(a);break;default:P.warn("message:unknown-type")}}function af(a,b){let c="string"==typeof b.version?b.version:"";if(!c)return;let e=(0,C.E2)(c);if(e&&a.readyState===d.kb.OPEN)try{a.send(JSON.stringify({type:D.Oo,serverVersion:e.serverVersion,clientVersion:e.clientVersion}))}catch(a){P.error("version:notify-failed",{error:a instanceof Error?a.message:String(a)})}}function ag(a,b){let c=S.get(a);if(c&&0!==c.size)try{let e=JSON.stringify({type:"broadcast",worktreeId:a,data:b});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(e)}catch(a){P.error("broadcast:send-failed",{error:a instanceof Error?a.message:String(a)})}})}catch(b){P.error("broadcast:failed",{worktreeId:a,error:b instanceof Error?b.message:String(b)});try{let b=JSON.stringify({type:"broadcast",worktreeId:a,data:{error:"Message encoding error"}});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(b)}catch{}})}catch(a){P.error("fallback:send-failed",{error:a instanceof Error?a.message:String(a)})}}}function ah(a){let b=R.get(a);b&&(b.worktreeIds.forEach(b=>{let c=S.get(b);c&&(c.delete(a),0===c.size&&S.delete(b))}),b.terminalSubscription&&(b.terminalSubscription.unsubscribe(),b.terminalSubscription=null),R.delete(a))}function ai(a,b){a.readyState===d.kb.OPEN&&a.send(JSON.stringify(b))}async function aj(a,b){let c=R.get(a);if(!c)return void ai(a,{type:"terminal_error",error:"Unauthorized WebSocket client"});if("true"!==process.env.TMUX_CONTROL_MODE_ENABLED)return void ai(a,{type:"terminal_error",error:"Tmux control mode is disabled"});let{worktreeId:d,cliToolId:e}=b;if(!d||!e||!(0,h.hR)(e))return void ai(a,{type:"terminal_error",error:"Invalid terminal subscription parameters"});let f=(0,j.getDbInstance)(),g=(0,k.getWorktreeById)(f,d);if(!g)return void ai(a,{type:"terminal_error",error:"Worktree not found"});c.terminalSubscription&&(await c.terminalSubscription.unsubscribe(),c.terminalSubscription=null);let m=(0,i.mf)(e,d);if("foreign"===(await (0,z.s_)(m,g.path)).verdict)return void ai(a,{type:"terminal_error",error:A.u});let n=y();if(n.getSubscriberCount(m)>=4)return void ai(a,{type:"terminal_error",error:"Terminal subscriber limit reached"});let o=!1,p=Date.now(),q=await n.subscribe(m,{onOutput:b=>{if(!o){o=!0;let a=Math.max(0,Math.round(Date.now()-p));l.firstOutputLatencyCount+=1,l.firstOutputLatencyTotalMs+=a,l.firstOutputLatencyLastMs=a,l.firstOutputLatencyMinMs=null===l.firstOutputLatencyMinMs?a:Math.min(l.firstOutputLatencyMinMs,a),l.firstOutputLatencyMaxMs=null===l.firstOutputLatencyMaxMs?a:Math.max(l.firstOutputLatencyMaxMs,a)}ai(a,{type:"terminal_output",data:b})},onExit:({exitCode:b})=>{ai(a,{type:"terminal_exit",exitCode:b})},onError:b=>{(async()=>{try{if(await (0,A.y)(d,m)===null){let b=await n.captureSnapshot(m,{startLine:-200});b.length>0&&ai(a,{type:"terminal_output",data:b,fallback:!0})}}catch{}ai(a,{type:"terminal_error",error:b.message,fallback:!0})})()}});c.terminalSubscription={worktreeId:d,cliToolId:e,sessionName:m,startedAt:p,unsubscribe:q.unsubscribe},ai(a,{type:"terminal_status",connected:!0,worktreeId:d,cliToolId:e})}function ak(a,b){let c=R.get(a);if(!c)return b();let d=(c.terminalWriteQueue??Promise.resolve()).then(b,b);return c.terminalWriteQueue=d.catch(()=>void 0),d}function al(a,b){return ak(a,()=>an(a,b))}function am(a,b){return ak(a,()=>ao(a,b))}async function an(a,b){let c=R.get(a),d=c?.terminalSubscription;if(!d)return void ai(a,{type:"terminal_error",error:"No active terminal subscription"});let e="string"==typeof b.data?b.data:"";if(0===e.length||e.length>4096)return void ai(a,{type:"terminal_error",error:"Invalid terminal input"});try{let b=await (0,A.y)(d.worktreeId,d.sessionName);if(null!==b)return void ai(a,{type:"terminal_error",error:b});await y().sendInput(d.sessionName,e)}catch(b){ai(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to send terminal input"})}}async function ao(a,b){let c=R.get(a),d=c?.terminalSubscription;if(d){if("number"!=typeof b.cols||!Number.isInteger(b.cols)||b.cols<20||b.cols>500||"number"!=typeof b.rows||!Number.isInteger(b.rows)||b.rows<5||b.rows>200)return void ai(a,{type:"terminal_error",error:"Invalid terminal resize payload"});try{let c=await (0,A.y)(d.worktreeId,d.sessionName);if(null!==c)return void ai(a,{type:"terminal_error",error:c});await y().resize(d.sessionName,b.cols,b.rows)}catch(b){ai(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to resize terminal"})}}}async function ap(a){let b=R.get(a);if(b?.terminalSubscription){try{await b.terminalSubscription.unsubscribe()}catch{}b.terminalSubscription=null,ai(a,{type:"terminal_status",connected:!1})}}function aq(a){let b=S.get(a);return!!b&&b.size>0}let ar={publish:ag,hasSubscribers:aq,cleanupRooms:aB,migrateRooms:az};function as(){let a=O();return a&&a!==ar?a:null}function at(a,b){null===O()&&0===S.size&&function(a,b,c=Date.now()){let d=(0,M.v)("__realtimeUnroutedPublish",()=>({total:0,suppressed:0,lastWarnedAt:null,operations:{}}));if(d.total+=1,d.operations[a]=(d.operations[a]??0)+1,null!==d.lastWarnedAt&&c-d.lastWarnedAt<6e4){d.suppressed+=1;return}let e=d.suppressed;d.suppressed=0,d.lastWarnedAt=c,N.warn("realtime:no-room-publisher",{operation:a,worktreeId:b,total:d.total,suppressedSinceLastWarning:e,operations:{...d.operations}})}(a,b)}function au(a,b){let c=as();if(c)return void c.publish(a,b);at("broadcast",a),ag(a,b)}function av(a){let b=as();return b?b.hasSubscribers(a):(at("hasRoomSubscribers",a),aq(a))}function aw(a,b){b.worktreeId?au(b.worktreeId,{type:a,...b}):P.warn("broadcast:missing-worktree-id")}let ax="worktree_renamed";function ay(a){let b=as();return b?b.migrateRooms(a):az(a)}function az(a){let b=new Map;for(let{oldId:c,newId:d}of a)c&&d&&c!==d&&b.set(c,d);if(0===b.size)return[];let c=[];for(let[a,d]of b){let b=S.get(a);b&&0!==b.size&&(S.delete(a),c.push({oldId:a,newId:d,sockets:b}))}let d=[];for(let{oldId:a,newId:b,sockets:e}of c){let c=S.get(b)??new Set;for(let d of e){c.add(d);let e=R.get(d);e&&(e.worktreeIds.delete(a),e.worktreeIds.add(b)),ai(d,{type:ax,worktreeId:b,previousWorktreeId:a})}S.set(b,c),d.push({oldId:a,newId:b,subscribers:e.size})}for(let a of R.values()){let c=a.terminalSubscription;if(!c)continue;let d=b.get(c.worktreeId);if(d)try{if(!(0,h.hR)(c.cliToolId))continue;c.sessionName=(0,i.mf)(c.cliToolId,d),c.worktreeId=d}catch(a){P.warn("terminal:rename-failed",{worktreeId:c.worktreeId,newId:d,error:a instanceof Error?a.message:String(a)})}}return d.length>0&&P.info("rooms:migrated",{count:d.length}),d}function aA(a){let b=as();if(b)return void b.cleanupRooms(a);aB(a)}function aB(a){for(let b of a){let a=S.get(b);a&&(a.forEach(a=>{let c=R.get(a);c&&c.worktreeIds.delete(b)}),S.delete(b))}}function aC(){let a=null!==T&&T.unregister();T=null,(a||null===O())&&L(),ac(),Q&&(R.forEach(a=>{a.ws.close()}),R.clear(),S.clear(),Q.close(),Q=null)}let aD={handleMessage:ae,runHeartbeatSweep:aa,startHeartbeat:ab,stopHeartbeat:ac,handleClientVersion:af,handleProxyUpgrade:_,handleTerminalSubscribe:aj,handleTerminalInput:al,handleTerminalResize:am,handleTerminalUnsubscribe:ap,handleDisconnect:ah,registerClientForTest(a,b=!0){R.set(a,{ws:a,worktreeIds:new Set,terminalSubscription:null,isAlive:b})},getClientInfoForTest:a=>R.get(a),listClientsForTest:()=>Array.from(R.values()),resetStateForTest(){ac(),R.clear(),S.clear()}}},43925:(a,b,c)=>{"use strict";c.d(b,{PJ:()=>l,dz:()=>m,vQ:()=>j});var d=c(57836),e=c(23854),f=c(72626),g=c(30008),h=c(56365);let i=(0,f.h)("relay-triggers");function j(a,b,d,e){let f={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayTurnCompleted:a}=await Promise.all([c.e(1634),c.e(3480),c.e(252),c.e(8800),c.e(7905),c.e(9731),c.e(8918),c.e(5595),c.e(611),c.e(5625),c.e(3077),c.e(850),c.e(1210)]).then(c.bind(c,71210));await a(f,{settled:e})}catch(c){i.warn("relay-turn-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:f.instanceId,error:c instanceof Error?c.message:String(c)})}})()}async function k(){try{let{runRelayMaintenanceTick:a}=await Promise.all([c.e(1634),c.e(3480),c.e(252),c.e(8800),c.e(7905),c.e(9731),c.e(8918),c.e(5595),c.e(611),c.e(5625),c.e(3077),c.e(850),c.e(1210)]).then(c.bind(c,71210));await a()}catch(a){i.warn("relay-maintenance-failed",{error:a instanceof Error?a.message:String(a)})}}function l(){m(),globalThis.__relayTriggersUnsubscribe=(0,d.wN)(a=>{a.waiting&&"prompt"===a.kind&&((0,g.yg)(a.worktreeId,a.cliToolId,a.instanceId,(0,h.VM)(a.cliToolId).capabilities.eventIdentity)||function(a,b,d){let e={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayPromptWaiting:a}=await Promise.all([c.e(1634),c.e(3480),c.e(252),c.e(8800),c.e(7905),c.e(9731),c.e(8918),c.e(5595),c.e(611),c.e(5625),c.e(3077),c.e(850),c.e(1210)]).then(c.bind(c,71210));a(e)}catch(c){i.warn("relay-prompt-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:e.instanceId,error:c instanceof Error?c.message:String(c)})}})()}(a.worktreeId,a.cliToolId,a.instanceId))});let a=setInterval(()=>void k(),e.ie);a.unref?.(),globalThis.__relayMaintenanceTimer=a}function m(){let a=globalThis.__relayTriggersUnsubscribe;a&&(a(),globalThis.__relayTriggersUnsubscribe=void 0),globalThis.__relayMaintenanceTimer&&(clearInterval(globalThis.__relayMaintenanceTimer),globalThis.__relayMaintenanceTimer=void 0)}},47990:()=>{},54036:(a,b,c)=>{"use strict";c.d(b,{aq:()=>d,gu:()=>f,kr:()=>h});let d="cm_auth_token",e=/^[0-9a-f]{64}$/;function f(a){return!!a&&e.test(a)}let g=2592e6;function h(){let a=process.env.CM_AUTH_EXPIRE,b=Date.now();if(a)try{return b+function(a){let b=a.match(/^(\d+)([hdm])$/);if(!b)throw Error(`Invalid duration format: "${a}". Use Nh, Nd, or Nm (e.g., "24h", "7d", "90m")`);let c=parseInt(b[1],10),d=b[2],e={h:36e5,d:864e5,m:6e4}[d];if(void 0===e)throw Error(`Invalid duration unit: "${d}"`);let f=c*e;if(f<36e5)throw Error(`Duration too short: minimum is 1h (60m). Got: "${a}"`);if(f>g)throw Error(`Duration too long: maximum is 30d (720h). Got: "${a}"`);return f}(a)}catch{return b+864e5}return process.env.CM_AUTH_TOKEN_HASH?b+864e5:null}},55233:(a,b,c)=>{"use strict";c.d(b,{DH:()=>o,b3:()=>q,dV:()=>p});var d=c(25754),e=c(88807),f=c(43167),g=c(73753),h=c(72626),i=c(72119),j=c(52445),k=c(61191),l=c(27519);let m=(0,h.h)("push/model-change-notifier"),n={en:i.agentModel.changed,ja:j.agentModel.changed};function o(a,b,c){return n[(0,k.resolvePushLocale)(a)].replace("{from}",b).replace("{to}",c)}function p(a){try{let b=(0,f.Se)(a),c=null;for(let a of b){let b=a.updatedAt.getTime();(null===c||b>c.updatedAt)&&(c={updatedAt:b,locale:a.locale})}return(0,k.resolvePushLocale)(c?.locale??d.Xn)}catch{return d.Xn}}async function q(a){if(!(0,l.lU)())return m.debug("model-change-push-suppressed",{worktreeId:a.worktreeId,instanceId:a.instanceId,reason:"unconfigured"}),"unconfigured";try{await (0,k.notifyPushSubscribers)({worktreeId:a.worktreeId,worktreeName:function(a){try{return(0,g.getWorktreeById)((0,e.getDbInstance)(),a)?.name??a}catch{return a}}(a.worktreeId),kind:"failure",agentName:a.instanceId,instanceId:a.instanceId,modelChange:{from:a.from,to:a.to,body:function(a,b){let c={};for(let e of d.dI)c[e]=o(e,a,b);return c}(a.from,a.to)}},a.at),m.info("model-change-push-raised",{worktreeId:a.worktreeId,instanceId:a.instanceId,from:a.from,to:a.to,source:a.source})}catch(b){m.warn("model-change-push-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)})}return null}},56455:(a,b,c)=>{"use strict";c.d(b,{u:()=>g,y:()=>h});var d=c(88807),e=c(56791),f=c(31347);let g="Session belongs to another CommandMate server";async function h(a,b){let c=(0,e.getWorktreeById)((0,d.getDbInstance)(),a);return c?"foreign"===(await (0,f.s_)(b,c.path)).verdict?g:null:"Worktree not found"}},57836:(a,b,c)=>{"use strict";c.d(b,{Jp:()=>m,Te:()=>n,hd:()=>l,wN:()=>j});var d=c(24455),e=c(72626),f=c(36925);let g=(0,e.h)("waiting-episode-state"),h=(0,f.v)("__sessionWaitingEpisodes",()=>new Map),i=(0,f.v)("__sessionWaitingTransitionListeners",()=>new Set);function j(a){return i.add(a),()=>{i.delete(a)}}function k(a){for(let b of i)try{b(a)}catch(b){g.error("waiting-transition-listener-failed",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId,waiting:a.waiting,error:b instanceof Error?b.message:String(b)})}}function l({worktreeId:a,cliToolId:b,instanceId:c,waiting:e,kind:f=null,structuredSince:g=null,now:i=Date.now()}){let j=(0,d.v7)(a,b,c),l=h.get(j);if(!e)return void 0===l||(h.delete(j),k({worktreeId:a,cliToolId:b,instanceId:c,waiting:!1,since:null,kind:null,at:i})),null;if(void 0!==l)return l.kind=f,l.since;let m=g??i;return h.set(j,{since:m,kind:f}),k({worktreeId:a,cliToolId:b,instanceId:c,waiting:!0,since:m,kind:f,at:i}),m}function m(a,b,c){return h.get((0,d.v7)(a,b,c))??null}function n(a){let b=`${a}${d.CS}`;for(let a of h.keys())if(a.startsWith(b))return!0;return!1}},88081:(a,b,c)=>{"use strict";c.d(b,{JT:()=>m,QK:()=>k,aq:()=>f.aq,nr:()=>l,r0:()=>p,sO:()=>h,x:()=>q,y2:()=>n,zr:()=>o});var d=c(55511),e=c.n(d),f=c(54036);let g={maxAttempts:5,lockoutDuration:9e5,cleanupInterval:36e5},h=86400,i=(()=>{let a=process.env.CM_AUTH_TOKEN_HASH||void 0;return a?(0,f.gu)(a)?a:void console.error("[auth] CM_AUTH_TOKEN_HASH is not a valid SHA-256 hash"):void 0})(),j=(0,f.kr)();function k(a){return e().createHash("sha256").update(a).digest("hex")}function l(a){if(!i||!a||"string"!=typeof a||null!==j&&Date.now()>j)return!1;let b=k(a),c=Buffer.from(b,"hex"),d=Buffer.from(i,"hex");return c.length===d.length&&e().timingSafeEqual(c,d)}function m(a){let b={};if(!a)return b;for(let c of a.split(";")){let a=c.indexOf("=");if(-1===a)continue;let d=c.substring(0,a).trim(),e=c.substring(a+1).trim();d&&(b[d]=e)}return b}function n(){return!!i}function o(){if(null===j)return 0;let a=j-Date.now();return a<=0?0:Math.floor(a/1e3)}function p(a){return{httpOnly:!0,sameSite:"strict",secure:!!process.env.CM_HTTPS_CERT,maxAge:a,path:"/"}}function q(){let a=new Map,b=setInterval(()=>{let b=Date.now();for(let[c,d]of a){let e=null===d.lockedUntil||b>d.lockedUntil,f=b-d.lastAttempt>g.lockoutDuration;e&&f&&a.delete(c)}},g.cleanupInterval);return b.unref&&b.unref(),{checkLimit(b){let c=a.get(b);if(!c)return{allowed:!0};if(null!==c.lockedUntil){let a=Date.now();if(a<c.lockedUntil)return{allowed:!1,retryAfter:Math.ceil((c.lockedUntil-a)/1e3)};c.attempts=0,c.lockedUntil=null}return{allowed:!0}},recordFailure(b){let c=Date.now(),d=a.get(b)||{attempts:0,lockedUntil:null,lastAttempt:c};d.attempts++,d.lastAttempt=c,d.attempts>=g.maxAttempts&&(d.lockedUntil=c+g.lockoutDuration),a.set(b,d)},recordSuccess(b){a.delete(b)},destroy(){clearInterval(b),a.clear()}}}},90164:(a,b,c)=>{"use strict";c.d(b,{Dk:()=>e,kD:()=>f});let d="https://github.com/Kewton/CommandMate",e=`${d}/releases/`,f=`${d}/blob/main/docs/security-guide.md`}};
9
+ `)}catch{}a.destroy()}async function _(a,b,c,d){let e,f=(a.url||"/").split("?")[0].split("/")[2]||"";if(!f)return void $(b,"400 Bad Request");try{let a=d.getDb(),b=d.getCache(a);e=await b.getByPathPrefix(f)}catch(a){P.error("ws-proxy:cache-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable&&$(b,"502 Bad Gateway");return}if(b.destroyed||!b.writable)return;if(!e)return void $(b,"404 Not Found");if(!e.enabled)return void $(b,"503 Service Unavailable");if(!e.websocketEnabled)return void $(b,"403 Forbidden");if(!V.has(e.targetHost)){P.warn("ws-proxy:ssrf-blocked",{pathPrefix:f}),$(b,"403 Forbidden");return}let g=d.netConnect({host:e.targetHost,port:e.targetPort}),h=!1,i=!1,j=()=>{if(!i){i=!0;try{g.destroy()}catch{}try{b.destroy()}catch{}}};g.on("connect",()=>{h=!0;try{let b=function(a){let b=a.method||"GET",c=a.url||"/",d=a.httpVersion||"1.1",e=[`${b} ${c} HTTP/${d}`];for(let[b,c]of Object.entries(a.headers))if(void 0!==c)if(Array.isArray(c))for(let a of c)e.push(`${b}: ${a}`);else e.push(`${b}: ${c}`);return e.join("\r\n")+"\r\n\r\n"}(a);g.write(b)}catch(a){P.error("ws-proxy:upstream-write-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),j();return}b.pipe(g),g.pipe(b)}),g.on("error",a=>{P.error("ws-proxy:upstream-error",{pathPrefix:f,error:a.message}),h||b.destroyed||!b.writable?j():$(b,"502 Bad Gateway")}),g.on("close",()=>{j()}),b.on("error",a=>{P.error("ws-proxy:client-error",{pathPrefix:f,error:a.message}),j()}),b.on("close",()=>{j()})}function aa(){R.forEach((a,b)=>{if(!a.isAlive){P.warn("heartbeat:terminate",{rooms:a.worktreeIds.size});try{b.terminate()}catch{}ah(b);return}a.isAlive=!1;try{b.ping()}catch(a){P.error("heartbeat:ping-failed",{error:a instanceof Error?a.message:String(a)})}if(b.readyState===d.kb.OPEN)try{b.send(JSON.stringify({type:"heartbeat",at:Date.now()}))}catch{}})}function ab(){ac(),U=setInterval(aa,3e4),U.unref?.()}function ac(){null!==U&&(clearInterval(U),U=null)}function ad(a,b){Q=new d.zu({noServer:!0}),T=function(a){let b=(globalThis.__realtimeRoomPublisherGeneration??0)+1;return globalThis.__realtimeRoomPublisherGeneration=b,globalThis.__realtimeRoomPublisher={generation:b,publisher:a},globalThis.__realtimeUnroutedPublish=void 0,{token:b,unregister:()=>(function(a){let b=globalThis.__realtimeRoomPublisher;return!!b&&b.generation===a&&(globalThis.__realtimeRoomPublisher=void 0,!0)})(b)}}(ar),function(a){L();let b=(0,K.wN)(b=>{a(b.worktreeId,{type:"session_status_changed",worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId??b.cliToolId,isWaitingForResponse:b.waiting,waitingKind:b.kind??null,waitingSince:b.since})});globalThis.__waitingStatusBroadcastUnsubscribe=b,function(a){I();let b=(0,G.onAgentModelChange)(b=>{H.info("model-changed",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:b.instanceId,from:b.from,to:b.to,source:b.source});let c=function(a){try{let b=(0,j.getDbInstance)(),c=(0,F.dV)(b),d=(0,E.createModelChangeMessage)(b,{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,content:(0,F.DH)(c,a.from,a.to),at:a.at});return{type:"message",worktreeId:a.worktreeId,message:d}}catch(b){return H.warn("model-change-history-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)}),null}}(b);try{c&&a(b.worktreeId,c),a(b.worktreeId,{type:D.T4,worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId,from:b.from,to:b.to,source:b.source,at:b.at})}catch(a){H.warn("model-change-broadcast-failed",{worktreeId:b.worktreeId,instanceId:b.instanceId,error:a instanceof Error?a.message:String(a)})}(0,F.b3)(b)});globalThis.__modelChangeBroadcastUnsubscribe=b}(a),(0,J.PJ)()}(ag),ab();let c=(a,b,c)=>{let d=a.url||"/";if(d.startsWith("/_next/")){b.write("HTTP/1.1 426 Upgrade Required\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}if((0,g.Rh)()){let c=(0,g.Z2)(a.socket.remoteAddress||"");if(!(0,g.c$)(c,(0,g.nu)())){let a=c.substring(0,45);P.warn("websocket:denied",{ip:a}),b.write("HTTP/1.1 403 Forbidden\r\n\r\n"),b.destroy();return}}if((0,f.y2)()&&!Z(a.headers)){let c=a.headers.cookie||"",d=(0,f.JT)(c)[f.aq];if(!d||!(0,f.nr)(d)){b.write("HTTP/1.1 401 Unauthorized\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}}if(d.startsWith("/proxy/"))return void(async()=>{try{await _(a,b,c,{getDb:()=>(0,j.getDbInstance)(),getCache:a=>(0,B.Ds)(a),netConnect:a=>(0,e.connect)(a)})}catch(a){if(P.error("ws-proxy:unhandled-error",{error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable){try{b.write("HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\nConnection: close\r\n\r\n")}catch{}b.destroy()}}})();Q.handleUpgrade(a,b,c,b=>{Q.emit("connection",b,a)})};for(let d of[a,...b?.additionalServers??[]])d.on("upgrade",c);Q.on("error",a=>{P.error("server:error",{error:a.message})}),Q.on("connection",a=>{let b={ws:a,worktreeIds:new Set,terminalSubscription:null,isAlive:!0};R.set(a,b),a.on("pong",()=>{let b=R.get(a);b&&(b.isAlive=!0)}),a.on("message",b=>{try{let c=JSON.parse(b.toString());ae(a,c)}catch(a){P.error("message:parse-failed",{error:a instanceof Error?a.message:String(a)})}}),a.on("close",()=>{ah(a)}),a.on("error",b=>{"WS_ERR_INVALID_CLOSE_CODE"===b.code||b.message?.includes("Invalid WebSocket frame")||b.message?.includes("write after end")||b.message?.includes("ECONNRESET")||b.message?.includes("EPIPE")||P.error("websocket:error",{error:b.message});try{a.terminate()}catch{}ah(a)})})}function ae(a,b){switch(b.type){case"subscribe":if(!b.worktreeId)return;var c=a,d=b.worktreeId;let e=R.get(c);e&&(e.worktreeIds.add(d),S.has(d)||S.set(d,new Set),S.get(d).add(c));break;case"unsubscribe":if(!b.worktreeId)return;!function(a,b){let c=R.get(a);if(!c)return;c.worktreeIds.delete(b);let d=S.get(b);d&&(d.delete(a),0===d.size&&S.delete(b))}(a,b.worktreeId);break;case"broadcast":if(!b.worktreeId)return;ag(b.worktreeId,b.data);break;case D.ST:af(a,b);break;case"terminal_subscribe":aj(a,b);break;case"terminal_input":al(a,b);break;case"terminal_resize":am(a,b);break;case"terminal_unsubscribe":ap(a);break;default:P.warn("message:unknown-type")}}function af(a,b){let c="string"==typeof b.version?b.version:"";if(!c)return;let e=(0,C.E2)(c);if(e&&a.readyState===d.kb.OPEN)try{a.send(JSON.stringify({type:D.Oo,serverVersion:e.serverVersion,clientVersion:e.clientVersion}))}catch(a){P.error("version:notify-failed",{error:a instanceof Error?a.message:String(a)})}}function ag(a,b){let c=S.get(a);if(c&&0!==c.size)try{let e=JSON.stringify({type:"broadcast",worktreeId:a,data:b});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(e)}catch(a){P.error("broadcast:send-failed",{error:a instanceof Error?a.message:String(a)})}})}catch(b){P.error("broadcast:failed",{worktreeId:a,error:b instanceof Error?b.message:String(b)});try{let b=JSON.stringify({type:"broadcast",worktreeId:a,data:{error:"Message encoding error"}});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(b)}catch{}})}catch(a){P.error("fallback:send-failed",{error:a instanceof Error?a.message:String(a)})}}}function ah(a){let b=R.get(a);b&&(b.worktreeIds.forEach(b=>{let c=S.get(b);c&&(c.delete(a),0===c.size&&S.delete(b))}),b.terminalSubscription&&(b.terminalSubscription.unsubscribe(),b.terminalSubscription=null),R.delete(a))}function ai(a,b){a.readyState===d.kb.OPEN&&a.send(JSON.stringify(b))}async function aj(a,b){let c=R.get(a);if(!c)return void ai(a,{type:"terminal_error",error:"Unauthorized WebSocket client"});if("true"!==process.env.TMUX_CONTROL_MODE_ENABLED)return void ai(a,{type:"terminal_error",error:"Tmux control mode is disabled"});let{worktreeId:d,cliToolId:e}=b;if(!d||!e||!(0,h.hR)(e))return void ai(a,{type:"terminal_error",error:"Invalid terminal subscription parameters"});let f=(0,j.getDbInstance)(),g=(0,k.getWorktreeById)(f,d);if(!g)return void ai(a,{type:"terminal_error",error:"Worktree not found"});c.terminalSubscription&&(await c.terminalSubscription.unsubscribe(),c.terminalSubscription=null);let m=(0,i.mf)(e,d);if("foreign"===(await (0,z.s_)(m,g.path)).verdict)return void ai(a,{type:"terminal_error",error:A.u});let n=y();if(n.getSubscriberCount(m)>=4)return void ai(a,{type:"terminal_error",error:"Terminal subscriber limit reached"});let o=!1,p=Date.now(),q=await n.subscribe(m,{onOutput:b=>{if(!o){o=!0;let a=Math.max(0,Math.round(Date.now()-p));l.firstOutputLatencyCount+=1,l.firstOutputLatencyTotalMs+=a,l.firstOutputLatencyLastMs=a,l.firstOutputLatencyMinMs=null===l.firstOutputLatencyMinMs?a:Math.min(l.firstOutputLatencyMinMs,a),l.firstOutputLatencyMaxMs=null===l.firstOutputLatencyMaxMs?a:Math.max(l.firstOutputLatencyMaxMs,a)}ai(a,{type:"terminal_output",data:b})},onExit:({exitCode:b})=>{ai(a,{type:"terminal_exit",exitCode:b})},onError:b=>{(async()=>{try{if(await (0,A.y)(d,m)===null){let b=await n.captureSnapshot(m,{startLine:-200});b.length>0&&ai(a,{type:"terminal_output",data:b,fallback:!0})}}catch{}ai(a,{type:"terminal_error",error:b.message,fallback:!0})})()}});c.terminalSubscription={worktreeId:d,cliToolId:e,sessionName:m,startedAt:p,unsubscribe:q.unsubscribe},ai(a,{type:"terminal_status",connected:!0,worktreeId:d,cliToolId:e})}function ak(a,b){let c=R.get(a);if(!c)return b();let d=(c.terminalWriteQueue??Promise.resolve()).then(b,b);return c.terminalWriteQueue=d.catch(()=>void 0),d}function al(a,b){return ak(a,()=>an(a,b))}function am(a,b){return ak(a,()=>ao(a,b))}async function an(a,b){let c=R.get(a),d=c?.terminalSubscription;if(!d)return void ai(a,{type:"terminal_error",error:"No active terminal subscription"});let e="string"==typeof b.data?b.data:"";if(0===e.length||e.length>4096)return void ai(a,{type:"terminal_error",error:"Invalid terminal input"});try{let b=await (0,A.y)(d.worktreeId,d.sessionName);if(null!==b)return void ai(a,{type:"terminal_error",error:b});await y().sendInput(d.sessionName,e)}catch(b){ai(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to send terminal input"})}}async function ao(a,b){let c=R.get(a),d=c?.terminalSubscription;if(d){if("number"!=typeof b.cols||!Number.isInteger(b.cols)||b.cols<20||b.cols>500||"number"!=typeof b.rows||!Number.isInteger(b.rows)||b.rows<5||b.rows>200)return void ai(a,{type:"terminal_error",error:"Invalid terminal resize payload"});try{let c=await (0,A.y)(d.worktreeId,d.sessionName);if(null!==c)return void ai(a,{type:"terminal_error",error:c});await y().resize(d.sessionName,b.cols,b.rows)}catch(b){ai(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to resize terminal"})}}}async function ap(a){let b=R.get(a);if(b?.terminalSubscription){try{await b.terminalSubscription.unsubscribe()}catch{}b.terminalSubscription=null,ai(a,{type:"terminal_status",connected:!1})}}function aq(a){let b=S.get(a);return!!b&&b.size>0}let ar={publish:ag,hasSubscribers:aq,cleanupRooms:aB,migrateRooms:az};function as(){let a=O();return a&&a!==ar?a:null}function at(a,b){null===O()&&0===S.size&&function(a,b,c=Date.now()){let d=(0,M.v)("__realtimeUnroutedPublish",()=>({total:0,suppressed:0,lastWarnedAt:null,operations:{}}));if(d.total+=1,d.operations[a]=(d.operations[a]??0)+1,null!==d.lastWarnedAt&&c-d.lastWarnedAt<6e4){d.suppressed+=1;return}let e=d.suppressed;d.suppressed=0,d.lastWarnedAt=c,N.warn("realtime:no-room-publisher",{operation:a,worktreeId:b,total:d.total,suppressedSinceLastWarning:e,operations:{...d.operations}})}(a,b)}function au(a,b){let c=as();if(c)return void c.publish(a,b);at("broadcast",a),ag(a,b)}function av(a){let b=as();return b?b.hasSubscribers(a):(at("hasRoomSubscribers",a),aq(a))}function aw(a,b){b.worktreeId?au(b.worktreeId,{type:a,...b}):P.warn("broadcast:missing-worktree-id")}let ax="worktree_renamed";function ay(a){let b=as();return b?b.migrateRooms(a):az(a)}function az(a){let b=new Map;for(let{oldId:c,newId:d}of a)c&&d&&c!==d&&b.set(c,d);if(0===b.size)return[];let c=[];for(let[a,d]of b){let b=S.get(a);b&&0!==b.size&&(S.delete(a),c.push({oldId:a,newId:d,sockets:b}))}let d=[];for(let{oldId:a,newId:b,sockets:e}of c){let c=S.get(b)??new Set;for(let d of e){c.add(d);let e=R.get(d);e&&(e.worktreeIds.delete(a),e.worktreeIds.add(b)),ai(d,{type:ax,worktreeId:b,previousWorktreeId:a})}S.set(b,c),d.push({oldId:a,newId:b,subscribers:e.size})}for(let a of R.values()){let c=a.terminalSubscription;if(!c)continue;let d=b.get(c.worktreeId);if(d)try{if(!(0,h.hR)(c.cliToolId))continue;c.sessionName=(0,i.mf)(c.cliToolId,d),c.worktreeId=d}catch(a){P.warn("terminal:rename-failed",{worktreeId:c.worktreeId,newId:d,error:a instanceof Error?a.message:String(a)})}}return d.length>0&&P.info("rooms:migrated",{count:d.length}),d}function aA(a){let b=as();if(b)return void b.cleanupRooms(a);aB(a)}function aB(a){for(let b of a){let a=S.get(b);a&&(a.forEach(a=>{let c=R.get(a);c&&c.worktreeIds.delete(b)}),S.delete(b))}}function aC(){let a=null!==T&&T.unregister();T=null,(a||null===O())&&L(),ac(),Q&&(R.forEach(a=>{a.ws.close()}),R.clear(),S.clear(),Q.close(),Q=null)}let aD={handleMessage:ae,runHeartbeatSweep:aa,startHeartbeat:ab,stopHeartbeat:ac,handleClientVersion:af,handleProxyUpgrade:_,handleTerminalSubscribe:aj,handleTerminalInput:al,handleTerminalResize:am,handleTerminalUnsubscribe:ap,handleDisconnect:ah,registerClientForTest(a,b=!0){R.set(a,{ws:a,worktreeIds:new Set,terminalSubscription:null,isAlive:b})},getClientInfoForTest:a=>R.get(a),listClientsForTest:()=>Array.from(R.values()),resetStateForTest(){ac(),R.clear(),S.clear()}}},43925:(a,b,c)=>{"use strict";c.d(b,{PJ:()=>l,dz:()=>m,vQ:()=>j});var d=c(57836),e=c(23854),f=c(72626),g=c(30008),h=c(59409);let i=(0,f.h)("relay-triggers");function j(a,b,d,e){let f={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayTurnCompleted:a}=await Promise.all([c.e(1634),c.e(3480),c.e(252),c.e(8800),c.e(7905),c.e(9731),c.e(8918),c.e(5595),c.e(611),c.e(5625),c.e(3077),c.e(850),c.e(1210)]).then(c.bind(c,71210));await a(f,{settled:e})}catch(c){i.warn("relay-turn-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:f.instanceId,error:c instanceof Error?c.message:String(c)})}})()}async function k(){try{let{runRelayMaintenanceTick:a}=await Promise.all([c.e(1634),c.e(3480),c.e(252),c.e(8800),c.e(7905),c.e(9731),c.e(8918),c.e(5595),c.e(611),c.e(5625),c.e(3077),c.e(850),c.e(1210)]).then(c.bind(c,71210));await a()}catch(a){i.warn("relay-maintenance-failed",{error:a instanceof Error?a.message:String(a)})}}function l(){m(),globalThis.__relayTriggersUnsubscribe=(0,d.wN)(a=>{a.waiting&&"prompt"===a.kind&&((0,g.yg)(a.worktreeId,a.cliToolId,a.instanceId,(0,h.VM)(a.cliToolId).capabilities.eventIdentity)||function(a,b,d){let e={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayPromptWaiting:a}=await Promise.all([c.e(1634),c.e(3480),c.e(252),c.e(8800),c.e(7905),c.e(9731),c.e(8918),c.e(5595),c.e(611),c.e(5625),c.e(3077),c.e(850),c.e(1210)]).then(c.bind(c,71210));a(e)}catch(c){i.warn("relay-prompt-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:e.instanceId,error:c instanceof Error?c.message:String(c)})}})()}(a.worktreeId,a.cliToolId,a.instanceId))});let a=setInterval(()=>void k(),e.ie);a.unref?.(),globalThis.__relayMaintenanceTimer=a}function m(){let a=globalThis.__relayTriggersUnsubscribe;a&&(a(),globalThis.__relayTriggersUnsubscribe=void 0),globalThis.__relayMaintenanceTimer&&(clearInterval(globalThis.__relayMaintenanceTimer),globalThis.__relayMaintenanceTimer=void 0)}},47990:()=>{},54036:(a,b,c)=>{"use strict";c.d(b,{aq:()=>d,gu:()=>f,kr:()=>h});let d="cm_auth_token",e=/^[0-9a-f]{64}$/;function f(a){return!!a&&e.test(a)}let g=2592e6;function h(){let a=process.env.CM_AUTH_EXPIRE,b=Date.now();if(a)try{return b+function(a){let b=a.match(/^(\d+)([hdm])$/);if(!b)throw Error(`Invalid duration format: "${a}". Use Nh, Nd, or Nm (e.g., "24h", "7d", "90m")`);let c=parseInt(b[1],10),d=b[2],e={h:36e5,d:864e5,m:6e4}[d];if(void 0===e)throw Error(`Invalid duration unit: "${d}"`);let f=c*e;if(f<36e5)throw Error(`Duration too short: minimum is 1h (60m). Got: "${a}"`);if(f>g)throw Error(`Duration too long: maximum is 30d (720h). Got: "${a}"`);return f}(a)}catch{return b+864e5}return process.env.CM_AUTH_TOKEN_HASH?b+864e5:null}},55233:(a,b,c)=>{"use strict";c.d(b,{DH:()=>o,b3:()=>q,dV:()=>p});var d=c(25754),e=c(88807),f=c(43167),g=c(73753),h=c(72626),i=c(72119),j=c(52445),k=c(61191),l=c(27519);let m=(0,h.h)("push/model-change-notifier"),n={en:i.agentModel.changed,ja:j.agentModel.changed};function o(a,b,c){return n[(0,k.resolvePushLocale)(a)].replace("{from}",b).replace("{to}",c)}function p(a){try{let b=(0,f.Se)(a),c=null;for(let a of b){let b=a.updatedAt.getTime();(null===c||b>c.updatedAt)&&(c={updatedAt:b,locale:a.locale})}return(0,k.resolvePushLocale)(c?.locale??d.Xn)}catch{return d.Xn}}async function q(a){if(!(0,l.lU)())return m.debug("model-change-push-suppressed",{worktreeId:a.worktreeId,instanceId:a.instanceId,reason:"unconfigured"}),"unconfigured";try{await (0,k.notifyPushSubscribers)({worktreeId:a.worktreeId,worktreeName:function(a){try{return(0,g.getWorktreeById)((0,e.getDbInstance)(),a)?.name??a}catch{return a}}(a.worktreeId),kind:"failure",agentName:a.instanceId,instanceId:a.instanceId,modelChange:{from:a.from,to:a.to,body:function(a,b){let c={};for(let e of d.dI)c[e]=o(e,a,b);return c}(a.from,a.to)}},a.at),m.info("model-change-push-raised",{worktreeId:a.worktreeId,instanceId:a.instanceId,from:a.from,to:a.to,source:a.source})}catch(b){m.warn("model-change-push-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)})}return null}},56455:(a,b,c)=>{"use strict";c.d(b,{u:()=>g,y:()=>h});var d=c(88807),e=c(56791),f=c(31347);let g="Session belongs to another CommandMate server";async function h(a,b){let c=(0,e.getWorktreeById)((0,d.getDbInstance)(),a);return c?"foreign"===(await (0,f.s_)(b,c.path)).verdict?g:null:"Worktree not found"}},57836:(a,b,c)=>{"use strict";c.d(b,{Jp:()=>m,Te:()=>n,hd:()=>l,wN:()=>j});var d=c(24455),e=c(72626),f=c(36925);let g=(0,e.h)("waiting-episode-state"),h=(0,f.v)("__sessionWaitingEpisodes",()=>new Map),i=(0,f.v)("__sessionWaitingTransitionListeners",()=>new Set);function j(a){return i.add(a),()=>{i.delete(a)}}function k(a){for(let b of i)try{b(a)}catch(b){g.error("waiting-transition-listener-failed",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId,waiting:a.waiting,error:b instanceof Error?b.message:String(b)})}}function l({worktreeId:a,cliToolId:b,instanceId:c,waiting:e,kind:f=null,structuredSince:g=null,now:i=Date.now()}){let j=(0,d.v7)(a,b,c),l=h.get(j);if(!e)return void 0===l||(h.delete(j),k({worktreeId:a,cliToolId:b,instanceId:c,waiting:!1,since:null,kind:null,at:i})),null;if(void 0!==l)return l.kind=f,l.since;let m=g??i;return h.set(j,{since:m,kind:f}),k({worktreeId:a,cliToolId:b,instanceId:c,waiting:!0,since:m,kind:f,at:i}),m}function m(a,b,c){return h.get((0,d.v7)(a,b,c))??null}function n(a){let b=`${a}${d.CS}`;for(let a of h.keys())if(a.startsWith(b))return!0;return!1}},88081:(a,b,c)=>{"use strict";c.d(b,{JT:()=>m,QK:()=>k,aq:()=>f.aq,nr:()=>l,r0:()=>p,sO:()=>h,x:()=>q,y2:()=>n,zr:()=>o});var d=c(55511),e=c.n(d),f=c(54036);let g={maxAttempts:5,lockoutDuration:9e5,cleanupInterval:36e5},h=86400,i=(()=>{let a=process.env.CM_AUTH_TOKEN_HASH||void 0;return a?(0,f.gu)(a)?a:void console.error("[auth] CM_AUTH_TOKEN_HASH is not a valid SHA-256 hash"):void 0})(),j=(0,f.kr)();function k(a){return e().createHash("sha256").update(a).digest("hex")}function l(a){if(!i||!a||"string"!=typeof a||null!==j&&Date.now()>j)return!1;let b=k(a),c=Buffer.from(b,"hex"),d=Buffer.from(i,"hex");return c.length===d.length&&e().timingSafeEqual(c,d)}function m(a){let b={};if(!a)return b;for(let c of a.split(";")){let a=c.indexOf("=");if(-1===a)continue;let d=c.substring(0,a).trim(),e=c.substring(a+1).trim();d&&(b[d]=e)}return b}function n(){return!!i}function o(){if(null===j)return 0;let a=j-Date.now();return a<=0?0:Math.floor(a/1e3)}function p(a){return{httpOnly:!0,sameSite:"strict",secure:!!process.env.CM_HTTPS_CERT,maxAge:a,path:"/"}}function q(){let a=new Map,b=setInterval(()=>{let b=Date.now();for(let[c,d]of a){let e=null===d.lockedUntil||b>d.lockedUntil,f=b-d.lastAttempt>g.lockoutDuration;e&&f&&a.delete(c)}},g.cleanupInterval);return b.unref&&b.unref(),{checkLimit(b){let c=a.get(b);if(!c)return{allowed:!0};if(null!==c.lockedUntil){let a=Date.now();if(a<c.lockedUntil)return{allowed:!1,retryAfter:Math.ceil((c.lockedUntil-a)/1e3)};c.attempts=0,c.lockedUntil=null}return{allowed:!0}},recordFailure(b){let c=Date.now(),d=a.get(b)||{attempts:0,lockedUntil:null,lastAttempt:c};d.attempts++,d.lastAttempt=c,d.attempts>=g.maxAttempts&&(d.lockedUntil=c+g.lockoutDuration),a.set(b,d)},recordSuccess(b){a.delete(b)},destroy(){clearInterval(b),a.clear()}}}},90164:(a,b,c)=>{"use strict";c.d(b,{Dk:()=>e,kD:()=>f});let d="https://github.com/Kewton/CommandMate",e=`${d}/releases/`,f=`${d}/blob/main/docs/security-guide.md`}};
@@ -1,10 +1,10 @@
1
- "use strict";exports.id=8918,exports.ids=[8918],exports.modules={12462:(a,b,c)=>{c.d(b,{fT:()=>l,o4:()=>m});var d=c(31990),e=c(56791),f=c(43015),g=c(82450),h=c(15194),i=c(61789);let j=(0,c(72626).h)("assistant-response-saver");function k(a){let b=a.split("\n"),c=b.length;for(;c>0&&""===b[c-1].trim();)c--;return c}async function l(a){let{worktreeId:b,cliToolId:f}=a,g=a.instanceId??f;try{if((0,h.VA)(f))return null;let i=await (0,d.Wh)(b,f,1e4,a.instanceId);if(!i)return null;let l=k(i),{getDbInstance:m}=await Promise.resolve().then(c.bind(c,88807)),n=m(),o=(0,e.getSessionState)(n,b,g)?.lastCapturedLine||0;if(l<=o)return null;return(0,e.updateSessionState)(n,b,f,l,a.instanceId),j.info("transcript:cursor-advanced",{worktreeId:b,instanceId:g,from:o,to:l}),l}catch(a){return j.debug("transcript:cursor-advance-failed",{worktreeId:b,instanceId:g,error:a instanceof Error?a.message:String(a)}),null}}async function m(a,b,c,l,m){let n=m??c;try{let o;if((0,h.VA)(c))return null;let p=(0,e.getSessionState)(a,b,n),q=p?.lastCapturedLine||0;try{o=await (0,d.Wh)(b,c,1e4,m)}catch{return j.info("failed-to-capture"),null}if(!o)return null;let r=o.split("\n"),s=k(o),{bufferReset:t,reason:u}=s>0&&q>25&&s+25<q?{bufferReset:!0,reason:"shrink"}:s>0&&q>50&&s<50?{bufferReset:!0,reason:"restart"}:{bufferReset:!1,reason:null};t&&j.info("buffer:reset-detected",{reason:u,currentLineCount:s,lastCapturedLine:q});let v=t?0:q;if(!t&&s<=q)return s<q&&((0,e.updateSessionState)(a,b,c,s,m),j.info("position:corrected-stale",{from:q,to:s})),null;let w=r.slice(v).join("\n"),x=r.length>=1e4,y="codex"===c&&function(a,b){let c=(0,i.Zu)(a);return c>=0&&b>=c}(r,v)?"":function(a,b,c){switch(b){case"claude":return(0,g.NN)(a);case"gemini":return(0,g.IS)(a);case"opencode":return(0,g.aW)(a);case"copilot":return(0,g.LH)(a);case"codex":case"command-code":case"antigravity":case"vibe-local":return(0,g.Te)(a,b,c);default:return a.trim()}}(w,c,x?void 0:r);if(!y||""===y.trim())return(0,e.updateSessionState)(a,b,c,s,m),j.debug("response:empty-after-clean",{currentLineCount:s}),null;let z=new Date(l.getTime()-1),A=(0,e.createMessage)(a,{worktreeId:b,role:"assistant",content:y,messageType:"normal",timestamp:z,cliToolId:c,instanceId:n});return(0,e.updateSessionState)(a,b,c,s,m),(0,f.broadcastMessage)("message",{worktreeId:b,message:A}),j.info("response:saved",{fromLine:q,toLine:s}),A}catch(a){return j.error("error:",{error:a instanceof Error?a.message:String(a)}),null}}},13033:(a,b,c)=>{c.d(b,{IW:()=>h,IZ:()=>l,K0:()=>g,Uz:()=>m,l1:()=>f,o0:()=>i,q1:()=>n,tb:()=>k,vQ:()=>j});var d=c(61789);let e=(0,c(36925).v)("__tuiResponseAccumulator",()=>new Map);function f(a){return(0,d._A)((0,d.aJ)(a)).replace(/^\u2503\s?/,"").replace(/\s*\u2503$/,"").trim()}function g(a){let b=a.split("\n"),c=[];for(let a of b){let b=f(a);!(!b||d.sx.some(a=>a.test(b)))&&(d.Md.test(b)||c.push(b))}return c}function h(a){return a.replace(/[\u2500-\u257F]/g,"").replace(/\s{2,}/g," ").trim()}function i(a){let b=(0,d.aJ)(a).split("\n");if((0,d.gT)(b))return[];let c=(0,d.wv)(b),e=c>=0?b.slice(0,c):b,f=[],g=!1;for(let a of e){if(d.JN.test(a)){g=!1;continue}if(d.y.test(a))g=!0;else if(g){if(d.Fg.test(a))continue;g=!1}let b=h(a);b&&(d.J7.some(a=>a.test(b))||f.push(b))}return f}function j(a,b){if(0===a.length||0===b.length)return 0;let c=Math.min(a.length,b.length);for(let d=c;d>=1;d--){let c=a.slice(-d),e=b.slice(0,d),f=!0;for(let a=0;a<d;a++)if(c[a]!==e[a]){f=!1;break}if(f)return d}return 0}function k(a){e.set(a,{lines:[],lastFingerprint:[],pollCount:0})}function l(a,b,c="opencode"){let d=e.get(a);if(!d)return;let f="copilot"===c?i(b):g(b);if(0!==f.length){if(d.pollCount++,0===d.lines.length)d.lines=[...f];else{let a=j(d.lastFingerprint,f);if(a>0){let b=f.slice(a);d.lines.push(...b)}else d.lines.push(...f)}d.lastFingerprint=f.slice(-10)}}function m(a){let b=e.get(a);return b&&0!==b.lines.length?b.lines.join("\n"):""}function n(a){e.delete(a)}},16659:(a,b,c)=>{c.d(b,{Hz:()=>g,Jj:()=>h,Lz:()=>j,NF:()=>m,Ty:()=>f,bk:()=>i,c_:()=>l,sx:()=>k});var d=c(79748),e=c(33873);function f(a,b,c=0,d=null){return Math.max(null===b.timestampMs?a.startedAt:Math.max(a.startedAt,b.timestampMs+1),Math.min(c,null===d?1/0:d-1))}function g(a,b,c){let d=a[c+1];return d?b[c+1]?.timestampMs??d.startedAt:null}async function h(a){try{return(await (0,d.stat)(a)).isFile()}catch{return!1}}async function i(a,b,d){let[{getDbInstance:e},{findMessageByRequestId:f}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791))]),g=e();for(let c=b.length-1;c>=0;c-=1){let e=d(b[c]);if(f(g,a.worktreeId,e))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 j(a,b,d,e,f){try{let{getLastAgentEvent:e}=await Promise.resolve().then(c.bind(c,33294)),f=e(a.worktreeId,a.cliToolId,a.instanceId)?.sessionId;if("string"==typeof f&&f.length>0)return b.set(d,f),f}catch(b){e.debug(f,{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)})}return b.get(d)??null}function k(a,b,c){if(!c.endsWith(b)||c.includes("\0"))return null;let d=(0,e.resolve)(a),f=(0,e.resolve)(c);return f===d||f.startsWith(d+e.sep)?f:null}async function l(a,b,d,e,f,g){let h=a.instanceId??a.cliToolId,i=b.content.length;if(d.body.length<=i)return!1;let[{getDbInstance:j},{updateMessageContent:k},{broadcastMessage:l}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.resolve().then(c.bind(c,43015))]);return k(j(),b.id,d.body),l("message_updated",{worktreeId:a.worktreeId,message:{...b,content:d.body}}),f.info(g,{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,requestId:b.requestId,path:e,previousLength:i,bodyLength:d.body.length,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!0}async function m(a,b,d,e){if(0===b.length)return 0;let[{getDbInstance:f},{findMessageByRequestId:g}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791))]),h=f(),i=0;for(let c of b){if(!e.isWritable(c))continue;let b=g(h,a.worktreeId,e.requestIdOf(c));b&&await e.grow(a,b,e.render(c),d)&&(i+=1)}return i}},18201:(a,b,c)=>{c.d(b,{Ce:()=>g,pk:()=>e});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.resolve().then(c.bind(c,43015))]),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){var l,m,n;let o=Math.min(j-12e4,k.adoptionFromMs??1/0),p=(l=a.findUnkeyedUserMessages(b,{worktreeId:c.worktreeId,cliToolId:c.cliToolId,instanceId:g,fromMs:o,toMs:j+12e4,includeRelayDelivered:!0}),m=i,n=j,l.filter(a=>e(a.content)===m).sort((a,b)=>Math.abs(a.timestamp.getTime()-n)-Math.abs(b.timestamp.getTime()-n)));for(let e of p)if(!e.requestId&&a.setMessageRequestId(b,e.id,h))return d.info("user-turn-adopted",{...f(c),requestId:h,messageId:e.id,driftMs:e.timestamp.getTime()-j}),{outcome:"adopted",messageId:e.id,timestampMs:e.timestamp.getTime()};let q=p.find(a=>a.requestId);return q?(d.info("user-turn-already-relayed",{...f(c),requestId:h,messageId:q.id,relayRequestId:q.requestId??null,driftMs:q.timestamp.getTime()-j}),{outcome:"already-recorded",messageId:q.id,timestampMs:q.timestamp.getTime()}):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}}}},28918:(a,b,c)=>{c.r(b),c.d(b,{captureStructuredHistoryTurn:()=>a2,hasStructuredHistoryTranscript:()=>a3,isPullTranscriptHistory:()=>a_,isStructuredHistoryWriterLive:()=>a1,resetStructuredHistoryCaptureQueue:()=>aY});var d=c(72626),e=c(33198),f=c(32301),g=c(79696),h=c(36925),i=c(79748),j=c(21820),k=c(33873),l=c(24455);let m=(0,d.h)("lib/history/transcript-tail");async function n(a){let b;try{b=await (0,i.open)(a,"r");let{size:c}=await b.stat(),d=Math.max(0,c-4194304),e=c-d;if(e<=0)return"";let f=Buffer.alloc(e),{bytesRead:g}=await b.read(f,0,e,d),h=f.subarray(0,g).toString("utf8");if(0===d)return h;let j=h.indexOf("\n");return -1===j?"":h.slice(j+1)}catch(b){return m.warn("transcript-tail-read-failed",{path:a,error:b instanceof Error?b.message:String(b)}),null}finally{await b?.close().catch(()=>{})}}var o=c(18201),p=c(12462),q=c(86594),r=c(16659),s=c(57510),t=c(27128);let u=["sessions"],v=".jsonl";function w(a){return(0,t.Wv)(a,200)}let x=new Set(["ContextCompaction"]),y={CommandExecution:"exec",FileChange:"edit",McpToolCall:"mcp",ImageView:"view",Extension:"extension"};function z(a){return a.text?.trim()??""}let A=(0,d.h)("lib/hooks/sources/codex/history"),B=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,C=(0,h.v)("__codexTranscriptSessions",()=>new Map),D=(0,h.v)("__codexTranscriptPaths",()=>new Map);async function E(a){return(0,r.Lz)(a,C,(0,l.v7)(a.worktreeId,a.cliToolId,a.instanceId),A,"codex-transcript-session-lookup-failed")}function F(a=process.env){let b=a.CODEX_HOME;return"string"==typeof b&&b.length>0?b:(0,k.join)((0,j.homedir)(),".codex")}function G(a){return(0,k.join)(a,...u)}async function H(a,b,c=4){return B.test(b)?I(G(a),b,c):null}async function I(a,b,c){let d;if(c<=0)return null;try{d=await (0,i.readdir)(a,{withFileTypes:!0})}catch{return null}let e=[];for(let c of d){if(c.isFile()){var f;if(f=c.name,f.startsWith("rollout-")&&f.endsWith(`-${b}${v}`))return(0,k.join)(a,c.name);continue}c.isDirectory()&&e.push(c.name)}for(let d of(e.sort((a,b)=>a<b?1:a>b?-1:0),e)){let e=await I((0,k.join)(a,d),b,c-1);if(e)return e}return null}async function J(a,b={},c){let d=a.instanceId??a.cliToolId;try{let e=b.codexHome??F(),f=await E(a);if(!f)return A.debug("codex-transcript-unavailable",{worktreeId:a.worktreeId,instanceId:d,reason:"no-session-pointer"}),!1;let g=await M(e,f);if(!g)return A.debug("codex-transcript-unavailable",{worktreeId:a.worktreeId,instanceId:d,sessionId:f,reason:"no-file"}),!1;let h=await n(g);if(null===h)return!1;let i=function(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,s.Qd)(a))return null;let b=(0,s.O2)(a,"type");if(!b)return null;let c=(0,s.Qd)(a.payload)?a.payload:null,d=c?(0,s.O2)(c,"type"):null,e=(0,s.O2)(a,"timestamp"),f=e?Date.parse(e):NaN;return{type:b,payloadType:d,turnId:c?(0,s.O2)(c,"turn_id"):null,sessionId:c?(0,s.O2)(c,"session_id")??(0,s.O2)(c,"thread_id"):null,timestampMs:Number.isFinite(f)?f:null,item:c&&"item_completed"===d?function(a){var b,c;if(!(0,s.Qd)(a))return null;let d=(0,s.O2)(a,"type");return d?{type:d,id:(0,s.O2)(a,"id"),text:(b=d,c=a,"UserMessage"===b||"AgentMessage"===b?function(a){if(!Array.isArray(a))return null;let b="";for(let c of a){if(!(0,s.Qd)(c))continue;let a=(0,s.O2)(c,"text");a&&(b+=a)}return b.length>0?b:null}(c.content):"Reasoning"===b?function(a){if(!Array.isArray(a))return null;let b=a.filter(a=>"string"==typeof a&&""!==a);return b.length>0?b.join("\n\n"):null}(c.summary_text):null),phase:(0,s.O2)(a,"phase"),detail:function(a,b){if("CommandExecution"===a){let a=function(a){if(!Array.isArray(a))return null;let b=[];for(let c of a){if(!(0,s.Qd)(c))continue;let a=(0,s.O2)(c,"cmd");a&&b.push(a)}return b.length>0?b.join(" ; "):null}(b.parsed_cmd);if(a)return w((0,t.PB)(a));let c=function(a){if(!Array.isArray(a))return null;let b=a.filter(a=>"string"==typeof a);return b.length>0?b.join(" "):null}(b.command);return c?w((0,t.PB)(c)):null}if("FileChange"===a){let a=b.changes;if(!(0,s.Qd)(a))return null;let c=Object.keys(a);return c.length>0?w(c.join(", ")):null}if("McpToolCall"===a){let a=(0,s.O2)(b,"server"),c=(0,s.O2)(b,"tool");return a||c?w([a,c].filter(Boolean).join(".")):null}if("ImageView"===a){let a=(0,s.O2)(b,"path");return a?w(a):null}if("Extension"===a){let a=(0,s.O2)(b,"query")??(0,s.O2)(b,"action");return a?w((0,t.PB)(a)):null}return null}(d,a)}:null}(c.item):null}}(a);e?b.push(e):c+=1}return{records:b,malformedLines:c}}(h),j=function(a,b){let c=new Map,d=0,e=0,f=null;for(let g of a){if("session_meta"===g.type&&g.sessionId&&(f=g.sessionId),"response_item"===g.type){d+=1;continue}let a=g.turnId;if(!a){e+=1;continue}let h=c.get(a);if(h||(h={sessionId:g.sessionId??f??b,turnId:a,startedAt:g.timestampMs??0,prompts:[],items:[],started:!1,closed:!1,overflowed:!1},c.set(a,h)),"task_started"===g.payloadType){h.started=!0;continue}if("task_complete"===g.payloadType){h.closed=!0;continue}let i=g.item;if(i){if("UserMessage"===i.type){i.id&&i.text&&h.prompts.push({itemId:i.id,text:i.text,timestampMs:g.timestampMs??h.startedAt});continue}if(h.items.length>=2048){h.overflowed=!0;continue}h.items.push(i)}}return{turns:[...c.values()],duplicateStreamRecords:d,turnlessRecords:e}}(i.records,f);if(0===j.turns.length)return A.info("codex-transcript-no-turn",{worktreeId:a.worktreeId,instanceId:d,path:g,records:i.records.length,malformedLines:i.malformedLines,duplicateStreamRecords:j.duplicateStreamRecords}),!1;i.malformedLines>0&&A.info("codex-transcript-partial-read",{worktreeId:a.worktreeId,instanceId:d,path:g,malformedLines:i.malformedLines,turnlessRecords:j.turnlessRecords,duplicateStreamRecords:j.duplicateStreamRecords});let k=await L(a,j.turns);if(0===k.turns.length)return A.debug("codex-transcript-turns-already-saved",{worktreeId:a.worktreeId,instanceId:d,turnsInWindow:j.turns.length}),await (0,p.fT)(a),!0;k.turns.length>1&&A.info("codex-transcript-backfilling-turns",{worktreeId:a.worktreeId,instanceId:d,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 N(a,k.turns[b],c))}let m={path:g,firstRecordAt:function(a){for(let b of a)if(null!==b.timestampMs)return b.timestampMs;return null}(i.records),turnlessRecords:j.turnlessRecords,malformedLines:i.malformedLines},o=function(a){let b=new Map;for(let c of a){if("response_item"===c.type)continue;let a=c.turnId;a&&null!==c.timestampMs&&c.timestampMs>(b.get(a)??0)&&b.set(a,c.timestampMs)}return b}(i.records),q=!1;for(let b=0;b<k.turns.length;b+=1){let d=k.turns[b];q=await O(a,d,function(a){let b=[],c=new Set,d=0,e=0,f=a.items.some(a=>"AgentMessage"===a.type&&"final_answer"===a.phase&&z(a).length>0);for(let g of a.items){if("AgentMessage"===g.type){let a=z(g);if(0===a.length)continue;let c=f&&"commentary"===g.phase;b.push({kind:c?"reasoning":"prose",text:a}),d+=1;continue}if("Reasoning"===g.type){let a=g.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=8918,exports.ids=[8918],exports.modules={12462:(a,b,c)=>{c.d(b,{fT:()=>l,o4:()=>m});var d=c(31990),e=c(56791),f=c(43015),g=c(82450),h=c(15194),i=c(61789);let j=(0,c(72626).h)("assistant-response-saver");function k(a){let b=a.split("\n"),c=b.length;for(;c>0&&""===b[c-1].trim();)c--;return c}async function l(a){let{worktreeId:b,cliToolId:f}=a,g=a.instanceId??f;try{if((0,h.VA)(f))return null;let i=await (0,d.Wh)(b,f,1e4,a.instanceId);if(!i)return null;let l=k(i),{getDbInstance:m}=await Promise.resolve().then(c.bind(c,88807)),n=m(),o=(0,e.getSessionState)(n,b,g)?.lastCapturedLine||0;if(l<=o)return null;return(0,e.updateSessionState)(n,b,f,l,a.instanceId),j.info("transcript:cursor-advanced",{worktreeId:b,instanceId:g,from:o,to:l}),l}catch(a){return j.debug("transcript:cursor-advance-failed",{worktreeId:b,instanceId:g,error:a instanceof Error?a.message:String(a)}),null}}async function m(a,b,c,l,m){let n=m??c;try{let o;if((0,h.VA)(c))return null;let p=(0,e.getSessionState)(a,b,n),q=p?.lastCapturedLine||0;try{o=await (0,d.Wh)(b,c,1e4,m)}catch{return j.info("failed-to-capture"),null}if(!o)return null;let r=o.split("\n"),s=k(o),{bufferReset:t,reason:u}=s>0&&q>25&&s+25<q?{bufferReset:!0,reason:"shrink"}:s>0&&q>50&&s<50?{bufferReset:!0,reason:"restart"}:{bufferReset:!1,reason:null};t&&j.info("buffer:reset-detected",{reason:u,currentLineCount:s,lastCapturedLine:q});let v=t?0:q;if(!t&&s<=q)return s<q&&((0,e.updateSessionState)(a,b,c,s,m),j.info("position:corrected-stale",{from:q,to:s})),null;let w=r.slice(v).join("\n"),x=r.length>=1e4,y="codex"===c&&function(a,b){let c=(0,i.Zu)(a);return c>=0&&b>=c}(r,v)?"":function(a,b,c){switch(b){case"claude":return(0,g.NN)(a);case"gemini":return(0,g.IS)(a);case"opencode":return(0,g.aW)(a);case"copilot":return(0,g.LH)(a);case"codex":case"command-code":case"antigravity":case"vibe-local":return(0,g.Te)(a,b,c);default:return a.trim()}}(w,c,x?void 0:r);if(!y||""===y.trim())return(0,e.updateSessionState)(a,b,c,s,m),j.debug("response:empty-after-clean",{currentLineCount:s}),null;let z=new Date(l.getTime()-1),A=(0,e.createMessage)(a,{worktreeId:b,role:"assistant",content:y,messageType:"normal",timestamp:z,cliToolId:c,instanceId:n});return(0,e.updateSessionState)(a,b,c,s,m),(0,f.broadcastMessage)("message",{worktreeId:b,message:A}),j.info("response:saved",{fromLine:q,toLine:s}),A}catch(a){return j.error("error:",{error:a instanceof Error?a.message:String(a)}),null}}},13033:(a,b,c)=>{c.d(b,{IW:()=>h,IZ:()=>l,K0:()=>g,Uz:()=>m,l1:()=>f,o0:()=>i,q1:()=>n,tb:()=>k,vQ:()=>j});var d=c(61789);let e=(0,c(36925).v)("__tuiResponseAccumulator",()=>new Map);function f(a){return(0,d._A)((0,d.aJ)(a)).replace(/^\u2503\s?/,"").replace(/\s*\u2503$/,"").trim()}function g(a){let b=a.split("\n"),c=[];for(let a of b){let b=f(a);!(!b||d.sx.some(a=>a.test(b)))&&(d.Md.test(b)||c.push(b))}return c}function h(a){return a.replace(/[\u2500-\u257F]/g,"").replace(/\s{2,}/g," ").trim()}function i(a){let b=(0,d.aJ)(a).split("\n");if((0,d.gT)(b))return[];let c=(0,d.wv)(b),e=c>=0?b.slice(0,c):b,f=[],g=!1;for(let a of e){if(d.JN.test(a)){g=!1;continue}if(d.y.test(a))g=!0;else if(g){if(d.Fg.test(a))continue;g=!1}let b=h(a);b&&(d.J7.some(a=>a.test(b))||f.push(b))}return f}function j(a,b){if(0===a.length||0===b.length)return 0;let c=Math.min(a.length,b.length);for(let d=c;d>=1;d--){let c=a.slice(-d),e=b.slice(0,d),f=!0;for(let a=0;a<d;a++)if(c[a]!==e[a]){f=!1;break}if(f)return d}return 0}function k(a){e.set(a,{lines:[],lastFingerprint:[],pollCount:0})}function l(a,b,c="opencode"){let d=e.get(a);if(!d)return;let f="copilot"===c?i(b):g(b);if(0!==f.length){if(d.pollCount++,0===d.lines.length)d.lines=[...f];else{let a=j(d.lastFingerprint,f);if(a>0){let b=f.slice(a);d.lines.push(...b)}else d.lines.push(...f)}d.lastFingerprint=f.slice(-10)}}function m(a){let b=e.get(a);return b&&0!==b.lines.length?b.lines.join("\n"):""}function n(a){e.delete(a)}},18201:(a,b,c)=>{c.d(b,{Ce:()=>g,pk:()=>e});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.resolve().then(c.bind(c,43015))]),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){var l,m,n;let o=Math.min(j-12e4,k.adoptionFromMs??1/0),p=(l=a.findUnkeyedUserMessages(b,{worktreeId:c.worktreeId,cliToolId:c.cliToolId,instanceId:g,fromMs:o,toMs:j+12e4,includeRelayDelivered:!0}),m=i,n=j,l.filter(a=>e(a.content)===m).sort((a,b)=>Math.abs(a.timestamp.getTime()-n)-Math.abs(b.timestamp.getTime()-n)));for(let e of p)if(!e.requestId&&a.setMessageRequestId(b,e.id,h))return d.info("user-turn-adopted",{...f(c),requestId:h,messageId:e.id,driftMs:e.timestamp.getTime()-j}),{outcome:"adopted",messageId:e.id,timestampMs:e.timestamp.getTime()};let q=p.find(a=>a.requestId);return q?(d.info("user-turn-already-relayed",{...f(c),requestId:h,messageId:q.id,relayRequestId:q.requestId??null,driftMs:q.timestamp.getTime()-j}),{outcome:"already-recorded",messageId:q.id,timestampMs:q.timestamp.getTime()}):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}}}},28918:(a,b,c)=>{c.r(b),c.d(b,{captureStructuredHistoryTurn:()=>a2,hasStructuredHistoryTranscript:()=>a3,isPullTranscriptHistory:()=>a_,isStructuredHistoryWriterLive:()=>a1,resetStructuredHistoryCaptureQueue:()=>aY});var d=c(72626),e=c(33198),f=c(32301),g=c(71133),h=c(36925),i=c(79748),j=c(21820),k=c(33873),l=c(24455);let m=(0,d.h)("lib/history/transcript-tail");async function n(a){let b;try{b=await (0,i.open)(a,"r");let{size:c}=await b.stat(),d=Math.max(0,c-4194304),e=c-d;if(e<=0)return"";let f=Buffer.alloc(e),{bytesRead:g}=await b.read(f,0,e,d),h=f.subarray(0,g).toString("utf8");if(0===d)return h;let j=h.indexOf("\n");return -1===j?"":h.slice(j+1)}catch(b){return m.warn("transcript-tail-read-failed",{path:a,error:b instanceof Error?b.message:String(b)}),null}finally{await b?.close().catch(()=>{})}}var o=c(18201),p=c(12462),q=c(86594),r=c(16659),s=c(57510),t=c(27128);let u=["sessions"],v=".jsonl";function w(a){return(0,t.Wv)(a,200)}let x=new Set(["ContextCompaction"]),y={CommandExecution:"exec",FileChange:"edit",McpToolCall:"mcp",ImageView:"view",Extension:"extension"};function z(a){return a.text?.trim()??""}let A=(0,d.h)("lib/hooks/sources/codex/history"),B=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,C=(0,h.v)("__codexTranscriptSessions",()=>new Map),D=(0,h.v)("__codexTranscriptPaths",()=>new Map);async function E(a){return(0,r.Lz)(a,C,(0,l.v7)(a.worktreeId,a.cliToolId,a.instanceId),A,"codex-transcript-session-lookup-failed")}function F(a=process.env){let b=a.CODEX_HOME;return"string"==typeof b&&b.length>0?b:(0,k.join)((0,j.homedir)(),".codex")}function G(a){return(0,k.join)(a,...u)}async function H(a,b,c=4){return B.test(b)?I(G(a),b,c):null}async function I(a,b,c){let d;if(c<=0)return null;try{d=await (0,i.readdir)(a,{withFileTypes:!0})}catch{return null}let e=[];for(let c of d){if(c.isFile()){var f;if(f=c.name,f.startsWith("rollout-")&&f.endsWith(`-${b}${v}`))return(0,k.join)(a,c.name);continue}c.isDirectory()&&e.push(c.name)}for(let d of(e.sort((a,b)=>a<b?1:a>b?-1:0),e)){let e=await I((0,k.join)(a,d),b,c-1);if(e)return e}return null}async function J(a,b={},c){let d=a.instanceId??a.cliToolId;try{let e=b.codexHome??F(),f=await E(a);if(!f)return A.debug("codex-transcript-unavailable",{worktreeId:a.worktreeId,instanceId:d,reason:"no-session-pointer"}),!1;let g=await M(e,f);if(!g)return A.debug("codex-transcript-unavailable",{worktreeId:a.worktreeId,instanceId:d,sessionId:f,reason:"no-file"}),!1;let h=await n(g);if(null===h)return!1;let i=function(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,s.Qd)(a))return null;let b=(0,s.O2)(a,"type");if(!b)return null;let c=(0,s.Qd)(a.payload)?a.payload:null,d=c?(0,s.O2)(c,"type"):null,e=(0,s.O2)(a,"timestamp"),f=e?Date.parse(e):NaN;return{type:b,payloadType:d,turnId:c?(0,s.O2)(c,"turn_id"):null,sessionId:c?(0,s.O2)(c,"session_id")??(0,s.O2)(c,"thread_id"):null,timestampMs:Number.isFinite(f)?f:null,item:c&&"item_completed"===d?function(a){var b,c;if(!(0,s.Qd)(a))return null;let d=(0,s.O2)(a,"type");return d?{type:d,id:(0,s.O2)(a,"id"),text:(b=d,c=a,"UserMessage"===b||"AgentMessage"===b?function(a){if(!Array.isArray(a))return null;let b="";for(let c of a){if(!(0,s.Qd)(c))continue;let a=(0,s.O2)(c,"text");a&&(b+=a)}return b.length>0?b:null}(c.content):"Reasoning"===b?function(a){if(!Array.isArray(a))return null;let b=a.filter(a=>"string"==typeof a&&""!==a);return b.length>0?b.join("\n\n"):null}(c.summary_text):null),phase:(0,s.O2)(a,"phase"),detail:function(a,b){if("CommandExecution"===a){let a=function(a){if(!Array.isArray(a))return null;let b=[];for(let c of a){if(!(0,s.Qd)(c))continue;let a=(0,s.O2)(c,"cmd");a&&b.push(a)}return b.length>0?b.join(" ; "):null}(b.parsed_cmd);if(a)return w((0,t.PB)(a));let c=function(a){if(!Array.isArray(a))return null;let b=a.filter(a=>"string"==typeof a);return b.length>0?b.join(" "):null}(b.command);return c?w((0,t.PB)(c)):null}if("FileChange"===a){let a=b.changes;if(!(0,s.Qd)(a))return null;let c=Object.keys(a);return c.length>0?w(c.join(", ")):null}if("McpToolCall"===a){let a=(0,s.O2)(b,"server"),c=(0,s.O2)(b,"tool");return a||c?w([a,c].filter(Boolean).join(".")):null}if("ImageView"===a){let a=(0,s.O2)(b,"path");return a?w(a):null}if("Extension"===a){let a=(0,s.O2)(b,"query")??(0,s.O2)(b,"action");return a?w((0,t.PB)(a)):null}return null}(d,a)}:null}(c.item):null}}(a);e?b.push(e):c+=1}return{records:b,malformedLines:c}}(h),j=function(a,b){let c=new Map,d=0,e=0,f=null;for(let g of a){if("session_meta"===g.type&&g.sessionId&&(f=g.sessionId),"response_item"===g.type){d+=1;continue}let a=g.turnId;if(!a){e+=1;continue}let h=c.get(a);if(h||(h={sessionId:g.sessionId??f??b,turnId:a,startedAt:g.timestampMs??0,prompts:[],items:[],started:!1,closed:!1,overflowed:!1},c.set(a,h)),"task_started"===g.payloadType){h.started=!0;continue}if("task_complete"===g.payloadType){h.closed=!0;continue}let i=g.item;if(i){if("UserMessage"===i.type){i.id&&i.text&&h.prompts.push({itemId:i.id,text:i.text,timestampMs:g.timestampMs??h.startedAt});continue}if(h.items.length>=2048){h.overflowed=!0;continue}h.items.push(i)}}return{turns:[...c.values()],duplicateStreamRecords:d,turnlessRecords:e}}(i.records,f);if(0===j.turns.length)return A.info("codex-transcript-no-turn",{worktreeId:a.worktreeId,instanceId:d,path:g,records:i.records.length,malformedLines:i.malformedLines,duplicateStreamRecords:j.duplicateStreamRecords}),!1;i.malformedLines>0&&A.info("codex-transcript-partial-read",{worktreeId:a.worktreeId,instanceId:d,path:g,malformedLines:i.malformedLines,turnlessRecords:j.turnlessRecords,duplicateStreamRecords:j.duplicateStreamRecords});let k=await L(a,j.turns);if(0===k.turns.length)return A.debug("codex-transcript-turns-already-saved",{worktreeId:a.worktreeId,instanceId:d,turnsInWindow:j.turns.length}),await (0,p.fT)(a),!0;k.turns.length>1&&A.info("codex-transcript-backfilling-turns",{worktreeId:a.worktreeId,instanceId:d,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 N(a,k.turns[b],c))}let m={path:g,firstRecordAt:function(a){for(let b of a)if(null!==b.timestampMs)return b.timestampMs;return null}(i.records),turnlessRecords:j.turnlessRecords,malformedLines:i.malformedLines},o=function(a){let b=new Map;for(let c of a){if("response_item"===c.type)continue;let a=c.turnId;a&&null!==c.timestampMs&&c.timestampMs>(b.get(a)??0)&&b.set(a,c.timestampMs)}return b}(i.records),q=!1;for(let b=0;b<k.turns.length;b+=1){let d=k.turns[b];q=await O(a,d,function(a){let b=[],c=new Set,d=0,e=0,f=a.items.some(a=>"AgentMessage"===a.type&&"final_answer"===a.phase&&z(a).length>0);for(let g of a.items){if("AgentMessage"===g.type){let a=z(g);if(0===a.length)continue;let c=f&&"commentary"===g.phase;b.push({kind:c?"reasoning":"prose",text:a}),d+=1;continue}if("Reasoning"===g.type){let a=g.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
3
  ${b}`}(a)});continue}if(g.type in y){b.push({kind:"tool",text:function(a){let b=y[a.type]??a.type;return a.detail?`- \`${b}\` — ${a.detail}`:`- \`${b}\``}(g)}),e+=1;continue}x.has(g.type)||c.add(g.type)}let g=(0,t.t3)(b).body;return!a.started&&g.length>0&&(g="_(head truncated)_\n\n"+g),g=(0,t.mg)(g,2e5,"\n\n_(truncated)_"),{sessionId:a.sessionId,turnId:a.turnId,body:g,headless:!a.started,textBlocks:d,toolBlocks:e,unknownBlockTypes:[...c]}}(d),(0,r.Ty)(d,l[b],o.get(d.turnId)??0,(0,r.Hz)(k.turns,l,b)),m,c)}return q&&await (0,p.fT)(a),q}catch(b){return A.error("codex-transcript-capture-failed",{worktreeId:a.worktreeId,instanceId:d,error:b instanceof Error?b.message:String(b)}),!1}}async function K(a,b={}){try{let c=await E(a);if(!c)return null;return await M(b.codexHome??F(),c)}catch{return null}}async function L(a,b){return(0,r.bk)(a,b,a=>(0,q.ZS)(a.turnId))}async function M(a,b){let c=`${a}\0${b}`,d=D.get(c);if(d&&await (0,r.Jj)(d))return d;d&&D.delete(c);let e=await H(a,b);if(!e)return null;let f=(0,r.sx)(G(a),v,e);return f?(D.set(c,f),f):null}async function N(a,b,c=0){let d=a.instanceId??a.cliToolId,e={outcome:"skipped",messageId:null,timestampMs:null},f=c>0?{adoptionFromMs:c}:{};for(let c of b.prompts){let g=await (0,o.Ce)(a,(0,q.Ac)(c.itemId),c.text,c.timestampMs,f);if("failed"===g.outcome){A.warn("codex-transcript-user-turn-failed",{worktreeId:a.worktreeId,instanceId:d,sessionId:b.sessionId,turnId:b.turnId,promptItemId:c.itemId});continue}e=g}return e}async function O(a,b,d,e,f,g){let h=a.instanceId??a.cliToolId;if(g&&(g.outcome=void 0),!b.closed)return g&&(g.outcome="not_yet_closed"),A.info("codex-transcript-turn-open",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,turnId:d.turnId,items:b.items.length}),!1;if(0===d.body.length)return A.info("codex-transcript-turn-empty",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,turnId:d.turnId}),!1;d.unknownBlockTypes.length>0&&A.info("codex-transcript-unknown-items",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,turnId:d.turnId,itemTypes:d.unknownBlockTypes}),b.overflowed&&A.info("codex-transcript-turn-overflowed",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,turnId:d.turnId});let i=(0,q.ZS)(d.turnId),[{getDbInstance:j},{createMessage:k,findMessageByRequestId:l},{broadcastMessage:m}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.resolve().then(c.bind(c,43015))]),n=j();if(l(n,a.worktreeId,i))return A.debug("codex-transcript-turn-already-saved",{worktreeId:a.worktreeId,instanceId:h,requestId:i}),!0;d.headless&&A.info("codex-transcript-turn-headless",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,turnId:d.turnId,path:f.path,windowBytes:4194304,windowFirstRecordAt:f.firstRecordAt,turnlessRecords:f.turnlessRecords,malformedLines:f.malformedLines,promptsInWindow:b.prompts.length,itemsInWindow:b.items.length});let o=k(n,{worktreeId:a.worktreeId,role:"assistant",content:d.body,messageType:"normal",timestamp:new Date(e>0?e:Date.now()),cliToolId:a.cliToolId,instanceId:h,requestId:i});return m("message",{worktreeId:a.worktreeId,message:o}),A.info("codex-transcript-turn-saved",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,requestId:i,path:f.path,bodyLength:d.body.length,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks,prompts:b.prompts.length}),!0}let P=[".system_generated","logs","transcript_full.jsonl"],Q="MODEL",R="PLANNER_RESPONSE",S=new Set(["RUN_COMMAND","VIEW_FILE","LIST_DIRECTORY","GREP_SEARCH","SEARCH_WEB","CODE_ACTION","GENERATE_IMAGE","GENERIC"]),T=new Set(["CHECKPOINT","CONVERSATION_HISTORY","SYSTEM_MESSAGE","EPHEMERAL_MESSAGE","ERROR_MESSAGE"]);function U(a){return a.closed||a.superseded}function V(a){let b=[],c=new Set,d=0,e=0;for(let f of a.records){if(f.source===Q&&f.type===R){let a=f.thinking?.trim()??"";a.length>0&&b.push({kind:"aside",text:function(a){let b=a.trim().split("\n").map(a=>a.length>0?`> ${a}`:">").join("\n");return`> **Thinking**
4
4
  >
5
5
  ${b}`}(a)});let c=f.content?.trim()??"";for(let a of(c.length>0&&(b.push({kind:"prose",text:c}),d+=1),f.toolCalls))b.push({kind:"tool",text:a.detail?`- \`${a.name}\` — ${a.detail}`:`- \`${a.name}\``}),e+=1;continue}if(f.source===Q){S.has(f.type)||c.add(f.type);continue}T.has(f.type)||c.add(f.type)}let f=(0,t.t3)(b).body;return f=(0,t.mg)(f,2e5,"\n\n_(truncated)_"),{conversationId:a.conversationId,stepIndex:a.stepIndex,body:f,textBlocks:d,toolBlocks:e,unknownRecordTypes:[...c]}}function W(a){let b=0;for(let c of a.records)null!==c.timestampMs&&c.timestampMs>b&&(b=c.timestampMs);return b}function X(a,b){let c=W(a),d={confirmed:!1,lastRecordAt:c,stopAt:b};return U(a)?c<=0?{...d,reason:"no-timestamped-record"}:null===b?{...d,reason:"no-stop-event"}:b<Math.max(c,a.startedAt)?{...d,reason:"stop-before-last-record"}:{confirmed:!0,reason:"stop-after-last-record",lastRecordAt:c,stopAt:b}:{...d,reason:"turn-open"}}let Y=(0,d.h)("lib/hooks/sources/antigravity/history"),Z=[".gemini","antigravity-cli"],$=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,_=(0,h.v)("__antigravityTranscriptConversations",()=>new Map),aa=(0,h.v)("__antigravityUnsettledTurns",()=>new Map);function ab(a){return(0,l.v7)(a.worktreeId,a.cliToolId,a.instanceId)}function ac(a,b,c,d){let e=aa.get(a);if(e&&e.conversationId!==b&&aa.delete(a),d){let b=aa.get(a);return b&&(b.steps=b.steps.filter(a=>a!==c),0===b.steps.length&&aa.delete(a)),null}let f=aa.get(a)??{conversationId:b,steps:[]};return(aa.set(a,f),f.steps.includes(c)||(f.steps.push(c),f.steps.length<=16))?null:f.steps.shift()??null}async function ad(a){try{let b=(await Promise.resolve().then(c.bind(c,33294))).getLastStopEventAt;if("function"!=typeof b)return null;return b(a.worktreeId,a.cliToolId,a.instanceId)??null}catch(b){return Y.debug("antigravity-transcript-stop-lookup-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)}),null}}async function ae(a){return(0,r.Lz)(a,_,ab(a),Y,"antigravity-transcript-conversation-lookup-failed")}function af(a=(0,j.homedir)()){return(0,k.join)(a,...Z)}function ag(a){return(0,k.join)(a,"brain")}async function ah(a,b={},c){let d=a.instanceId??a.cliToolId;try{let e=b.antigravityHome??af(),f=await ae(a);if(!f)return Y.debug("antigravity-transcript-unavailable",{worktreeId:a.worktreeId,instanceId:d,reason:"no-conversation-pointer"}),!1;let g=await ak(e,f);if(!g)return Y.debug("antigravity-transcript-unavailable",{worktreeId:a.worktreeId,instanceId:d,conversationId:f,reason:"no-file"}),!1;let h=await n(g);if(null===h)return!1;let i=function(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,s.Qd)(a))return null;let b=a.step_index;if("number"!=typeof b||!Number.isInteger(b)||b<0)return null;let c=(0,s.O2)(a,"source"),d=(0,s.O2)(a,"type");if(!c||!d)return null;let e=(0,s.O2)(a,"created_at"),f=e?Date.parse(e):NaN,g=[];if(Array.isArray(a.tool_calls))for(let b of a.tool_calls){let a=function(a){var b;if(!(0,s.Qd)(a))return null;let c=(0,s.O2)(a,"name");if(!c)return null;let d=(0,s.Qd)(a.args)?a.args:null,e=d?(0,s.O2)(d,"toolAction")??(0,s.O2)(d,"toolSummary"):null;return{name:c,detail:e?(b=(0,t.PB)(e),(0,t.Wv)(b,200)):null}}(b);a&&g.push(a)}return{stepIndex:b,source:c,type:d,status:(0,s.O2)(a,"status"),timestampMs:Number.isFinite(f)?f:null,content:(0,s.O2)(a,"content"),thinking:(0,s.O2)(a,"thinking"),toolCalls:g}}(a);e?b.push(e):c+=1}return{records:b,malformedLines:c}}(h),j=function(a,b){let c=[],d=0;for(let g of a){var e,f;if(e=g,"USER_EXPLICIT"===e.source&&"USER_INPUT"===e.type){let a=g.content?function(a){let b=a.indexOf("<USER_REQUEST>");if(-1===b)return null;let c=b+14,d=a.indexOf("</USER_REQUEST>",c);if(-1===d)return null;let e=a.slice(c,d).trim();return e.length>0?e:null}(g.content):null,d=g.timestampMs??0;c.push({conversationId:b,stepIndex:g.stepIndex,startedAt:d,prompt:a?{stepIndex:g.stepIndex,text:a,timestampMs:g.timestampMs??d}:null,records:[],closed:!1,superseded:!1,overflowed:!1});continue}let a=c.at(-1);if(!a){d+=1;continue}if(g.source===Q&&(a.closed=(f=g).source===Q&&f.type===R&&!(f.toolCalls.length>0)&&(f.content??"").trim().length>0),a.records.length>=2048){a.overflowed=!0;continue}a.records.push(g)}for(let a=0;a<c.length-1;a+=1)c[a].superseded=!0;return{turns:c,preludeRecords:d}}(i.records,f);if(0===j.turns.length)return Y.info("antigravity-transcript-no-turn",{worktreeId:a.worktreeId,instanceId:d,path:g,records:i.records.length,malformedLines:i.malformedLines,preludeRecords:j.preludeRecords}),!1;i.malformedLines>0&&Y.info("antigravity-transcript-partial-read",{worktreeId:a.worktreeId,instanceId:d,path:g,malformedLines:i.malformedLines,preludeRecords:j.preludeRecords});let k=ab(a),l=await ad(a),m=new Map;for(let a of j.turns)m.set(a.stepIndex,X(a,l));let o=j.turns[j.turns.length-1],q=m.get(o.stepIndex)??X(o,l),u=function(a,b,c){let d=aa.get(a);if(!d||d.conversationId!==b)return[];let e=d.steps.filter(a=>!c.has(a));return 0===e.length?[]:(d.steps=d.steps.filter(a=>c.has(a)),0===d.steps.length&&aa.delete(a),e)}(k,f,new Set(j.turns.map(a=>a.stepIndex)));u.length>0&&Y.info("antigravity-transcript-unsettled-out-of-window",{worktreeId:a.worktreeId,instanceId:d,conversationId:f,steps:u,turnsInWindow:j.turns.length});let v=await aj(a,j.turns),w=j.turns.slice(0,j.turns.length-v.turns.length);if(await an(a,function(a,b){let c=a.slice(-3);if(0===b.length)return c;let d=new Set(c.map(a=>a.stepIndex)),e=new Set(b),f=a.filter(a=>e.has(a.stepIndex)&&!d.has(a.stepIndex));return 0===f.length?c:[...f,...c]}(w,function(a,b){let c=aa.get(a);return c?c.conversationId!==b?(aa.delete(a),[]):c.steps:[]}(k,f)),g,{instanceKey:k,conversationId:f,completions:m}),0===v.turns.length)return Y.debug("antigravity-transcript-turns-already-saved",{worktreeId:a.worktreeId,instanceId:d,turnsInWindow:j.turns.length}),await (0,p.fT)(a),ap(c,o,q),!0;v.turns.length>1&&Y.info("antigravity-transcript-backfilling-turns",{worktreeId:a.worktreeId,instanceId:d,path:g,pendingTurns:v.turns.length,turnsInWindow:j.turns.length,anchored:v.anchored});let x=[];for(let b=0;b<v.turns.length;b+=1){let c=0===b?v.previousStartedAt:v.turns[b-1].startedAt;x.push(await al(a,v.turns[b],c))}let y=!1;for(let b=0;b<v.turns.length;b+=1){let d=v.turns[b];(y=await aq(a,d,V(d),(0,r.Ty)(d,x[b],W(d),(0,r.Hz)(v.turns,x,b)),g,c))&&ao(a,k,d,m.get(d.stepIndex)??X(d,l))}return y&&(await (0,p.fT)(a),ap(c,o,q)),y}catch(b){return Y.error("antigravity-transcript-capture-failed",{worktreeId:a.worktreeId,instanceId:d,error:b instanceof Error?b.message:String(b)}),!1}}async function ai(a,b={}){try{let c=await ae(a);if(!c)return null;return await ak(b.antigravityHome??af(),c)}catch{return null}}async function aj(a,b){return(0,r.bk)(a,b,a=>(0,q.O1)(a.conversationId,a.stepIndex))}async function ak(a,b){let c=$.test(b)?(0,k.join)(ag(a),b,...P):null;if(!c)return null;let d=(0,r.sx)(ag(a),".jsonl",c);return d&&await (0,r.Jj)(d)?d:null}async function al(a,b,c=0){let d={outcome:"skipped",messageId:null,timestampMs:null},e=b.prompt;if(!e)return d;let f=await (0,o.Ce)(a,(0,q.jN)(b.conversationId,e.stepIndex),e.text,e.timestampMs,c>0?{adoptionFromMs:c}:{});return"failed"===f.outcome?(Y.warn("antigravity-transcript-user-turn-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,conversationId:b.conversationId,stepIndex:e.stepIndex}),d):f}async function am(a,b,d,e){let f=a.instanceId??a.cliToolId,g=b.content;if("string"!=typeof g)return!1;let h=g.length;if(d.body.length<=h)return!1;let[{getDbInstance:i},{updateMessageContent:j},{broadcastMessage:k}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.resolve().then(c.bind(c,43015))]);return j(i(),b.id,d.body),k("message_updated",{worktreeId:a.worktreeId,message:{...b,content:d.body}}),Y.info("antigravity-transcript-turn-updated",{worktreeId:a.worktreeId,instanceId:f,conversationId:d.conversationId,stepIndex:d.stepIndex,requestId:b.requestId,path:e,previousLength:h,bodyLength:d.body.length,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!0}async function an(a,b,d,e){if(0===b.length)return 0;let[{getDbInstance:f},{findMessageByRequestId:g}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791))]),h=f(),i=0;for(let c of b){let b=g(h,a.worktreeId,(0,q.O1)(c.conversationId,c.stepIndex));if(!b){ac(e.instanceKey,e.conversationId,c.stepIndex,!0);continue}ao(a,e.instanceKey,c,e.completions.get(c.stepIndex)??X(c,null)),U(c)&&await am(a,b,V(c),d)&&(i+=1)}return i}function ao(a,b,c,d){let e=ac(b,c.conversationId,c.stepIndex,d.confirmed);null!==e&&Y.info("antigravity-transcript-unsettled-evicted",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,conversationId:c.conversationId,step:e,limit:16})}function ap(a,b,c){a&&(a.completion=c.confirmed?"settled":"provisional",a.completionKey=c.confirmed?`${(0,q.O1)(b.conversationId,b.stepIndex)}@${c.lastRecordAt}`:void 0,a.completionReason=c.reason)}async function aq(a,b,d,e,f,g){let h=a.instanceId??a.cliToolId;if(g&&(g.outcome=void 0),!U(b))return g&&(g.outcome="not_yet_closed"),Y.info("antigravity-transcript-turn-open",{worktreeId:a.worktreeId,instanceId:h,conversationId:d.conversationId,stepIndex:d.stepIndex,records:b.records.length,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!1;if(0===d.body.length)return Y.info("antigravity-transcript-turn-empty",{worktreeId:a.worktreeId,instanceId:h,conversationId:d.conversationId,stepIndex:d.stepIndex,records:b.records.length}),!1;d.unknownRecordTypes.length>0&&Y.info("antigravity-transcript-unknown-records",{worktreeId:a.worktreeId,instanceId:h,conversationId:d.conversationId,stepIndex:d.stepIndex,recordTypes:d.unknownRecordTypes}),b.overflowed&&Y.info("antigravity-transcript-turn-overflowed",{worktreeId:a.worktreeId,instanceId:h,conversationId:d.conversationId,stepIndex:d.stepIndex});let i=(0,q.O1)(d.conversationId,d.stepIndex),[{getDbInstance:j},{createMessage:k,findMessageByRequestId:l},{broadcastMessage:m}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.resolve().then(c.bind(c,43015))]),n=j(),o=l(n,a.worktreeId,i);if(o)return Y.debug("antigravity-transcript-turn-already-saved",{worktreeId:a.worktreeId,instanceId:h,requestId:i}),await am(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:h,requestId:i});return m("message",{worktreeId:a.worktreeId,message:p}),Y.info("antigravity-transcript-turn-saved",{worktreeId:a.worktreeId,instanceId:h,conversationId:d.conversationId,requestId:i,path:f,bodyLength:d.body.length,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!0}let ar=[".commandcode","projects"],as=".jsonl",at="message",au=["command","file_path","path","pattern","query","url","description"];function av(a){return!(a.type!==at||"user"!==a.role||a.isMeta||!a.id||a.blocks.some(a=>"tool_result"===a.type))&&a.text.trim().length>0}function aw(a){return a.closed||a.superseded}let ax=new Set(["tool_result"]);function ay(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**
6
6
  >
7
- ${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}ax.has(f.type)||c.add(f.type)}let f=(0,t.t3)(b).body;return f=(0,t.mg)(f,2e5,"\n\n_(truncated)_"),{sessionId:a.sessionId,promptId:a.promptId,body:f,textBlocks:d,toolBlocks:e,unknownBlockTypes:[...c]}}let az=(0,d.h)("lib/hooks/sources/command-code/history"),aA=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,aB=(0,h.v)("__commandCodeTranscriptSessions",()=>new Map),aC=(0,h.v)("__commandCodeTranscriptPaths",()=>new Map);async function aD(a){return(0,r.Lz)(a,aB,(0,l.v7)(a.worktreeId,a.cliToolId,a.instanceId),az,"command-code-transcript-session-lookup-failed")}function aE(a){return(0,k.join)(a,...ar)}async function aF(a,b){let c;if(!aA.test(b))return null;let d=aE(a);try{c=await (0,i.readdir)(d,{withFileTypes:!0})}catch{return null}let e=[];for(let a of c){if(!a.isDirectory())continue;let b=0;try{b=(await (0,i.stat)((0,k.join)(d,a.name))).mtimeMs}catch{}e.push({name:a.name,modifiedAt:b})}e.sort((a,b)=>b.modifiedAt-a.modifiedAt);let f=`${b}${as}`;for(let a of e){let b=(0,k.join)(d,a.name,f);if(await (0,r.Jj)(b))return b}return null}async function aG(a,b,c){let d=a.instanceId??a.cliToolId;try{let e=b.commandCodeHome??(0,j.homedir)(),f=await aD(a),g=await aJ(e,b,f);if(!g)return az.debug("command-code-transcript-unavailable",{worktreeId:a.worktreeId,instanceId:d,sessionId:f,reason:f?"no-file":"no-session-pointer"}),!1;let h=await n(g);if(null===h)return!1;let i=function(a){let b=[],c=0,d=null,e=null,f=null;for(let g of a.split("\n")){let a;if(0===g.trim().length)continue;try{a=JSON.parse(g)}catch{c+=1;continue}let h=function(a){if(!(0,s.Qd)(a))return null;let b=(0,s.O2)(a,"type");if(!b)return null;let c="session"===b,d=(0,s.Qd)(a.message)?a.message:null,e=d&&(0,s.Qd)(d.meta)?d.meta:null,f=d?.content,g=[],h="";if("string"==typeof f)h=f;else if(Array.isArray(f))for(let a of f){let b=function(a){if(!(0,s.Qd)(a))return null;let b=(0,s.O2)(a,"type");if(!b)return null;if("tool_use"===b)return{type:b,text:null,toolName:(0,s.O2)(a,"name"),toolDetail:function(a){if(!(0,s.Qd)(a))return null;for(let c of au){let d=(0,s.O2)(a,c);if(d){var b;return b=(0,t.PB)(d),(0,t.Wv)(b,200)}}return null}(a.input)};let c="text"===b?(0,s.O2)(a,"text")??"":"thinking"===b?(0,s.O2)(a,"thinking")??"":null;return{type:b,text:c,toolName:null,toolDetail:null}}(a);b&&(g.push(b),"text"===b.type&&b.text&&(h+=b.text))}let i=(0,s.O2)(a,"timestamp"),j=i?Date.parse(i):NaN,k=e&&"number"==typeof e.createdAt?e.createdAt:null;return{type:b,id:c?null:(0,s.O2)(a,"id"),parentId:(0,s.O2)(a,"parentId"),role:d?(0,s.O2)(d,"role"):null,sessionId:c?(0,s.O2)(a,"id"):null,cwd:c?(0,s.O2)(a,"cwd"):null,parentSession:c?(0,s.O2)(a,"parentSession"):null,source:e?(0,s.O2)(e,"source"):null,isMeta:e?.isMeta===!0,isSummary:e?.isSummary===!0,isAutomated:e?.isAutomated===!0,timestampMs:null!==k&&Number.isFinite(k)?k:Number.isFinite(j)?j:null,blocks:g,text:h}}(a);if(!h){c+=1;continue}b.push(h),h.sessionId&&(d=h.sessionId,e=h.cwd,f=h.parentSession)}return{records:b,malformedLines:c,sessionId:d,cwd:e,parentSession:f}}(h),k=function(a,b){let c=[],d=new Set,e=null,f=0,g=0,h=0,i=b;for(let b of a){if(b.sessionId){i=b.sessionId;continue}if(b.type!==at){h+=1,b.id&&d.add(b.id);continue}if(null===b.parentId||d.has(b.parentId)||(g+=1),b.id&&d.add(b.id),av(b)){e=function(a,b){return{sessionId:b,promptId:a.id,startedAt:a.timestampMs??0,promptText:a.text,promptIsOperatorInput:!!av(a)&&!a.isSummary&&!a.isAutomated&&"user"===a.source,blocks:[],assistantRecords:0,closed:!1,superseded:!1,overflowed:!1}}(b,i),c.push(e);continue}if("assistant"===b.role){if(!e){f+=1;continue}for(let a of(e.assistantRecords+=1,e.closed=!(b.type!==at||"assistant"!==b.role||b.blocks.some(a=>"tool_use"===a.type))&&b.blocks.some(a=>"text"===a.type&&(a.text??"").trim().length>0),b.blocks)){if(e.blocks.length>=2048){e.overflowed=!0;break}e.blocks.push(a)}}}for(let a=0;a<c.length-1;a+=1)c[a].superseded=!0;return{turns:c,orphanedAssistantRecords:f,unresolvedParentRecords:g,nonMessageRecords:h}}(i.records,i.sessionId??f??"");if(0===k.turns.length)return az.info("command-code-transcript-no-turn",{worktreeId:a.worktreeId,instanceId:d,path:g,records:i.records.length,malformedLines:i.malformedLines,orphanedAssistantRecords:k.orphanedAssistantRecords}),!1;(i.malformedLines>0||k.orphanedAssistantRecords>0||null!==i.parentSession)&&az.info("command-code-transcript-partial-read",{worktreeId:a.worktreeId,instanceId:d,path:g,malformedLines:i.malformedLines,orphanedAssistantRecords:k.orphanedAssistantRecords,unresolvedParentRecords:k.unresolvedParentRecords,nonMessageRecords:k.nonMessageRecords,parentSession:i.parentSession});let l=await aH(a,k.turns);if(await aN(a,k.turns.slice(0,k.turns.length-l.turns.length).slice(-aL),g),0===l.turns.length)return az.debug("command-code-transcript-turns-already-saved",{worktreeId:a.worktreeId,instanceId:d,turnsInWindow:k.turns.length}),await (0,p.fT)(a),!0;l.turns.length>1&&az.info("command-code-transcript-backfilling-turns",{worktreeId:a.worktreeId,instanceId:d,path:g,pendingTurns:l.turns.length,turnsInWindow:k.turns.length,anchored:l.anchored});let m=[];for(let b=0;b<l.turns.length;b+=1){let c=0===b?l.previousStartedAt:l.turns[b-1].startedAt;m.push(await aK(a,l.turns[b],c))}let o=function(a){let b=new Map,c=null;for(let d of a)if(!d.sessionId&&d.type===at){if(av(d)){c=d.id;continue}"assistant"===d.role&&null!==c&&null!==d.timestampMs&&d.timestampMs>(b.get(c)??0)&&b.set(c,d.timestampMs)}return b}(i.records),q=!1;for(let b=0;b<l.turns.length;b+=1){let d=l.turns[b];q=await aO(a,d,ay(d),(0,r.Ty)(d,m[b],o.get(d.promptId)??0,(0,r.Hz)(l.turns,m,b)),g,c)}return q&&await (0,p.fT)(a),q}catch(b){return az.error("command-code-transcript-capture-failed",{worktreeId:a.worktreeId,instanceId:d,error:b instanceof Error?b.message:String(b)}),!1}}async function aH(a,b){return(0,r.bk)(a,b,a=>(0,q.sT)(a.promptId))}async function aI(a,b){try{let c=b.commandCodeHome??(0,j.homedir)();return await aJ(c,b,await aD(a))}catch{return null}}async function aJ(a,b,c){let d=b.transcriptPathHint;if("string"==typeof d&&d.length>0){let b=(0,r.sx)(aE(a),as,d);if(b&&await (0,r.Jj)(b))return b}if(!c)return null;let e=`${a}\0${c}`,f=aC.get(e);if(f&&await (0,r.Jj)(f))return f;let g=await aF(a,c);return g?aC.set(e,g):aC.delete(e),g}async function aK(a,b,c=0){let d=a.instanceId??a.cliToolId;if(!b.promptIsOperatorInput)return az.debug("command-code-transcript-user-turn-skipped",{worktreeId:a.worktreeId,instanceId:d,promptId:b.promptId,reason:"not-operator-input"}),{outcome:"skipped",messageId:null,timestampMs:null};let e=await (0,o.Ce)(a,(0,q.TW)(b.promptId),b.promptText,b.startedAt,c>0?{adoptionFromMs:c}:{});return"failed"===e.outcome&&az.warn("command-code-transcript-user-turn-failed",{worktreeId:a.worktreeId,instanceId:d,sessionId:b.sessionId,promptId:b.promptId}),e}let aL=3;async function aM(a,b,c,d){return(0,r.c_)(a,b,c,d,az,"command-code-transcript-turn-updated")}async function aN(a,b,c){return(0,r.NF)(a,b,c,{isWritable:aw,requestIdOf:a=>(0,q.sT)(a.promptId),render:ay,grow:aM})}async function aO(a,b,d,e,f,g){let h=a.instanceId??a.cliToolId;if(g&&(g.outcome=void 0),!aw(b))return g&&(g.outcome="not_yet_closed"),az.info("command-code-transcript-turn-open",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,promptId:d.promptId,assistantRecords:b.assistantRecords,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!1;if(0===d.body.length)return az.info("command-code-transcript-turn-empty",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,promptId:d.promptId}),!1;d.unknownBlockTypes.length>0&&az.info("command-code-transcript-unknown-blocks",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,blockTypes:d.unknownBlockTypes});let i=(0,q.sT)(d.promptId),[{getDbInstance:j},{createMessage:k,findMessageByRequestId:l},{broadcastMessage:m}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.resolve().then(c.bind(c,43015))]),n=j(),o=l(n,a.worktreeId,i);if(o)return az.debug("command-code-transcript-turn-already-saved",{worktreeId:a.worktreeId,instanceId:h,requestId:i}),await aM(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:h,requestId:i});return m("message",{worktreeId:a.worktreeId,message:p}),az.info("command-code-transcript-turn-saved",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,requestId:i,path:f,bodyLength:d.body.length,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!0}var aP=c(70997),aQ=c(2734),aR=c(76835),aS=c(28862),aT=c(56365),aU=c(43925);let aV=(0,d.h)("lib/polling/structured-history-gate"),aW=(0,h.v)("__structuredHistoryCaptureQueue",()=>new Map),aX=(0,h.v)("__structuredHistoryAnnouncedCompletions",()=>new Map);function aY(){aW.clear(),aX.clear()}let aZ={[aP.v]:{capture:(a,b,c)=>(0,g.K$)(a,b,c),locate:(a,b)=>(0,g.Oi)(a,b)},[aQ.c]:{capture:(a,b,c)=>J(a,b,c),locate:(a,b)=>K(a,b)},[aR.F]:{capture:(a,b,c)=>ah(a,b,c),locate:(a,b)=>ai(a,b)},[aS.k]:{capture:(a,b,c)=>aG(a,b,c),locate:(a,b)=>aI(a,b)}};function a$(a){try{return(0,aT.VM)(a).capabilities.transcriptHistory??null}catch(b){return aV.warn("structured-history-capability-unavailable",{cliToolId:a,error:b instanceof Error?b.message:String(b)}),null}}function a_(a){return"pull"===a$(a)}let a0={opencode:a=>(0,e.f4)(a),"opencode-v2":a=>(0,f.rE)(a)};function a1(a,b,c){if("push"!==a$(b))return!1;try{return(a0[b]??e.f4)({worktreeId:a,cliToolId:b,instanceId:c??b})}catch(d){return aV.warn("structured-history-gate-unavailable",{worktreeId:a,cliToolId:b,instanceId:c??b,error:d instanceof Error?d.message:String(d)}),!1}}async function a2(a,b,c,d,e){if(e&&(e.outcome="unavailable"),!a_(b))return!1;let f=aZ[b];if(!f)return aV.warn("structured-history-reader-missing",{worktreeId:a,cliToolId:b,instanceId:c??b}),!1;let g=c??b,h=`${a}\u0000${b}\u0000${g}`;var i=async()=>{let c={};try{let j=await f.capture({worktreeId:a,cliToolId:b,instanceId:g},d,c),k=c.completion??"settled";if(e&&(e.outcome=j?"captured":c.outcome??"unavailable",e.completion=k,e.completionKey=c.completionKey,e.completionReason=c.completionReason),j&&"settled"===k){var i;i=c.completionKey,(void 0===i||aX.get(h)!==i&&(aX.set(h,i),1))&&(0,aU.vQ)(a,b,g,!0)}else j&&aV.info("structured-history-capture-provisional",{worktreeId:a,cliToolId:b,instanceId:g,reason:c.completionReason??"unknown"});return j}catch(c){return aV.warn("structured-history-capture-unavailable",{worktreeId:a,cliToolId:b,instanceId:g,error:c instanceof Error?c.message:String(c)}),!1}};let j=(aW.get(h)??Promise.resolve()).then(i,i),k=j.then(()=>void 0,()=>void 0);return aW.set(h,k),k.then(()=>{aW.get(h)===k&&aW.delete(h)}),j}async function a3(a,b,c,d){let e=a_(b)?aZ[b]:void 0;if(!e)return!1;try{let f=await e.locate({worktreeId:a,cliToolId:b,instanceId:c??b},d);return null!==f}catch(d){return aV.warn("structured-history-locate-unavailable",{worktreeId:a,cliToolId:b,instanceId:c??b,error:d instanceof Error?d.message:String(d)}),!1}}},31990:(a,b,c)=>{c.d(b,{Wh:()=>T,WD:()=>U,Lw:()=>W,Qj:()=>S,K1:()=>R,N5:()=>V});var d=c(8360),e=c(72626),f=c(79892);let g={streamingOutput:!1,explicitResize:!1,snapshotFallback:!0};class h{async unsubscribe(){}}class i{async ensureSession(a,b){await (0,f.N)(a)||await (0,f.jw)(a,b)}async sessionExists(a){return(0,f.N)(a)}async sendInput(a,b){await (0,f.V1)(a,b)}async sendSpecialKey(a,b){if("Escape"!==b&&"C-c"!==b&&"C-d"!==b&&"C-m"!==b&&"Enter"!==b)throw Error(`Unsupported special key for PollingTmuxTransport: ${b}`);await (0,f.ds)(a,b)}async resize(){throw Error("PollingTmuxTransport does not support explicit resize")}async captureSnapshot(a,b){return(0,f.Xg)(a,b)}async subscribe(){return new h}getCapabilities(){return g}async killSession(a){return(0,f.fY)(a)}}let j=null;var k=c(93997),l=c(79646),m=c(28354),n=c(31442),o=c(29021),p=c(21820),q=c(33873),r=c(16983);let s="cm-live-restore.sh",t="cm-live-delegate.sh",u="cm-auto-popup.sh",v=`#!/bin/sh
7
+ ${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}ax.has(f.type)||c.add(f.type)}let f=(0,t.t3)(b).body;return f=(0,t.mg)(f,2e5,"\n\n_(truncated)_"),{sessionId:a.sessionId,promptId:a.promptId,body:f,textBlocks:d,toolBlocks:e,unknownBlockTypes:[...c]}}let az=(0,d.h)("lib/hooks/sources/command-code/history"),aA=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,aB=(0,h.v)("__commandCodeTranscriptSessions",()=>new Map),aC=(0,h.v)("__commandCodeTranscriptPaths",()=>new Map);async function aD(a){return(0,r.Lz)(a,aB,(0,l.v7)(a.worktreeId,a.cliToolId,a.instanceId),az,"command-code-transcript-session-lookup-failed")}function aE(a){return(0,k.join)(a,...ar)}async function aF(a,b){let c;if(!aA.test(b))return null;let d=aE(a);try{c=await (0,i.readdir)(d,{withFileTypes:!0})}catch{return null}let e=[];for(let a of c){if(!a.isDirectory())continue;let b=0;try{b=(await (0,i.stat)((0,k.join)(d,a.name))).mtimeMs}catch{}e.push({name:a.name,modifiedAt:b})}e.sort((a,b)=>b.modifiedAt-a.modifiedAt);let f=`${b}${as}`;for(let a of e){let b=(0,k.join)(d,a.name,f);if(await (0,r.Jj)(b))return b}return null}async function aG(a,b,c){let d=a.instanceId??a.cliToolId;try{let e=b.commandCodeHome??(0,j.homedir)(),f=await aD(a),g=await aJ(e,b,f);if(!g)return az.debug("command-code-transcript-unavailable",{worktreeId:a.worktreeId,instanceId:d,sessionId:f,reason:f?"no-file":"no-session-pointer"}),!1;let h=await n(g);if(null===h)return!1;let i=function(a){let b=[],c=0,d=null,e=null,f=null;for(let g of a.split("\n")){let a;if(0===g.trim().length)continue;try{a=JSON.parse(g)}catch{c+=1;continue}let h=function(a){if(!(0,s.Qd)(a))return null;let b=(0,s.O2)(a,"type");if(!b)return null;let c="session"===b,d=(0,s.Qd)(a.message)?a.message:null,e=d&&(0,s.Qd)(d.meta)?d.meta:null,f=d?.content,g=[],h="";if("string"==typeof f)h=f;else if(Array.isArray(f))for(let a of f){let b=function(a){if(!(0,s.Qd)(a))return null;let b=(0,s.O2)(a,"type");if(!b)return null;if("tool_use"===b)return{type:b,text:null,toolName:(0,s.O2)(a,"name"),toolDetail:function(a){if(!(0,s.Qd)(a))return null;for(let c of au){let d=(0,s.O2)(a,c);if(d){var b;return b=(0,t.PB)(d),(0,t.Wv)(b,200)}}return null}(a.input)};let c="text"===b?(0,s.O2)(a,"text")??"":"thinking"===b?(0,s.O2)(a,"thinking")??"":null;return{type:b,text:c,toolName:null,toolDetail:null}}(a);b&&(g.push(b),"text"===b.type&&b.text&&(h+=b.text))}let i=(0,s.O2)(a,"timestamp"),j=i?Date.parse(i):NaN,k=e&&"number"==typeof e.createdAt?e.createdAt:null;return{type:b,id:c?null:(0,s.O2)(a,"id"),parentId:(0,s.O2)(a,"parentId"),role:d?(0,s.O2)(d,"role"):null,sessionId:c?(0,s.O2)(a,"id"):null,cwd:c?(0,s.O2)(a,"cwd"):null,parentSession:c?(0,s.O2)(a,"parentSession"):null,source:e?(0,s.O2)(e,"source"):null,isMeta:e?.isMeta===!0,isSummary:e?.isSummary===!0,isAutomated:e?.isAutomated===!0,timestampMs:null!==k&&Number.isFinite(k)?k:Number.isFinite(j)?j:null,blocks:g,text:h}}(a);if(!h){c+=1;continue}b.push(h),h.sessionId&&(d=h.sessionId,e=h.cwd,f=h.parentSession)}return{records:b,malformedLines:c,sessionId:d,cwd:e,parentSession:f}}(h),k=function(a,b){let c=[],d=new Set,e=null,f=0,g=0,h=0,i=b;for(let b of a){if(b.sessionId){i=b.sessionId;continue}if(b.type!==at){h+=1,b.id&&d.add(b.id);continue}if(null===b.parentId||d.has(b.parentId)||(g+=1),b.id&&d.add(b.id),av(b)){e=function(a,b){return{sessionId:b,promptId:a.id,startedAt:a.timestampMs??0,promptText:a.text,promptIsOperatorInput:!!av(a)&&!a.isSummary&&!a.isAutomated&&"user"===a.source,blocks:[],assistantRecords:0,closed:!1,superseded:!1,overflowed:!1}}(b,i),c.push(e);continue}if("assistant"===b.role){if(!e){f+=1;continue}for(let a of(e.assistantRecords+=1,e.closed=!(b.type!==at||"assistant"!==b.role||b.blocks.some(a=>"tool_use"===a.type))&&b.blocks.some(a=>"text"===a.type&&(a.text??"").trim().length>0),b.blocks)){if(e.blocks.length>=2048){e.overflowed=!0;break}e.blocks.push(a)}}}for(let a=0;a<c.length-1;a+=1)c[a].superseded=!0;return{turns:c,orphanedAssistantRecords:f,unresolvedParentRecords:g,nonMessageRecords:h}}(i.records,i.sessionId??f??"");if(0===k.turns.length)return az.info("command-code-transcript-no-turn",{worktreeId:a.worktreeId,instanceId:d,path:g,records:i.records.length,malformedLines:i.malformedLines,orphanedAssistantRecords:k.orphanedAssistantRecords}),!1;(i.malformedLines>0||k.orphanedAssistantRecords>0||null!==i.parentSession)&&az.info("command-code-transcript-partial-read",{worktreeId:a.worktreeId,instanceId:d,path:g,malformedLines:i.malformedLines,orphanedAssistantRecords:k.orphanedAssistantRecords,unresolvedParentRecords:k.unresolvedParentRecords,nonMessageRecords:k.nonMessageRecords,parentSession:i.parentSession});let l=await aH(a,k.turns);if(await aN(a,k.turns.slice(0,k.turns.length-l.turns.length).slice(-aL),g),0===l.turns.length)return az.debug("command-code-transcript-turns-already-saved",{worktreeId:a.worktreeId,instanceId:d,turnsInWindow:k.turns.length}),await (0,p.fT)(a),!0;l.turns.length>1&&az.info("command-code-transcript-backfilling-turns",{worktreeId:a.worktreeId,instanceId:d,path:g,pendingTurns:l.turns.length,turnsInWindow:k.turns.length,anchored:l.anchored});let m=[];for(let b=0;b<l.turns.length;b+=1){let c=0===b?l.previousStartedAt:l.turns[b-1].startedAt;m.push(await aK(a,l.turns[b],c))}let o=function(a){let b=new Map,c=null;for(let d of a)if(!d.sessionId&&d.type===at){if(av(d)){c=d.id;continue}"assistant"===d.role&&null!==c&&null!==d.timestampMs&&d.timestampMs>(b.get(c)??0)&&b.set(c,d.timestampMs)}return b}(i.records),q=!1;for(let b=0;b<l.turns.length;b+=1){let d=l.turns[b];q=await aO(a,d,ay(d),(0,r.Ty)(d,m[b],o.get(d.promptId)??0,(0,r.Hz)(l.turns,m,b)),g,c)}return q&&await (0,p.fT)(a),q}catch(b){return az.error("command-code-transcript-capture-failed",{worktreeId:a.worktreeId,instanceId:d,error:b instanceof Error?b.message:String(b)}),!1}}async function aH(a,b){return(0,r.bk)(a,b,a=>(0,q.sT)(a.promptId))}async function aI(a,b){try{let c=b.commandCodeHome??(0,j.homedir)();return await aJ(c,b,await aD(a))}catch{return null}}async function aJ(a,b,c){let d=b.transcriptPathHint;if("string"==typeof d&&d.length>0){let b=(0,r.sx)(aE(a),as,d);if(b&&await (0,r.Jj)(b))return b}if(!c)return null;let e=`${a}\0${c}`,f=aC.get(e);if(f&&await (0,r.Jj)(f))return f;let g=await aF(a,c);return g?aC.set(e,g):aC.delete(e),g}async function aK(a,b,c=0){let d=a.instanceId??a.cliToolId;if(!b.promptIsOperatorInput)return az.debug("command-code-transcript-user-turn-skipped",{worktreeId:a.worktreeId,instanceId:d,promptId:b.promptId,reason:"not-operator-input"}),{outcome:"skipped",messageId:null,timestampMs:null};let e=await (0,o.Ce)(a,(0,q.TW)(b.promptId),b.promptText,b.startedAt,c>0?{adoptionFromMs:c}:{});return"failed"===e.outcome&&az.warn("command-code-transcript-user-turn-failed",{worktreeId:a.worktreeId,instanceId:d,sessionId:b.sessionId,promptId:b.promptId}),e}let aL=3;async function aM(a,b,c,d){return(0,r.c_)(a,b,c,d,az,"command-code-transcript-turn-updated")}async function aN(a,b,c){return(0,r.NF)(a,b,c,{isWritable:aw,requestIdOf:a=>(0,q.sT)(a.promptId),render:ay,grow:aM})}async function aO(a,b,d,e,f,g){let h=a.instanceId??a.cliToolId;if(g&&(g.outcome=void 0),!aw(b))return g&&(g.outcome="not_yet_closed"),az.info("command-code-transcript-turn-open",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,promptId:d.promptId,assistantRecords:b.assistantRecords,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!1;if(0===d.body.length)return az.info("command-code-transcript-turn-empty",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,promptId:d.promptId}),!1;d.unknownBlockTypes.length>0&&az.info("command-code-transcript-unknown-blocks",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,blockTypes:d.unknownBlockTypes});let i=(0,q.sT)(d.promptId),[{getDbInstance:j},{createMessage:k,findMessageByRequestId:l},{broadcastMessage:m}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.resolve().then(c.bind(c,43015))]),n=j(),o=l(n,a.worktreeId,i);if(o)return az.debug("command-code-transcript-turn-already-saved",{worktreeId:a.worktreeId,instanceId:h,requestId:i}),await aM(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:h,requestId:i});return m("message",{worktreeId:a.worktreeId,message:p}),az.info("command-code-transcript-turn-saved",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,requestId:i,path:f,bodyLength:d.body.length,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!0}var aP=c(70997),aQ=c(2734),aR=c(76835),aS=c(28862),aT=c(59409),aU=c(43925);let aV=(0,d.h)("lib/polling/structured-history-gate"),aW=(0,h.v)("__structuredHistoryCaptureQueue",()=>new Map),aX=(0,h.v)("__structuredHistoryAnnouncedCompletions",()=>new Map);function aY(){aW.clear(),aX.clear()}let aZ={[aP.v]:{capture:(a,b,c)=>(0,g.K$)(a,b,c),locate:(a,b)=>(0,g.Oi)(a,b)},[aQ.c]:{capture:(a,b,c)=>J(a,b,c),locate:(a,b)=>K(a,b)},[aR.F]:{capture:(a,b,c)=>ah(a,b,c),locate:(a,b)=>ai(a,b)},[aS.k]:{capture:(a,b,c)=>aG(a,b,c),locate:(a,b)=>aI(a,b)}};function a$(a){try{return(0,aT.VM)(a).capabilities.transcriptHistory??null}catch(b){return aV.warn("structured-history-capability-unavailable",{cliToolId:a,error:b instanceof Error?b.message:String(b)}),null}}function a_(a){return"pull"===a$(a)}let a0={opencode:a=>(0,e.f4)(a),"opencode-v2":a=>(0,f.rE)(a)};function a1(a,b,c){if("push"!==a$(b))return!1;try{return(a0[b]??e.f4)({worktreeId:a,cliToolId:b,instanceId:c??b})}catch(d){return aV.warn("structured-history-gate-unavailable",{worktreeId:a,cliToolId:b,instanceId:c??b,error:d instanceof Error?d.message:String(d)}),!1}}async function a2(a,b,c,d,e){if(e&&(e.outcome="unavailable"),!a_(b))return!1;let f=aZ[b];if(!f)return aV.warn("structured-history-reader-missing",{worktreeId:a,cliToolId:b,instanceId:c??b}),!1;let g=c??b,h=`${a}\u0000${b}\u0000${g}`;var i=async()=>{let c={};try{let j=await f.capture({worktreeId:a,cliToolId:b,instanceId:g},d,c),k=c.completion??"settled";if(e&&(e.outcome=j?"captured":c.outcome??"unavailable",e.completion=k,e.completionKey=c.completionKey,e.completionReason=c.completionReason),j&&"settled"===k){var i;i=c.completionKey,(void 0===i||aX.get(h)!==i&&(aX.set(h,i),1))&&(0,aU.vQ)(a,b,g,!0)}else j&&aV.info("structured-history-capture-provisional",{worktreeId:a,cliToolId:b,instanceId:g,reason:c.completionReason??"unknown"});return j}catch(c){return aV.warn("structured-history-capture-unavailable",{worktreeId:a,cliToolId:b,instanceId:g,error:c instanceof Error?c.message:String(c)}),!1}};let j=(aW.get(h)??Promise.resolve()).then(i,i),k=j.then(()=>void 0,()=>void 0);return aW.set(h,k),k.then(()=>{aW.get(h)===k&&aW.delete(h)}),j}async function a3(a,b,c,d){let e=a_(b)?aZ[b]:void 0;if(!e)return!1;try{let f=await e.locate({worktreeId:a,cliToolId:b,instanceId:c??b},d);return null!==f}catch(d){return aV.warn("structured-history-locate-unavailable",{worktreeId:a,cliToolId:b,instanceId:c??b,error:d instanceof Error?d.message:String(d)}),!1}}},31990:(a,b,c)=>{c.d(b,{Wh:()=>T,WD:()=>U,Lw:()=>W,Qj:()=>S,K1:()=>R,N5:()=>V});var d=c(8360),e=c(72626),f=c(79892);let g={streamingOutput:!1,explicitResize:!1,snapshotFallback:!0};class h{async unsubscribe(){}}class i{async ensureSession(a,b){await (0,f.N)(a)||await (0,f.jw)(a,b)}async sessionExists(a){return(0,f.N)(a)}async sendInput(a,b){await (0,f.V1)(a,b)}async sendSpecialKey(a,b){if("Escape"!==b&&"C-c"!==b&&"C-d"!==b&&"C-m"!==b&&"Enter"!==b)throw Error(`Unsupported special key for PollingTmuxTransport: ${b}`);await (0,f.ds)(a,b)}async resize(){throw Error("PollingTmuxTransport does not support explicit resize")}async captureSnapshot(a,b){return(0,f.Xg)(a,b)}async subscribe(){return new h}getCapabilities(){return g}async killSession(a){return(0,f.fY)(a)}}let j=null;var k=c(93997),l=c(79646),m=c(28354),n=c(31442),o=c(29021),p=c(21820),q=c(33873),r=c(16983);let s="cm-live-restore.sh",t="cm-live-delegate.sh",u="cm-auto-popup.sh",v=`#!/bin/sh
8
8
  # CommandMate live-attach restore (Issue #2317) — generated file, edits are overwritten.
9
9
  #
10
10
  # sh ~/.commandmate/bin/${s} <session> [control_mode] [width] [height]
@@ -106,8 +106,6 @@ if [ -n "$CLIENT" ]; then
106
106
  else
107
107
  tmux display-popup -w 90% -h 85% -E "sh \\"$PAGER_SCRIPT\\" --follow \\"$SESSION\\"" 2>/dev/null || true
108
108
  fi
109
- `;function z(a,b){let c,d=(0,q.join)((0,q.join)((0,p.homedir)(),".commandmate","bin"),a);if((0,o.mkdirSync)((0,q.dirname)(d),{recursive:!0}),(0,o.existsSync)(d))try{c=(0,o.readFileSync)(d,"utf-8")}catch{c=void 0}return c!==b&&(0,o.writeFileSync)(d,b,{mode:493}),(0,o.chmodSync)(d,493),d}var A=c(83598),B=c(36925);let C=(0,m.promisify)(l.execFile),D=(0,e.h)("tmux-session-hooks"),E=(0,B.v)("__cmEnsuredSessionHooks",()=>new Set);async function F(a){if((0,n.N_)(a)&&!E.has(a)){E.add(a);try{if((0,n.gM)()&&(0,n.n9)(a)){z(s,v);let b=(0,n.Rr)(a,z(t,x));b&&await C("tmux",b,{timeout:5e3})}else await C("tmux",(0,n.g4)(a),{timeout:5e3});if((0,n.jx)()){let b=(0,n.Ls)(a,z(u,y));b&&await C("tmux",b,{timeout:5e3})}else await C("tmux",(0,n.sL)(a),{timeout:5e3})}catch(b){D.debug("session-hooks:reconcile-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)})}}}async function G(a){try{if(!await (0,A.Us)(a)||await (0,A.Fh)(a))return!1;for(let b of(0,n.RS)(a))await C("tmux",b,{timeout:5e3});return D.info("session-hooks:geometry-restored",{sessionName:a}),!0}catch(b){return D.debug("session-hooks:geometry-restore-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)}),!1}}let H=(0,m.promisify)(l.execFile),I=(0,e.h)("tmux-session-status"),J=(0,B.v)("__cmPublishedTmuxStatus",()=>new Map),K=(0,B.v)("__cmClearedTmuxStatus",()=>new Set);async function L(a){let{sessionName:b,worktreeId:c,cliToolId:d,instanceId:e,status:f}=a;if(!(0,n.om)())return K.has(b)||(K.add(b),await N(b)),"disabled";let g=J.get(b);if(g&&g.status===f&&g.worktreeId===c&&g.cliToolId===d&&g.instanceId===e)return"unchanged";let h=(a.now??new Date).toISOString(),i=[[n.eC,f],[n.jp,c],[n.wv,d],[n.L0,e],[n.tx,h]];try{for(let[a,c]of i)await H("tmux",(0,n.ND)(b,a,c),{timeout:5e3});return J.set(b,{status:f,worktreeId:c,cliToolId:d,instanceId:e}),await M(b),"written"}catch(a){return J.delete(b),I.debug("session-status:write-failed",{sessionName:b,error:a instanceof Error?a.message:String(a)}),"error"}}async function M(a){try{let{stdout:b}=await H("tmux",(0,n.Ys)(a,"status-right"),{timeout:5e3}),c=b.trim();if(""!==c&&!c.includes(n.lY))return I.debug("session-status:status-right-user-owned",{sessionName:a,existing:c}),!1;return""===c&&await H("tmux",(0,n.KB)(a,n.lY),{timeout:5e3}),!0}catch(b){return I.debug("session-status:status-right-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)}),!1}}async function N(a){for(let b of(J.delete(a),n.bq))try{await H("tmux",(0,n.cD)(a,b),{timeout:5e3})}catch{}try{let{stdout:b}=await H("tmux",(0,n.Ys)(a,"status-right"),{timeout:5e3});b.includes(n.lY)&&await H("tmux",(0,n.$D)(a),{timeout:5e3})}catch{}}let O=(0,e.h)("cli-session");function P(){return j||(j=new i),j}function Q(a,b,c){let e=d.CLIToolManager.getInstance().getTool(b),f=e.getSessionName(a,c);return{cliTool:e,sessionName:f}}async function R(a,b,c){let{sessionName:d}=Q(a,b,c);return P().sessionExists(d)}async function S(a,b,c){let{sessionName:d}=Q(a,b,c);return(0,f.p$)(d)}async function T(a,b,c=1e3,d){let e=O.withContext({worktreeId:a,cliToolId:b});e.debug("captureSessionOutput:start",{requestedLines:c});let{cliTool:f,sessionName:g}=Q(a,b,d),h=P();try{let a=await (0,k.aq)(g,c,async()=>{if(!await h.sessionExists(g))throw Error(`${f.name} session ${g} does not exist`);return await h.captureSnapshot(g,{startLine:-k.xE})});return e.debug("captureSessionOutput:success",{actualLines:a.split("\n").length,lastFewLines:a.split("\n").slice(-3).join(" | ")}),a}catch(b){let a=b instanceof Error?b.message:String(b);if(a.includes("does not exist"))throw e.debug("captureSessionOutput:sessionNotFound",{sessionName:g}),b;throw e.error("captureSessionOutput:failed",{error:a}),Error(`Failed to capture ${f.name} output: ${a}`)}}async function U(a,b,c=5e3,d){let e=O.withContext({worktreeId:a,cliToolId:b});e.debug("captureSessionOutputFresh:start",{requestedLines:c});let{cliTool:f,sessionName:g}=Q(a,b,d),h=P();try{let a=await h.captureSnapshot(g,{startLine:-c});return a.length>0?(0,k.vF)(g,a,c):(0,k.gm)(g),(0,k.wd)(a,c)}catch(b){(0,k.gm)(g);let a=b instanceof Error?b.message:String(b);throw e.error("captureSessionOutputFresh:failed",{error:a}),Error(`Failed to capture ${f.name} output: ${a}`)}}async function V(a){await F(a.sessionName),(0,n.n9)(a.sessionName)&&await G(a.sessionName),await L(a)}function W(a){J.delete(a),K.delete(a),E.delete(a),(0,A.G9)(a)}},79696:(a,b,c)=>{c.d(b,{K$:()=>N,readClaudeTurnProgress:()=>Q,Oi:()=>P});var d=c(36925),e=c(79748),f=c(21820),g=c(33873),h=c(24455),i=c(18201),j=c(12462),k=c(72626),l=c(86594),m=c(16659),n=c(57510),o=c(27128);let p=[".claude","projects"],q="\n\n_(truncated)_",r=["<local-command-caveat>","<local-command-stdout>","<command-name>"],s="<command-message>",t=/<command-name>([\s\S]*?)<\/command-name>/,u=/<command-args>([\s\S]*?)<\/command-args>/;function v(a){let b=a.trim();if(!b.startsWith(s))return null;let c=t.exec(b)?.[1].trim()??"";if(0===c.length)return null;let d=u.exec(b)?.[1].trim()??"";return 0===d.length?c:`${c} ${d}`}let w=/<pasted_content id="([^"<>\s]+)">\n?([\s\S]*?)\n?<\/pasted_content id="\1">/g,x=["command","file_path","notebook_path","path","pattern","query","url","description"];function y(a){if(!(0,n.Qd)(a))return null;let b=(0,n.O2)(a,"type");if(!b)return null;let c=(0,n.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,n.Qd)(a))return null;let b=(0,n.O2)(a,"type");if(!b)return null;if("tool_use"===b)return{type:b,text:null,toolName:(0,n.O2)(a,"name"),toolDetail:function(a){if(!(0,n.Qd)(a))return null;for(let c of x){let d=(0,n.O2)(a,c);if(d){var b;return b=(0,o.PB)(d),(0,o.Wv)(b,200)}}return null}(a.input)};let c="text"===b?(0,n.O2)(a,"text")??"":"thinking"===b?(0,n.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,n.O2)(a,"timestamp"),h=g?Date.parse(g):NaN,i=(0,n.Qd)(a.origin)?a.origin:null;return{type:b,uuid:(0,n.O2)(a,"uuid"),sessionId:(0,n.O2)(a,"sessionId")??(0,n.O2)(a,"session_id"),cwd:(0,n.O2)(a,"cwd"),isSidechain:!0===a.isSidechain,isMeta:!0===a.isMeta,originKind:i?(0,n.O2)(i,"kind"):null,promptSource:(0,n.O2)(a,"promptSource"),isCompactSummary:!0===a.isCompactSummary,isInterruption:null!==(0,n.O2)(a,"interruptedMessageId"),timestampMs:Number.isFinite(h)?h:null,stopReason:c?(0,n.O2)(c,"stop_reason"):null,blocks:e,text:f}}function z(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=y(a);e?b.push(e):c+=1}return{records:b,malformedLines:c}}function A(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(s)?null!==v(b):!r.some(a=>b.startsWith(a)))}let B=["typed","queued"];function C(a){return"assistant"===a.type&&"end_turn"===a.stopReason&&a.blocks.some(a=>"text"===a.type&&(a.text??"").trim().length>0)}function D(a){return!!a.closed||!!a.superseded||!a.stopReasonObserved}function E(a,b){let c=[],d=null,e=0,f=0;for(let g of a){if(g.isSidechain){f+=1;continue}if(A(g)){d=function(a,b){return{sessionId:a.sessionId??b,promptUuid:a.uuid,startedAt:a.timestampMs??0,promptText:v(a.text)??function(a){if(!a.includes("<pasted_content id="))return a;let b=a.replace(w,(a,b,c)=>c);return 0===b.trim().length?a:b}(a.text),promptIsOperatorInput:!!A(a)&&!a.isCompactSummary&&!a.isInterruption&&(null!==a.originKind?"human"===a.originKind:null!==a.promptSource&&B.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=C(g),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 F=new Set(["tool_result"]);function G(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**
110
- >
111
- ${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}F.has(f.type)||c.add(f.type)}let f=(0,o.t3)(b).body;return f=(0,o.mg)(f,2e5,q),{sessionId:a.sessionId,promptUuid:a.promptUuid,body:f,textBlocks:d,toolBlocks:e,unknownBlockTypes:[...c]}}let H=(0,k.h)("lib/hooks/sources/claude/history"),I="_(The beginning of this reply is not shown: the turn runs further back than the 64 MiB of transcript that is read.)_",J=".jsonl",K=(0,d.v)("__claudeTranscriptSessions",()=>new Map);async function L(a){return(0,m.Lz)(a,K,(0,h.v7)(a.worktreeId,a.cliToolId,a.instanceId),H,"claude-transcript-session-lookup-failed")}function M(a){return(0,g.join)(a,...p)}async function N(a,b,c){let d=a.instanceId??a.cliToolId;try{let e=b.homeDir??(0,f.homedir)();if("string"!=typeof b.worktreePath||0===b.worktreePath.length)return!1;let g=await L(a),h=await S(e,b,g);if(!h)return H.debug("claude-transcript-unavailable",{worktreeId:a.worktreeId,instanceId:d,sessionId:g,reason:g?"no-file":"no-session-pointer"}),!1;let i=await V(a,h,g??"");if(null===i)return!1;let{parsed:k,built:l}=i;if(0===l.turns.length){let b=l.orphanedAssistantRecords;if(H.warn("claude-transcript-no-turn",{worktreeId:a.worktreeId,instanceId:d,path:h,records:k.records.length,malformedLines:k.malformedLines,orphanedAssistantRecords:b,...b>0?{readBytes:i.size-i.startByte,size:i.size}:{}}),b>0&&i.reachedLimit)return await Y(a,k.records,g??"",h,c);return!1}(k.malformedLines>0||l.orphanedAssistantRecords>0)&&H.info("claude-transcript-partial-read",{worktreeId:a.worktreeId,instanceId:d,path:h,malformedLines:k.malformedLines,orphanedAssistantRecords:l.orphanedAssistantRecords,sidechainRecords:l.sidechainRecords});let n=await O(a,l.turns);if(await _(a,l.turns.slice(0,l.turns.length-n.turns.length).slice(-Z),h),0===n.turns.length)return H.debug("claude-transcript-turns-already-saved",{worktreeId:a.worktreeId,instanceId:d,turnsInWindow:l.turns.length}),await (0,j.fT)(a),!0;n.turns.length>1&&H.info("claude-transcript-backfilling-turns",{worktreeId:a.worktreeId,instanceId:d,path:h,pendingTurns:n.turns.length,turnsInWindow:l.turns.length,anchored:n.anchored});let o=[];for(let b=0;b<n.turns.length;b+=1){let c=0===b?n.previousStartedAt:n.turns[b-1].startedAt;o.push(await R(a,n.turns[b],c))}let p=function(a){let b=new Map,c=null;for(let d of a)if(!d.isSidechain){if(A(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}(k.records),q=!1;for(let b=0;b<n.turns.length;b+=1){let d=n.turns[b];q=await aa(a,d,G(d),(0,m.Ty)(d,o[b],p.get(d.promptUuid)??0,(0,m.Hz)(n.turns,o,b)),h,c)}return q&&await (0,j.fT)(a),q}catch(b){return H.error("claude-transcript-capture-failed",{worktreeId:a.worktreeId,instanceId:d,error:b instanceof Error?b.message:String(b)}),!1}}async function O(a,b){return(0,m.bk)(a,b,a=>(0,l.qe)(a.promptUuid))}async function P(a,b){try{let c=b.homeDir??(0,f.homedir)();if("string"!=typeof b.worktreePath||0===b.worktreePath.length)return null;return await S(c,b,await L(a))}catch{return null}}async function Q(a,b){let c=a.instanceId??a.cliToolId;try{var d;let e=b.homeDir??(0,f.homedir)();if("string"!=typeof b.worktreePath||0===b.worktreePath.length)return null;let g=await L(a),h=await S(e,b,g);if(!h)return null;let i=await T(h);if(null===i)return null;let j=z(i.text),k=E(j.records,g??""),m=k.turns.at(-1);if(m){let a=G(m);if(0===a.body.length)return null;return{turnKey:(0,l.qe)(a.promptUuid),body:a.body,partial:!1}}if(0===k.orphanedAssistantRecords)return null;let n=function(a,b){let c=[],d=0,e=!1;for(let b of a){if(A(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}}(j.records,g??""),o=G(n);if(0===o.body.length)return null;return H.info("claude-transcript-progress-headless",{worktreeId:a.worktreeId,instanceId:c,path:h,orphanedAssistantRecords:k.orphanedAssistantRecords,malformedLines:j.malformedLines}),{turnKey:(d=g??"",(0,l.qe)(`${l.ST}${d}`)),body:o.body,partial:!0}}catch(b){return H.debug("claude-transcript-progress-failed",{worktreeId:a.worktreeId,instanceId:c,error:b instanceof Error?b.message:String(b)}),null}}async function R(a,b,c=0){let d=a.instanceId??a.cliToolId;if(!b.promptIsOperatorInput)return H.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,i.Ce)(a,(0,l.H_)(b.promptUuid),b.promptText,b.startedAt,c>0?{adoptionFromMs:c}:{});return"failed"===e.outcome&&H.warn("claude-transcript-user-turn-failed",{worktreeId:a.worktreeId,instanceId:d,sessionId:b.sessionId,promptUuid:b.promptUuid}),e}async function S(a,b,c){if(c){var d,e,f;let h=(d=a,e=b.worktreePath,f=c,(0,g.join)(M(d),e.replace(/[^a-zA-Z0-9]/g,"-"),`${f}${J}`));if(await (0,m.Jj)(h))return h}let h=b.transcriptPathHint;if("string"==typeof h&&h.length>0){let b=(0,m.sx)(M(a),J,h);if(b&&await (0,m.Jj)(b))return b}return null}async function T(a){let b;try{b=await (0,e.open)(a,"r");let{size:c}=await b.stat(),d=Math.max(0,c-4194304),f=c-d;if(f<=0)return{text:"",size:c,startByte:0};let g=Buffer.alloc(f),{bytesRead:h}=await b.read(g,0,f,d),i=g.subarray(0,h);if(0===d)return{text:i.toString("utf8"),size:c,startByte:0};let j=i.indexOf(10);if(-1===j)return{text:"",size:c,startByte:c};return{text:i.subarray(j+1).toString("utf8"),size:c,startByte:d+j+1}}catch(b){return H.warn("claude-transcript-read-failed",{path:a,error:b instanceof Error?b.message:String(b)}),null}finally{await b?.close().catch(()=>{})}}async function U(a,b,c){let d=c-b,e=Buffer.alloc(d),{bytesRead:f}=await a.read(e,0,d,b);if(f!==d)return null;if(0===b)return{text:e.toString("utf8"),startByte:0};let g=e.indexOf(10);return -1===g?{text:"",startByte:c}:{text:e.subarray(g+1).toString("utf8"),startByte:b+g+1}}async function V(a,b,c){let d=await T(b);if(null===d)return null;let e=z(d.text),f=E(e.records,c),g={parsed:e,built:f,size:d.size,startByte:d.startByte,reachedLimit:!1};return f.turns.length>0||0===f.orphanedAssistantRecords||0===d.startByte?g:await W(a,b,c,g)??g}async function W(a,b,c,d){let f,{size:g}=d;try{f=await (0,e.open)(b,"r");let h=d.parsed.records,i=d.parsed.malformedLines,j=d.built,k=d.startByte,l=4194304,m=null;for(;0===j.turns.length&&k>0&&l<0x4000000;){l*=2;let a=await U(f,Math.max(0,g-l),k);if(null===a)return null;let b=z(a.text);h=[...b.records,...h],i+=b.malformedLines,k=a.startByte;let d=(j=E(h,c)).turns.at(-1);d&&(m=function(a,b,c){let{text:d}=a;for(let e=d.indexOf(b);-1!==e;e=d.indexOf(b,e+b.length)){let f=d.lastIndexOf("\n",e)+1,g=d.indexOf("\n",e),h=null;try{h=y(JSON.parse(d.slice(f,-1===g?d.length:g)))}catch{}if(h?.uuid===b)return c-a.startByte-Buffer.byteLength(d.slice(0,f),"utf8")}return null}(a,d.promptUuid,g))}return H.info("claude-transcript-window-extended",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,path:b,fromBytes:4194304,toBytes:l,size:g,promptOffsetFromEnd:m,records:h.length}),{parsed:{records:h,malformedLines:i},built:j,size:g,startByte:k,reachedLimit:0===j.turns.length&&k>0}}catch(a){return H.warn("claude-transcript-read-failed",{path:b,error:a instanceof Error?a.message:String(a)}),null}finally{await f?.close().catch(()=>{})}}let X={outcome:"skipped",messageId:null,timestampMs:null};async function Y(a,b,c,d,e){var f;let g,h=a.instanceId??a.cliToolId,i=function(a,b){let c=[],d=0,e=!1,f=!1,g=!1,h=0,i=0,j=null;for(let b of a)if(!b.isSidechain){if(A(b)){g=!0;break}if("assistant"===b.type){for(let a of(d+=1,e=C(b),null!==b.stopReason&&(f=!0),null!==b.timestampMs&&(0===h&&(h=b.timestampMs),i=Math.max(i,b.timestampMs)),b.blocks))c.push(a);j=b}}if(null===j||!j.uuid)return null;let k=j.sessionId??b,m=c.length>2048;return{turn:{sessionId:k,promptUuid:(0,l.Wr)(k,j.uuid),startedAt:h,promptText:"",promptIsOperatorInput:!1,blocks:m?c.slice(-2048):c,assistantRecords:d,closed:e,superseded:g,stopReasonObserved:f,overflowed:m},lastRecordAt:i}}(b,c);if(null===i)return H.debug("claude-transcript-headless-unkeyed",{worktreeId:a.worktreeId,instanceId:h,path:d}),!1;let{turn:k}=i,n=G(k);H.info("claude-transcript-headless-turn",{worktreeId:a.worktreeId,instanceId:h,sessionId:k.sessionId,requestId:(0,l.qe)(k.promptUuid),path:d,assistantRecords:k.assistantRecords,overflowed:k.overflowed});let o=await aa(a,k,0===n.body.length?n:(f=n,(g=`${I}
109
+ `;function z(a,b){let c,d=(0,q.join)((0,q.join)((0,p.homedir)(),".commandmate","bin"),a);if((0,o.mkdirSync)((0,q.dirname)(d),{recursive:!0}),(0,o.existsSync)(d))try{c=(0,o.readFileSync)(d,"utf-8")}catch{c=void 0}return c!==b&&(0,o.writeFileSync)(d,b,{mode:493}),(0,o.chmodSync)(d,493),d}var A=c(83598),B=c(36925);let C=(0,m.promisify)(l.execFile),D=(0,e.h)("tmux-session-hooks"),E=(0,B.v)("__cmEnsuredSessionHooks",()=>new Set);async function F(a){if((0,n.N_)(a)&&!E.has(a)){E.add(a);try{if((0,n.gM)()&&(0,n.n9)(a)){z(s,v);let b=(0,n.Rr)(a,z(t,x));b&&await C("tmux",b,{timeout:5e3})}else await C("tmux",(0,n.g4)(a),{timeout:5e3});if((0,n.jx)()){let b=(0,n.Ls)(a,z(u,y));b&&await C("tmux",b,{timeout:5e3})}else await C("tmux",(0,n.sL)(a),{timeout:5e3})}catch(b){D.debug("session-hooks:reconcile-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)})}}}async function G(a){try{if(!await (0,A.Us)(a)||await (0,A.Fh)(a))return!1;for(let b of(0,n.RS)(a))await C("tmux",b,{timeout:5e3});return D.info("session-hooks:geometry-restored",{sessionName:a}),!0}catch(b){return D.debug("session-hooks:geometry-restore-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)}),!1}}let H=(0,m.promisify)(l.execFile),I=(0,e.h)("tmux-session-status"),J=(0,B.v)("__cmPublishedTmuxStatus",()=>new Map),K=(0,B.v)("__cmClearedTmuxStatus",()=>new Set);async function L(a){let{sessionName:b,worktreeId:c,cliToolId:d,instanceId:e,status:f}=a;if(!(0,n.om)())return K.has(b)||(K.add(b),await N(b)),"disabled";let g=J.get(b);if(g&&g.status===f&&g.worktreeId===c&&g.cliToolId===d&&g.instanceId===e)return"unchanged";let h=(a.now??new Date).toISOString(),i=[[n.eC,f],[n.jp,c],[n.wv,d],[n.L0,e],[n.tx,h]];try{for(let[a,c]of i)await H("tmux",(0,n.ND)(b,a,c),{timeout:5e3});return J.set(b,{status:f,worktreeId:c,cliToolId:d,instanceId:e}),await M(b),"written"}catch(a){return J.delete(b),I.debug("session-status:write-failed",{sessionName:b,error:a instanceof Error?a.message:String(a)}),"error"}}async function M(a){try{let{stdout:b}=await H("tmux",(0,n.Ys)(a,"status-right"),{timeout:5e3}),c=b.trim();if(""!==c&&!c.includes(n.lY))return I.debug("session-status:status-right-user-owned",{sessionName:a,existing:c}),!1;return""===c&&await H("tmux",(0,n.KB)(a,n.lY),{timeout:5e3}),!0}catch(b){return I.debug("session-status:status-right-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)}),!1}}async function N(a){for(let b of(J.delete(a),n.bq))try{await H("tmux",(0,n.cD)(a,b),{timeout:5e3})}catch{}try{let{stdout:b}=await H("tmux",(0,n.Ys)(a,"status-right"),{timeout:5e3});b.includes(n.lY)&&await H("tmux",(0,n.$D)(a),{timeout:5e3})}catch{}}let O=(0,e.h)("cli-session");function P(){return j||(j=new i),j}function Q(a,b,c){let e=d.CLIToolManager.getInstance().getTool(b),f=e.getSessionName(a,c);return{cliTool:e,sessionName:f}}async function R(a,b,c){let{sessionName:d}=Q(a,b,c);return P().sessionExists(d)}async function S(a,b,c){let{sessionName:d}=Q(a,b,c);return(0,f.p$)(d)}async function T(a,b,c=1e3,d){let e=O.withContext({worktreeId:a,cliToolId:b});e.debug("captureSessionOutput:start",{requestedLines:c});let{cliTool:f,sessionName:g}=Q(a,b,d),h=P();try{let a=await (0,k.aq)(g,c,async()=>{if(!await h.sessionExists(g))throw Error(`${f.name} session ${g} does not exist`);return await h.captureSnapshot(g,{startLine:-k.xE})});return e.debug("captureSessionOutput:success",{actualLines:a.split("\n").length,lastFewLines:a.split("\n").slice(-3).join(" | ")}),a}catch(b){let a=b instanceof Error?b.message:String(b);if(a.includes("does not exist"))throw e.debug("captureSessionOutput:sessionNotFound",{sessionName:g}),b;throw e.error("captureSessionOutput:failed",{error:a}),Error(`Failed to capture ${f.name} output: ${a}`)}}async function U(a,b,c=5e3,d){let e=O.withContext({worktreeId:a,cliToolId:b});e.debug("captureSessionOutputFresh:start",{requestedLines:c});let{cliTool:f,sessionName:g}=Q(a,b,d),h=P();try{let a=await h.captureSnapshot(g,{startLine:-c});return a.length>0?(0,k.vF)(g,a,c):(0,k.gm)(g),(0,k.wd)(a,c)}catch(b){(0,k.gm)(g);let a=b instanceof Error?b.message:String(b);throw e.error("captureSessionOutputFresh:failed",{error:a}),Error(`Failed to capture ${f.name} output: ${a}`)}}async function V(a){await F(a.sessionName),(0,n.n9)(a.sessionName)&&await G(a.sessionName),await L(a)}function W(a){J.delete(a),K.delete(a),E.delete(a),(0,A.G9)(a)}},71133:(a,b,c)=>{c.d(b,{K$:()=>u,Oi:()=>w,readClaudeTurnProgress:()=>x});var d=c(36925),e=c(79748),f=c(21820),g=c(33873),h=c(24455),i=c(18201),j=c(12462),k=c(72626),l=c(86594),m=c(16659),n=c(30451);let o=(0,k.h)("lib/hooks/sources/claude/history"),p="_(The beginning of this reply is not shown: the turn runs further back than the 64 MiB of transcript that is read.)_",q=".jsonl",r=(0,d.v)("__claudeTranscriptSessions",()=>new Map);async function s(a){return(0,m.Lz)(a,r,(0,h.v7)(a.worktreeId,a.cliToolId,a.instanceId),o,"claude-transcript-session-lookup-failed")}function t(a){return(0,g.join)(a,...n.lc)}async function u(a,b,c){let d=a.instanceId??a.cliToolId;try{let e=b.homeDir??(0,f.homedir)();if("string"!=typeof b.worktreePath||0===b.worktreePath.length)return!1;let g=await s(a),h=await z(e,b,g);if(!h)return o.debug("claude-transcript-unavailable",{worktreeId:a.worktreeId,instanceId:d,sessionId:g,reason:g?"no-file":"no-session-pointer"}),!1;let i=await C(a,h,g??"");if(null===i)return!1;let{parsed:k,built:l}=i;if(0===l.turns.length){let b=l.orphanedAssistantRecords;if(o.warn("claude-transcript-no-turn",{worktreeId:a.worktreeId,instanceId:d,path:h,records:k.records.length,malformedLines:k.malformedLines,orphanedAssistantRecords:b,...b>0?{readBytes:i.size-i.startByte,size:i.size}:{}}),b>0&&i.reachedLimit)return await F(a,k.records,g??"",h,c);return!1}(k.malformedLines>0||l.orphanedAssistantRecords>0)&&o.info("claude-transcript-partial-read",{worktreeId:a.worktreeId,instanceId:d,path:h,malformedLines:k.malformedLines,orphanedAssistantRecords:l.orphanedAssistantRecords,sidechainRecords:l.sidechainRecords});let p=await v(a,l.turns);if(await I(a,l.turns.slice(0,l.turns.length-p.turns.length).slice(-G),h),0===p.turns.length)return o.debug("claude-transcript-turns-already-saved",{worktreeId:a.worktreeId,instanceId:d,turnsInWindow:l.turns.length}),await (0,j.fT)(a),!0;p.turns.length>1&&o.info("claude-transcript-backfilling-turns",{worktreeId:a.worktreeId,instanceId:d,path:h,pendingTurns:p.turns.length,turnsInWindow:l.turns.length,anchored:p.anchored});let q=[];for(let b=0;b<p.turns.length;b+=1){let c=0===b?p.previousStartedAt:p.turns[b-1].startedAt;q.push(await y(a,p.turns[b],c))}let r=function(a){let b=new Map,c=null;for(let d of a)if(!d.isSidechain){if((0,n.Yx)(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}(k.records),t=!1;for(let b=0;b<p.turns.length;b+=1){let d=p.turns[b];t=await J(a,d,(0,n.SS)(d),(0,m.Ty)(d,q[b],r.get(d.promptUuid)??0,(0,m.Hz)(p.turns,q,b)),h,c)}return t&&await (0,j.fT)(a),t}catch(b){return o.error("claude-transcript-capture-failed",{worktreeId:a.worktreeId,instanceId:d,error:b instanceof Error?b.message:String(b)}),!1}}async function v(a,b){return(0,m.bk)(a,b,a=>(0,l.qe)(a.promptUuid))}async function w(a,b){try{let c=b.homeDir??(0,f.homedir)();if("string"!=typeof b.worktreePath||0===b.worktreePath.length)return null;return await z(c,b,await s(a))}catch{return null}}async function x(a,b){let c=a.instanceId??a.cliToolId;try{var d;let e=b.homeDir??(0,f.homedir)();if("string"!=typeof b.worktreePath||0===b.worktreePath.length)return null;let g=await s(a),h=await z(e,b,g);if(!h)return null;let i=await A(h);if(null===i)return null;let j=(0,n.aw)(i.text),k=(0,n.Jd)(j.records,g??""),m=k.turns.at(-1);if(m){let a=(0,n.SS)(m);if(0===a.body.length)return null;return{turnKey:(0,l.qe)(a.promptUuid),body:a.body,partial:!1}}if(0===k.orphanedAssistantRecords)return null;let p=function(a,b){let c=[],d=0,e=!1;for(let b of a){if((0,n.Yx)(b))break;if(!b.isSidechain&&"assistant"===b.type)for(let a of(d+=1,b.blocks)){if(c.length>=n.rd){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}}(j.records,g??""),q=(0,n.SS)(p);if(0===q.body.length)return null;return o.info("claude-transcript-progress-headless",{worktreeId:a.worktreeId,instanceId:c,path:h,orphanedAssistantRecords:k.orphanedAssistantRecords,malformedLines:j.malformedLines}),{turnKey:(d=g??"",(0,l.qe)(`${l.ST}${d}`)),body:q.body,partial:!0}}catch(b){return o.debug("claude-transcript-progress-failed",{worktreeId:a.worktreeId,instanceId:c,error:b instanceof Error?b.message:String(b)}),null}}async function y(a,b,c=0){let d=a.instanceId??a.cliToolId;if(!b.promptIsOperatorInput)return o.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,i.Ce)(a,(0,l.H_)(b.promptUuid),b.promptText,b.startedAt,c>0?{adoptionFromMs:c}:{});return"failed"===e.outcome&&o.warn("claude-transcript-user-turn-failed",{worktreeId:a.worktreeId,instanceId:d,sessionId:b.sessionId,promptUuid:b.promptUuid}),e}async function z(a,b,c){var d;if(c){let e=(d=b.worktreePath,(0,g.join)(t(a),(0,n.jA)(d),`${c}${q}`));if(await (0,m.Jj)(e))return e}let e=b.transcriptPathHint;if("string"==typeof e&&e.length>0){let b=(0,m.sx)(t(a),q,e);if(b&&await (0,m.Jj)(b))return b}return null}async function A(a){let b;try{b=await (0,e.open)(a,"r");let{size:c}=await b.stat(),d=Math.max(0,c-4194304),f=c-d;if(f<=0)return{text:"",size:c,startByte:0};let g=Buffer.alloc(f),{bytesRead:h}=await b.read(g,0,f,d),i=g.subarray(0,h);if(0===d)return{text:i.toString("utf8"),size:c,startByte:0};let j=i.indexOf(10);if(-1===j)return{text:"",size:c,startByte:c};return{text:i.subarray(j+1).toString("utf8"),size:c,startByte:d+j+1}}catch(b){return o.warn("claude-transcript-read-failed",{path:a,error:b instanceof Error?b.message:String(b)}),null}finally{await b?.close().catch(()=>{})}}async function B(a,b,c){let d=c-b,e=Buffer.alloc(d),{bytesRead:f}=await a.read(e,0,d,b);if(f!==d)return null;if(0===b)return{text:e.toString("utf8"),startByte:0};let g=e.indexOf(10);return -1===g?{text:"",startByte:c}:{text:e.subarray(g+1).toString("utf8"),startByte:b+g+1}}async function C(a,b,c){let d=await A(b);if(null===d)return null;let e=(0,n.aw)(d.text),f=(0,n.Jd)(e.records,c),g={parsed:e,built:f,size:d.size,startByte:d.startByte,reachedLimit:!1};return f.turns.length>0||0===f.orphanedAssistantRecords||0===d.startByte?g:await D(a,b,c,g)??g}async function D(a,b,c,d){let f,{size:g}=d;try{f=await (0,e.open)(b,"r");let h=d.parsed.records,i=d.parsed.malformedLines,j=d.built,k=d.startByte,l=4194304,m=null;for(;0===j.turns.length&&k>0&&l<0x4000000;){l*=2;let a=await B(f,Math.max(0,g-l),k);if(null===a)return null;let b=(0,n.aw)(a.text);h=[...b.records,...h],i+=b.malformedLines,k=a.startByte;let d=(j=(0,n.Jd)(h,c)).turns.at(-1);d&&(m=function(a,b,c){let{text:d}=a;for(let e=d.indexOf(b);-1!==e;e=d.indexOf(b,e+b.length)){let f=d.lastIndexOf("\n",e)+1,g=d.indexOf("\n",e),h=null;try{h=(0,n.ID)(JSON.parse(d.slice(f,-1===g?d.length:g)))}catch{}if(h?.uuid===b)return c-a.startByte-Buffer.byteLength(d.slice(0,f),"utf8")}return null}(a,d.promptUuid,g))}return o.info("claude-transcript-window-extended",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,path:b,fromBytes:4194304,toBytes:l,size:g,promptOffsetFromEnd:m,records:h.length}),{parsed:{records:h,malformedLines:i},built:j,size:g,startByte:k,reachedLimit:0===j.turns.length&&k>0}}catch(a){return o.warn("claude-transcript-read-failed",{path:b,error:a instanceof Error?a.message:String(a)}),null}finally{await f?.close().catch(()=>{})}}let E={outcome:"skipped",messageId:null,timestampMs:null};async function F(a,b,c,d,e){var f;let g,h=a.instanceId??a.cliToolId,i=(0,n.JU)(b,c);if(null===i)return o.debug("claude-transcript-headless-unkeyed",{worktreeId:a.worktreeId,instanceId:h,path:d}),!1;let{turn:k}=i,q=(0,n.SS)(k);o.info("claude-transcript-headless-turn",{worktreeId:a.worktreeId,instanceId:h,sessionId:k.sessionId,requestId:(0,l.qe)(k.promptUuid),path:d,assistantRecords:k.assistantRecords,overflowed:k.overflowed});let r=await J(a,k,0===q.body.length?q:(f=q,(g=`${p}
112
110
 
113
- ${f.body}`).length>2e5&&(g=g.slice(0,2e5-q.length)+q),{...f,body:g}),(0,m.Ty)(k,X,i.lastRecordAt,null),d,e);return o&&await (0,j.fT)(a),o}let Z=3;async function $(a,b,c,d){return(0,m.c_)(a,b,c,d,H,"claude-transcript-turn-updated")}async function _(a,b,c){return(0,m.NF)(a,b,c,{isWritable:D,requestIdOf:a=>(0,l.qe)(a.promptUuid),render:G,grow:$})}async function aa(a,b,d,e,f,g){let h=a.instanceId??a.cliToolId;if(g&&(g.outcome=void 0),!D(b))return g&&(g.outcome="not_yet_closed"),H.info("claude-transcript-turn-open",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,promptUuid:d.promptUuid,assistantRecords:b.assistantRecords,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!1;if(0===d.body.length)return H.info("claude-transcript-turn-empty",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,promptUuid:d.promptUuid}),!1;d.unknownBlockTypes.length>0&&H.info("claude-transcript-unknown-blocks",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,blockTypes:d.unknownBlockTypes});let i=(0,l.qe)(d.promptUuid),[{getDbInstance:j},{createMessage:k,findMessageByRequestId:m},{broadcastMessage:n}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.resolve().then(c.bind(c,43015))]),o=j(),p=m(o,a.worktreeId,i);if(p)return H.debug("claude-transcript-turn-already-saved",{worktreeId:a.worktreeId,instanceId:h,requestId:i}),await $(a,p,d,f),!0;let q=k(o,{worktreeId:a.worktreeId,role:"assistant",content:d.body,messageType:"normal",timestamp:new Date(e>0?e:Date.now()),cliToolId:a.cliToolId,instanceId:h,requestId:i});return n("message",{worktreeId:a.worktreeId,message:q}),H.info("claude-transcript-turn-saved",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,requestId:i,path:f,bodyLength:d.body.length,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!0}},82450:(a,b,c)=>{c.d(b,{IS:()=>i,LH:()=>o,NN:()=>h,Sj:()=>r,Te:()=>q,aW:()=>p});var d=c(61789),e=c(13033),f=c(96486),g=c(56263);function h(a){let b=(0,d.aJ)(a).split("\n"),c=(0,d.GT)(b),e=c>=0?b.slice(0,c):b,f=-1;for(let a=e.length-1;a>=0;a--)if(/^❯\s+\S/.test(e[a])){f=a;break}let g=f>=0?f+1:0,h=e.slice(g),i=[/CLAUDE_HOOKS_/,/\/bin\/claude/,/^claude\s*$/,/@.*\s+%\s*$/,/^[^⏺]*curl.*POST/,/^[^⏺]*Content-Type/,/^[^⏺]*export\s+CLAUDE_/,/^\s*$/,/^[╭╮╰╯│─\s]+$/,/^[│╭╮╰╯].*[│╭╮╰╯]$/,/Claude Code v[\d.]+/,/^Tips for getting started/,/^Welcome back/,/Run \/init to create/,/^Recent activity/,/^No recent activity/,/▐▛███▜▌|▝▜█████▛▘|▘▘ ▝▝/,/^\s*Opus \d+\.\d+\s*·\s*Claude Max/,/\.com's Organization/,/\?\s*for shortcuts\s*$/,/^─{10,}$/,/^❯\s*$/,d.fW],j=[];for(let a of h)!i.some(b=>b.test(a))&&a.trim()&&j.push(a);return j.join("\n").trim()}function i(a){let b=(0,d.aJ)(a).split("\n"),c=[],e=[/^maenokota@.*%/,/^zsh:/,/^feature-issue-\d+/,/^\s*$/],f=!1,g=[];for(let a of b){if(a.includes("✦")){f=!0;let b=a.indexOf("✦"),c=a.substring(b+1).trim();c&&g.push(c);continue}if(f){if(e.some(b=>b.test(a)))continue;g.push(a)}}if(g.length>0)return g.join("\n").trim();for(let a of b)e.some(b=>b.test(a))||c.push(a);return c.join("\n").trim()}let j=RegExp(`^●\\s+(?:${d.Jr})[\\s:]`),k=/^\$\s+[A-Z][A-Za-z]*(?:\s|$)/,l=/^\d+\s+lines\.\.\.$/,m=/^[◐◑◒◓]/,n=/^(?:git\s+--no-pager|git\s+(?:log|diff|show|status|branch|remote|fetch|pull|push|merge|rebase|checkout|reset|stash|tag|config|clone|init|add|commit|rm|mv|bisect|grep|ls-files|rev-parse|describe|shortlog|blame|reflog|cherry-pick|revert|submodule|worktree)\b|npm\s+|npx\s+|yarn\s+|pnpm\s+|cargo\s+|pip\s+|rustc\s+|cmake\s+|docker\s+|kubectl\s+|aws\s+|gcloud\s+|az\s+|terraform\s+|ansible\s+|curl\s+|wget\s+|ssh\s+|scp\s+|rsync\s+|grep\s+|sed\s+|awk\s+|mkdir\s+|rm\s+|cp\s+|mv\s+|chmod\s+|chown\s+)/;function o(a){let b=(0,d.aJ)(a).split("\n"),c=(0,d.wv)(b),f=c>=0?b.slice(0,c):b,g=-1;for(let a=f.length-1;a>=0;a--){let b=(0,e.IW)(f[a]);if(b&&/^❯\s+\S/.test(b)){g=a;break}}let h=g>=0?g+1:0;if(g>=0)for(;h<f.length&&d.Fg.test(f[h]);)h++;let i=f.slice(h),o=[],p=!1,q=!1;for(let a of i){if(d.JN.test(a))continue;let b=(0,e.IW)(a);if(!b){p=!1,q=!1;continue}if(d.J7.some(a=>a.test(b)))continue;if(k.test(b)){q=!0,p=!1;continue}if(j.test(b))continue;if(m.test(b)){p=!0,q=!1;continue}if(!(l.test(b)||n.test(b))){if(/^❯\s*/.test(b)){p=!1,q=!1;continue}if(!/^[│└]/.test(b)){if(/^●/.test(b)){p=!1,q=!1,o.push(b.replace(/^●\s*/,""));continue}p||q||o.push(b)}}}return o.join("\n").trim()}function p(a){let b=a.split("\n"),c=[];for(let a=0;a<b.length;a++){let f=(0,e.l1)(b[a]);f&&d.Md.test(f)&&c.push(a)}let f=0;c.length>=2&&(f=c[c.length-2]+1);let g=[];for(let a=f;a<b.length;a++){let c=(0,e.l1)(b[a]);!(!c||d.sx.some(a=>a.test(c)))&&(d.Md.test(c)||g.push(c))}return g.join("\n").trim()}function q(a,b,c){if(c&&(0,f.K)(b,c))return"";let e=a.split("\n"),g=function(a,b){switch(b){case"codex":return(0,d.Zu)(a);case"command-code":return(0,d.I$)(a);default:return -1}}(e,b),h=g>=0?e.slice(0,g):e,{skipPatterns:i}=(0,d._X)(b),j=[];for(let a of h){let b=(0,d.aJ)(a);b.trim()&&(i.some(a=>a.test(b))||j.push(b))}return j.join("\n").trim()}function r(a,b=g.Rf,c=g.ky){if(!a||a.length<=b)return a;let d=c+"\n",e=b-d.length;if(e<=0)return c.slice(0,b);let f=a.length-e;if(f>0&&f<a.length){let b=a.charCodeAt(f);b>=56320&&b<=57343&&(f+=1)}return d+a.slice(f)}},96486:(a,b,c)=>{c.d(b,{K:()=>h});var d=c(61789);let e=/^ctx:\d+%\s*[>❯]/,f=/^ctx:\d+%\s*[>❯]\s*\S/,g=/>_ OpenAI Codex \(v\d/;function h(a,b){switch(a){case"codex":let c=(0,d.Zu)(b);if(c<0||(0,d.Nc)(b,c,b.length,!0)>=0)return!1;for(let a=0;a<c;a++)if(g.test((0,d.aJ)(b[a])))return!0;return!1;case"vibe-local":let h=!1;for(let a of b){let b=(0,d.aJ)(a);if(e.test(b)){if(f.test(b))return!1;h=!0}}return h;default:return!1}}}};
111
+ ${f.body}`).length>n.ui&&(g=g.slice(0,n.ui-n.KJ.length)+n.KJ),{...f,body:g}),(0,m.Ty)(k,E,i.lastRecordAt,null),d,e);return r&&await (0,j.fT)(a),r}let G=3;async function H(a,b,c,d){return(0,m.c_)(a,b,c,d,o,"claude-transcript-turn-updated")}async function I(a,b,c){return(0,m.NF)(a,b,c,{isWritable:n.Oc,requestIdOf:a=>(0,l.qe)(a.promptUuid),render:n.SS,grow:H})}async function J(a,b,d,e,f,g){let h=a.instanceId??a.cliToolId;if(g&&(g.outcome=void 0),!(0,n.Oc)(b))return g&&(g.outcome="not_yet_closed"),o.info("claude-transcript-turn-open",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,promptUuid:d.promptUuid,assistantRecords:b.assistantRecords,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!1;if(0===d.body.length)return o.info("claude-transcript-turn-empty",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,promptUuid:d.promptUuid}),!1;d.unknownBlockTypes.length>0&&o.info("claude-transcript-unknown-blocks",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,blockTypes:d.unknownBlockTypes});let i=(0,l.qe)(d.promptUuid),[{getDbInstance:j},{createMessage:k,findMessageByRequestId:m},{broadcastMessage:p}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.resolve().then(c.bind(c,43015))]),q=j(),r=m(q,a.worktreeId,i);if(r)return o.debug("claude-transcript-turn-already-saved",{worktreeId:a.worktreeId,instanceId:h,requestId:i}),await H(a,r,d,f),!0;let s=k(q,{worktreeId:a.worktreeId,role:"assistant",content:d.body,messageType:"normal",timestamp:new Date(e>0?e:Date.now()),cliToolId:a.cliToolId,instanceId:h,requestId:i});return p("message",{worktreeId:a.worktreeId,message:s}),o.info("claude-transcript-turn-saved",{worktreeId:a.worktreeId,instanceId:h,sessionId:d.sessionId,requestId:i,path:f,bodyLength:d.body.length,textBlocks:d.textBlocks,toolBlocks:d.toolBlocks}),!0}},82450:(a,b,c)=>{c.d(b,{IS:()=>i,LH:()=>o,NN:()=>h,Sj:()=>r,Te:()=>q,aW:()=>p});var d=c(61789),e=c(13033),f=c(96486),g=c(56263);function h(a){let b=(0,d.aJ)(a).split("\n"),c=(0,d.GT)(b),e=c>=0?b.slice(0,c):b,f=-1;for(let a=e.length-1;a>=0;a--)if(/^❯\s+\S/.test(e[a])){f=a;break}let g=f>=0?f+1:0,h=e.slice(g),i=[/CLAUDE_HOOKS_/,/\/bin\/claude/,/^claude\s*$/,/@.*\s+%\s*$/,/^[^⏺]*curl.*POST/,/^[^⏺]*Content-Type/,/^[^⏺]*export\s+CLAUDE_/,/^\s*$/,/^[╭╮╰╯│─\s]+$/,/^[│╭╮╰╯].*[│╭╮╰╯]$/,/Claude Code v[\d.]+/,/^Tips for getting started/,/^Welcome back/,/Run \/init to create/,/^Recent activity/,/^No recent activity/,/▐▛███▜▌|▝▜█████▛▘|▘▘ ▝▝/,/^\s*Opus \d+\.\d+\s*·\s*Claude Max/,/\.com's Organization/,/\?\s*for shortcuts\s*$/,/^─{10,}$/,/^❯\s*$/,d.fW],j=[];for(let a of h)!i.some(b=>b.test(a))&&a.trim()&&j.push(a);return j.join("\n").trim()}function i(a){let b=(0,d.aJ)(a).split("\n"),c=[],e=[/^maenokota@.*%/,/^zsh:/,/^feature-issue-\d+/,/^\s*$/],f=!1,g=[];for(let a of b){if(a.includes("✦")){f=!0;let b=a.indexOf("✦"),c=a.substring(b+1).trim();c&&g.push(c);continue}if(f){if(e.some(b=>b.test(a)))continue;g.push(a)}}if(g.length>0)return g.join("\n").trim();for(let a of b)e.some(b=>b.test(a))||c.push(a);return c.join("\n").trim()}let j=RegExp(`^●\\s+(?:${d.Jr})[\\s:]`),k=/^\$\s+[A-Z][A-Za-z]*(?:\s|$)/,l=/^\d+\s+lines\.\.\.$/,m=/^[◐◑◒◓]/,n=/^(?:git\s+--no-pager|git\s+(?:log|diff|show|status|branch|remote|fetch|pull|push|merge|rebase|checkout|reset|stash|tag|config|clone|init|add|commit|rm|mv|bisect|grep|ls-files|rev-parse|describe|shortlog|blame|reflog|cherry-pick|revert|submodule|worktree)\b|npm\s+|npx\s+|yarn\s+|pnpm\s+|cargo\s+|pip\s+|rustc\s+|cmake\s+|docker\s+|kubectl\s+|aws\s+|gcloud\s+|az\s+|terraform\s+|ansible\s+|curl\s+|wget\s+|ssh\s+|scp\s+|rsync\s+|grep\s+|sed\s+|awk\s+|mkdir\s+|rm\s+|cp\s+|mv\s+|chmod\s+|chown\s+)/;function o(a){let b=(0,d.aJ)(a).split("\n"),c=(0,d.wv)(b),f=c>=0?b.slice(0,c):b,g=-1;for(let a=f.length-1;a>=0;a--){let b=(0,e.IW)(f[a]);if(b&&/^❯\s+\S/.test(b)){g=a;break}}let h=g>=0?g+1:0;if(g>=0)for(;h<f.length&&d.Fg.test(f[h]);)h++;let i=f.slice(h),o=[],p=!1,q=!1;for(let a of i){if(d.JN.test(a))continue;let b=(0,e.IW)(a);if(!b){p=!1,q=!1;continue}if(d.J7.some(a=>a.test(b)))continue;if(k.test(b)){q=!0,p=!1;continue}if(j.test(b))continue;if(m.test(b)){p=!0,q=!1;continue}if(!(l.test(b)||n.test(b))){if(/^❯\s*/.test(b)){p=!1,q=!1;continue}if(!/^[│└]/.test(b)){if(/^●/.test(b)){p=!1,q=!1,o.push(b.replace(/^●\s*/,""));continue}p||q||o.push(b)}}}return o.join("\n").trim()}function p(a){let b=a.split("\n"),c=[];for(let a=0;a<b.length;a++){let f=(0,e.l1)(b[a]);f&&d.Md.test(f)&&c.push(a)}let f=0;c.length>=2&&(f=c[c.length-2]+1);let g=[];for(let a=f;a<b.length;a++){let c=(0,e.l1)(b[a]);!(!c||d.sx.some(a=>a.test(c)))&&(d.Md.test(c)||g.push(c))}return g.join("\n").trim()}function q(a,b,c){if(c&&(0,f.K)(b,c))return"";let e=a.split("\n"),g=function(a,b){switch(b){case"codex":return(0,d.Zu)(a);case"command-code":return(0,d.I$)(a);default:return -1}}(e,b),h=g>=0?e.slice(0,g):e,{skipPatterns:i}=(0,d._X)(b),j=[];for(let a of h){let b=(0,d.aJ)(a);b.trim()&&(i.some(a=>a.test(b))||j.push(b))}return j.join("\n").trim()}function r(a,b=g.Rf,c=g.ky){if(!a||a.length<=b)return a;let d=c+"\n",e=b-d.length;if(e<=0)return c.slice(0,b);let f=a.length-e;if(f>0&&f<a.length){let b=a.charCodeAt(f);b>=56320&&b<=57343&&(f+=1)}return d+a.slice(f)}},96486:(a,b,c)=>{c.d(b,{K:()=>h});var d=c(61789);let e=/^ctx:\d+%\s*[>❯]/,f=/^ctx:\d+%\s*[>❯]\s*\S/,g=/>_ OpenAI Codex \(v\d/;function h(a,b){switch(a){case"codex":let c=(0,d.Zu)(b);if(c<0||(0,d.Nc)(b,c,b.length,!0)>=0)return!1;for(let a=0;a<c;a++)if(g.test((0,d.aJ)(b[a])))return!0;return!1;case"vibe-local":let h=!1;for(let a of b){let b=(0,d.aJ)(a);if(e.test(b)){if(f.test(b))return!1;h=!0}}return h;default:return!1}}}};
@@ -1 +1 @@
1
- "use strict";exports.id=9051,exports.ids=[9051],exports.modules={79051:(a,b,c)=>{c.d(b,{nX:()=>G.nX,z0:()=>z,lY:()=>G.lY,SN:()=>G.SN,Pt:()=>B,ID:()=>n,Wz:()=>D,NM:()=>w,ac:()=>x,$G:()=>m,$Z:()=>o,t$:()=>s,mk:()=>J,Lz:()=>E,om:()=>F.om,FW:()=>S.FW,C4:()=>S.C4,Z3:()=>S.Z3,S7:()=>Q,lw:()=>R,x7:()=>d.x7,jr:()=>G.jr,pc:()=>F.Iz,Ey:()=>M,X_:()=>N,VM:()=>L,oC:()=>K,X0:()=>F.X0});var d=c(63271),e=c(46065),f=c(2412),g=c(33873),h=c.n(g),i=c(79748),j=c(65417),k=c(72626);let l=(0,k.h)("git-status");async function m(a,b){let c,[d,f,g]=await Promise.all([(0,e.Bc)(["rev-parse","--abbrev-ref","HEAD"],a),(0,e.Bc)(["rev-parse","--short","HEAD"],a),(0,e.Bc)(["status","--porcelain"],a)]);return c=null===d?"(unknown)":"HEAD"===d?"(detached HEAD)":d,{currentBranch:c,initialBranch:b,isBranchMismatch:null!==b&&"(unknown)"!==c&&"(detached HEAD)"!==c&&c!==b,commitHash:f??"(unknown)",isDirty:null!==g&&g.length>0}}async function n(a){let b=await (0,e.TT)(["rev-list","--left-right","--count","@{upstream}...HEAD"],a);if(!b.ok){var c;let a=b.timedOut?"error":(c=b.stderr,/no upstream/i.test(c)?"no_upstream":/HEAD does not point to a branch|not point to a branch/i.test(c)?"detached":/unknown revision|ambiguous argument|bad revision/i.test(c)?"upstream_gone":"error");return l.debug("git:ahead-behind-unavailable",{reason:a}),{aheadBehind:null,reason:a}}let d=b.stdout.split(" ");if(2!==d.length)return{aheadBehind:null,reason:"error"};let f=parseInt(d[0],10),g=parseInt(d[1],10);return Number.isInteger(f)&&Number.isInteger(g)?{aheadBehind:{ahead:g,behind:f},reason:null}:{aheadBehind:null,reason:"error"}}async function o(a){let b=await (0,e.Bc)(["rev-parse","--git-path","FETCH_HEAD","--git-common-dir"],a);if(null===b)return null;let c=b.split("\n").map(a=>a.trim()).filter(a=>a.length>0);if(0===c.length)return null;let d=new Set([h().resolve(a,c[0])]);c[1]&&d.add(h().resolve(a,c[1],"FETCH_HEAD"));let f=null;for(let a of d)try{let{mtimeMs:b}=await (0,i.stat)(a);(null===f||b>f)&&(f=b)}catch{}return null===f?null:Math.round(f)}function p(a){switch(a){case"A":return"added";case"D":return"deleted";case"R":case"C":return"renamed";default:return"modified"}}let q=new Set(["DD","AU","UD","UA","DU","AA","UU"]);function r(a){let b=a.indexOf(" -> ");return -1!==b?a.slice(b+4):a}async function s(a){return function(a){let b=[],c=[],d=[];if(!a)return{staged:b,unstaged:c,untracked:d};for(let e of a.split("\n")){if(e.length<4)continue;let a=e[0],f=e[1],g=e.slice(3);if(!g)continue;if("?"===a&&"?"===f){d.push({path:r(g),status:"untracked"});continue}let h=r(g);if("U"===a||"U"===f||q.has(`${a}${f}`)){c.push({path:h,status:"unmerged"});continue}" "!==a&&"?"!==a&&b.push({path:h,status:p(a)})," "!==f&&"?"!==f&&c.push({path:h,status:p(f)})}return{staged:b,unstaged:c,untracked:d}}(await (0,e.rS)(["status","--porcelain"],a,j.Ev))}var t=c(29021),u=c.n(t);let v=(0,k.h)("git-log");async function w(a,b=50,c=0){let d=(await (0,e.rS)(["log",`--max-count=${b}`,`--skip=${c}`,"--format=%H%n%h%n%s%n%an%n%aI","--"],a,e.t1)).trim();if(!d)return[];let f=d.split("\n"),g=[];for(let a=0;a+4<f.length;a+=5)g.push({hash:f[a],shortHash:f[a+1],message:f[a+2],author:f[a+3],date:f[a+4]});return g}async function x(a,b){try{let c=(await (0,e.rS)(["log","-1","--format=%H%n%h%n%s%n%an%n%aI",b,"--"],a,e.t1)).trim().split("\n");if(c.length<5)return null;let d={hash:c[0],shortHash:c[1],message:c[2],author:c[3],date:c[4]},f=await (0,e.rS)(["diff-tree","--no-commit-id","-r","--name-status",b,"--"],a,e.t1),g=function(a){let b=[];for(let c of a.trim().split("\n")){if(!c.trim())continue;let a=c.split(" ");if(a.length<2)continue;let d=a[0].trim(),e=a[a.length-1].trim();d.startsWith("R")?b.push({path:e,status:"renamed"}):"A"===d?b.push({path:e,status:"added"}):"D"===d?b.push({path:e,status:"deleted"}):b.push({path:e,status:"modified"})}return b}(f);return{commit:d,files:g}}catch(b){if(b instanceof d.y0||b instanceof d.wo)throw b;let a=b instanceof Error?b.message:"";if(a.includes("unknown revision")||a.includes("bad object"))return null;throw b}}async function y(a,b,c){if(!u().existsSync(a))return[];try{let{stdout:d}=await (0,e.mf)("git",["log","--all",`--since=${b}`,`--until=${c}`,`--format=%h\x1f%s\x1f%an`,"--"],{cwd:a,timeout:5e3}),f=d.trim();if(!f)return[];let g=[];for(let a of f.split("\n")){let b=a.split("\x1f");3===b.length&&g.push({shortHash:b[0],message:b[1],author:b[2]})}return g}catch(b){return v.error("git:commit-log-failed",{repoPath:a,error:b instanceof Error?b.message:"Unknown error"}),[]}}async function z(a,b,c){let d=await Promise.allSettled(a.map(async a=>({id:a.id,name:a.name,commits:await y(a.path,b,c)}))),e=new Map;for(let a of d)"fulfilled"===a.status&&a.value.commits.length>0&&e.set(a.value.id,{name:a.value.name,commits:a.value.commits});return e}let A=/(?:(?:closes|fixes|resolves)\s+)?#(\d+)/gi;function B(a){let b=new Set;for(let c of a){let a;for(A.lastIndex=0;null!==(a=A.exec(c));)b.add(parseInt(a[1],10))}return Array.from(b).sort((a,b)=>a-b)}let C=(0,k.h)("git-diff");async function D(a,b,c){try{return(await (0,e.rS)(["show",b,"--",c],a,e.t1)).trim()||null}catch(a){if(a instanceof d.y0||a instanceof d.wo)throw a;return null}}async function E(a,b,c){let f=function(a,b){switch(b){case"staged":return["diff","--cached","--",a];case"untracked":return["diff","--no-index","--","/dev/null",a];default:return["diff","--",a]}}(b,c);try{let{stdout:b}=await (0,e.mf)("git",f,{cwd:a,timeout:e.t1});return b.trim()||null}catch(a){if(a.killed||"ERR_CHILD_PROCESS_EXEC_TIMEOUT"===a.code||"ETIMEDOUT"===a.code)throw new d.y0(`Git command timed out after ${e.t1}ms`);if((a.stderr||a.message||"").includes("not a git repository"))throw new d.wo("Not a git repository");if("string"==typeof a.stdout)return a.stdout.trim()||null;throw C.error("git:working-diff-failed",{args:f.join(" "),error:a.message}),Error("Failed to execute git command")}}var F=c(26833),G=c(39988);let H=(0,k.h)("git-stash"),I=/^stash@\{(\d+)\}$/;async function J(a){let b=await (0,e.Bc)(["stash","list","--format=%gd%x09%s%x09%cI%x09%H"],a);if(null===b)return[];let c=[];if(!b||!b.trim())return c;for(let a of b.split("\n")){if(!a.trim())continue;let[b="",d="",e="",f=""]=a.split(" "),g=b.match(I);g&&c.push({index:parseInt(g[1],10),message:d,branch:function(a){let b=a.match(/^WIP on ([^:]+):/);if(b)return b[1].trim()||null;let c=a.match(/^On ([^:]+):/);return c&&c[1].trim()||null}(d),date:e,sha:f})}return c}async function K(a,b){let{message:c,includeUntracked:f}=b;await (0,e.dX)(a,async()=>{let b=["stash","push"];f&&b.push("--include-untracked"),c&&b.push("-m",c),b.push("--");try{await (0,e.rS)(b,a,j.Ev)}catch(c){let a=c instanceof Error?c.message:"",b=c?.stderr??"";if(/No local changes to save|No stash entries|No local changes/i.test(`${b} ${a}`))throw new d.s$("No local changes to stash");throw c}})}async function L(a,b){return(0,e.dX)(a,async()=>{let c=await (0,e.mY)(["stash","pop","--",`stash@{${b}}`],a);return c.conflict?{...c,stashRetained:!0}:c})}async function M(a,b){return(0,e.dX)(a,async()=>(0,e.mY)(["stash","apply","--",`stash@{${b}}`],a))}async function N(a,b){H.warn("git:danger:stash-drop",{operation:"stash-drop",worktreePath:a,index:b,timestamp:new Date().toISOString()}),await (0,e.dX)(a,async()=>{await (0,e.rS)(["stash","drop","--",`stash@{${b}}`],a,j.Ev)})}let O=(0,k.h)("git-reset");async function P(a){let b=await (0,e.Bc)(["rev-parse","--abbrev-ref","HEAD"],a);if(null===b)return!1;let c=b.trim(),d=await (0,f.Qb)(a);return"string"==typeof d?d===c:null!==d&&("main"===c||"master"===c)}async function Q(a,b){let{target:c,mode:f}=b;if("hard"===f){if(await P(a))throw O.warn("git:danger:hard-reset-blocked",{operation:"reset",worktreePath:a,target:c,mode:f,timestamp:new Date().toISOString()}),new d.BN("Cannot hard-reset the default branch");O.warn("git:danger:hard-reset",{operation:"reset",worktreePath:a,target:c,mode:f,timestamp:new Date().toISOString()})}await (0,e.dX)(a,async()=>{await (0,e.rS)(["reset",`--${f}`,c,"--"],a,j.Ev)})}async function R(a,b){let{commitHash:c,noCommit:d}=b;return O.warn("git:danger:revert",{operation:"revert",worktreePath:a,commitHash:c,noCommit:!0===d,timestamp:new Date().toISOString()}),(0,e.dX)(a,async()=>{let b=["revert"];return d&&b.push("--no-commit"),b.push(c,"--"),(0,e.mY)(b,a)})}var S=c(59082)}};
1
+ "use strict";exports.id=9051,exports.ids=[9051],exports.modules={79051:(a,b,c)=>{c.d(b,{nX:()=>G.nX,z0:()=>z,lY:()=>G.lY,SN:()=>G.SN,Pt:()=>B,ID:()=>n,Wz:()=>D,NM:()=>w,ac:()=>x,$G:()=>m,$Z:()=>o,t$:()=>s,mk:()=>J,Lz:()=>E,om:()=>F.om,FW:()=>S.FW,C4:()=>S.C4,Z3:()=>S.Z3,S7:()=>Q,lw:()=>R,x7:()=>d.x7,jr:()=>G.jr,pc:()=>F.Iz,Ey:()=>M,X_:()=>N,VM:()=>L,oC:()=>K,X0:()=>F.X0});var d=c(63271),e=c(46065),f=c(2412),g=c(33873),h=c.n(g),i=c(79748),j=c(65417),k=c(72626);let l=(0,k.h)("git-status");async function m(a,b){let c,[d,f,g]=await Promise.all([(0,e.Bc)(["rev-parse","--abbrev-ref","HEAD"],a),(0,e.Bc)(["rev-parse","--short","HEAD"],a),(0,e.Bc)(["status","--porcelain"],a)]);c=null===d?"(unknown)":"HEAD"===d?"(detached HEAD)":d;let h=null===g;return{currentBranch:c,initialBranch:b,isBranchMismatch:null!==b&&"(unknown)"!==c&&"(detached HEAD)"!==c&&c!==b,commitHash:f??"(unknown)",isDirty:!h&&g.length>0,...h?{statusUnknown:!0}:{}}}async function n(a){let b=await (0,e.TT)(["rev-list","--left-right","--count","@{upstream}...HEAD"],a);if(!b.ok){var c;let a=b.timedOut?"error":(c=b.stderr,/no upstream/i.test(c)?"no_upstream":/HEAD does not point to a branch|not point to a branch/i.test(c)?"detached":/unknown revision|ambiguous argument|bad revision/i.test(c)?"upstream_gone":"error");return l.debug("git:ahead-behind-unavailable",{reason:a}),{aheadBehind:null,reason:a}}let d=b.stdout.split(" ");if(2!==d.length)return{aheadBehind:null,reason:"error"};let f=parseInt(d[0],10),g=parseInt(d[1],10);return Number.isInteger(f)&&Number.isInteger(g)?{aheadBehind:{ahead:g,behind:f},reason:null}:{aheadBehind:null,reason:"error"}}async function o(a){let b=await (0,e.Bc)(["rev-parse","--git-path","FETCH_HEAD","--git-common-dir"],a);if(null===b)return null;let c=b.split("\n").map(a=>a.trim()).filter(a=>a.length>0);if(0===c.length)return null;let d=new Set([h().resolve(a,c[0])]);c[1]&&d.add(h().resolve(a,c[1],"FETCH_HEAD"));let f=null;for(let a of d)try{let{mtimeMs:b}=await (0,i.stat)(a);(null===f||b>f)&&(f=b)}catch{}return null===f?null:Math.round(f)}function p(a){switch(a){case"A":return"added";case"D":return"deleted";case"R":case"C":return"renamed";default:return"modified"}}let q=new Set(["DD","AU","UD","UA","DU","AA","UU"]);function r(a){let b=a.indexOf(" -> ");return -1!==b?a.slice(b+4):a}async function s(a){return function(a){let b=[],c=[],d=[];if(!a)return{staged:b,unstaged:c,untracked:d};for(let e of a.split("\n")){if(e.length<4)continue;let a=e[0],f=e[1],g=e.slice(3);if(!g)continue;if("?"===a&&"?"===f){d.push({path:r(g),status:"untracked"});continue}let h=r(g);if("U"===a||"U"===f||q.has(`${a}${f}`)){c.push({path:h,status:"unmerged"});continue}" "!==a&&"?"!==a&&b.push({path:h,status:p(a)})," "!==f&&"?"!==f&&c.push({path:h,status:p(f)})}return{staged:b,unstaged:c,untracked:d}}(await (0,e.rS)(["status","--porcelain"],a,j.Ev))}var t=c(29021),u=c.n(t);let v=(0,k.h)("git-log");async function w(a,b=50,c=0){let d=(await (0,e.rS)(["log",`--max-count=${b}`,`--skip=${c}`,"--format=%H%n%h%n%s%n%an%n%aI","--"],a,e.t1)).trim();if(!d)return[];let f=d.split("\n"),g=[];for(let a=0;a+4<f.length;a+=5)g.push({hash:f[a],shortHash:f[a+1],message:f[a+2],author:f[a+3],date:f[a+4]});return g}async function x(a,b){try{let c=(await (0,e.rS)(["log","-1","--format=%H%n%h%n%s%n%an%n%aI",b,"--"],a,e.t1)).trim().split("\n");if(c.length<5)return null;let d={hash:c[0],shortHash:c[1],message:c[2],author:c[3],date:c[4]},f=await (0,e.rS)(["diff-tree","--no-commit-id","-r","--name-status",b,"--"],a,e.t1),g=function(a){let b=[];for(let c of a.trim().split("\n")){if(!c.trim())continue;let a=c.split(" ");if(a.length<2)continue;let d=a[0].trim(),e=a[a.length-1].trim();d.startsWith("R")?b.push({path:e,status:"renamed"}):"A"===d?b.push({path:e,status:"added"}):"D"===d?b.push({path:e,status:"deleted"}):b.push({path:e,status:"modified"})}return b}(f);return{commit:d,files:g}}catch(b){if(b instanceof d.y0||b instanceof d.wo)throw b;let a=b instanceof Error?b.message:"";if(a.includes("unknown revision")||a.includes("bad object"))return null;throw b}}async function y(a,b,c){if(!u().existsSync(a))return[];try{let{stdout:d}=await (0,e.mf)("git",["log","--all",`--since=${b}`,`--until=${c}`,`--format=%h\x1f%s\x1f%an`,"--"],{cwd:a,timeout:5e3}),f=d.trim();if(!f)return[];let g=[];for(let a of f.split("\n")){let b=a.split("\x1f");3===b.length&&g.push({shortHash:b[0],message:b[1],author:b[2]})}return g}catch(b){return v.error("git:commit-log-failed",{repoPath:a,error:b instanceof Error?b.message:"Unknown error"}),[]}}async function z(a,b,c){let d=await Promise.allSettled(a.map(async a=>({id:a.id,name:a.name,commits:await y(a.path,b,c)}))),e=new Map;for(let a of d)"fulfilled"===a.status&&a.value.commits.length>0&&e.set(a.value.id,{name:a.value.name,commits:a.value.commits});return e}let A=/(?:(?:closes|fixes|resolves)\s+)?#(\d+)/gi;function B(a){let b=new Set;for(let c of a){let a;for(A.lastIndex=0;null!==(a=A.exec(c));)b.add(parseInt(a[1],10))}return Array.from(b).sort((a,b)=>a-b)}let C=(0,k.h)("git-diff");async function D(a,b,c){try{return(await (0,e.rS)(["show",b,"--",c],a,e.t1)).trim()||null}catch(a){if(a instanceof d.y0||a instanceof d.wo)throw a;return null}}async function E(a,b,c){let f=function(a,b){switch(b){case"staged":return["diff","--cached","--",a];case"untracked":return["diff","--no-index","--","/dev/null",a];default:return["diff","--",a]}}(b,c);try{let{stdout:b}=await (0,e.mf)("git",f,{cwd:a,timeout:e.t1});return b.trim()||null}catch(a){if(a.killed||"ERR_CHILD_PROCESS_EXEC_TIMEOUT"===a.code||"ETIMEDOUT"===a.code)throw new d.y0(`Git command timed out after ${e.t1}ms`);if((a.stderr||a.message||"").includes("not a git repository"))throw new d.wo("Not a git repository");if("string"==typeof a.stdout)return a.stdout.trim()||null;throw C.error("git:working-diff-failed",{args:f.join(" "),error:a.message}),Error("Failed to execute git command")}}var F=c(26833),G=c(39988);let H=(0,k.h)("git-stash"),I=/^stash@\{(\d+)\}$/;async function J(a){let b=await (0,e.Bc)(["stash","list","--format=%gd%x09%s%x09%cI%x09%H"],a);if(null===b)return[];let c=[];if(!b||!b.trim())return c;for(let a of b.split("\n")){if(!a.trim())continue;let[b="",d="",e="",f=""]=a.split(" "),g=b.match(I);g&&c.push({index:parseInt(g[1],10),message:d,branch:function(a){let b=a.match(/^WIP on ([^:]+):/);if(b)return b[1].trim()||null;let c=a.match(/^On ([^:]+):/);return c&&c[1].trim()||null}(d),date:e,sha:f})}return c}async function K(a,b){let{message:c,includeUntracked:f}=b;await (0,e.dX)(a,async()=>{let b=["stash","push"];f&&b.push("--include-untracked"),c&&b.push("-m",c),b.push("--");try{await (0,e.rS)(b,a,j.Ev)}catch(c){let a=c instanceof Error?c.message:"",b=c?.stderr??"";if(/No local changes to save|No stash entries|No local changes/i.test(`${b} ${a}`))throw new d.s$("No local changes to stash");throw c}})}async function L(a,b){return(0,e.dX)(a,async()=>{let c=await (0,e.mY)(["stash","pop","--",`stash@{${b}}`],a);return c.conflict?{...c,stashRetained:!0}:c})}async function M(a,b){return(0,e.dX)(a,async()=>(0,e.mY)(["stash","apply","--",`stash@{${b}}`],a))}async function N(a,b){H.warn("git:danger:stash-drop",{operation:"stash-drop",worktreePath:a,index:b,timestamp:new Date().toISOString()}),await (0,e.dX)(a,async()=>{await (0,e.rS)(["stash","drop","--",`stash@{${b}}`],a,j.Ev)})}let O=(0,k.h)("git-reset");async function P(a){let b=await (0,e.Bc)(["rev-parse","--abbrev-ref","HEAD"],a);if(null===b)throw new d.y0("Could not verify current branch");let c=b.trim(),g=await (0,f.Qb)(a);return"string"==typeof g?g===c:null!==g&&("main"===c||"master"===c)}async function Q(a,b){let{target:c,mode:f}=b;if("hard"===f){if(await P(a))throw O.warn("git:danger:hard-reset-blocked",{operation:"reset",worktreePath:a,target:c,mode:f,timestamp:new Date().toISOString()}),new d.BN("Cannot hard-reset the default branch");O.warn("git:danger:hard-reset",{operation:"reset",worktreePath:a,target:c,mode:f,timestamp:new Date().toISOString()})}await (0,e.dX)(a,async()=>{await (0,e.rS)(["reset",`--${f}`,c,"--"],a,j.Ev)})}async function R(a,b){let{commitHash:c,noCommit:d}=b;return O.warn("git:danger:revert",{operation:"revert",worktreePath:a,commitHash:c,noCommit:!0===d,timestamp:new Date().toISOString()}),(0,e.dX)(a,async()=>{let b=["revert"];return d&&b.push("--no-commit"),b.push(c,"--"),(0,e.mY)(b,a)})}var S=c(59082)}};
@@ -1 +1 @@
1
- "use strict";exports.id=9130,exports.ids=[9130],exports.modules={2669:(a,b,c)=>{c.d(b,{JI:()=>n,M7:()=>d,Sr:()=>h,Zf:()=>f,c7:()=>e,lU:()=>k,mR:()=>j,qO:()=>i,su:()=>m,wQ:()=>l});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"}}function i(a,b){return`${a} exited before reaching its input prompt: the tmux session '${b}' is back at a shell, so this is not a slow start and waiting will not help. The message was not delivered. Run \`commandmate capture <worktree-id>\` to see why it exited (for example a startup dialog answered with exit, or a missing login), fix that, then send again.`}class j 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 k 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 l(a){return o(a)===d}function m(a){let b=o(a);return void 0!==b&&g.includes(b)}function n(a){return o(a)===f}function o(a){if("object"!=typeof a||null===a)return;let b=a.code;return"string"==typeof b?b:void 0}},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(56365);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)},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`}}}}};
1
+ "use strict";exports.id=9130,exports.ids=[9130],exports.modules={2669:(a,b,c)=>{c.d(b,{JI:()=>n,M7:()=>d,Sr:()=>h,Zf:()=>f,c7:()=>e,lU:()=>k,mR:()=>j,qO:()=>i,su:()=>m,wQ:()=>l});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"}}function i(a,b){return`${a} exited before reaching its input prompt: the tmux session '${b}' is back at a shell, so this is not a slow start and waiting will not help. The message was not delivered. Run \`commandmate capture <worktree-id>\` to see why it exited (for example a startup dialog answered with exit, or a missing login), fix that, then send again.`}class j 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 k 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 l(a){return o(a)===d}function m(a){let b=o(a);return void 0!==b&&g.includes(b)}function n(a){return o(a)===f}function o(a){if("object"!=typeof a||null===a)return;let b=a.code;return"string"==typeof b?b:void 0}},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(59409);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)},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`}}}}};