commandmate 0.10.3 → 0.10.4

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 (383) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +135 -135
  3. package/.next/app-path-routes-manifest.json +28 -28
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +15 -15
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/api/app/update/route.js +3 -3
  9. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/app/update-check/route.js +1 -1
  11. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  13. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  14. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  16. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  17. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/assistant/messages/route.js +1 -1
  19. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  20. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/assistant/session/route.js +1 -1
  22. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  23. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/assistant/start/route.js +1 -1
  25. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  26. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/assistant/terminal/route.js +3 -2
  28. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  29. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/assistant/tools/route.js +1 -1
  31. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  32. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/daily-summary/route.js +1 -1
  37. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  38. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  40. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  41. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  46. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  47. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  50. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  51. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/repositories/[id]/route.js +1 -47
  54. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  55. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  57. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +1 -1
  58. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  60. package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +1 -1
  61. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  63. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  64. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/clone/route.js +1 -1
  66. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  67. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/excluded/route.js +1 -47
  69. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  70. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/repositories/restore/route.js +1 -1
  72. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  73. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/repositories/route.js +1 -1
  75. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  76. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/repositories/scan/route.js +1 -1
  78. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  79. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/repositories/sync/route.js +1 -1
  81. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  82. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/todos/route.js +1 -1
  88. package/.next/server/app/api/todos/route.js.nft.json +1 -1
  89. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  91. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  92. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  94. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  95. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  97. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  98. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  100. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  101. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  104. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  107. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  109. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  110. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  113. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  116. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  119. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  146. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  149. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  152. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  173. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  176. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  182. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  185. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  188. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  191. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +2 -2
  196. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  197. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  200. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  206. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  218. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  221. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
  223. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  233. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  236. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
  239. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  242. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  245. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  248. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  251. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  254. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  257. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  260. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  263. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  266. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/api/worktrees/route.js +1 -1
  268. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  269. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/chat/page.js +1 -1
  271. package/.next/server/app/chat/page.js.nft.json +1 -1
  272. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  273. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  274. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  275. package/.next/server/app/more/page.js +2 -2
  276. package/.next/server/app/more/page.js.nft.json +1 -1
  277. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  278. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  279. package/.next/server/app/page.js +1 -1
  280. package/.next/server/app/page.js.nft.json +1 -1
  281. package/.next/server/app/page_client-reference-manifest.js +1 -1
  282. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  283. package/.next/server/app/repositories/page.js +1 -1
  284. package/.next/server/app/repositories/page.js.nft.json +1 -1
  285. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  286. package/.next/server/app/review/page.js +1 -1
  287. package/.next/server/app/review/page.js.nft.json +1 -1
  288. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  289. package/.next/server/app/sessions/page.js +1 -1
  290. package/.next/server/app/sessions/page.js.nft.json +1 -1
  291. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  292. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  293. package/.next/server/app/worktrees/[id]/page.js +8 -8
  294. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  295. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  296. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  297. package/.next/server/app-paths-manifest.json +28 -28
  298. package/.next/server/chunks/1068.js +1 -1
  299. package/.next/server/chunks/1117.js +1 -0
  300. package/.next/server/chunks/233.js +1 -1
  301. package/.next/server/chunks/2404.js +1 -1
  302. package/.next/server/chunks/3270.js +1 -1
  303. package/.next/server/chunks/3480.js +2 -2
  304. package/.next/server/chunks/3543.js +1 -1
  305. package/.next/server/chunks/3945.js +1 -1
  306. package/.next/server/chunks/406.js +47 -0
  307. package/.next/server/chunks/4444.js +1 -1
  308. package/.next/server/chunks/5381.js +1 -47
  309. package/.next/server/chunks/5959.js +2 -2
  310. package/.next/server/chunks/646.js +33 -0
  311. package/.next/server/chunks/8681.js +1 -0
  312. package/.next/server/chunks/8807.js +305 -300
  313. package/.next/server/chunks/9355.js +1 -1
  314. package/.next/server/chunks/9687.js +1 -1
  315. package/.next/server/middleware-manifest.json +5 -5
  316. package/.next/server/pages/500.html +1 -1
  317. package/.next/server/pages-manifest.json +1 -1
  318. package/.next/server/server-reference-manifest.json +1 -1
  319. package/.next/static/chunks/4560-2bf9cb6504cc4425.js +1 -0
  320. package/.next/static/chunks/7347-a013a163a75030ec.js +1 -0
  321. package/.next/static/chunks/app/chat/page-5d20240f98c07cee.js +1 -0
  322. package/.next/static/chunks/app/layout-fe5857360dfba2b9.js +1 -0
  323. package/.next/static/chunks/app/more/page-af1d2af13ea901d2.js +1 -0
  324. package/.next/static/chunks/app/page-3bbe737ec910d1fb.js +1 -0
  325. package/.next/static/chunks/app/repositories/page-ace9134ac165a6de.js +1 -0
  326. package/.next/static/chunks/app/review/page-331b80f4f58582bc.js +1 -0
  327. package/.next/static/chunks/app/sessions/page-d694149a7e8649b6.js +1 -0
  328. package/.next/static/chunks/app/worktrees/[id]/page-932a52f8d11971f7.js +1 -0
  329. package/.next/static/css/d7e2e8d1b8d69d36.css +1 -0
  330. package/.next/trace +10 -10
  331. package/dist/cli/commands/quickstart.d.ts.map +1 -1
  332. package/dist/cli/commands/quickstart.js +27 -0
  333. package/dist/cli/commands/status.d.ts.map +1 -1
  334. package/dist/cli/commands/status.js +19 -0
  335. package/dist/cli/types/index.d.ts +6 -0
  336. package/dist/cli/types/index.d.ts.map +1 -1
  337. package/dist/cli/utils/agent-instances.d.ts +1 -1
  338. package/dist/cli/utils/agent-instances.d.ts.map +1 -1
  339. package/dist/cli/utils/agent-instances.js +8 -1
  340. package/dist/cli/utils/api-client.d.ts +36 -0
  341. package/dist/cli/utils/api-client.d.ts.map +1 -1
  342. package/dist/cli/utils/api-client.js +82 -0
  343. package/dist/cli/utils/daemon.d.ts.map +1 -1
  344. package/dist/cli/utils/daemon.js +44 -9
  345. package/dist/cli/utils/package-info.d.ts +17 -0
  346. package/dist/cli/utils/package-info.d.ts.map +1 -0
  347. package/dist/cli/utils/package-info.js +31 -0
  348. package/dist/cli/utils/pid-manager.d.ts +65 -9
  349. package/dist/cli/utils/pid-manager.d.ts.map +1 -1
  350. package/dist/cli/utils/pid-manager.js +81 -21
  351. package/dist/cli/utils/process-inspector.d.ts +27 -0
  352. package/dist/cli/utils/process-inspector.d.ts.map +1 -0
  353. package/dist/cli/utils/process-inspector.js +37 -0
  354. package/dist/server/src/config/github-links.js +22 -0
  355. package/dist/server/src/lib/db/db-instance.js +22 -3
  356. package/dist/server/src/lib/db/db-repository.js +107 -19
  357. package/dist/server/src/lib/db/db.js +3 -2
  358. package/dist/server/src/lib/db/memo-db.js +32 -1
  359. package/dist/server/src/lib/db/migrations/index.js +2 -0
  360. package/dist/server/src/lib/db/migrations/runner.js +11 -1
  361. package/dist/server/src/lib/db/migrations/v43-remove-cm-root-dir-ghost-repository.js +126 -0
  362. package/dist/server/src/lib/git/worktrees.js +90 -0
  363. package/dist/server/src/lib/job-executor.js +8 -2
  364. package/dist/server/src/lib/realtime/types.js +76 -0
  365. package/dist/server/src/lib/schedule-manager.js +9 -1
  366. package/dist/server/src/lib/version-checker.js +297 -0
  367. package/dist/server/src/lib/ws-server.js +37 -0
  368. package/package.json +1 -1
  369. package/.next/server/chunks/2464.js +0 -33
  370. package/.next/server/chunks/6791.js +0 -47
  371. package/.next/static/chunks/7347-4a031aecf4664a6d.js +0 -1
  372. package/.next/static/chunks/8954-ce15ee4d0423f1b1.js +0 -1
  373. package/.next/static/chunks/app/chat/page-dee86bdf87516e40.js +0 -1
  374. package/.next/static/chunks/app/layout-d02f4691a4eff86b.js +0 -1
  375. package/.next/static/chunks/app/more/page-39ec8b5f27cf52e7.js +0 -1
  376. package/.next/static/chunks/app/page-ebf1db9826b4065d.js +0 -1
  377. package/.next/static/chunks/app/repositories/page-2be54cae5fcc1f7a.js +0 -1
  378. package/.next/static/chunks/app/review/page-ac4efe6857a0f3bf.js +0 -1
  379. package/.next/static/chunks/app/sessions/page-dc545a3d45374187.js +0 -1
  380. package/.next/static/chunks/app/worktrees/[id]/page-9eb2f37809919531.js +0 -1
  381. package/.next/static/css/eabd34bf2ab147a4.css +0 -1
  382. /package/.next/static/{Ndx_NzkoP54cD0UCmjUlu → uBCIYS1Hth7V4unroKqGu}/_buildManifest.js +0 -0
  383. /package/.next/static/{Ndx_NzkoP54cD0UCmjUlu → uBCIYS1Hth7V4unroKqGu}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=3270,exports.ids=[3270],exports.modules={3270:(a,b,c)=>{c.d(b,{VQ:()=>q});var d=c(79646),e=c(29021),f=c(33873),g=c.n(f);class h{constructor(){}static getInstance(){return h.instance||(h.instance=new h),h.instance}normalize(a){let b=a.match(/^ssh:\/\/git@([^:\/]+)(:\d+)?\/(.+?)(\.git)?$/);if(b)return`https://${b[1]}/${b[3]}`.toLowerCase().replace(/\/$/,"");let c=a.match(/^git@([^:]+):(.+?)(\.git)?$/);return c?`https://${c[1]}/${c[2]}`.toLowerCase().replace(/\/$/,""):a.replace(/\.git\/?$/,"").replace(/\/$/,"").toLowerCase()}isSameRepository(a,b){return this.normalize(a)===this.normalize(b)}extractRepoName(a){let b=a.match(/^ssh:\/\/git@[^\/]+\/(.+?)(\.git)?$/);if(b){let a=b[1].split("/");return a[a.length-1]}let c=a.match(/:(.+?)(\.git)?$/);if(c&&a.startsWith("git@")){let a=c[1].split("/");return a[a.length-1]}let d=a.match(/\/([^\/]+?)(\.git)?$/);return d?d[1]:""}getUrlType(a){return a.startsWith("https://")?"https":a.startsWith("git@")||a.startsWith("ssh://")?"ssh":null}validate(a){if(!a||"string"!=typeof a||""===a.trim())return{valid:!1,error:"EMPTY_URL"};let b=a.trim();return b.startsWith("https://")?/^https:\/\/[^\/]+\/[^\/]+\/[^\/]+(\.git)?$/.test(b)?{valid:!0}:{valid:!1,error:"INVALID_URL_FORMAT"}:b.startsWith("git@")?/^git@[^:]+:.+\/.+(\.git)?$/.test(b)?{valid:!0}:{valid:!1,error:"INVALID_URL_FORMAT"}:b.startsWith("ssh://")?/^ssh:\/\/git@[^\/]+(:\d+)?\/[^\/]+\/.+(\.git)?$/.test(b)?{valid:!0}:{valid:!1,error:"INVALID_URL_FORMAT"}:{valid:!1,error:"INVALID_URL_FORMAT"}}}var i=c(66007),j=c(10406),k=c(82325),l=c(61068);let m=(0,c(72626).h)("clone-manager");class n extends Error{constructor(a){super(a.message),this.name="CloneManagerError",this.category=a.category,this.code=a.code,this.recoverable=a.recoverable,this.suggestedAction=a.suggestedAction}}let o={EMPTY_URL:{category:"validation",code:"EMPTY_URL",message:"Clone URL is required",recoverable:!0,suggestedAction:"Please enter a valid git clone URL"},INVALID_URL_FORMAT:{category:"validation",code:"INVALID_URL_FORMAT",message:"Invalid URL format. Please use HTTPS or SSH URL.",recoverable:!0,suggestedAction:"Enter a valid URL like https://github.com/owner/repo or git@github.com:owner/repo"},DUPLICATE_CLONE_URL:{category:"validation",code:"DUPLICATE_CLONE_URL",message:"This repository is already registered",recoverable:!1,suggestedAction:"Use the existing repository instead"},CLONE_IN_PROGRESS:{category:"validation",code:"CLONE_IN_PROGRESS",message:"A clone operation is already in progress for this URL",recoverable:!1,suggestedAction:"Wait for the current clone to complete"},DIRECTORY_EXISTS:{category:"filesystem",code:"DIRECTORY_EXISTS",message:"Target directory already exists",recoverable:!0,suggestedAction:"Choose a different directory or remove the existing one"},INVALID_TARGET_PATH:{category:"validation",code:"INVALID_TARGET_PATH",message:"Target path is invalid or outside allowed directory",recoverable:!0,suggestedAction:"Use a path within the configured base directory"},AUTH_FAILED:{category:"auth",code:"AUTH_FAILED",message:"Authentication failed",recoverable:!0,suggestedAction:"Check your credentials or SSH keys"},NETWORK_ERROR:{category:"network",code:"NETWORK_ERROR",message:"Network error occurred",recoverable:!0,suggestedAction:"Check your internet connection and try again"},GIT_ERROR:{category:"git",code:"GIT_ERROR",message:"Git command failed",recoverable:!1,suggestedAction:"Check the error message for details"},CLONE_TIMEOUT:{category:"network",code:"CLONE_TIMEOUT",message:"Clone operation timed out",recoverable:!0,suggestedAction:"Try again or clone a smaller repository"}},p=!1;class q{constructor(a,b={}){this.db=a,this.urlNormalizer=h.getInstance(),this.config={basePath:b.basePath||this.resolveDefaultBasePath(),timeout:b.timeout||6e5},this.activeProcesses=new Map}resolveDefaultBasePath(){let a=process.env.WORKTREE_BASE_PATH;return a?(p||(m.warn("config:deprecated",{key:"WORKTREE_BASE_PATH",replacement:"CM_ROOT_DIR"}),p=!0),g().resolve(a)):process.cwd()}validateCloneRequest(a){let b=this.urlNormalizer.validate(a);return b.valid?{valid:!0,normalizedUrl:this.urlNormalizer.normalize(a),repoName:this.urlNormalizer.extractRepoName(a)}:{valid:!1,error:o[b.error||"INVALID_URL_FORMAT"]}}checkDuplicateRepository(a){return(0,j.Uj)(this.db,a)}checkActiveCloneJob(a){return(0,j.fD)(this.db,a)}createCloneJob(a){return(0,j.tw)(this.db,a)}getTargetPath(a){return g().join(this.config.basePath,a)}async startCloneJob(a,b){let c,d=this.validateCloneRequest(a);if(!d.valid)return{success:!1,error:d.error};let f=d.normalizedUrl,g=d.repoName,h=this.checkDuplicateRepository(f);if(h)return{success:!1,error:{...o.DUPLICATE_CLONE_URL,message:`This repository is already registered as "${h.name}"`}};let j=this.checkActiveCloneJob(f);if(j)return{success:!1,jobId:j.id,error:o.CLONE_IN_PROGRESS};if(b){let a=function(a,b){try{return(0,i.b$)(a,b)}catch{return m.warn("invalid-custom-target"),null}}(b,this.config.basePath);if(!a)return{success:!1,error:o.INVALID_TARGET_PATH};c=a}else c=this.getTargetPath(g);if((0,e.existsSync)(c))return{success:!1,error:o.DIRECTORY_EXISTS};let k=this.createCloneJob({cloneUrl:a,normalizedCloneUrl:f,targetPath:c});return this.executeClone(k.id,a,c).catch(a=>{m.error("clone:job-failed",{jobId:k.id,error:a instanceof Error?a.message:String(a)})}),{success:!0,jobId:k.id}}async executeClone(a,b,c){(0,j.k5)(this.db,a,{status:"running",startedAt:new Date});let f=g().dirname(c);return(0,e.existsSync)(f)||(0,e.mkdirSync)(f,{recursive:!0}),new Promise((e,g)=>{let h=(0,d.spawn)("git",["clone","--progress",b,c],{stdio:["ignore","pipe","pipe"],cwd:f});this.activeProcesses.set(a,h),h.pid&&(0,j.k5)(this.db,a,{pid:h.pid});let i="";h.stderr?.on("data",b=>{i+=b.toString();let c=this.parseGitProgress(b.toString());null!==c&&(0,j.k5)(this.db,a,{progress:c})});let k=setTimeout(()=>{h.kill("SIGTERM"),(0,j.k5)(this.db,a,{status:"failed",errorCategory:"network",errorCode:"CLONE_TIMEOUT",errorMessage:"Clone operation timed out",completedAt:new Date}),this.activeProcesses.delete(a),g(new n(o.CLONE_TIMEOUT))},this.config.timeout);h.on("close",async d=>{if(clearTimeout(k),this.activeProcesses.delete(a),0===d)await this.onCloneSuccess(a,b,c),e();else{let b=this.parseGitError(i,d);(0,j.k5)(this.db,a,{status:"failed",errorCategory:b.category,errorCode:b.code,errorMessage:b.message,completedAt:new Date}),g(new n(b))}}),h.on("error",b=>{clearTimeout(k),this.activeProcesses.delete(a);let c={category:"system",code:"SPAWN_ERROR",message:`Failed to spawn git process: ${b.message}`,recoverable:!1,suggestedAction:"Ensure git is installed and available in PATH"};(0,j.k5)(this.db,a,{status:"failed",errorCategory:c.category,errorCode:c.code,errorMessage:c.message,completedAt:new Date}),g(new n(c))})})}async onCloneSuccess(a,b,c){let d=(0,j.bM)(this.db,a);if(!d)return;let e=this.urlNormalizer.getUrlType(b),f=(0,j.vB)(this.db,{name:g().basename(c),path:c,cloneUrl:b,normalizedCloneUrl:d.normalizedCloneUrl,cloneSource:e||"https"});try{let a=await (0,k.YM)(c);if(a.length>0){let{syncResult:b,cleanupWarnings:c}=await (0,l.l7)(this.db,a);m.info("clone:worktrees-registered",{count:a.length,upserted:b.upsertedCount}),c.length>0&&m.warn("clone:cleanup-warnings",{cleanupWarnings:c})}}catch(a){m.error("clone:worktree-scan-failed",{targetPath:c,error:a instanceof Error?a.message:String(a)})}(0,j.k5)(this.db,a,{status:"completed",progress:100,repositoryId:f.id,completedAt:new Date})}parseGitProgress(a){let b=a.match(/(?:Receiving objects|Resolving deltas|Cloning into[^:]*?):\s*(\d+)%/);if(b){let a=parseInt(b[1],10);return isNaN(a)?null:a}return null}parseGitError(a,b){let c=a.toLowerCase(),d=a.substring(0,200);return["authentication failed","permission denied","could not read from remote repository"].some(a=>c.includes(a))?{...o.AUTH_FAILED,message:`Authentication failed: ${d}`}:["could not resolve host","connection refused","network is unreachable"].some(a=>c.includes(a))?{...o.NETWORK_ERROR,message:`Network error: ${d}`}:{...o.GIT_ERROR,message:`Git clone failed (exit code ${b}): ${d}`}}getCloneJobStatus(a){let b=(0,j.bM)(this.db,a);if(!b)return null;let c={jobId:b.id,status:b.status,progress:b.progress,repositoryId:b.repositoryId};return"failed"===b.status&&b.errorCode&&(c.error={category:b.errorCategory||"system",code:b.errorCode,message:b.errorMessage||"Unknown error"}),c}cancelCloneJob(a){let b=this.activeProcesses.get(a);if(b)return b.kill("SIGTERM"),this.activeProcesses.delete(a),(0,j.k5)(this.db,a,{status:"cancelled",completedAt:new Date}),!0;let c=(0,j.bM)(this.db,a);return!!c&&"pending"===c.status&&((0,j.k5)(this.db,a,{status:"cancelled",completedAt:new Date}),!0)}}}};
1
+ "use strict";exports.id=3270,exports.ids=[3270],exports.modules={3270:(a,b,c)=>{c.d(b,{VQ:()=>q});var d=c(79646),e=c(29021),f=c(33873),g=c.n(f);class h{constructor(){}static getInstance(){return h.instance||(h.instance=new h),h.instance}normalize(a){let b=a.match(/^ssh:\/\/git@([^:\/]+)(:\d+)?\/(.+?)(\.git)?$/);if(b)return`https://${b[1]}/${b[3]}`.toLowerCase().replace(/\/$/,"");let c=a.match(/^git@([^:]+):(.+?)(\.git)?$/);return c?`https://${c[1]}/${c[2]}`.toLowerCase().replace(/\/$/,""):a.replace(/\.git\/?$/,"").replace(/\/$/,"").toLowerCase()}isSameRepository(a,b){return this.normalize(a)===this.normalize(b)}extractRepoName(a){let b=a.match(/^ssh:\/\/git@[^\/]+\/(.+?)(\.git)?$/);if(b){let a=b[1].split("/");return a[a.length-1]}let c=a.match(/:(.+?)(\.git)?$/);if(c&&a.startsWith("git@")){let a=c[1].split("/");return a[a.length-1]}let d=a.match(/\/([^\/]+?)(\.git)?$/);return d?d[1]:""}getUrlType(a){return a.startsWith("https://")?"https":a.startsWith("git@")||a.startsWith("ssh://")?"ssh":null}validate(a){if(!a||"string"!=typeof a||""===a.trim())return{valid:!1,error:"EMPTY_URL"};let b=a.trim();return b.startsWith("https://")?/^https:\/\/[^\/]+\/[^\/]+\/[^\/]+(\.git)?$/.test(b)?{valid:!0}:{valid:!1,error:"INVALID_URL_FORMAT"}:b.startsWith("git@")?/^git@[^:]+:.+\/.+(\.git)?$/.test(b)?{valid:!0}:{valid:!1,error:"INVALID_URL_FORMAT"}:b.startsWith("ssh://")?/^ssh:\/\/git@[^\/]+(:\d+)?\/[^\/]+\/.+(\.git)?$/.test(b)?{valid:!0}:{valid:!1,error:"INVALID_URL_FORMAT"}:{valid:!1,error:"INVALID_URL_FORMAT"}}}var i=c(66007),j=c(10406),k=c(82325),l=c(61068);let m=(0,c(72626).h)("clone-manager");class n extends Error{constructor(a){super(a.message),this.name="CloneManagerError",this.category=a.category,this.code=a.code,this.recoverable=a.recoverable,this.suggestedAction=a.suggestedAction}}let o={EMPTY_URL:{category:"validation",code:"EMPTY_URL",message:"Clone URL is required",recoverable:!0,suggestedAction:"Please enter a valid git clone URL"},INVALID_URL_FORMAT:{category:"validation",code:"INVALID_URL_FORMAT",message:"Invalid URL format. Please use HTTPS or SSH URL.",recoverable:!0,suggestedAction:"Enter a valid URL like https://github.com/owner/repo or git@github.com:owner/repo"},DUPLICATE_CLONE_URL:{category:"validation",code:"DUPLICATE_CLONE_URL",message:"This repository is already registered",recoverable:!1,suggestedAction:"Use the existing repository instead"},DUPLICATE_REPOSITORY_PATH:{category:"validation",code:"DUPLICATE_REPOSITORY_PATH",message:"Another repository is already registered at the target location",recoverable:!0,suggestedAction:"Choose a different directory, or remove the existing repository registration"},CLONE_IN_PROGRESS:{category:"validation",code:"CLONE_IN_PROGRESS",message:"A clone operation is already in progress for this URL",recoverable:!1,suggestedAction:"Wait for the current clone to complete"},DIRECTORY_EXISTS:{category:"filesystem",code:"DIRECTORY_EXISTS",message:"Target directory already exists",recoverable:!0,suggestedAction:"Choose a different directory or remove the existing one"},INVALID_TARGET_PATH:{category:"validation",code:"INVALID_TARGET_PATH",message:"Target path is invalid or outside allowed directory",recoverable:!0,suggestedAction:"Use a path within the configured base directory"},AUTH_FAILED:{category:"auth",code:"AUTH_FAILED",message:"Authentication failed",recoverable:!0,suggestedAction:"Check your credentials or SSH keys"},NETWORK_ERROR:{category:"network",code:"NETWORK_ERROR",message:"Network error occurred",recoverable:!0,suggestedAction:"Check your internet connection and try again"},GIT_ERROR:{category:"git",code:"GIT_ERROR",message:"Git command failed",recoverable:!1,suggestedAction:"Check the error message for details"},CLONE_TIMEOUT:{category:"network",code:"CLONE_TIMEOUT",message:"Clone operation timed out",recoverable:!0,suggestedAction:"Try again or clone a smaller repository"},CLONE_SETUP_FAILED:{category:"filesystem",code:"CLONE_SETUP_FAILED",message:"Failed to prepare the clone target directory",recoverable:!0,suggestedAction:"Check the permissions and free space of the target directory, then try again"},CLONE_REGISTRATION_FAILED:{category:"system",code:"CLONE_REGISTRATION_FAILED",message:"The repository was cloned but could not be registered",recoverable:!0,suggestedAction:"Remove the cloned directory and try again"}},p=!1;class q{constructor(a,b={}){this.db=a,this.urlNormalizer=h.getInstance(),this.config={basePath:b.basePath||this.resolveDefaultBasePath(),timeout:b.timeout||6e5},this.activeProcesses=new Map}resolveDefaultBasePath(){let a=process.env.WORKTREE_BASE_PATH;return a?(p||(m.warn("config:deprecated",{key:"WORKTREE_BASE_PATH",replacement:"CM_ROOT_DIR"}),p=!0),g().resolve(a)):process.cwd()}validateCloneRequest(a){let b=this.urlNormalizer.validate(a);return b.valid?{valid:!0,normalizedUrl:this.urlNormalizer.normalize(a),repoName:this.urlNormalizer.extractRepoName(a)}:{valid:!1,error:o[b.error||"INVALID_URL_FORMAT"]}}checkDuplicateRepository(a){return(0,j.Uj)(this.db,a)}checkRepositoryAtPath(a){return(0,j.Dp)(this.db,a)}removeIfGhostRepository(a){return!((0,e.existsSync)(a.path)||(0,j.kp)(this.db,a.path)>0)&&((0,j.oG)(this.db,a.id),m.info("clone:ghost-repository-removed",{repositoryId:a.id,name:a.name}),!0)}checkActiveCloneJob(a){return(0,j.fD)(this.db,a)}createCloneJob(a){return(0,j.tw)(this.db,a)}getTargetPath(a){return g().join(this.config.basePath,a)}async startCloneJob(a,b){let c,d=this.validateCloneRequest(a);if(!d.valid)return{success:!1,error:d.error};let f=d.normalizedUrl,g=d.repoName,h=this.checkDuplicateRepository(f);if(h&&!this.removeIfGhostRepository(h))return{success:!1,error:{...o.DUPLICATE_CLONE_URL,message:`This repository is already registered as "${h.name}"`}};let j=this.checkActiveCloneJob(f);if(j)return{success:!1,jobId:j.id,error:o.CLONE_IN_PROGRESS};if(b){let a=function(a,b){try{return(0,i.b$)(a,b)}catch{return m.warn("invalid-custom-target"),null}}(b,this.config.basePath);if(!a)return{success:!1,error:o.INVALID_TARGET_PATH};c=a}else c=this.getTargetPath(g);if((0,e.existsSync)(c))return{success:!1,error:o.DIRECTORY_EXISTS};let k=this.checkRepositoryAtPath(c);if(k&&!this.removeIfGhostRepository(k))return{success:!1,error:{...o.DUPLICATE_REPOSITORY_PATH,message:`Another repository is already registered at the target location as "${k.name}"`}};let l=this.createCloneJob({cloneUrl:a,normalizedCloneUrl:f,targetPath:c});return this.executeClone(l.id,a,c).catch(a=>{m.error("clone:job-failed",{jobId:l.id,error:a instanceof Error?a.message:String(a)})}),{success:!0,jobId:l.id}}markJobFailed(a,b){try{(0,j.k5)(this.db,a,{status:"failed",errorCategory:b.category,errorCode:b.code,errorMessage:b.message,completedAt:new Date})}catch(c){m.error("clone:job-status-update-failed",{jobId:a,errorCode:b.code,dbError:c instanceof Error?c.message:String(c)})}}async executeClone(a,b,c){let f;try{(0,j.k5)(this.db,a,{status:"running",startedAt:new Date}),f=g().dirname(c),(0,e.existsSync)(f)||(0,e.mkdirSync)(f,{recursive:!0})}catch(b){throw m.error("clone:setup-failed",{jobId:a,error:b instanceof Error?b.message:String(b)}),this.markJobFailed(a,o.CLONE_SETUP_FAILED),new n(o.CLONE_SETUP_FAILED)}return new Promise((e,g)=>{let h=(0,d.spawn)("git",["clone","--progress",b,c],{stdio:["ignore","pipe","pipe"],cwd:f});this.activeProcesses.set(a,h),h.pid&&(0,j.k5)(this.db,a,{pid:h.pid});let i="";h.stderr?.on("data",b=>{i+=b.toString();let c=this.parseGitProgress(b.toString());null!==c&&(0,j.k5)(this.db,a,{progress:c})});let k=setTimeout(()=>{h.kill("SIGTERM"),(0,j.k5)(this.db,a,{status:"failed",errorCategory:"network",errorCode:"CLONE_TIMEOUT",errorMessage:"Clone operation timed out",completedAt:new Date}),this.activeProcesses.delete(a),g(new n(o.CLONE_TIMEOUT))},this.config.timeout);h.on("close",async d=>{if(clearTimeout(k),this.activeProcesses.delete(a),0===d)try{await this.onCloneSuccess(a,b,c),e()}catch(a){g(a)}else{let b=this.parseGitError(i,d);(0,j.k5)(this.db,a,{status:"failed",errorCategory:b.category,errorCode:b.code,errorMessage:b.message,completedAt:new Date}),g(new n(b))}}),h.on("error",b=>{clearTimeout(k),this.activeProcesses.delete(a);let c={category:"system",code:"SPAWN_ERROR",message:`Failed to spawn git process: ${b.message}`,recoverable:!1,suggestedAction:"Ensure git is installed and available in PATH"};(0,j.k5)(this.db,a,{status:"failed",errorCategory:c.category,errorCode:c.code,errorMessage:c.message,completedAt:new Date}),g(new n(c))})})}async onCloneSuccess(a,b,c){try{let d=(0,j.bM)(this.db,a);if(!d)return;let e=this.urlNormalizer.getUrlType(b),f=(0,j.vB)(this.db,{name:g().basename(c),path:c,cloneUrl:b,normalizedCloneUrl:d.normalizedCloneUrl,cloneSource:e||"https"});try{let a=await (0,k.YM)(c);if(a.length>0){let{syncResult:b,cleanupWarnings:c}=await (0,l.l7)(this.db,a);m.info("clone:worktrees-registered",{count:a.length,upserted:b.upsertedCount}),c.length>0&&m.warn("clone:cleanup-warnings",{cleanupWarnings:c})}}catch(a){m.error("clone:worktree-scan-failed",{targetPath:c,error:a instanceof Error?a.message:String(a)})}(0,j.k5)(this.db,a,{status:"completed",progress:100,repositoryId:f.id,completedAt:new Date})}catch(b){throw m.error("clone:registration-failed",{jobId:a,error:b instanceof Error?b.message:String(b)}),this.markJobFailed(a,o.CLONE_REGISTRATION_FAILED),new n(o.CLONE_REGISTRATION_FAILED)}}parseGitProgress(a){let b=a.match(/(?:Receiving objects|Resolving deltas|Cloning into[^:]*?):\s*(\d+)%/);if(b){let a=parseInt(b[1],10);return isNaN(a)?null:a}return null}parseGitError(a,b){let c=a.toLowerCase(),d=a.substring(0,200);return["authentication failed","permission denied","could not read from remote repository"].some(a=>c.includes(a))?{...o.AUTH_FAILED,message:`Authentication failed: ${d}`}:["could not resolve host","connection refused","network is unreachable"].some(a=>c.includes(a))?{...o.NETWORK_ERROR,message:`Network error: ${d}`}:{...o.GIT_ERROR,message:`Git clone failed (exit code ${b}): ${d}`}}getCloneJobStatus(a){let b=(0,j.bM)(this.db,a);if(!b)return null;let c={jobId:b.id,status:b.status,progress:b.progress,repositoryId:b.repositoryId};return"failed"===b.status&&b.errorCode&&(c.error={category:b.errorCategory||"system",code:b.errorCode,message:b.errorMessage||"Unknown error"}),c}cancelCloneJob(a){let b=this.activeProcesses.get(a);if(b)return b.kill("SIGTERM"),this.activeProcesses.delete(a),(0,j.k5)(this.db,a,{status:"cancelled",completedAt:new Date}),!0;let c=(0,j.bM)(this.db,a);return!!c&&"pending"===c.status&&((0,j.k5)(this.db,a,{status:"cancelled",completedAt:new Date}),!0)}}}};
@@ -1,9 +1,9 @@
1
1
  "use strict";exports.id=3480,exports.ids=[3480],exports.modules={11099:(a,b,c)=>{c.d(b,{DL:()=>F,Yg:()=>E,oX:()=>D});var d=c(73736),e=c(79748),f=c(33873),g=c.n(f),h=c(15194),i=c(47494),j=c(20137),k=c(15003),l=c(72626);let m=(0,l.h)("cmate-parser");async function n(a,b){let c=await (0,e.realpath)(a),d=await (0,e.realpath)(b);if(!c.startsWith(d+g().sep)&&c!==g().join(d,k.fp))throw Error(`Path traversal detected: ${a} is not within ${b}`);return!0}async function o(a){let b=g().join(a,k.fp);try{await n(b,a);let c=await (0,e.readFile)(b,"utf-8");return function(a){let b=new Map,c=a.split("\n"),d=null,e=!1,f=!1;for(let a of c){let c=a.trim(),g=c.match(/^##\s+(.+)$/);if(g){d=g[1].trim(),e=!1,f=!1,b.has(d)||b.set(d,[]);continue}if(!c||!c.startsWith("|")||!d)continue;if(!e){e=!0;continue}if(!f){if(c.match(/^\|[\s-:|]+\|$/)){f=!0;continue}f=!0}let h=c.split("|").slice(1,-1).map(a=>a.trim());h.length>0&&b.get(d).push(h)}return b}(c)}catch(a){if(a instanceof Error&&"code"in a&&"ENOENT"===a.code)return null;throw a}}var p=c(34207),q=c(55511),r=c(29021);let s=(0,l.h)("cron-parser");function t(){let{getDbInstance:a}=c(88807);return a()}let u=(0,l.h)("job-executor");function v(){let{getDbInstance:a}=c(88807);return a()}function w(a,b,c,d){let e=v(),f=Date.now();e.prepare(`
2
2
  UPDATE execution_logs SET status = ?, result = ?, exit_code = ?, completed_at = ? WHERE id = ?
3
- `).run(b,c,d,f,a)}async function x(a){if(a.isExecuting)return void u.warn("execution:skip-concurrent",{name:a.entry.name});a.isExecuting=!0;let b=function(a,b,c){let d=v(),e=Date.now(),f=(0,q.randomUUID)();return d.prepare(`
3
+ `).run(b,c,d,f,a)}async function x(a){let b;if(a.isExecuting)return void u.warn("execution:skip-concurrent",{name:a.entry.name});a.isExecuting=!0;try{b=function(a,b,c){let d=v(),e=Date.now(),f=(0,q.randomUUID)();return d.prepare(`
4
4
  INSERT INTO execution_logs (id, schedule_id, worktree_id, message, status, started_at, created_at)
5
5
  VALUES (?, ?, ?, ?, 'running', ?, ?)
6
- `).run(f,a,b,c,e,e),f}(a.scheduleId,a.worktreeId,a.entry.message);try{let e=v().prepare("SELECT path, vibe_local_model FROM worktrees WHERE id = ?").get(a.worktreeId);if(!e)return void w(b,"failed","Worktree not found",null);let f=(c=a.entry,"copilot"===c.cliToolId&&c.model?{model:c.model}:"vibe-local"===c.cliToolId&&e.vibe_local_model?{model:e.vibe_local_model}:void 0),g=await (0,p.V$)(a.entry.message,e.path,a.entry.cliToolId,a.entry.permission,f);w(b,g.status,g.output,g.exitCode);var c,d=a.scheduleId;let h=v(),i=Date.now();h.prepare("UPDATE scheduled_executions SET last_executed_at = ?, updated_at = ? WHERE id = ?").run(i,i,d),u.info("execution:completed",{name:a.entry.name,status:g.status})}catch(d){let c=d instanceof Error?d.message:String(d);w(b,"failed",c,null),u.error("execution:failed",{name:a.entry.name,error:c})}finally{a.isExecuting=!1}}let y=(0,l.h)("schedule-manager");function z(a){try{if("function"==typeof a.isStopped)return!a.isStopped();if("function"==typeof a.isRunning)return a.isRunning()}catch{return!1}return!0}function A(a,b,c){let e=new d.l4(c.cronExpression,{paused:!1,protect:!0}),f={scheduleId:b,worktreeId:a,cronJob:e,isExecuting:!1,entry:c};return e.schedule(()=>{x(f)}),f}function B(){return globalThis.__scheduleManagerStates||(globalThis.__scheduleManagerStates={timerId:null,schedules:new Map,initialized:!1,isSyncing:!1,cmateFileCache:new Map}),globalThis.__scheduleManagerStates}async function C(){let a=B();if(!a.isSyncing){a.isSyncing=!0;try{let b=function(){try{return t().prepare("SELECT id, path FROM worktrees").all()}catch(a){return s.error("worktree:fetch-failed",{error:a instanceof Error?a.message:String(a)}),[]}}(),c=new Set;for(let d of b)try{let b=function(a){let b=g().join(a,k.fp);try{return(0,r.statSync)(b).mtimeMs}catch(a){if(a instanceof Error&&"code"in a&&"ENOENT"===a.code)return null;return s.warn("file:stat-failed",{filePath:b}),null}}(d.path),e=a.cmateFileCache.get(d.path);if(null===b){void 0!==e&&a.cmateFileCache.delete(d.path);continue}let f=[],l=!1;for(let[b,c]of a.schedules)c.worktreeId===d.id&&(f.push(b),z(c.cronJob)||(l=!0));if(void 0!==e&&e===b){if(!l){for(let a of f)c.add(a);continue}y.warn("schedule:inactive-state-detected",{worktreeId:d.id})}a.cmateFileCache.set(d.path,b);let n=await o(d.path);if(!n)continue;let p=n.get("Schedules");if(!p)continue;let u=function(a){let b=[];for(let c of a){let a;if(b.length>=k.QD){m.warn("maximum-schedule-entries");break}if(c.length<3){m.warn("parse:insufficient-columns",{columnCount:c.length});continue}let[d,e,f,g,l,n]=c,o=(0,k.j0)(d);if(!k.Vh.test(o)){m.warn("parse:invalid-name",{name:o});continue}if(!(0,k.ri)(e)){m.warn("parse:invalid-cron",{name:o,cron:e});continue}let p=(0,k.j0)(f);if(!p){m.warn("parse:empty-message",{name:o});continue}let q=void 0===l||""===l||"true"===l.toLowerCase(),{result:r,errors:s}=(0,i.zK)(g||"");if(s.length>0){m.warn("parse:invalid-cli-tool-column",{name:o,errors:s});continue}let t=r.cliToolId;if(!(0,h.hR)(t)){m.warn("parse:invalid-cli-tool",{name:o,cliToolId:t});continue}let u=j.Hf[t]??"",v=n?.trim()||u;switch(t){case"codex":a=j.o1;break;case"copilot":a=j.oN;break;case"antigravity":a=j.eb;break;case"gemini":case"vibe-local":a=[],v&&(m.warn("parse:permission-ignored",{name:o,cliToolId:t,permission:v}),v="");break;default:a=j.kd}a.length>0&&v&&!a.includes(v)&&(m.warn("parse:invalid-permission",{name:o,cliToolId:t,permission:v,defaultPermission:u}),v=u),b.push({name:o,cronExpression:e.trim(),message:p,cliToolId:t,enabled:q,permission:v,model:r.model})}return b}(p),v=function(a,b){if(0===b.length)return[];let c=t(),d=Date.now(),e=c.prepare("SELECT id, name FROM scheduled_executions WHERE worktree_id = ?").all(a),f=new Map;for(let a of e)f.set(a.name,a.id);let g=[],h=c.prepare(`
6
+ `).run(f,a,b,c,e,e),f}(a.scheduleId,a.worktreeId,a.entry.message);let e=v().prepare("SELECT path, vibe_local_model FROM worktrees WHERE id = ?").get(a.worktreeId);if(!e)return void w(b,"failed","Worktree not found",null);let f=(c=a.entry,"copilot"===c.cliToolId&&c.model?{model:c.model}:"vibe-local"===c.cliToolId&&e.vibe_local_model?{model:e.vibe_local_model}:void 0),g=await (0,p.V$)(a.entry.message,e.path,a.entry.cliToolId,a.entry.permission,f);w(b,g.status,g.output,g.exitCode);var c,d=a.scheduleId;let h=v(),i=Date.now();h.prepare("UPDATE scheduled_executions SET last_executed_at = ?, updated_at = ? WHERE id = ?").run(i,i,d),u.info("execution:completed",{name:a.entry.name,status:g.status})}catch(d){let c=d instanceof Error?d.message:String(d);void 0!==b&&w(b,"failed",c,null),u.error("execution:failed",{name:a.entry.name,error:c})}finally{a.isExecuting=!1}}let y=(0,l.h)("schedule-manager");function z(a){try{if("function"==typeof a.isStopped)return!a.isStopped();if("function"==typeof a.isRunning)return a.isRunning()}catch{return!1}return!0}function A(a,b,c){let e=new d.l4(c.cronExpression,{paused:!1,protect:!0}),f={scheduleId:b,worktreeId:a,cronJob:e,isExecuting:!1,entry:c};return e.schedule(()=>{x(f).catch(a=>{y.error("execution:unhandled",{name:c.name,error:a instanceof Error?a.message:String(a)})})}),f}function B(){return globalThis.__scheduleManagerStates||(globalThis.__scheduleManagerStates={timerId:null,schedules:new Map,initialized:!1,isSyncing:!1,cmateFileCache:new Map}),globalThis.__scheduleManagerStates}async function C(){let a=B();if(!a.isSyncing){a.isSyncing=!0;try{let b=function(){try{return t().prepare("SELECT id, path FROM worktrees").all()}catch(a){return s.error("worktree:fetch-failed",{error:a instanceof Error?a.message:String(a)}),[]}}(),c=new Set;for(let d of b)try{let b=function(a){let b=g().join(a,k.fp);try{return(0,r.statSync)(b).mtimeMs}catch(a){if(a instanceof Error&&"code"in a&&"ENOENT"===a.code)return null;return s.warn("file:stat-failed",{filePath:b}),null}}(d.path),e=a.cmateFileCache.get(d.path);if(null===b){void 0!==e&&a.cmateFileCache.delete(d.path);continue}let f=[],l=!1;for(let[b,c]of a.schedules)c.worktreeId===d.id&&(f.push(b),z(c.cronJob)||(l=!0));if(void 0!==e&&e===b){if(!l){for(let a of f)c.add(a);continue}y.warn("schedule:inactive-state-detected",{worktreeId:d.id})}a.cmateFileCache.set(d.path,b);let n=await o(d.path);if(!n)continue;let p=n.get("Schedules");if(!p)continue;let u=function(a){let b=[];for(let c of a){let a;if(b.length>=k.QD){m.warn("maximum-schedule-entries");break}if(c.length<3){m.warn("parse:insufficient-columns",{columnCount:c.length});continue}let[d,e,f,g,l,n]=c,o=(0,k.j0)(d);if(!k.Vh.test(o)){m.warn("parse:invalid-name",{name:o});continue}if(!(0,k.ri)(e)){m.warn("parse:invalid-cron",{name:o,cron:e});continue}let p=(0,k.j0)(f);if(!p){m.warn("parse:empty-message",{name:o});continue}let q=void 0===l||""===l||"true"===l.toLowerCase(),{result:r,errors:s}=(0,i.zK)(g||"");if(s.length>0){m.warn("parse:invalid-cli-tool-column",{name:o,errors:s});continue}let t=r.cliToolId;if(!(0,h.hR)(t)){m.warn("parse:invalid-cli-tool",{name:o,cliToolId:t});continue}let u=j.Hf[t]??"",v=n?.trim()||u;switch(t){case"codex":a=j.o1;break;case"copilot":a=j.oN;break;case"antigravity":a=j.eb;break;case"gemini":case"vibe-local":a=[],v&&(m.warn("parse:permission-ignored",{name:o,cliToolId:t,permission:v}),v="");break;default:a=j.kd}a.length>0&&v&&!a.includes(v)&&(m.warn("parse:invalid-permission",{name:o,cliToolId:t,permission:v,defaultPermission:u}),v=u),b.push({name:o,cronExpression:e.trim(),message:p,cliToolId:t,enabled:q,permission:v,model:r.model})}return b}(p),v=function(a,b){if(0===b.length)return[];let c=t(),d=Date.now(),e=c.prepare("SELECT id, name FROM scheduled_executions WHERE worktree_id = ?").all(a),f=new Map;for(let a of e)f.set(a.name,a.id);let g=[],h=c.prepare(`
7
7
  UPDATE scheduled_executions
8
8
  SET message = ?, cron_expression = ?, cli_tool_id = ?, enabled = ?, updated_at = ?
9
9
  WHERE id = ?
@@ -1 +1 @@
1
- "use strict";exports.id=3543,exports.ids=[3543],exports.modules={73543:a=>{a.exports=JSON.parse('{"sessions":{"idleAgents":"{count} idle","activeAgents":"{count} active","title":"Sessions","description":"All worktree sessions across repositories.","filterPlaceholder":"Filter by name or repository...","filterAriaLabel":"Filter sessions by name or repository","sortByAriaLabel":"Sort by","sortAscending":"Sort ascending","sortDescending":"Sort descending","loadingAriaLabel":"Loading sessions","refreshError":"Failed to refresh sessions: {message}","loadError":"Failed to load sessions: {message}","noMatching":"No matching sessions found.","empty":"No sessions yet."},"nav":{"home":"Home","chat":"Chat","sessions":"Sessions","repositories":"Repositories","repositoriesShort":"Repos","review":"Review","reviewReport":"Review/Report","more":"More"},"repositories":{"empty":"No repositories registered yet.","add":"Add Repository","syncAll":"Sync All","syncing":"Syncing...","addNewTitle":"Add New Repository","localPathTab":"Local Path","cloneUrlTab":"Clone URL","localPathDescription":"Enter the absolute path to a git repository containing worktrees.","localPathLabel":"Repository Path","localPathExample":"Example: /Users/username/projects/my-repo","scan":"Scan & Add","scanning":"Scanning...","cloneUrlDescription":"Enter a git clone URL to clone a remote repository.","cloneUrlLabel":"Clone URL","cloneUrlHelp":"Supports HTTPS and SSH URLs","clone":"Clone","cloning":"Cloning...","cloneSuccess":"Repository cloned successfully","cloneFailed":"Clone failed","pathRequired":"Repository path is required","urlRequired":"Clone URL is required","urlInvalid":"Invalid URL format","loading":"Loading repositories"},"cancel":"Cancel","send":"Send","sending":"Sending...","sendMessagePlaceholder":"Send a message...","end":"End","ending":"Ending...","retry":"Retry","reload":"Reload","reconnect":"Reconnect","close":"Close","back":"Back","menu":"Menu","sidebar":{"open":"Open sidebar","close":"Close sidebar","branchNavigation":"Branch navigation","branches":"Branches","searchBranches":"Search branches...","noBranchesFound":"No branches found","noBranchesAvailable":"No branches available","dragToReorderGroup":"Drag to reorder group","switchToFlatView":"Switch to flat view","switchToGroupedView":"Switch to grouped view"},"confirmDelete":"Delete \\"{name}\\"?","favorites":{"add":"Add to favorites","remove":"Remove from favorites"},"syncSuccess":"Synced {count} worktrees","syncError":"Sync failed","syncAuthError":"Authentication error","syncButtonLabel":"Sync branches","tooltips":{"viewMode":"Toggle view mode (grouped / flat)","sort":"Sort branches","sync":"Sync worktrees","repositories":"Manage repositories (add / sync)"},"displaySize":{"ariaLabel":"Display size","large":"Large","medium":"Medium","small":"Small","xsmall":"Extra small"},"confirmDialog":{"title":"Confirm","confirm":"OK"},"language":"Language","loadingPage":"Loading page","closeNotification":"Close notification","status":{"idle":"Idle","ready":"Ready","running":"Running","generating":"Generating","waiting":"Waiting for response","error":"Error","unknown":"Unknown"},"sort":{"options":"Sort options","updatedAt":"Updated","repositoryName":"Repository","branchName":"Branch","status":"Status","lastSent":"Last Sent"},"branchItem":{"cliToolStatus":"CLI tool status","hasUnread":"Has unread messages"},"connection":{"reconnecting":"Reconnecting","offline":"Offline","reconnectingTooltip":"Re-establishing the live connection (running on polling)","offlineTooltip":"No live connection (running on polling)"},"meta":{"description":"Git worktree management with Claude CLI and tmux sessions"}}')}};
1
+ "use strict";exports.id=3543,exports.ids=[3543],exports.modules={73543:a=>{a.exports=JSON.parse('{"sessions":{"idleAgents":"{count} idle","activeAgents":"{count} active","title":"Sessions","description":"All worktree sessions across repositories.","filterPlaceholder":"Filter by name or repository...","filterAriaLabel":"Filter sessions by name or repository","sortByAriaLabel":"Sort by","sortAscending":"Sort ascending","sortDescending":"Sort descending","loadingAriaLabel":"Loading sessions","refreshError":"Failed to refresh sessions: {message}","loadError":"Failed to load sessions: {message}","noMatching":"No matching sessions found.","empty":"No sessions yet."},"nav":{"home":"Home","chat":"Chat","sessions":"Sessions","repositories":"Repositories","repositoriesShort":"Repos","review":"Review","reviewReport":"Review/Report","more":"More"},"repositories":{"empty":"No repositories registered yet.","add":"Add Repository","syncAll":"Sync All","syncing":"Syncing...","addNewTitle":"Add New Repository","localPathTab":"Local Path","cloneUrlTab":"Clone URL","localPathDescription":"Enter the absolute path to a git repository containing worktrees.","localPathLabel":"Repository Path","localPathExample":"Example: /Users/username/projects/my-repo","scan":"Scan & Add","scanning":"Scanning...","cloneUrlDescription":"Enter a git clone URL to clone a remote repository.","cloneUrlLabel":"Clone URL","cloneUrlHelp":"Supports HTTPS and SSH URLs","clone":"Clone","cloning":"Cloning...","cloneSuccess":"Repository cloned successfully","cloneFailed":"Clone failed","pathRequired":"Repository path is required","urlRequired":"Clone URL is required","urlInvalid":"Invalid URL format","loading":"Loading repositories"},"cancel":"Cancel","send":"Send","sending":"Sending...","sendMessagePlaceholder":"Send a message...","end":"End","ending":"Ending...","retry":"Retry","reload":"Reload","reconnect":"Reconnect","close":"Close","back":"Back","menu":"Menu","sidebar":{"open":"Open sidebar","close":"Close sidebar","branchNavigation":"Branch navigation","branches":"Branches","searchBranches":"Search branches...","noBranchesFound":"No branches found","noBranchesAvailable":"No branches available","dragToReorderGroup":"Drag to reorder group","switchToFlatView":"Switch to flat view","switchToGroupedView":"Switch to grouped view"},"confirmDelete":"Delete \\"{name}\\"?","favorites":{"add":"Add to favorites","remove":"Remove from favorites"},"syncSuccess":"Synced {count} worktrees","syncError":"Sync failed","syncAuthError":"Authentication error","syncButtonLabel":"Sync branches","tooltips":{"viewMode":"Toggle view mode (grouped / flat)","sort":"Sort branches","sync":"Sync worktrees","repositories":"Manage repositories (add / sync)"},"displaySize":{"ariaLabel":"Display size","large":"Large","medium":"Medium","small":"Small","xsmall":"Extra small"},"confirmDialog":{"title":"Confirm","confirm":"OK"},"language":"Language","loadingPage":"Loading page","closeNotification":"Close notification","status":{"idle":"Idle","ready":"Ready","running":"Running","generating":"Generating","waiting":"Waiting for response","error":"Error","unknown":"Unknown"},"sort":{"options":"Sort options","updatedAt":"Updated","repositoryName":"Repository","branchName":"Branch","status":"Status","lastSent":"Last Sent"},"branchItem":{"cliToolStatus":"CLI tool status","hasUnread":"Has unread messages"},"connection":{"reconnecting":"Reconnecting","offline":"Offline","reconnectingTooltip":"Re-establishing the live connection (running on polling)","offlineTooltip":"No live connection (running on polling)"},"versionMismatch":{"title":"A new version is running","description":"The server is now on {serverVersion}, but this tab is still on {clientVersion}. Reload to get the latest.","reload":"Reload","dismiss":"Dismiss"},"meta":{"description":"Git worktree management with Claude CLI and tmux sessions"}}')}};
@@ -1 +1 @@
1
- "use strict";exports.id=3945,exports.ids=[3945],exports.modules={53945:a=>{a.exports=JSON.parse('{"sessions":{"idleAgents":"アイドル {count} 件","activeAgents":"稼働 {count} 件","title":"セッション","description":"全リポジトリの worktree セッション。","filterPlaceholder":"名前またはリポジトリで絞り込み...","filterAriaLabel":"名前またはリポジトリでセッションを絞り込む","sortByAriaLabel":"並び替え","sortAscending":"昇順に並び替え","sortDescending":"降順に並び替え","loadingAriaLabel":"セッションを読み込み中","refreshError":"セッションの更新に失敗しました: {message}","loadError":"セッションの読み込みに失敗しました: {message}","noMatching":"一致するセッションがありません。","empty":"セッションがまだありません。"},"nav":{"home":"ホーム","chat":"チャット","sessions":"セッション","repositories":"リポジトリ","repositoriesShort":"リポジトリ","review":"レビュー","reviewReport":"レビュー/レポート","more":"その他"},"repositories":{"empty":"リポジトリが登録されていません。","add":"リポジトリを追加","syncAll":"すべて同期","syncing":"同期中...","addNewTitle":"リポジトリを新規追加","localPathTab":"ローカルパス","cloneUrlTab":"クローン URL","localPathDescription":"worktree を含む git リポジトリの絶対パスを入力してください。","localPathLabel":"リポジトリパス","localPathExample":"例: /Users/username/projects/my-repo","scan":"スキャンして追加","scanning":"スキャン中...","cloneUrlDescription":"リモートリポジトリをクローンする git の URL を入力してください。","cloneUrlLabel":"クローン URL","cloneUrlHelp":"HTTPS と SSH の URL に対応しています","clone":"クローン","cloning":"クローン中...","cloneSuccess":"リポジトリをクローンしました","cloneFailed":"クローンに失敗しました","pathRequired":"リポジトリパスを入力してください","urlRequired":"クローン URL を入力してください","urlInvalid":"URL の形式が正しくありません","loading":"リポジトリを読み込み中"},"cancel":"キャンセル","send":"送信","sending":"送信中...","sendMessagePlaceholder":"メッセージを送信...","end":"終了する","ending":"終了中...","retry":"再試行","reload":"再読み込み","reconnect":"再接続","close":"閉じる","back":"戻る","menu":"メニュー","sidebar":{"open":"サイドバーを開く","close":"サイドバーを閉じる","branchNavigation":"ブランチナビゲーション","branches":"ブランチ","searchBranches":"ブランチを検索...","noBranchesFound":"ブランチが見つかりません","noBranchesAvailable":"ブランチがありません","dragToReorderGroup":"ドラッグでグループを並べ替え","switchToFlatView":"フラット表示に切り替え","switchToGroupedView":"グループ表示に切り替え"},"confirmDelete":"「{name}」を削除しますか?","favorites":{"add":"お気に入りに追加","remove":"お気に入りを解除"},"syncSuccess":"{count}件のworktreeを同期しました","syncError":"同期に失敗しました","syncAuthError":"認証エラー","syncButtonLabel":"ブランチを同期","tooltips":{"viewMode":"表示モード切替(グループ / フラット)","sort":"ブランチの並び替え","sync":"worktree を同期","repositories":"リポジトリを管理(追加・同期)"},"displaySize":{"ariaLabel":"表示サイズ","large":"大","medium":"中","small":"小","xsmall":"極小"},"confirmDialog":{"title":"確認","confirm":"OK"},"language":"言語","loadingPage":"ページを読み込み中","closeNotification":"通知を閉じる","status":{"idle":"アイドル","ready":"準備完了","running":"実行中","generating":"生成中","waiting":"応答待ち","error":"エラー","unknown":"不明"},"sort":{"options":"並び替えオプション","updatedAt":"更新日時","repositoryName":"リポジトリ","branchName":"ブランチ","status":"ステータス","lastSent":"最終送信"},"branchItem":{"cliToolStatus":"CLI ツールのステータス","hasUnread":"未読メッセージあり"},"connection":{"reconnecting":"再接続中","offline":"オフライン","reconnectingTooltip":"ライブ接続を再確立しています(ポーリングで動作中)","offlineTooltip":"ライブ接続なし(ポーリングで動作中)"},"meta":{"description":"Claude CLI と tmux セッションによる Git worktree 管理"}}')}};
1
+ "use strict";exports.id=3945,exports.ids=[3945],exports.modules={53945:a=>{a.exports=JSON.parse('{"sessions":{"idleAgents":"アイドル {count} 件","activeAgents":"稼働 {count} 件","title":"セッション","description":"全リポジトリの worktree セッション。","filterPlaceholder":"名前またはリポジトリで絞り込み...","filterAriaLabel":"名前またはリポジトリでセッションを絞り込む","sortByAriaLabel":"並び替え","sortAscending":"昇順に並び替え","sortDescending":"降順に並び替え","loadingAriaLabel":"セッションを読み込み中","refreshError":"セッションの更新に失敗しました: {message}","loadError":"セッションの読み込みに失敗しました: {message}","noMatching":"一致するセッションがありません。","empty":"セッションがまだありません。"},"nav":{"home":"ホーム","chat":"チャット","sessions":"セッション","repositories":"リポジトリ","repositoriesShort":"リポジトリ","review":"レビュー","reviewReport":"レビュー/レポート","more":"その他"},"repositories":{"empty":"リポジトリが登録されていません。","add":"リポジトリを追加","syncAll":"すべて同期","syncing":"同期中...","addNewTitle":"リポジトリを新規追加","localPathTab":"ローカルパス","cloneUrlTab":"クローン URL","localPathDescription":"worktree を含む git リポジトリの絶対パスを入力してください。","localPathLabel":"リポジトリパス","localPathExample":"例: /Users/username/projects/my-repo","scan":"スキャンして追加","scanning":"スキャン中...","cloneUrlDescription":"リモートリポジトリをクローンする git の URL を入力してください。","cloneUrlLabel":"クローン URL","cloneUrlHelp":"HTTPS と SSH の URL に対応しています","clone":"クローン","cloning":"クローン中...","cloneSuccess":"リポジトリをクローンしました","cloneFailed":"クローンに失敗しました","pathRequired":"リポジトリパスを入力してください","urlRequired":"クローン URL を入力してください","urlInvalid":"URL の形式が正しくありません","loading":"リポジトリを読み込み中"},"cancel":"キャンセル","send":"送信","sending":"送信中...","sendMessagePlaceholder":"メッセージを送信...","end":"終了する","ending":"終了中...","retry":"再試行","reload":"再読み込み","reconnect":"再接続","close":"閉じる","back":"戻る","menu":"メニュー","sidebar":{"open":"サイドバーを開く","close":"サイドバーを閉じる","branchNavigation":"ブランチナビゲーション","branches":"ブランチ","searchBranches":"ブランチを検索...","noBranchesFound":"ブランチが見つかりません","noBranchesAvailable":"ブランチがありません","dragToReorderGroup":"ドラッグでグループを並べ替え","switchToFlatView":"フラット表示に切り替え","switchToGroupedView":"グループ表示に切り替え"},"confirmDelete":"「{name}」を削除しますか?","favorites":{"add":"お気に入りに追加","remove":"お気に入りを解除"},"syncSuccess":"{count}件のworktreeを同期しました","syncError":"同期に失敗しました","syncAuthError":"認証エラー","syncButtonLabel":"ブランチを同期","tooltips":{"viewMode":"表示モード切替(グループ / フラット)","sort":"ブランチの並び替え","sync":"worktree を同期","repositories":"リポジトリを管理(追加・同期)"},"displaySize":{"ariaLabel":"表示サイズ","large":"大","medium":"中","small":"小","xsmall":"極小"},"confirmDialog":{"title":"確認","confirm":"OK"},"language":"言語","loadingPage":"ページを読み込み中","closeNotification":"通知を閉じる","status":{"idle":"アイドル","ready":"準備完了","running":"実行中","generating":"生成中","waiting":"応答待ち","error":"エラー","unknown":"不明"},"sort":{"options":"並び替えオプション","updatedAt":"更新日時","repositoryName":"リポジトリ","branchName":"ブランチ","status":"ステータス","lastSent":"最終送信"},"branchItem":{"cliToolStatus":"CLI ツールのステータス","hasUnread":"未読メッセージあり"},"connection":{"reconnecting":"再接続中","offline":"オフライン","reconnectingTooltip":"ライブ接続を再確立しています(ポーリングで動作中)","offlineTooltip":"ライブ接続なし(ポーリングで動作中)"},"versionMismatch":{"title":"新しいバージョンが起動しています","description":"サーバーは {serverVersion} になりましたが、このタブは {clientVersion} のままです。最新の状態にするには再読み込みしてください。","reload":"再読み込み","dismiss":"閉じる"},"meta":{"description":"Claude CLI と tmux セッションによる Git worktree 管理"}}')}};
@@ -0,0 +1,47 @@
1
+ "use strict";exports.id=406,exports.ids=[406],exports.modules={10406:(a,b,c)=>{c.d(b,{$G:()=>v,Dp:()=>n,Ir:()=>q,RS:()=>z,Uj:()=>l,Ux:()=>u,Yg:()=>r,_D:()=>s,bM:()=>B,eP:()=>x,fD:()=>D,k5:()=>C,kp:()=>p,l$:()=>w,lS:()=>y,oG:()=>o,r:()=>m,tw:()=>A,vB:()=>k});var d=c(55511),e=c(33873),f=c.n(e),g=c(7956);class h extends Error{constructor(a,b,c){super(a),this.code=b,this.cause=c,this.name="RepositoryDbError"}}function i(a){return{id:a.id,name:a.name,displayName:a.display_name||void 0,path:a.path,enabled:1===a.enabled,visible:1===a.visible,cloneUrl:a.clone_url||void 0,normalizedCloneUrl:a.normalized_clone_url||void 0,cloneSource:a.clone_source,isEnvManaged:1===a.is_env_managed,createdAt:new Date(a.created_at),updatedAt:new Date(a.updated_at)}}function j(a){return{id:a.id,cloneUrl:a.clone_url,normalizedCloneUrl:a.normalized_clone_url,targetPath:a.target_path,repositoryId:a.repository_id||void 0,status:a.status,pid:a.pid||void 0,progress:a.progress,errorCategory:a.error_category||void 0,errorCode:a.error_code||void 0,errorMessage:a.error_message||void 0,startedAt:a.started_at?new Date(a.started_at):void 0,completedAt:a.completed_at?new Date(a.completed_at):void 0,createdAt:new Date(a.created_at)}}function k(a,b){let c=(0,d.randomUUID)(),e=Date.now(),f=a.prepare(`
2
+ INSERT INTO repositories (
3
+ id, name, path, enabled, visible, clone_url, normalized_clone_url,
4
+ clone_source, is_env_managed, created_at, updated_at
5
+ )
6
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
7
+ `);try{f.run(c,b.name,b.path,+(!1!==b.enabled),+(!1!==b.visible),b.cloneUrl||null,b.normalizedCloneUrl||null,b.cloneSource,+!!b.isEnvManaged,e,e)}catch(a){if(a instanceof Error&&a.message.includes("UNIQUE constraint"))throw new h(`A repository is already registered at path "${b.path}"`+(b.normalizedCloneUrl?` or for URL "${b.normalizedCloneUrl}"`:""),"DUPLICATE",a);throw new h(`Failed to create repository: ${a instanceof Error?a.message:"Unknown error"}`,"DB_ERROR",a instanceof Error?a:void 0)}return{id:c,name:b.name,path:b.path,enabled:!1!==b.enabled,visible:!1!==b.visible,cloneUrl:b.cloneUrl,normalizedCloneUrl:b.normalizedCloneUrl,cloneSource:b.cloneSource,isEnvManaged:b.isEnvManaged||!1,createdAt:new Date(e),updatedAt:new Date(e)}}function l(a,b){let c=a.prepare(`
8
+ SELECT * FROM repositories
9
+ WHERE normalized_clone_url = ?
10
+ `).get(b);return c?i(c):null}function m(a,b){let c=a.prepare(`
11
+ SELECT * FROM repositories
12
+ WHERE id = ?
13
+ `).get(b);return c?i(c):null}function n(a,b){let c=a.prepare(`
14
+ SELECT * FROM repositories
15
+ WHERE path = ?
16
+ `).get(b);return c?i(c):null}function o(a,b){return a.prepare("DELETE FROM repositories WHERE id = ?").run(b).changes>0}function p(a,b){return Number(a.prepare("SELECT COUNT(*) AS count FROM worktrees WHERE repository_path = ?").get(b).count)||0}function q(a,b,c){let d=Date.now(),e=["updated_at = ?"],f=[d];void 0!==c.name&&(e.push("name = ?"),f.push(c.name)),void 0!==c.displayName&&(e.push("display_name = ?"),f.push(c.displayName||null)),void 0!==c.enabled&&(e.push("enabled = ?"),f.push(+!!c.enabled)),void 0!==c.visible&&(e.push("visible = ?"),f.push(+!!c.visible)),void 0!==c.cloneUrl&&(e.push("clone_url = ?"),f.push(c.cloneUrl||null)),void 0!==c.normalizedCloneUrl&&(e.push("normalized_clone_url = ?"),f.push(c.normalizedCloneUrl||null)),f.push(b),a.prepare(`
17
+ UPDATE repositories
18
+ SET ${e.join(", ")}
19
+ WHERE id = ?
20
+ `).run(...f)}function r(a){return a.prepare(`
21
+ SELECT * FROM repositories
22
+ ORDER BY name ASC
23
+ `).all().map(i)}function s(a){return a.prepare(`
24
+ SELECT r.*,
25
+ (SELECT COUNT(*) FROM worktrees w WHERE w.repository_path = r.path) AS worktree_count
26
+ FROM repositories r
27
+ ORDER BY r.name ASC
28
+ `).all().map(a=>({...i(a),worktreeCount:Number(a.worktree_count)||0}))}function t(a){return f().resolve(a)}function u(a){if(!a||"string"!=typeof a)return{valid:!1,error:"repositoryPath is required"};if(a.includes("\0"))return{valid:!1,error:"Invalid repository path"};let b=t(a);return(0,g.fW)(b)?{valid:!1,error:"Invalid repository path"}:{valid:!0,resolvedPath:b}}function v(a,b){for(let c of b){let b=t(c);n(a,b)||k(a,{name:f().basename(b),path:b,cloneSource:"local",isEnvManaged:!0,enabled:!0})}let c=function(a,b){let c=a.prepare("SELECT path FROM repositories WHERE enabled = 0").all().map(a=>a.path);return b.filter(a=>!c.includes(t(a)))}(a,b),d=b.filter(a=>!c.includes(a));return{filteredPaths:c,excludedPaths:d,excludedCount:d.length}}function w(a,b){if(x(a,b))return;let c=t(b);if(a.prepare("SELECT COUNT(*) as count FROM repositories WHERE enabled = 0").get().count>=1e3)throw Error("Disabled repository limit exceeded");k(a,{name:f().basename(c),path:c,cloneSource:"local",isEnvManaged:!1,enabled:!1})}function x(a,b){let c=n(a,t(b));return!!c&&(q(a,c.id,{enabled:!1}),!0)}function y(a){return a.prepare("SELECT * FROM repositories WHERE enabled = 0 ORDER BY name ASC").all().map(i)}function z(a,b){let c=n(a,t(b));return c?(q(a,c.id,{enabled:!0}),{...c,enabled:!0}):null}function A(a,b){let c=(0,d.randomUUID)(),e=Date.now();return a.prepare(`
29
+ INSERT INTO clone_jobs (
30
+ id, clone_url, normalized_clone_url, target_path,
31
+ status, progress, created_at
32
+ )
33
+ VALUES (?, ?, ?, ?, 'pending', 0, ?)
34
+ `).run(c,b.cloneUrl,b.normalizedCloneUrl,b.targetPath,e),{id:c,cloneUrl:b.cloneUrl,normalizedCloneUrl:b.normalizedCloneUrl,targetPath:b.targetPath,status:"pending",progress:0,createdAt:new Date(e)}}function B(a,b){let c=a.prepare(`
35
+ SELECT * FROM clone_jobs
36
+ WHERE id = ?
37
+ `).get(b);return c?j(c):null}function C(a,b,c){let d=[],e=[];void 0!==c.status&&(d.push("status = ?"),e.push(c.status)),void 0!==c.pid&&(d.push("pid = ?"),e.push(c.pid)),void 0!==c.progress&&(d.push("progress = ?"),e.push(c.progress)),void 0!==c.repositoryId&&(d.push("repository_id = ?"),e.push(c.repositoryId)),void 0!==c.errorCategory&&(d.push("error_category = ?"),e.push(c.errorCategory)),void 0!==c.errorCode&&(d.push("error_code = ?"),e.push(c.errorCode)),void 0!==c.errorMessage&&(d.push("error_message = ?"),e.push(c.errorMessage)),void 0!==c.startedAt&&(d.push("started_at = ?"),e.push(c.startedAt.getTime())),void 0!==c.completedAt&&(d.push("completed_at = ?"),e.push(c.completedAt.getTime())),0!==d.length&&(e.push(b),a.prepare(`
38
+ UPDATE clone_jobs
39
+ SET ${d.join(", ")}
40
+ WHERE id = ?
41
+ `).run(...e))}function D(a,b){let c=a.prepare(`
42
+ SELECT * FROM clone_jobs
43
+ WHERE normalized_clone_url = ?
44
+ AND status IN ('pending', 'running')
45
+ ORDER BY created_at DESC
46
+ LIMIT 1
47
+ `).get(b);return c?j(c):null}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=4444,exports.ids=[4444],exports.modules={12462:(a,b,c)=>{c.d(b,{T8:()=>j,o4:()=>k});var d=c(31766),e=c(56791),f=c(1722),g=c(82450),h=c(15194);let i=(0,c(72626).h)("assistant-response-saver");function j(a,b){switch(b){case"claude":return(0,g.NN)(a);case"gemini":return(0,g.IS)(a);case"opencode":return(0,g.aW)(a);case"copilot":return(0,g.LH)(a);default:return a.trim()}}async function k(a,b,c,g,k){let l=k??c;try{let m;if((0,h.VA)(c))return null;let n=(0,e.y1)(a,b,l),o=n?.lastCapturedLine||0;try{m=await (0,d.Wh)(b,c,1e4,k)}catch{return i.info("failed-to-capture"),null}if(!m)return null;let p=m.split("\n"),q=p.length;for(;q>0&&""===p[q-1].trim();)q--;let r=q,{bufferReset:s,reason:t}=r>0&&o>25&&r+25<o?{bufferReset:!0,reason:"shrink"}:r>0&&o>50&&r<50?{bufferReset:!0,reason:"restart"}:{bufferReset:!1,reason:null};s&&i.info("buffer:reset-detected",{reason:t,currentLineCount:r,lastCapturedLine:o});let u=s?0:o;if(!s&&r<=o)return r<o&&((0,e.gb)(a,b,c,r,k),i.info("position:corrected-stale",{from:o,to:r})),null;let v=p.slice(u).join("\n"),w=j(v,c);if(!w||""===w.trim())return(0,e.gb)(a,b,c,r,k),i.debug("response:empty-after-clean",{currentLineCount:r}),null;let x=new Date(g.getTime()-1),y=(0,e.oH)(a,{worktreeId:b,role:"assistant",content:w,messageType:"normal",timestamp:x,cliToolId:c,instanceId:l});return(0,e.gb)(a,b,c,r,k),(0,f.Lo)("message",{worktreeId:b,message:y}),i.info("response:saved",{fromLine:o,toLine:r}),y}catch(a){return i.error("error:",{error:a instanceof Error?a.message:String(a)}),null}}},16700:(a,b,c)=>{c.d(b,{A:()=>e,Y:()=>f});let d=new Set(["claude","codex","antigravity"]);function e(a){return d.has(a)?"non_interactive":"interactive"}function f(a){return"non_interactive"===e(a)}},46961:(a,b,c)=>{c.d(b,{e:()=>f});var d=c(56791),e=c(82149);function f(a,b){if(!(0,d.iT)(a,b))return;let c=(0,d.ce)(a,b),f=(0,e.kx)(b);c&&!f&&((0,d.az)(a,c.id,{status:"failed",finishedAt:new Date,stderrText:[c.stderrText??"","[Execution reconciled after process registry loss]"].filter(Boolean).join("\n")}),(0,d.xR)(a,b,{status:"ready"}))}},49070:(a,b,c)=>{c.d(b,{A:()=>l});var d=c(31766),e=c(3523),f=c(12462),g=c(56791),h=c(57821),i=c(72626),j=c(26283);let k=(0,i.h)("assistant/conversation-response-saver");async function l(a,b,c,i=new Date){try{let k=(0,g.qK)(a,b),l=k?.lastCapturedLine??0,m=(0,h.G)(b),n=await (0,d.Wh)(m,c,1e4),o="codex"===c?function(a,b){let c=a.split("\n"),d=c.length;for(;d>0&&""===c[d-1].trim();)d--;let e=c.slice(0,d),f=[];for(let a=Math.max(0,b);a<e.length;a++){let b=(0,j.aJ)(e[a]).trimEnd();/^›(?:\s+.*)?$/.test(b)&&f.push(a)}if(f.length<2)return null;let g=f[f.length-2],h=f[f.length-1],i=(0,j.aJ)(e.slice(g+1,h).join("\n")).trim();return i?!function(a){let b=a.trim();return/^•\s+Working\s+\(\d+s\s+•\s+esc to interrupt\)$/i.test(b)||/^•\s+Thinking\s+\(\d+s\s+•\s+esc to interrupt\)$/i.test(b)||/^•\s+Running/i.test(b)}(i)?{response:i,lineCount:h}:null:{response:"",lineCount:h}}(n,l):null,p=o?{response:o.response,isComplete:!0,lineCount:o.lineCount,bufferReset:!1}:(0,e.z$)(n,l,c);if(!p||!p.isComplete||!p.bufferReset&&p.lineCount<=l)return null;let q=(0,f.T8)(p.response,c);if(!q||""===q.trim()||"[No content]"===q)return(0,g.PP)(a,b,p.lineCount),null;let r=(0,g.qp)(a,{conversationId:b,role:"assistant",content:q,messageType:"normal",timestamp:i});return(0,g.PP)(a,b,p.lineCount),r}catch(a){return k.debug("save:skipped",{conversationId:b,cliToolId:c,error:a instanceof Error?a.message:String(a)}),null}}},57821:(a,b,c)=>{c.d(b,{G:()=>e,O:()=>f});var d=c(31268);function e(a){return`assistant-${a}`}function f(a,b){let c=d.s.getInstance().getTool(a),f=e(b),g=c.getSessionName(f);return{cliTool:c,worktreeId:f,sessionName:g}}},67502:(a,b,c)=>{c.d(b,{JD:()=>h,_$:()=>g});var d=c(15194),e=c(10406),f=c(73753);function g(a,b,c=new Date){var h;let i=(0,d.oo)(a);return[`You are an assistant using ${i}, running inside CommandMate.`,"",(h="commandmate-cli"===process.env.CM_LAUNCHED_BY?"commandmate":"commandmatedev",`## CommandMate CLI Reference
1
+ "use strict";exports.id=4444,exports.ids=[4444],exports.modules={12462:(a,b,c)=>{c.d(b,{T8:()=>j,o4:()=>k});var d=c(31766),e=c(56791),f=c(49997),g=c(82450),h=c(15194);let i=(0,c(72626).h)("assistant-response-saver");function j(a,b){switch(b){case"claude":return(0,g.NN)(a);case"gemini":return(0,g.IS)(a);case"opencode":return(0,g.aW)(a);case"copilot":return(0,g.LH)(a);default:return a.trim()}}async function k(a,b,c,g,k){let l=k??c;try{let m;if((0,h.VA)(c))return null;let n=(0,e.y1)(a,b,l),o=n?.lastCapturedLine||0;try{m=await (0,d.Wh)(b,c,1e4,k)}catch{return i.info("failed-to-capture"),null}if(!m)return null;let p=m.split("\n"),q=p.length;for(;q>0&&""===p[q-1].trim();)q--;let r=q,{bufferReset:s,reason:t}=r>0&&o>25&&r+25<o?{bufferReset:!0,reason:"shrink"}:r>0&&o>50&&r<50?{bufferReset:!0,reason:"restart"}:{bufferReset:!1,reason:null};s&&i.info("buffer:reset-detected",{reason:t,currentLineCount:r,lastCapturedLine:o});let u=s?0:o;if(!s&&r<=o)return r<o&&((0,e.gb)(a,b,c,r,k),i.info("position:corrected-stale",{from:o,to:r})),null;let v=p.slice(u).join("\n"),w=j(v,c);if(!w||""===w.trim())return(0,e.gb)(a,b,c,r,k),i.debug("response:empty-after-clean",{currentLineCount:r}),null;let x=new Date(g.getTime()-1),y=(0,e.oH)(a,{worktreeId:b,role:"assistant",content:w,messageType:"normal",timestamp:x,cliToolId:c,instanceId:l});return(0,e.gb)(a,b,c,r,k),(0,f.Lo)("message",{worktreeId:b,message:y}),i.info("response:saved",{fromLine:o,toLine:r}),y}catch(a){return i.error("error:",{error:a instanceof Error?a.message:String(a)}),null}}},16700:(a,b,c)=>{c.d(b,{A:()=>e,Y:()=>f});let d=new Set(["claude","codex","antigravity"]);function e(a){return d.has(a)?"non_interactive":"interactive"}function f(a){return"non_interactive"===e(a)}},46961:(a,b,c)=>{c.d(b,{e:()=>f});var d=c(56791),e=c(82149);function f(a,b){if(!(0,d.iT)(a,b))return;let c=(0,d.ce)(a,b),f=(0,e.kx)(b);c&&!f&&((0,d.az)(a,c.id,{status:"failed",finishedAt:new Date,stderrText:[c.stderrText??"","[Execution reconciled after process registry loss]"].filter(Boolean).join("\n")}),(0,d.xR)(a,b,{status:"ready"}))}},49070:(a,b,c)=>{c.d(b,{A:()=>l});var d=c(31766),e=c(3523),f=c(12462),g=c(56791),h=c(57821),i=c(72626),j=c(26283);let k=(0,i.h)("assistant/conversation-response-saver");async function l(a,b,c,i=new Date){try{let k=(0,g.qK)(a,b),l=k?.lastCapturedLine??0,m=(0,h.G)(b),n=await (0,d.Wh)(m,c,1e4),o="codex"===c?function(a,b){let c=a.split("\n"),d=c.length;for(;d>0&&""===c[d-1].trim();)d--;let e=c.slice(0,d),f=[];for(let a=Math.max(0,b);a<e.length;a++){let b=(0,j.aJ)(e[a]).trimEnd();/^›(?:\s+.*)?$/.test(b)&&f.push(a)}if(f.length<2)return null;let g=f[f.length-2],h=f[f.length-1],i=(0,j.aJ)(e.slice(g+1,h).join("\n")).trim();return i?!function(a){let b=a.trim();return/^•\s+Working\s+\(\d+s\s+•\s+esc to interrupt\)$/i.test(b)||/^•\s+Thinking\s+\(\d+s\s+•\s+esc to interrupt\)$/i.test(b)||/^•\s+Running/i.test(b)}(i)?{response:i,lineCount:h}:null:{response:"",lineCount:h}}(n,l):null,p=o?{response:o.response,isComplete:!0,lineCount:o.lineCount,bufferReset:!1}:(0,e.z$)(n,l,c);if(!p||!p.isComplete||!p.bufferReset&&p.lineCount<=l)return null;let q=(0,f.T8)(p.response,c);if(!q||""===q.trim()||"[No content]"===q)return(0,g.PP)(a,b,p.lineCount),null;let r=(0,g.qp)(a,{conversationId:b,role:"assistant",content:q,messageType:"normal",timestamp:i});return(0,g.PP)(a,b,p.lineCount),r}catch(a){return k.debug("save:skipped",{conversationId:b,cliToolId:c,error:a instanceof Error?a.message:String(a)}),null}}},57821:(a,b,c)=>{c.d(b,{G:()=>e,O:()=>f});var d=c(31268);function e(a){return`assistant-${a}`}function f(a,b){let c=d.s.getInstance().getTool(a),f=e(b),g=c.getSessionName(f);return{cliTool:c,worktreeId:f,sessionName:g}}},67502:(a,b,c)=>{c.d(b,{JD:()=>h,_$:()=>g});var d=c(15194),e=c(10406),f=c(73753);function g(a,b,c=new Date){var h;let i=(0,d.oo)(a);return[`You are an assistant using ${i}, running inside CommandMate.`,"",(h="commandmate-cli"===process.env.CM_LAUNCHED_BY?"commandmate":"commandmatedev",`## CommandMate CLI Reference
2
2
 
3
3
  The user runs a CommandMate server locally. These are the CLI commands available from their terminal:
4
4
 
@@ -9,53 +9,7 @@
9
9
  UPDATE daily_reports
10
10
  SET content = ?, updated_at = ?
11
11
  WHERE date = ?
12
- `).run(c,d,b).changes)throw Error(`Daily report not found for date: ${b}`)}c.d(b,{IF:()=>f,ap:()=>d,tt:()=>e})},10406:(a,b,c)=>{c.d(b,{$G:()=>s,Ir:()=>n,RS:()=>v,Uj:()=>k,Ux:()=>r,Yg:()=>o,_D:()=>p,bM:()=>x,fD:()=>z,k5:()=>y,l$:()=>t,lS:()=>u,r:()=>l,tw:()=>w,vB:()=>j});var d=c(55511),e=c(33873),f=c.n(e),g=c(7956);function h(a){return{id:a.id,name:a.name,displayName:a.display_name||void 0,path:a.path,enabled:1===a.enabled,visible:1===a.visible,cloneUrl:a.clone_url||void 0,normalizedCloneUrl:a.normalized_clone_url||void 0,cloneSource:a.clone_source,isEnvManaged:1===a.is_env_managed,createdAt:new Date(a.created_at),updatedAt:new Date(a.updated_at)}}function i(a){return{id:a.id,cloneUrl:a.clone_url,normalizedCloneUrl:a.normalized_clone_url,targetPath:a.target_path,repositoryId:a.repository_id||void 0,status:a.status,pid:a.pid||void 0,progress:a.progress,errorCategory:a.error_category||void 0,errorCode:a.error_code||void 0,errorMessage:a.error_message||void 0,startedAt:a.started_at?new Date(a.started_at):void 0,completedAt:a.completed_at?new Date(a.completed_at):void 0,createdAt:new Date(a.created_at)}}function j(a,b){let c=(0,d.randomUUID)(),e=Date.now();return a.prepare(`
13
- INSERT INTO repositories (
14
- id, name, path, enabled, visible, clone_url, normalized_clone_url,
15
- clone_source, is_env_managed, created_at, updated_at
16
- )
17
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
18
- `).run(c,b.name,b.path,+(!1!==b.enabled),+(!1!==b.visible),b.cloneUrl||null,b.normalizedCloneUrl||null,b.cloneSource,+!!b.isEnvManaged,e,e),{id:c,name:b.name,path:b.path,enabled:!1!==b.enabled,visible:!1!==b.visible,cloneUrl:b.cloneUrl,normalizedCloneUrl:b.normalizedCloneUrl,cloneSource:b.cloneSource,isEnvManaged:b.isEnvManaged||!1,createdAt:new Date(e),updatedAt:new Date(e)}}function k(a,b){let c=a.prepare(`
19
- SELECT * FROM repositories
20
- WHERE normalized_clone_url = ?
21
- `).get(b);return c?h(c):null}function l(a,b){let c=a.prepare(`
22
- SELECT * FROM repositories
23
- WHERE id = ?
24
- `).get(b);return c?h(c):null}function m(a,b){let c=a.prepare(`
25
- SELECT * FROM repositories
26
- WHERE path = ?
27
- `).get(b);return c?h(c):null}function n(a,b,c){let d=Date.now(),e=["updated_at = ?"],f=[d];void 0!==c.name&&(e.push("name = ?"),f.push(c.name)),void 0!==c.displayName&&(e.push("display_name = ?"),f.push(c.displayName||null)),void 0!==c.enabled&&(e.push("enabled = ?"),f.push(+!!c.enabled)),void 0!==c.visible&&(e.push("visible = ?"),f.push(+!!c.visible)),void 0!==c.cloneUrl&&(e.push("clone_url = ?"),f.push(c.cloneUrl||null)),void 0!==c.normalizedCloneUrl&&(e.push("normalized_clone_url = ?"),f.push(c.normalizedCloneUrl||null)),f.push(b),a.prepare(`
28
- UPDATE repositories
29
- SET ${e.join(", ")}
30
- WHERE id = ?
31
- `).run(...f)}function o(a){return a.prepare(`
32
- SELECT * FROM repositories
33
- ORDER BY name ASC
34
- `).all().map(h)}function p(a){return a.prepare(`
35
- SELECT r.*,
36
- (SELECT COUNT(*) FROM worktrees w WHERE w.repository_path = r.path) AS worktree_count
37
- FROM repositories r
38
- ORDER BY r.name ASC
39
- `).all().map(a=>({...h(a),worktreeCount:Number(a.worktree_count)||0}))}function q(a){return f().resolve(a)}function r(a){if(!a||"string"!=typeof a)return{valid:!1,error:"repositoryPath is required"};if(a.includes("\0"))return{valid:!1,error:"Invalid repository path"};let b=q(a);return(0,g.fW)(b)?{valid:!1,error:"Invalid repository path"}:{valid:!0,resolvedPath:b}}function s(a,b){for(let c of b){let b=q(c);m(a,b)||j(a,{name:f().basename(b),path:b,cloneSource:"local",isEnvManaged:!0,enabled:!0})}let c=function(a,b){let c=a.prepare("SELECT path FROM repositories WHERE enabled = 0").all().map(a=>a.path);return b.filter(a=>!c.includes(q(a)))}(a,b),d=b.filter(a=>!c.includes(a));return{filteredPaths:c,excludedPaths:d,excludedCount:d.length}}function t(a,b){let c=q(b),d=m(a,c);if(d)n(a,d.id,{enabled:!1});else{if(a.prepare("SELECT COUNT(*) as count FROM repositories WHERE enabled = 0").get().count>=1e3)throw Error("Disabled repository limit exceeded");j(a,{name:f().basename(c),path:c,cloneSource:"local",isEnvManaged:!1,enabled:!1})}}function u(a){return a.prepare("SELECT * FROM repositories WHERE enabled = 0 ORDER BY name ASC").all().map(h)}function v(a,b){let c=m(a,q(b));return c?(n(a,c.id,{enabled:!0}),{...c,enabled:!0}):null}function w(a,b){let c=(0,d.randomUUID)(),e=Date.now();return a.prepare(`
40
- INSERT INTO clone_jobs (
41
- id, clone_url, normalized_clone_url, target_path,
42
- status, progress, created_at
43
- )
44
- VALUES (?, ?, ?, ?, 'pending', 0, ?)
45
- `).run(c,b.cloneUrl,b.normalizedCloneUrl,b.targetPath,e),{id:c,cloneUrl:b.cloneUrl,normalizedCloneUrl:b.normalizedCloneUrl,targetPath:b.targetPath,status:"pending",progress:0,createdAt:new Date(e)}}function x(a,b){let c=a.prepare(`
46
- SELECT * FROM clone_jobs
47
- WHERE id = ?
48
- `).get(b);return c?i(c):null}function y(a,b,c){let d=[],e=[];void 0!==c.status&&(d.push("status = ?"),e.push(c.status)),void 0!==c.pid&&(d.push("pid = ?"),e.push(c.pid)),void 0!==c.progress&&(d.push("progress = ?"),e.push(c.progress)),void 0!==c.repositoryId&&(d.push("repository_id = ?"),e.push(c.repositoryId)),void 0!==c.errorCategory&&(d.push("error_category = ?"),e.push(c.errorCategory)),void 0!==c.errorCode&&(d.push("error_code = ?"),e.push(c.errorCode)),void 0!==c.errorMessage&&(d.push("error_message = ?"),e.push(c.errorMessage)),void 0!==c.startedAt&&(d.push("started_at = ?"),e.push(c.startedAt.getTime())),void 0!==c.completedAt&&(d.push("completed_at = ?"),e.push(c.completedAt.getTime())),0!==d.length&&(e.push(b),a.prepare(`
49
- UPDATE clone_jobs
50
- SET ${d.join(", ")}
51
- WHERE id = ?
52
- `).run(...e))}function z(a,b){let c=a.prepare(`
53
- SELECT * FROM clone_jobs
54
- WHERE normalized_clone_url = ?
55
- AND status IN ('pending', 'running')
56
- ORDER BY created_at DESC
57
- LIMIT 1
58
- `).get(b);return c?i(c):null}},20137:(a,b,c)=>{c.d(b,{Ar:()=>d,Hf:()=>k,Ww:()=>e,XI:()=>l,eb:()=>i,iI:()=>n,kd:()=>f,o1:()=>g,oN:()=>h});let d=100,e=1e4,f=["default","acceptEdits","plan","dontAsk","bypassPermissions"],g=["read-only","workspace-write","danger-full-access"],h=["allow-all-tools","yolo"],i=["--dangerously-skip-permissions"],j=[],k={claude:"acceptEdits",codex:"workspace-write",gemini:"","vibe-local":"",copilot:"allow-all-tools",antigravity:"--dangerously-skip-permissions"};function l(a){switch(a){case"codex":return g;case"copilot":return h;case"antigravity":return i;case"claude":return f;default:return j}}let m=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function n(a){return m.test(a)}},21586:(a,b,c)=>{c.d(b,{$h:()=>h,Cy:()=>r,DE:()=>s,F5:()=>k,IH:()=>f,JK:()=>d,Nb:()=>i,R7:()=>e,RP:()=>n,VU:()=>q,W9:()=>o,Xb:()=>m,bO:()=>p,bm:()=>j,qw:()=>l,t7:()=>g});let d=3e5,e=6e4,f=["claude","codex","copilot","antigravity"],g=1e3,h=5,i=100,j=1e3,k=3e3,l=15e3,m=15e3,n=6e3,o=3e3,p=500,q=20,r=1e4,s=15e3},25381:(a,b,c)=>{c.d(b,{GI:()=>D,qw:()=>E,xF:()=>A,Hw:()=>F,T5:()=>G,sZ:()=>C,XT:()=>B});var d=c(29021),e=c(33873),f=c(72626),g=c(34207),h=c(21586);let i=h.RP,j=["user_data","commit_log","issue_context"];function k(a){let b=a.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"");for(let a of j){let c=RegExp(`</?${a}>`,"gi");b=b.replace(c,a=>a.replace(/</g,"&lt;").replace(/>/g,"&gt;"))}return b.slice(0,g.uv)}var l=c(20137),m=c(52660),n=c(4868),o=c(73753),p=c(10406),q=c(9886),r=c(79646),s=c(28354);let t=(0,f.h)("github-api"),u=(0,s.promisify)(r.execFile);async function v(){try{return await u("gh",["--version"],{timeout:5e3}),!0}catch{return!1}}async function w(a,b,c){try{if(!await v())return t.debug("gh-cli-unavailable",{issueNumber:a}),null;let{stdout:d}=await u("gh",["issue","view",String(a),"--json","number,title,body,labels,state"],{cwd:b,timeout:h.Cy}),e=JSON.parse(d),f=e.labels.map(a=>"string"==typeof a?a:a.name),g=(e.body??"").slice(0,h.bO);return{repositoryName:c,number:e.number,title:e.title,labels:f,state:e.state,bodySummary:g}}catch(b){return t.debug("get-issue-info-failed",{issueNumber:a,repositoryName:c,error:String(b)}),null}}async function x(a,b){let c=(0,q.Pt)(b).slice(0,h.VU);if(0===c.length||0===a.length)return[];let d=[];for(let b of a)for(let a of c)d.push(w(a,b.path,b.name));let e=await Promise.allSettled(d),f=[];for(let a of e)"fulfilled"===a.status&&null!==a.value&&f.push(a.value);return f}var y=c(70673);let z=(0,f.h)("daily-summary"),A=2*g.uv;function B(){let a=globalThis.__dailySummaryGenerating;return!!a?.active&&(!(Date.now()-a.startedAt>h.R7+1e4)||(z.warn("failsafe-reset",{startedAt:a.startedAt}),globalThis.__dailySummaryGenerating=void 0,!1))}function C(){return B()?globalThis.__dailySummaryGenerating??null:null}class D extends Error{constructor(){super("Summary generation is already in progress"),this.name="ConcurrentGenerationError"}}class E extends Error{constructor(){super("Summary generation timed out"),this.name="GenerationTimeoutError"}}class F extends Error{constructor(a){super(a),this.name="OutputValidationError"}}async function G(a,b){let{date:c,tool:f,model:j,userInstruction:r}=b;if(B())throw z.warn("concurrent-rejected",{date:c}),new D;globalThis.__dailySummaryGenerating={active:!0,startedAt:Date.now(),date:c,tool:f};try{z.info("generation-started",{date:c,tool:f});let b=new Date(c+"T00:00:00"),s=new Date(c+"T23:59:59.999"),t=(0,m.lr)(a,{after:b,before:s});if(0===t.length)throw new F("No messages found for the specified date");let u=(0,o.vi)(a),v=new Map;for(let a of u)v.set(a.id,a.name);let w=(0,p.Yg)(a),B=w.filter(a=>!!a.enabled&&!!(0,d.existsSync)(a.path)&&!!(0,d.existsSync)((0,e.join)(a.path,".git")));B.length<w.length&&z.info("repositories-filtered",{total:w.length,valid:B.length,skipped:w.length-B.length});let C=b.toISOString(),D=s.toISOString(),G=await (0,y.wj)((0,q.z0)(B,C,D),h.qw,new Map),H=Array.from(G.values()).flatMap(({commits:a})=>a.map(a=>a.message)),I=await (0,y.wj)(x(B,H).catch(()=>[]),h.DE,[]),J=function(a,b,c,d,e){let f=`You are a technical report generator. Summarize the following work logs into a concise daily report in Japanese Markdown format.
12
+ `).run(c,d,b).changes)throw Error(`Daily report not found for date: ${b}`)}c.d(b,{IF:()=>f,ap:()=>d,tt:()=>e})},20137:(a,b,c)=>{c.d(b,{Ar:()=>d,Hf:()=>k,Ww:()=>e,XI:()=>l,eb:()=>i,iI:()=>n,kd:()=>f,o1:()=>g,oN:()=>h});let d=100,e=1e4,f=["default","acceptEdits","plan","dontAsk","bypassPermissions"],g=["read-only","workspace-write","danger-full-access"],h=["allow-all-tools","yolo"],i=["--dangerously-skip-permissions"],j=[],k={claude:"acceptEdits",codex:"workspace-write",gemini:"","vibe-local":"",copilot:"allow-all-tools",antigravity:"--dangerously-skip-permissions"};function l(a){switch(a){case"codex":return g;case"copilot":return h;case"antigravity":return i;case"claude":return f;default:return j}}let m=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function n(a){return m.test(a)}},21586:(a,b,c)=>{c.d(b,{$h:()=>h,Cy:()=>r,DE:()=>s,F5:()=>k,IH:()=>f,JK:()=>d,Nb:()=>i,R7:()=>e,RP:()=>n,VU:()=>q,W9:()=>o,Xb:()=>m,bO:()=>p,bm:()=>j,qw:()=>l,t7:()=>g});let d=3e5,e=6e4,f=["claude","codex","copilot","antigravity"],g=1e3,h=5,i=100,j=1e3,k=3e3,l=15e3,m=15e3,n=6e3,o=3e3,p=500,q=20,r=1e4,s=15e3},25381:(a,b,c)=>{c.d(b,{GI:()=>D,qw:()=>E,xF:()=>A,Hw:()=>F,T5:()=>G,sZ:()=>C,XT:()=>B});var d=c(29021),e=c(33873),f=c(72626),g=c(34207),h=c(21586);let i=h.RP,j=["user_data","commit_log","issue_context"];function k(a){let b=a.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"");for(let a of j){let c=RegExp(`</?${a}>`,"gi");b=b.replace(c,a=>a.replace(/</g,"&lt;").replace(/>/g,"&gt;"))}return b.slice(0,g.uv)}var l=c(20137),m=c(52660),n=c(4868),o=c(73753),p=c(10406),q=c(9886),r=c(79646),s=c(28354);let t=(0,f.h)("github-api"),u=(0,s.promisify)(r.execFile);async function v(){try{return await u("gh",["--version"],{timeout:5e3}),!0}catch{return!1}}async function w(a,b,c){try{if(!await v())return t.debug("gh-cli-unavailable",{issueNumber:a}),null;let{stdout:d}=await u("gh",["issue","view",String(a),"--json","number,title,body,labels,state"],{cwd:b,timeout:h.Cy}),e=JSON.parse(d),f=e.labels.map(a=>"string"==typeof a?a:a.name),g=(e.body??"").slice(0,h.bO);return{repositoryName:c,number:e.number,title:e.title,labels:f,state:e.state,bodySummary:g}}catch(b){return t.debug("get-issue-info-failed",{issueNumber:a,repositoryName:c,error:String(b)}),null}}async function x(a,b){let c=(0,q.Pt)(b).slice(0,h.VU);if(0===c.length||0===a.length)return[];let d=[];for(let b of a)for(let a of c)d.push(w(a,b.path,b.name));let e=await Promise.allSettled(d),f=[];for(let a of e)"fulfilled"===a.status&&null!==a.value&&f.push(a.value);return f}var y=c(70673);let z=(0,f.h)("daily-summary"),A=2*g.uv;function B(){let a=globalThis.__dailySummaryGenerating;return!!a?.active&&(!(Date.now()-a.startedAt>h.R7+1e4)||(z.warn("failsafe-reset",{startedAt:a.startedAt}),globalThis.__dailySummaryGenerating=void 0,!1))}function C(){return B()?globalThis.__dailySummaryGenerating??null:null}class D extends Error{constructor(){super("Summary generation is already in progress"),this.name="ConcurrentGenerationError"}}class E extends Error{constructor(){super("Summary generation timed out"),this.name="GenerationTimeoutError"}}class F extends Error{constructor(a){super(a),this.name="OutputValidationError"}}async function G(a,b){let{date:c,tool:f,model:j,userInstruction:r}=b;if(B())throw z.warn("concurrent-rejected",{date:c}),new D;globalThis.__dailySummaryGenerating={active:!0,startedAt:Date.now(),date:c,tool:f};try{z.info("generation-started",{date:c,tool:f});let b=new Date(c+"T00:00:00"),s=new Date(c+"T23:59:59.999"),t=(0,m.lr)(a,{after:b,before:s});if(0===t.length)throw new F("No messages found for the specified date");let u=(0,o.vi)(a),v=new Map;for(let a of u)v.set(a.id,a.name);let w=(0,p.Yg)(a),B=w.filter(a=>!!a.enabled&&!!(0,d.existsSync)(a.path)&&!!(0,d.existsSync)((0,e.join)(a.path,".git")));B.length<w.length&&z.info("repositories-filtered",{total:w.length,valid:B.length,skipped:w.length-B.length});let C=b.toISOString(),D=s.toISOString(),G=await (0,y.wj)((0,q.z0)(B,C,D),h.qw,new Map),H=Array.from(G.values()).flatMap(({commits:a})=>a.map(a=>a.message)),I=await (0,y.wj)(x(B,H).catch(()=>[]),h.DE,[]),J=function(a,b,c,d,e){let f=`You are a technical report generator. Summarize the following work logs into a concise daily report in Japanese Markdown format.
59
13
 
60
14
  Rules:
61
15
  - Summarize by worktree/branch