commandmate 0.27.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (918) hide show
  1. package/.env.example +28 -0
  2. package/.next/BUILD_ID +1 -1
  3. package/.next/app-build-manifest.json +286 -256
  4. package/.next/app-path-routes-manifest.json +36 -32
  5. package/.next/build-manifest.json +2 -2
  6. package/.next/prerender-manifest.json +12 -12
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +32 -0
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/app/update/route.js +1 -1
  11. package/.next/server/app/api/app/update/route.js.nft.json +1 -1
  12. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/update-check/route.js +1 -1
  14. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  16. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  17. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  19. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  20. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/assistant/messages/route.js +1 -1
  22. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  23. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/assistant/session/route.js +1 -1
  25. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  26. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/assistant/start/route.js +32 -1
  28. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  29. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/assistant/terminal/route.js +34 -3
  31. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  32. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/assistant/tools/route.js +1 -1
  34. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  35. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/capabilities/route.js +1 -1
  40. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/daily-summary/route.js +1 -1
  42. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  43. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  45. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  46. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
  48. package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
  49. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  51. package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
  52. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/external-apps/route.js +1 -1
  54. package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
  55. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/fs/browse/route.js +1 -1
  57. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
  58. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/fs/recent-paths/route.js +1 -1
  60. package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
  61. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  63. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  64. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  66. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  67. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  69. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  70. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/metrics/vibe/route.js +1 -1
  72. package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
  73. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/push/escalation/route.js +1 -1
  76. package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
  77. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/push/subscriptions/route.js +7 -1
  79. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  80. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/push/vapid/route.js +1 -1
  82. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  83. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/repositories/[id]/route.js +1 -1
  85. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  86. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  88. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +1 -1
  89. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  91. package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +1 -1
  92. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  94. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  95. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/repositories/clone/route.js +1 -1
  97. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  98. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/repositories/excluded/route.js +1 -1
  100. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  101. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/repositories/restore/route.js +1 -1
  103. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  104. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/repositories/route.js +1 -1
  106. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  107. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/repositories/scan/route.js +1 -1
  109. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  110. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/repositories/sync/route.js +1 -1
  112. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  113. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/repositories/validate-path/route.js +1 -1
  115. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
  116. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/sidebar/group-order/route.js +1 -1
  118. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  119. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  121. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/skills/installations/route.js +1 -1
  123. package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
  124. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/skills/operations/route.js +1 -1
  126. package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
  127. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/skills/reindex/route.js +1 -1
  129. package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
  130. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  132. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  134. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/tasks/[taskId]/cancel/route.js +1 -1
  136. package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  137. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
  139. package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
  140. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/templates/[id]/route.js +2 -2
  142. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  143. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/templates/route.js +2 -2
  145. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  146. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/todos/route.js +1 -1
  148. package/.next/server/app/api/todos/route.js.nft.json +1 -1
  149. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
  151. package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
  152. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/verification/runs/route.js +1 -1
  154. package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
  155. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  158. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  161. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  164. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  167. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +2 -2
  169. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/current-output/route.js +2 -2
  172. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  173. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
  176. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  181. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  182. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  185. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  194. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  197. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  200. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  206. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  211. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  218. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  221. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  224. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  230. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  233. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  236. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  239. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  241. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  242. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  245. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  248. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  251. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  254. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -0
  256. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -0
  257. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -0
  258. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  260. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  262. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  263. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  265. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  266. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/logs/route.js +2 -2
  268. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  269. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +4 -4
  271. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  272. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  274. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  275. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  277. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  278. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  279. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  280. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  281. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -0
  283. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -0
  284. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -0
  285. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -0
  286. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -0
  287. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -0
  288. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -0
  289. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -0
  290. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -0
  291. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  292. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  293. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  294. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  295. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
  296. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  298. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  299. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  301. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  302. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +5 -1
  304. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  305. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  306. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  307. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  308. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  309. package/.next/server/app/api/worktrees/[id]/schedules/route.js +6 -2
  310. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  311. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  312. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  313. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  314. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  315. package/.next/server/app/api/worktrees/[id]/send/route.js +7 -3
  316. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  317. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  318. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
  319. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  320. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  321. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  322. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  323. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  324. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  325. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  326. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  327. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  328. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  329. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  330. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  331. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  332. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  333. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
  334. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
  335. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  336. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  337. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
  338. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  339. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  340. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  341. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  342. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  343. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  344. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  345. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  346. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  347. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  348. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  349. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
  350. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  351. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  352. package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
  353. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  354. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  355. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  356. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  357. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  358. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  359. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  360. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -3
  361. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  362. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  363. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  364. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  365. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  366. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  367. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  368. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  369. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  370. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  371. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  372. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  373. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  374. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  375. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  376. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  377. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  378. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  379. package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
  380. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  381. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
  382. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
  383. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  384. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
  385. package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
  386. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  387. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  388. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  389. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  390. package/.next/server/app/api/worktrees/route.js +1 -1
  391. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  392. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  393. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  394. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  395. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  396. package/.next/server/app/more/page.js +1 -1
  397. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  398. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  399. package/.next/server/app/page_client-reference-manifest.js +1 -1
  400. package/.next/server/app/proxy/[...path]/route.js +1 -1
  401. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  402. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  403. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  404. package/.next/server/app/review/page.js +1 -1
  405. package/.next/server/app/review/page.js.nft.json +1 -1
  406. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  407. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  408. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  409. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  410. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  411. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
  412. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  413. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  414. package/.next/server/app/worktrees/[id]/page.js +15 -10
  415. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  416. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  417. package/.next/server/app/worktrees/[id]/terminal/page.js +2 -2
  418. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  419. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  420. package/.next/server/app-paths-manifest.json +36 -32
  421. package/.next/server/chunks/1058.js +1 -0
  422. package/.next/server/chunks/1068.js +1 -3
  423. package/.next/server/chunks/1191.js +13 -0
  424. package/.next/server/chunks/1296.js +1 -1
  425. package/.next/server/chunks/1601.js +2 -2
  426. package/.next/server/chunks/1714.js +7 -0
  427. package/.next/server/chunks/1886.js +5 -0
  428. package/.next/server/chunks/1944.js +1 -0
  429. package/.next/server/chunks/2119.js +1 -1
  430. package/.next/server/chunks/221.js +19 -0
  431. package/.next/server/chunks/222.js +1 -0
  432. package/.next/server/chunks/2328.js +1 -1
  433. package/.next/server/chunks/2366.js +1 -0
  434. package/.next/server/chunks/2404.js +2 -2
  435. package/.next/server/chunks/243.js +1 -0
  436. package/.next/server/chunks/2445.js +1 -1
  437. package/.next/server/chunks/2759.js +1 -1
  438. package/.next/server/chunks/3346.js +1 -1
  439. package/.next/server/chunks/3480.js +17 -1
  440. package/.next/server/chunks/3558.js +1 -0
  441. package/.next/server/chunks/4299.js +1 -0
  442. package/.next/server/chunks/4393.js +1 -1
  443. package/.next/server/chunks/5017.js +1 -1
  444. package/.next/server/chunks/5089.js +1 -1
  445. package/.next/server/chunks/5354.js +1 -1
  446. package/.next/server/chunks/5571.js +1 -1
  447. package/.next/server/chunks/6130.js +1 -1
  448. package/.next/server/chunks/6274.js +11 -10
  449. package/.next/server/chunks/6285.js +1 -1
  450. package/.next/server/chunks/6337.js +1 -0
  451. package/.next/server/chunks/6401.js +1 -1
  452. package/.next/server/chunks/663.js +78 -0
  453. package/.next/server/chunks/7472.js +1 -1
  454. package/.next/server/chunks/7824.js +1 -0
  455. package/.next/server/chunks/7905.js +1 -0
  456. package/.next/server/chunks/880.js +1 -1
  457. package/.next/server/chunks/8807.js +84 -18
  458. package/.next/server/chunks/9130.js +5 -0
  459. package/.next/server/chunks/9328.js +1 -1
  460. package/.next/server/chunks/9358.js +1 -1
  461. package/.next/server/chunks/9508.js +1 -1
  462. package/.next/server/chunks/9584.js +1 -0
  463. package/.next/server/chunks/9627.js +274 -0
  464. package/.next/server/chunks/9798.js +2 -0
  465. package/.next/server/chunks/9938.js +1 -1
  466. package/.next/server/middleware-manifest.json +5 -5
  467. package/.next/server/pages/500.html +1 -1
  468. package/.next/server/server-reference-manifest.json +1 -1
  469. package/.next/static/chunks/1188-8567ee5ecfef02ee.js +1 -0
  470. package/.next/static/chunks/3361-aa1b6e7c1d7eeeb4.js +1 -0
  471. package/.next/static/chunks/3968-8d8ca15657748bfb.js +1 -0
  472. package/.next/static/chunks/6381-d921ab728eda1191.js +1 -0
  473. package/.next/static/chunks/app/api/app/update/route-9247d6b9d647f750.js +1 -0
  474. package/.next/static/chunks/app/api/app/update-check/route-9247d6b9d647f750.js +1 -0
  475. package/.next/static/chunks/app/api/assistant/conversation/route-9247d6b9d647f750.js +1 -0
  476. package/.next/static/chunks/app/api/assistant/current-output/route-9247d6b9d647f750.js +1 -0
  477. package/.next/static/chunks/app/api/assistant/messages/route-9247d6b9d647f750.js +1 -0
  478. package/.next/static/chunks/app/api/assistant/session/route-9247d6b9d647f750.js +1 -0
  479. package/.next/static/chunks/app/api/assistant/start/route-9247d6b9d647f750.js +1 -0
  480. package/.next/static/chunks/app/api/assistant/terminal/route-9247d6b9d647f750.js +1 -0
  481. package/.next/static/chunks/app/api/assistant/tools/route-9247d6b9d647f750.js +1 -0
  482. package/.next/static/chunks/app/api/auth/login/route-9247d6b9d647f750.js +1 -0
  483. package/.next/static/chunks/app/api/auth/logout/route-9247d6b9d647f750.js +1 -0
  484. package/.next/static/chunks/app/api/auth/status/route-9247d6b9d647f750.js +1 -0
  485. package/.next/static/chunks/app/api/capabilities/route-9247d6b9d647f750.js +1 -0
  486. package/.next/static/chunks/app/api/daily-summary/route-9247d6b9d647f750.js +1 -0
  487. package/.next/static/chunks/app/api/daily-summary/status/route-9247d6b9d647f750.js +1 -0
  488. package/.next/static/chunks/app/api/external-apps/[id]/health/route-9247d6b9d647f750.js +1 -0
  489. package/.next/static/chunks/app/api/external-apps/[id]/route-9247d6b9d647f750.js +1 -0
  490. package/.next/static/chunks/app/api/external-apps/route-9247d6b9d647f750.js +1 -0
  491. package/.next/static/chunks/app/api/fs/browse/route-9247d6b9d647f750.js +1 -0
  492. package/.next/static/chunks/app/api/fs/recent-paths/route-9247d6b9d647f750.js +1 -0
  493. package/.next/static/chunks/app/api/hooks/agent-event/route-9247d6b9d647f750.js +1 -0
  494. package/.next/static/chunks/app/api/hooks/claude-done/route-9247d6b9d647f750.js +1 -0
  495. package/.next/static/chunks/app/api/hooks/permission-request/route-9247d6b9d647f750.js +1 -0
  496. package/.next/static/chunks/app/api/metrics/vibe/route-9247d6b9d647f750.js +1 -0
  497. package/.next/static/chunks/app/api/ollama/models/route-9247d6b9d647f750.js +1 -0
  498. package/.next/static/chunks/app/api/push/escalation/route-9247d6b9d647f750.js +1 -0
  499. package/.next/static/chunks/app/api/push/subscriptions/route-9247d6b9d647f750.js +1 -0
  500. package/.next/static/chunks/app/api/push/vapid/route-9247d6b9d647f750.js +1 -0
  501. package/.next/static/chunks/app/api/repositories/[id]/route-9247d6b9d647f750.js +1 -0
  502. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-9247d6b9d647f750.js +1 -0
  503. package/.next/static/chunks/app/api/repositories/[id]/todos/route-9247d6b9d647f750.js +1 -0
  504. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-9247d6b9d647f750.js +1 -0
  505. package/.next/static/chunks/app/api/repositories/clone/route-9247d6b9d647f750.js +1 -0
  506. package/.next/static/chunks/app/api/repositories/excluded/route-9247d6b9d647f750.js +1 -0
  507. package/.next/static/chunks/app/api/repositories/restore/route-9247d6b9d647f750.js +1 -0
  508. package/.next/static/chunks/app/api/repositories/route-9247d6b9d647f750.js +1 -0
  509. package/.next/static/chunks/app/api/repositories/scan/route-9247d6b9d647f750.js +1 -0
  510. package/.next/static/chunks/app/api/repositories/sync/route-9247d6b9d647f750.js +1 -0
  511. package/.next/static/chunks/app/api/repositories/validate-path/route-9247d6b9d647f750.js +1 -0
  512. package/.next/static/chunks/app/api/sidebar/group-order/route-9247d6b9d647f750.js +1 -0
  513. package/.next/static/chunks/app/api/skills/[id]/route-9247d6b9d647f750.js +1 -0
  514. package/.next/static/chunks/app/api/skills/installations/route-9247d6b9d647f750.js +1 -0
  515. package/.next/static/chunks/app/api/skills/operations/route-9247d6b9d647f750.js +1 -0
  516. package/.next/static/chunks/app/api/skills/reindex/route-9247d6b9d647f750.js +1 -0
  517. package/.next/static/chunks/app/api/skills/route-9247d6b9d647f750.js +1 -0
  518. package/.next/static/chunks/app/api/slash-commands/route-9247d6b9d647f750.js +1 -0
  519. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-9247d6b9d647f750.js +1 -0
  520. package/.next/static/chunks/app/api/tasks/[taskId]/route-9247d6b9d647f750.js +1 -0
  521. package/.next/static/chunks/app/api/templates/[id]/route-9247d6b9d647f750.js +1 -0
  522. package/.next/static/chunks/app/api/templates/route-9247d6b9d647f750.js +1 -0
  523. package/.next/static/chunks/app/api/todos/route-9247d6b9d647f750.js +1 -0
  524. package/.next/static/chunks/app/api/verification/runs/[runId]/route-9247d6b9d647f750.js +1 -0
  525. package/.next/static/chunks/app/api/verification/runs/route-9247d6b9d647f750.js +1 -0
  526. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-9247d6b9d647f750.js +1 -0
  527. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-9247d6b9d647f750.js +1 -0
  528. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-9247d6b9d647f750.js +1 -0
  529. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-9247d6b9d647f750.js +1 -0
  530. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-9247d6b9d647f750.js +1 -0
  531. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-9247d6b9d647f750.js +1 -0
  532. package/.next/static/chunks/app/api/worktrees/[id]/env/route-9247d6b9d647f750.js +1 -0
  533. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-9247d6b9d647f750.js +1 -0
  534. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-9247d6b9d647f750.js +1 -0
  535. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-9247d6b9d647f750.js +1 -0
  536. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-9247d6b9d647f750.js +1 -0
  537. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-9247d6b9d647f750.js +1 -0
  538. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-9247d6b9d647f750.js +1 -0
  539. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-9247d6b9d647f750.js +1 -0
  540. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-9247d6b9d647f750.js +1 -0
  541. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-9247d6b9d647f750.js +1 -0
  542. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-9247d6b9d647f750.js +1 -0
  543. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-9247d6b9d647f750.js +1 -0
  544. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-9247d6b9d647f750.js +1 -0
  545. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-9247d6b9d647f750.js +1 -0
  546. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-9247d6b9d647f750.js +1 -0
  547. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-9247d6b9d647f750.js +1 -0
  548. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-9247d6b9d647f750.js +1 -0
  549. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-9247d6b9d647f750.js +1 -0
  550. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-9247d6b9d647f750.js +1 -0
  551. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-9247d6b9d647f750.js +1 -0
  552. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-9247d6b9d647f750.js +1 -0
  553. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-9247d6b9d647f750.js +1 -0
  554. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-9247d6b9d647f750.js +1 -0
  555. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-9247d6b9d647f750.js +1 -0
  556. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-9247d6b9d647f750.js +1 -0
  557. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-9247d6b9d647f750.js +1 -0
  558. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-9247d6b9d647f750.js +1 -0
  559. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-9247d6b9d647f750.js +1 -0
  560. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-9247d6b9d647f750.js +1 -0
  561. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-9247d6b9d647f750.js +1 -0
  562. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-9247d6b9d647f750.js +1 -0
  563. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-9247d6b9d647f750.js +1 -0
  564. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-9247d6b9d647f750.js +1 -0
  565. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-9247d6b9d647f750.js +1 -0
  566. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-9247d6b9d647f750.js +1 -0
  567. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-9247d6b9d647f750.js +1 -0
  568. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-9247d6b9d647f750.js +1 -0
  569. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-9247d6b9d647f750.js +1 -0
  570. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-9247d6b9d647f750.js +1 -0
  571. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-9247d6b9d647f750.js +1 -0
  572. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-9247d6b9d647f750.js +1 -0
  573. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-9247d6b9d647f750.js +1 -0
  574. package/.next/static/chunks/app/api/worktrees/[id]/route-9247d6b9d647f750.js +1 -0
  575. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-9247d6b9d647f750.js +1 -0
  576. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-9247d6b9d647f750.js +1 -0
  577. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-9247d6b9d647f750.js +1 -0
  578. package/.next/static/chunks/app/api/worktrees/[id]/search/route-9247d6b9d647f750.js +1 -0
  579. package/.next/static/chunks/app/api/worktrees/[id]/send/route-9247d6b9d647f750.js +1 -0
  580. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-9247d6b9d647f750.js +1 -0
  581. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-9247d6b9d647f750.js +1 -0
  582. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-9247d6b9d647f750.js +1 -0
  583. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-9247d6b9d647f750.js +1 -0
  584. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-9247d6b9d647f750.js +1 -0
  585. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-9247d6b9d647f750.js +1 -0
  586. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-9247d6b9d647f750.js +1 -0
  587. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-9247d6b9d647f750.js +1 -0
  588. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-9247d6b9d647f750.js +1 -0
  589. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-9247d6b9d647f750.js +1 -0
  590. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-9247d6b9d647f750.js +1 -0
  591. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-9247d6b9d647f750.js +1 -0
  592. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-9247d6b9d647f750.js +1 -0
  593. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-9247d6b9d647f750.js +1 -0
  594. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-9247d6b9d647f750.js +1 -0
  595. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-9247d6b9d647f750.js +1 -0
  596. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-9247d6b9d647f750.js +1 -0
  597. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-9247d6b9d647f750.js +1 -0
  598. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-9247d6b9d647f750.js +1 -0
  599. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-9247d6b9d647f750.js +1 -0
  600. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-9247d6b9d647f750.js +1 -0
  601. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-9247d6b9d647f750.js +1 -0
  602. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-9247d6b9d647f750.js +1 -0
  603. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-9247d6b9d647f750.js +1 -0
  604. package/.next/static/chunks/app/api/worktrees/route-9247d6b9d647f750.js +1 -0
  605. package/.next/static/chunks/app/manifest.webmanifest/route-9247d6b9d647f750.js +1 -0
  606. package/.next/static/chunks/app/more/page-03867ab635d197c7.js +1 -0
  607. package/.next/static/chunks/app/proxy/[...path]/route-9247d6b9d647f750.js +1 -0
  608. package/.next/static/chunks/app/review/page-9a6d18ddcccbb63c.js +1 -0
  609. package/.next/static/chunks/app/worktrees/[id]/layout-9247d6b9d647f750.js +1 -0
  610. package/.next/static/chunks/app/worktrees/[id]/page-27b7cb2e77099eec.js +1 -0
  611. package/.next/static/chunks/app/worktrees/[id]/terminal/page-00ad5d9a62a71cab.js +1 -0
  612. package/.next/static/css/98722bc4152cedcc.css +1 -0
  613. package/.next/trace +13 -13
  614. package/.next/types/app/api/worktrees/[id]/instances/opencode/route.ts +347 -0
  615. package/.next/types/app/api/worktrees/[id]/opencode/diff/route.ts +347 -0
  616. package/.next/types/app/api/worktrees/[id]/opencode/session/route.ts +347 -0
  617. package/.next/types/app/api/worktrees/[id]/opencode/share/route.ts +347 -0
  618. package/.next/types/routes.d.ts +5 -1
  619. package/.next/types/validator.ts +36 -0
  620. package/README.md +9 -1
  621. package/dist/cli/commands/init.d.ts.map +1 -1
  622. package/dist/cli/commands/init.js +66 -0
  623. package/dist/cli/commands/instances.d.ts.map +1 -1
  624. package/dist/cli/commands/instances.js +46 -1
  625. package/dist/cli/commands/interrupt.d.ts +25 -0
  626. package/dist/cli/commands/interrupt.d.ts.map +1 -0
  627. package/dist/cli/commands/interrupt.js +146 -0
  628. package/dist/cli/commands/report.d.ts.map +1 -1
  629. package/dist/cli/commands/report.js +11 -4
  630. package/dist/cli/commands/respond.d.ts.map +1 -1
  631. package/dist/cli/commands/respond.js +146 -1
  632. package/dist/cli/commands/status.d.ts.map +1 -1
  633. package/dist/cli/commands/status.js +104 -0
  634. package/dist/cli/commands/wait.d.ts.map +1 -1
  635. package/dist/cli/commands/wait.js +39 -1
  636. package/dist/cli/config/agent-target-options.d.ts +12 -0
  637. package/dist/cli/config/agent-target-options.d.ts.map +1 -1
  638. package/dist/cli/config/agent-target-options.js +15 -1
  639. package/dist/cli/docs/agent-operations.d.ts +1 -1
  640. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  641. package/dist/cli/docs/agent-operations.js +34 -0
  642. package/dist/cli/program.d.ts.map +1 -1
  643. package/dist/cli/program.js +6 -0
  644. package/dist/cli/types/api-responses.d.ts +375 -0
  645. package/dist/cli/types/api-responses.d.ts.map +1 -1
  646. package/dist/cli/types/index.d.ts +63 -0
  647. package/dist/cli/types/index.d.ts.map +1 -1
  648. package/dist/cli/types/index.js +31 -1
  649. package/dist/cli/utils/daemon.d.ts.map +1 -1
  650. package/dist/cli/utils/daemon.js +3 -0
  651. package/dist/cli/utils/env-setup.d.ts +24 -0
  652. package/dist/cli/utils/env-setup.d.ts.map +1 -1
  653. package/dist/cli/utils/env-setup.js +70 -0
  654. package/dist/cli/utils/vapid-keygen.d.ts +74 -0
  655. package/dist/cli/utils/vapid-keygen.d.ts.map +1 -0
  656. package/dist/cli/utils/vapid-keygen.js +111 -0
  657. package/dist/lib/cli-tools/types.d.ts +11 -1
  658. package/dist/lib/cli-tools/types.d.ts.map +1 -1
  659. package/dist/lib/detection/tools/verified-against.d.ts +14 -3
  660. package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
  661. package/dist/lib/detection/tools/verified-against.js +14 -3
  662. package/dist/lib/push/vapid.d.ts +178 -0
  663. package/dist/lib/push/vapid.d.ts.map +1 -0
  664. package/dist/lib/push/vapid.js +293 -0
  665. package/dist/lib/server/localhost-self-check.d.ts +203 -0
  666. package/dist/lib/server/localhost-self-check.d.ts.map +1 -0
  667. package/dist/lib/server/localhost-self-check.js +333 -0
  668. package/dist/server/locales/en/notifications.json +23 -1
  669. package/dist/server/locales/ja/notifications.json +23 -1
  670. package/dist/server/server.js +103 -0
  671. package/dist/server/src/config/image-extensions.js +244 -0
  672. package/dist/server/src/config/opencode-constants.js +69 -0
  673. package/dist/server/src/config/tmux-pane-config.js +100 -1
  674. package/dist/server/src/lib/cli-tools/base.js +33 -48
  675. package/dist/server/src/lib/cli-tools/opencode-config.js +12 -0
  676. package/dist/server/src/lib/cli-tools/opencode.js +435 -7
  677. package/dist/server/src/lib/cli-tools/start-availability.js +160 -0
  678. package/dist/server/src/lib/cmate-cli-tool-parser.js +328 -7
  679. package/dist/server/src/lib/cmate-parser.js +12 -0
  680. package/dist/server/src/lib/db/agent-instances-db.js +129 -0
  681. package/dist/server/src/lib/db/agent-session-cost-db.js +204 -0
  682. package/dist/server/src/lib/db/agent-session-cost-sampler.js +194 -0
  683. package/dist/server/src/lib/db/chat-db.js +33 -0
  684. package/dist/server/src/lib/db/db-instance.js +11 -0
  685. package/dist/server/src/lib/db/db.js +8 -3
  686. package/dist/server/src/lib/db/migrations/index.js +6 -0
  687. package/dist/server/src/lib/db/migrations/runner.js +1 -1
  688. package/dist/server/src/lib/db/migrations/v57-push-subscription-defaults-notice.js +54 -0
  689. package/dist/server/src/lib/db/migrations/v58-agent-session-costs.js +100 -0
  690. package/dist/server/src/lib/db/migrations/v59-opencode-instance-settings.js +71 -0
  691. package/dist/server/src/lib/db/push-subscriptions-db.js +56 -5
  692. package/dist/server/src/lib/detection/cli-patterns.js +17 -6
  693. package/dist/server/src/lib/detection/excerpt.js +48 -0
  694. package/dist/server/src/lib/detection/model-info-extractor.js +26 -3
  695. package/dist/server/src/lib/detection/opencode-modal-overlay.js +400 -0
  696. package/dist/server/src/lib/detection/opencode-pane-obstruction.js +181 -0
  697. package/dist/server/src/lib/detection/status-detector.js +7 -0
  698. package/dist/server/src/lib/detection/status-reason.js +20 -0
  699. package/dist/server/src/lib/detection/terminal-columns.js +94 -0
  700. package/dist/server/src/lib/detection/tools/opencode/detect.js +43 -0
  701. package/dist/server/src/lib/detection/tools/opencode/prompt.js +20 -0
  702. package/dist/server/src/lib/detection/tools/verified-against.js +14 -3
  703. package/dist/server/src/lib/detection/upstream-faults.js +7 -22
  704. package/dist/server/src/lib/hooks/agent-session-telemetry.js +324 -0
  705. package/dist/server/src/lib/hooks/pending-decision-kind.js +72 -0
  706. package/dist/server/src/lib/hooks/sources/define-source.js +88 -0
  707. package/dist/server/src/lib/hooks/sources/opencode/client.js +907 -2
  708. package/dist/server/src/lib/hooks/sources/opencode/diff.js +336 -0
  709. package/dist/server/src/lib/hooks/sources/opencode/history.js +480 -0
  710. package/dist/server/src/lib/hooks/sources/opencode/ingest.js +76 -7
  711. package/dist/server/src/lib/hooks/sources/opencode/launch-settings.js +222 -0
  712. package/dist/server/src/lib/hooks/sources/opencode/mappers.js +31 -0
  713. package/dist/server/src/lib/hooks/sources/opencode/payloads.js +45 -0
  714. package/dist/server/src/lib/hooks/sources/opencode/ports.js +16 -0
  715. package/dist/server/src/lib/hooks/sources/opencode/push.js +307 -0
  716. package/dist/server/src/lib/hooks/sources/opencode/reattach.js +284 -0
  717. package/dist/server/src/lib/hooks/sources/opencode/runtime.js +165 -2
  718. package/dist/server/src/lib/hooks/sources/opencode/source.js +46 -2
  719. package/dist/server/src/lib/hooks/sources/opencode/subscription.js +407 -4
  720. package/dist/server/src/lib/hooks/sources/opencode/transcript.js +383 -0
  721. package/dist/server/src/lib/hooks/structured-decision-response.js +460 -0
  722. package/dist/server/src/lib/job-executor.js +43 -20
  723. package/dist/server/src/lib/polling/response-checker.js +43 -16
  724. package/dist/server/src/lib/polling/structured-history-gate.js +75 -0
  725. package/dist/server/src/lib/prompt-answer-sender.js +153 -2
  726. package/dist/server/src/lib/push/delivery-health.js +237 -0
  727. package/dist/server/src/lib/push/failure-push-notifier.js +109 -7
  728. package/dist/server/src/lib/push/index.js +25 -1
  729. package/dist/server/src/lib/push/prompt-card-state.js +254 -14
  730. package/dist/server/src/lib/push/push-sender.js +63 -12
  731. package/dist/server/src/lib/push/resolution-push-notifier.js +15 -3
  732. package/dist/server/src/lib/push/vapid.js +264 -5
  733. package/dist/server/src/lib/push/waiting-push-notifier.js +7 -0
  734. package/dist/server/src/lib/server/localhost-self-check.js +333 -0
  735. package/dist/server/src/lib/session/agent-event-state.js +169 -4
  736. package/dist/server/src/lib/session/claude-executor.js +152 -15
  737. package/dist/server/src/lib/session/current-output-builder.js +182 -15
  738. package/dist/server/src/lib/session/opencode-session-api.js +214 -0
  739. package/dist/server/src/lib/session/opencode-session-recall.js +168 -0
  740. package/dist/server/src/lib/session/opencode-session-store.js +274 -0
  741. package/dist/server/src/lib/session/provisional-turn.js +54 -1
  742. package/dist/server/src/lib/session/send-user-message.js +6 -5
  743. package/dist/server/src/lib/session/structured-prompt.js +53 -2
  744. package/dist/server/src/lib/skills/compatibility-matrix.js +50 -1
  745. package/dist/server/src/lib/tmux/tmux.js +74 -4
  746. package/dist/server/src/lib/verification/gate-runner.js +71 -8
  747. package/dist/server/src/types/agent-session.js +63 -0
  748. package/dist/server/src/types/agent-transcript.js +80 -0
  749. package/dist/server/src/types/opencode-export.js +228 -0
  750. package/dist/server/src/types/opencode-instance-settings.js +140 -0
  751. package/dist/server/src/types/opencode-share.js +111 -0
  752. package/dist/server/src/types/terminal-keys.js +69 -1
  753. package/dist/types/cli-tool-contracts.d.ts +48 -0
  754. package/dist/types/cli-tool-contracts.d.ts.map +1 -1
  755. package/dist/types/terminal-keys.d.ts +89 -0
  756. package/dist/types/terminal-keys.d.ts.map +1 -0
  757. package/dist/types/terminal-keys.js +105 -0
  758. package/package.json +1 -1
  759. package/.next/server/chunks/1029.js +0 -1
  760. package/.next/server/chunks/1239.js +0 -1
  761. package/.next/server/chunks/1538.js +0 -7
  762. package/.next/server/chunks/2546.js +0 -1
  763. package/.next/server/chunks/2689.js +0 -13
  764. package/.next/server/chunks/3292.js +0 -1
  765. package/.next/server/chunks/3417.js +0 -1
  766. package/.next/server/chunks/3736.js +0 -1
  767. package/.next/server/chunks/4423.js +0 -1
  768. package/.next/server/chunks/4444.js +0 -32
  769. package/.next/server/chunks/4565.js +0 -3
  770. package/.next/server/chunks/467.js +0 -1
  771. package/.next/server/chunks/4905.js +0 -5
  772. package/.next/server/chunks/552.js +0 -19
  773. package/.next/server/chunks/5998.js +0 -74
  774. package/.next/server/chunks/6919.js +0 -1
  775. package/.next/server/chunks/7970.js +0 -229
  776. package/.next/server/chunks/8536.js +0 -1
  777. package/.next/server/chunks/9284.js +0 -1
  778. package/.next/static/chunks/3361-5d6e93fba8a92bc1.js +0 -1
  779. package/.next/static/chunks/6381-b7250e8ca7a44c6c.js +0 -1
  780. package/.next/static/chunks/8521-c43994fb58501d13.js +0 -1
  781. package/.next/static/chunks/app/api/app/update/route-6add0d88e2828c23.js +0 -1
  782. package/.next/static/chunks/app/api/app/update-check/route-6add0d88e2828c23.js +0 -1
  783. package/.next/static/chunks/app/api/assistant/conversation/route-6add0d88e2828c23.js +0 -1
  784. package/.next/static/chunks/app/api/assistant/current-output/route-6add0d88e2828c23.js +0 -1
  785. package/.next/static/chunks/app/api/assistant/messages/route-6add0d88e2828c23.js +0 -1
  786. package/.next/static/chunks/app/api/assistant/session/route-6add0d88e2828c23.js +0 -1
  787. package/.next/static/chunks/app/api/assistant/start/route-6add0d88e2828c23.js +0 -1
  788. package/.next/static/chunks/app/api/assistant/terminal/route-6add0d88e2828c23.js +0 -1
  789. package/.next/static/chunks/app/api/assistant/tools/route-6add0d88e2828c23.js +0 -1
  790. package/.next/static/chunks/app/api/auth/login/route-6add0d88e2828c23.js +0 -1
  791. package/.next/static/chunks/app/api/auth/logout/route-6add0d88e2828c23.js +0 -1
  792. package/.next/static/chunks/app/api/auth/status/route-6add0d88e2828c23.js +0 -1
  793. package/.next/static/chunks/app/api/capabilities/route-6add0d88e2828c23.js +0 -1
  794. package/.next/static/chunks/app/api/daily-summary/route-6add0d88e2828c23.js +0 -1
  795. package/.next/static/chunks/app/api/daily-summary/status/route-6add0d88e2828c23.js +0 -1
  796. package/.next/static/chunks/app/api/external-apps/[id]/health/route-6add0d88e2828c23.js +0 -1
  797. package/.next/static/chunks/app/api/external-apps/[id]/route-6add0d88e2828c23.js +0 -1
  798. package/.next/static/chunks/app/api/external-apps/route-6add0d88e2828c23.js +0 -1
  799. package/.next/static/chunks/app/api/fs/browse/route-6add0d88e2828c23.js +0 -1
  800. package/.next/static/chunks/app/api/fs/recent-paths/route-6add0d88e2828c23.js +0 -1
  801. package/.next/static/chunks/app/api/hooks/agent-event/route-6add0d88e2828c23.js +0 -1
  802. package/.next/static/chunks/app/api/hooks/claude-done/route-6add0d88e2828c23.js +0 -1
  803. package/.next/static/chunks/app/api/hooks/permission-request/route-6add0d88e2828c23.js +0 -1
  804. package/.next/static/chunks/app/api/metrics/vibe/route-6add0d88e2828c23.js +0 -1
  805. package/.next/static/chunks/app/api/ollama/models/route-6add0d88e2828c23.js +0 -1
  806. package/.next/static/chunks/app/api/push/escalation/route-6add0d88e2828c23.js +0 -1
  807. package/.next/static/chunks/app/api/push/subscriptions/route-6add0d88e2828c23.js +0 -1
  808. package/.next/static/chunks/app/api/push/vapid/route-6add0d88e2828c23.js +0 -1
  809. package/.next/static/chunks/app/api/repositories/[id]/route-6add0d88e2828c23.js +0 -1
  810. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-6add0d88e2828c23.js +0 -1
  811. package/.next/static/chunks/app/api/repositories/[id]/todos/route-6add0d88e2828c23.js +0 -1
  812. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-6add0d88e2828c23.js +0 -1
  813. package/.next/static/chunks/app/api/repositories/clone/route-6add0d88e2828c23.js +0 -1
  814. package/.next/static/chunks/app/api/repositories/excluded/route-6add0d88e2828c23.js +0 -1
  815. package/.next/static/chunks/app/api/repositories/restore/route-6add0d88e2828c23.js +0 -1
  816. package/.next/static/chunks/app/api/repositories/route-6add0d88e2828c23.js +0 -1
  817. package/.next/static/chunks/app/api/repositories/scan/route-6add0d88e2828c23.js +0 -1
  818. package/.next/static/chunks/app/api/repositories/sync/route-6add0d88e2828c23.js +0 -1
  819. package/.next/static/chunks/app/api/repositories/validate-path/route-6add0d88e2828c23.js +0 -1
  820. package/.next/static/chunks/app/api/sidebar/group-order/route-6add0d88e2828c23.js +0 -1
  821. package/.next/static/chunks/app/api/skills/[id]/route-6add0d88e2828c23.js +0 -1
  822. package/.next/static/chunks/app/api/skills/installations/route-6add0d88e2828c23.js +0 -1
  823. package/.next/static/chunks/app/api/skills/operations/route-6add0d88e2828c23.js +0 -1
  824. package/.next/static/chunks/app/api/skills/reindex/route-6add0d88e2828c23.js +0 -1
  825. package/.next/static/chunks/app/api/skills/route-6add0d88e2828c23.js +0 -1
  826. package/.next/static/chunks/app/api/slash-commands/route-6add0d88e2828c23.js +0 -1
  827. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-6add0d88e2828c23.js +0 -1
  828. package/.next/static/chunks/app/api/tasks/[taskId]/route-6add0d88e2828c23.js +0 -1
  829. package/.next/static/chunks/app/api/templates/[id]/route-6add0d88e2828c23.js +0 -1
  830. package/.next/static/chunks/app/api/templates/route-6add0d88e2828c23.js +0 -1
  831. package/.next/static/chunks/app/api/todos/route-6add0d88e2828c23.js +0 -1
  832. package/.next/static/chunks/app/api/verification/runs/[runId]/route-6add0d88e2828c23.js +0 -1
  833. package/.next/static/chunks/app/api/verification/runs/route-6add0d88e2828c23.js +0 -1
  834. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-6add0d88e2828c23.js +0 -1
  835. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-6add0d88e2828c23.js +0 -1
  836. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-6add0d88e2828c23.js +0 -1
  837. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-6add0d88e2828c23.js +0 -1
  838. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-6add0d88e2828c23.js +0 -1
  839. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-6add0d88e2828c23.js +0 -1
  840. package/.next/static/chunks/app/api/worktrees/[id]/env/route-6add0d88e2828c23.js +0 -1
  841. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-6add0d88e2828c23.js +0 -1
  842. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-6add0d88e2828c23.js +0 -1
  843. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-6add0d88e2828c23.js +0 -1
  844. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-6add0d88e2828c23.js +0 -1
  845. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-6add0d88e2828c23.js +0 -1
  846. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-6add0d88e2828c23.js +0 -1
  847. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-6add0d88e2828c23.js +0 -1
  848. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-6add0d88e2828c23.js +0 -1
  849. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-6add0d88e2828c23.js +0 -1
  850. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-6add0d88e2828c23.js +0 -1
  851. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-6add0d88e2828c23.js +0 -1
  852. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-6add0d88e2828c23.js +0 -1
  853. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-6add0d88e2828c23.js +0 -1
  854. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-6add0d88e2828c23.js +0 -1
  855. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-6add0d88e2828c23.js +0 -1
  856. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-6add0d88e2828c23.js +0 -1
  857. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-6add0d88e2828c23.js +0 -1
  858. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-6add0d88e2828c23.js +0 -1
  859. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-6add0d88e2828c23.js +0 -1
  860. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-6add0d88e2828c23.js +0 -1
  861. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-6add0d88e2828c23.js +0 -1
  862. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-6add0d88e2828c23.js +0 -1
  863. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-6add0d88e2828c23.js +0 -1
  864. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-6add0d88e2828c23.js +0 -1
  865. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-6add0d88e2828c23.js +0 -1
  866. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-6add0d88e2828c23.js +0 -1
  867. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-6add0d88e2828c23.js +0 -1
  868. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-6add0d88e2828c23.js +0 -1
  869. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-6add0d88e2828c23.js +0 -1
  870. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-6add0d88e2828c23.js +0 -1
  871. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-6add0d88e2828c23.js +0 -1
  872. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-6add0d88e2828c23.js +0 -1
  873. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-6add0d88e2828c23.js +0 -1
  874. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-6add0d88e2828c23.js +0 -1
  875. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-6add0d88e2828c23.js +0 -1
  876. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-6add0d88e2828c23.js +0 -1
  877. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-6add0d88e2828c23.js +0 -1
  878. package/.next/static/chunks/app/api/worktrees/[id]/route-6add0d88e2828c23.js +0 -1
  879. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-6add0d88e2828c23.js +0 -1
  880. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-6add0d88e2828c23.js +0 -1
  881. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-6add0d88e2828c23.js +0 -1
  882. package/.next/static/chunks/app/api/worktrees/[id]/search/route-6add0d88e2828c23.js +0 -1
  883. package/.next/static/chunks/app/api/worktrees/[id]/send/route-6add0d88e2828c23.js +0 -1
  884. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-6add0d88e2828c23.js +0 -1
  885. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-6add0d88e2828c23.js +0 -1
  886. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-6add0d88e2828c23.js +0 -1
  887. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-6add0d88e2828c23.js +0 -1
  888. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-6add0d88e2828c23.js +0 -1
  889. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-6add0d88e2828c23.js +0 -1
  890. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-6add0d88e2828c23.js +0 -1
  891. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-6add0d88e2828c23.js +0 -1
  892. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-6add0d88e2828c23.js +0 -1
  893. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-6add0d88e2828c23.js +0 -1
  894. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-6add0d88e2828c23.js +0 -1
  895. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-6add0d88e2828c23.js +0 -1
  896. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-6add0d88e2828c23.js +0 -1
  897. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-6add0d88e2828c23.js +0 -1
  898. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-6add0d88e2828c23.js +0 -1
  899. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-6add0d88e2828c23.js +0 -1
  900. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-6add0d88e2828c23.js +0 -1
  901. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-6add0d88e2828c23.js +0 -1
  902. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-6add0d88e2828c23.js +0 -1
  903. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-6add0d88e2828c23.js +0 -1
  904. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-6add0d88e2828c23.js +0 -1
  905. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-6add0d88e2828c23.js +0 -1
  906. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-6add0d88e2828c23.js +0 -1
  907. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-6add0d88e2828c23.js +0 -1
  908. package/.next/static/chunks/app/api/worktrees/route-6add0d88e2828c23.js +0 -1
  909. package/.next/static/chunks/app/manifest.webmanifest/route-6add0d88e2828c23.js +0 -1
  910. package/.next/static/chunks/app/more/page-3266dfa945972649.js +0 -1
  911. package/.next/static/chunks/app/proxy/[...path]/route-6add0d88e2828c23.js +0 -1
  912. package/.next/static/chunks/app/review/page-8f63aff862fee421.js +0 -1
  913. package/.next/static/chunks/app/worktrees/[id]/layout-6add0d88e2828c23.js +0 -1
  914. package/.next/static/chunks/app/worktrees/[id]/page-e4f28966b4fc0ce1.js +0 -1
  915. package/.next/static/chunks/app/worktrees/[id]/terminal/page-a75fe180a7233b2b.js +0 -1
  916. package/.next/static/css/928e5a8830fbf997.css +0 -1
  917. /package/.next/static/{t0BoV4H46ZgKmTjSi7GIz → 0GHE2JGlFzqvSBZAcBFSt}/_buildManifest.js +0 -0
  918. /package/.next/static/{t0BoV4H46ZgKmTjSi7GIz → 0GHE2JGlFzqvSBZAcBFSt}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=2445,exports.ids=[2445],exports.modules={52445:a=>{a.exports=JSON.parse('{"agentStatus":{"moreAgents":"他 {count} 件のエージェント","overflowTrigger":"他のエージェント"},"toc":{"title":"目次","show":"目次を表示","hide":"目次を非表示","empty":"見出しなし"},"composer":{"placeholder":"メッセージを入力…","commandsHint":"コマンド","newlineHint":"改行","removeAttachment":"添付を削除","showSlashCommands":"スラッシュコマンドを表示","attachImage":"画像を添付","sendMessage":"メッセージを送信"},"interrupt":{"stopProcessing":"処理を中断"},"history":{"title":"メッセージ履歴","regionLabel":"メッセージ履歴","loading":"メッセージを読み込み中","empty":"メッセージはまだありません","show":"表示件数","displayLimit":"履歴の表示件数","showArchived":"アーカイブを表示","showUserOnly":"ユーザーのメッセージのみ表示","showAllMessages":"すべてのメッセージを表示","openSearch":"検索を開く","closeSearch":"検索を閉じる","copied":"クリップボードにコピーしました","copyFailed":"コピーに失敗しました","search":{"regionLabel":"履歴内テキスト検索","placeholder":"検索...","keywordLabel":"検索キーワード","prev":"前の結果 (prev)","next":"次の結果 (next)","close":"検索を閉じる (close)","countAtMax":"{current}/{max}以上"}},"conversation":{"waitingForResponse":"レスポンス待ち...","you":"あなた","assistant":"アシスタント","sending":"送信中…","failedToSend":"送信に失敗しました","retrySending":"メッセージを再送信","discard":"破棄","discardMessage":"メッセージを破棄","insertToMessage":"メッセージ欄に挿入","copy":"コピー","copyMessage":"メッセージをコピー","collapse":"折りたたむ","expand":"展開","collapseMessage":"メッセージを折りたたむ","expandMessage":"メッセージを展開","systemMessage":"システムメッセージ","systemMessageLabel":"システムメッセージ","openFile":"ファイルを開く: {path}","conversationLabel":"会話: {preview}"},"messages":{"loading":"メッセージを読み込み中...","empty":"メッセージはまだありません","you":"あなた","copy":"コピー","copyMessage":"メッセージをコピー","viewLogFile":"ログファイルを表示 →"},"slashCommands":{"title":"コマンド","searchPlaceholder":"コマンドを検索...","enterCustomCommand":"カスタムコマンドを入力...","selectHint":"選択","closeHint":"閉じる","empty":"利用可能なコマンドがありません","catalogStale":{"hint":"お使いのCLIがこの一覧より新しい可能性があります。表示されないコマンドは ~/.commandmate/slash-commands/ で追加できます。"},"sourceBadge":{"userCatalog":"カスタム"},"descriptions":{"clear":"会話履歴をクリア","compact":"コンテキストを圧縮してトークン使用量を削減","resume":"前回の会話を再開","rewind":"会話を以前の状態に巻き戻す","config":"設定を開く","model":"AI モデルを切り替え","permissions":"ツールの権限を表示・更新","status":"セッションの状態を確認","context":"コンテキストウィンドウの使用量を表示","review":"コードの変更をレビュー","help":"利用可能なすべてのコマンドを表示","doctor":"インストール状態を診断","export":"会話履歴をエクスポート","focus":"フォーカスモードを切り替え","effort":"モデルの思考量を調整(high/medium/low)","fast":"高速応答モードに切り替え","loop":"セッションを開いたままプロンプトを繰り返し実行","add-dir":"セッション中にファイルアクセス用の作業ディレクトリを追加","terminal-setup":"Shift+Enter などのターミナルキーバインドを設定","statusline":"ステータスラインの表示を設定","usage":"セッションのコスト・プラン使用量・アクティビティ統計を表示","tasks":"バックグラウンドタスクを表示・管理","memory":{"claude":"CLAUDE.md メモリファイルを編集し auto-memory を管理","copilot":"メモリの状態表示と、セッション間メモリの有効・無効切り替え"},"new":"新しい会話を開始","logout":{"codex":"Codex からサインアウト","claude":"Anthropic アカウントからサインアウト","copilot":"現在の OAuth ログインセッションからログアウト"},"quit":"Codex CLI を終了","diff":"Git の差分を表示(未追跡ファイルを含む)","mention":"次のやり取りにファイル/フォルダを添付","mcp":"MCP サーバーと利用可能なツールを管理","init":{"codex":"カレントディレクトリに AGENTS.md テンプレートを生成","claude":"リポジトリ向けの CLAUDE.md ガイドを生成","copilot":"このリポジトリ向けの Copilot 指示ファイルを初期化","opencode":"AGENTS.md のガイド付きセットアップを実行"},"feedback":{"codex":"Codex チームにフィードバックを送信","claude":"Claude Code についてのフィードバックを送信","copilot":"CLI についてのフィードバックを送信"},"plan":"プランモードを切り替え","goal":"現在のセッションの目標を設定","agent":{"codex":"アクティブなエージェントを切り替え(Codex)","copilot":"エージェントを一覧から選択"},"subagents":"サブエージェントを管理","fork":"現在のセッションをフォーク","memories":"Codex のメモリを管理","skills":{"codex":"Codex のスキルを管理","claude":"Claude Code のスキルを管理","copilot":"機能を拡張するスキルを管理","opencode":"利用可能なスキルを一覧・実行"},"hooks":"フック設定を確認・管理","sessions":"会話履歴を閲覧","connect":"プロバイダーを接続","exit":{"opencode":"OpenCode TUI を終了","claude":"CLI を終了","codex":"CLI を終了","copilot":"CLI を終了"},"models":"AI モデルを切り替え","agents":{"opencode":"利用可能なエージェントを一覧・管理","claude":"サブエージェントの作成・管理を Claude に依頼するか .claude/agents/ を直接編集するよう促す案内を表示"},"themes":"TUI のテーマを変更","editor":"長文メッセージ用のエディタを開く","advisor":"アドバイザーツールの有効・無効を切り替え(要所で第 2 のモデルに助言を求める)","autocompact":"自動コンパクトの閾値を設定(コンテキストがどれだけ埋まったら自動圧縮するか)","autofix-pr":"現在のブランチの PR を監視し、CI 失敗やレビュー指摘に応じて修正を push する web セッションを起動","background":"現在のセッションをバックグラウンドエージェントに切り離してターミナルを解放","batch":"コードベース全体の大規模変更を並列で実行","branch":"この時点で会話を分岐し、現在の流れを失わずに別方針を試す","btw":"一時的なフォークで、会話に残さず短い質問をする","bug":"バグを報告、または会話を共有","cd":"このセッションの作業ディレクトリを変更","chrome":"Claude in Chrome の設定","claude-api":"プロジェクトの言語向けの Claude API リファレンスと Managed Agents リファレンスを読み込み","code-review":"現在の差分をバグと整理観点でレビュー","color":"現在のセッションのプロンプトバーの色を設定","copy":"直近の応答を Markdown としてクリップボードにコピー","dataviz":"チャート・グラフ・ダッシュボードの設計ガイダンス","debug":{"claude":"デバッグログを有効化し、セッションのデバッグログを読んで問題を切り分け","opencode":"デバッグ情報を表示"},"deep-research":"質問に対して web 検索を展開し、出典を突き合わせて引用付きレポートを作成","design-login":"claude.ai アカウントで /design-sync のデザインシステムアクセスを認可","design-sync":"リポジトリの React デザインシステムを Claude Design にアップロードし、実際のコンポーネントを使わせる","desktop":"現在のセッションを Claude Code デスクトップアプリで継続","fewer-permission-prompts":"履歴から読み取り専用の Bash / MCP 呼び出しを洗い出し、許可リストを .claude/settings.json に追加して権限プロンプトを削減","heapdump":"ヒープスナップショットとメモリ内訳を書き出し(メモリ使用量の診断用)","ide":"IDE 連携を管理(状態表示と、現在の選択範囲・開いているファイル等の取り込み)","insights":"セッションを分析し、対象領域・対話パターン・摩擦点のレポートを生成","install-github-app":"リポジトリに Claude GitHub App を導入(GitHub Actions の設定も任意で実施)","install-slack-app":"Claude Slack アプリを導入","keybindings":"キーボードショートカットの設定ファイルを開く","login":{"claude":"Anthropic アカウントにサインイン","copilot":"Copilot にログイン"},"mobile":"Claude モバイルアプリのダウンロード用 QR コードを表示","passes":"Claude Code の 1 週間無料パスを友人に共有","plugin":{"claude":"Claude Code のプラグインを管理","copilot":"プラグインとプラグインマーケットプレイスを管理"},"powerup":"対話型レッスンとデモで Claude Code の機能を学ぶ","privacy-settings":"プライバシー設定を確認・更新","radio":"Claude FM の lo-fi ラジオをブラウザで開く","recap":"現在のセッションの 1 行要約を生成","release-notes":"変更履歴をバージョン選択つきで表示","reload-plugins":"再起動せずに有効なプラグインを再読み込み","reload-skills":"スキル・コマンドのディレクトリを再走査し、再起動せずに反映","remote-control":"このセッションを claude.ai のリモートコントロール対象にする","remote-env":"クラウドエージェントの既定環境を選択","rename":"現在のセッション(スレッド)の名前を変更","run":"プロジェクトのアプリを起動・操作し、テストだけでなく実際の動作で変更を確認","run-skill-generator":"/run と /verify がアプリをクリーンな環境で起動・操作できるよう、プロジェクト専用スキルを生成","sandbox":"サンドボックスモードを切り替え","scroll-speed":"マウスホイールのスクロール速度を対話的に調整","security-review":"現在のブランチの変更をセキュリティ脆弱性の観点で分析","setup-bedrock":"Amazon Bedrock の認証・リージョン・モデル指定をウィザードで設定","setup-vertex":"Google Cloud の認証・プロジェクト・リージョン・モデル指定をウィザードで設定","simplify":"変更されたコードを整理観点でレビューし、修正を適用","stickers":"Claude Code のステッカーを注文","stop":"バックグラウンドのセッション・ターミナルを停止","subtask":"会話全体を引き継ぐバックグラウンドのサブエージェントを起動(作業を続けながら並行実行)","team-onboarding":"利用履歴からチーム向けオンボーディングガイドを生成","teleport":"web の Claude Code セッションをこのターミナルに引き込み(ブランチと会話を取得)","theme":"配色・シンタックスハイライトのテーマを選択","tui":"端末 UI のレンダラーを設定し、会話を保ったまま再起動","ultrareview":"クラウドサンドボックスでマルチエージェントの詳細コードレビューを実行","upgrade":"上位プランへの切り替えページをブラウザで開く","usage-credits":"使用クレジットを設定、または上限到達時に管理者へ申請","verify":"ビルド・実行・観察によって、テストや型検査に頼らず変更の動作を確認","voice":"音声入力を切り替え、または特定モードで有効化","web-setup":"ローカルの gh CLI 認証を使って GitHub アカウントを Claude Code on the web に接続","workflows":"実行中・完了済みワークフローの進捗ビューを開く(監視・一時停止・再開・保存)","keymap":"TUI のショートカットを再割り当て","vim":"コンポーザーの Vim モードを切り替え","setup-default-sandbox":"昇格エージェント用のサンドボックスを設定","sandbox-add-read-dir":"サンドボックスに読み取り可能なディレクトリを追加: /sandbox-add-read-dir [絶対パス]","experimental":"実験的機能を切り替え","approve":"直近の自動レビュー拒否に対する再試行を 1 回承認","import":{"codex":"Claude Code から設定・プロジェクト・最近のチャットを取り込み","claude":"OpenAI Codex / Google Gemini CLI の設定(指示ファイル・MCP サーバー・コマンド・サブエージェント・スキル)を Claude Code に取り込み"},"archive":"このセッションをアーカイブして終了","delete":"このセッションを完全に削除して終了","app":{"codex":"このセッションをデスクトップアプリで継続","copilot":"GitHub Copilot デスクトップアプリを開く"},"side":"一時的なフォークで別の会話を開始","raw":"コピーしやすい raw スクロールバックモードを切り替え","debug-config":"設定の階層と要件の出所をデバッグ用に表示","title":"ターミナルのタイトルに表示する項目を設定","pets":"ターミナルのペットを選択・非表示","apps":"アプリを管理","plugins":"プラグインを閲覧","rollout":"rollout ファイルのパスを表示","ps":"バックグラウンドのターミナル一覧を表示","personality":"Codex の応答スタイルを選択","test-approval":"承認リクエストのテスト","list-agents":"Claude がメッセージを送れるサブエージェントと他の Claude Code セッションを宛先名つきで一覧表示","allow-all":"ツール・パス・URL の権限をすべて許可","ask":"会話履歴に残さない単発の質問","autopilot":"オートパイロットモードを切り替え","changelog":"CLI バージョンの変更履歴を表示","chronicle":"セッション履歴のツールとインサイトを表示","cwd":"作業ディレクトリを変更、または現在地を表示","delegate":"このセッションを GitHub に送りプルリクエストを作成","diagnose":"現在のセッションログを解析","env":"読み込み済みの環境情報を表示","fleet":"サブエージェント並列実行のフリートモードを有効化","footer":"ステータスライン項目を設定","instructions":"カスタム指示ファイルの表示と有効・無効切り替え","keep-alive":"システムスリープを防ぐ keep-alive モードを管理","limits":"セッションの上限を表示・編集","list-dirs":"許可済みディレクトリをすべて表示","lsp":"言語サーバーの設定を管理","pr":"現在のブランチのプルリクエストを操作","refine":"粗いプロンプトをレビュー用に書き直し","remote":"GitHub の Web・モバイルからのリモート操作を切り替え","research":"ディープリサーチ調査を実行","reset-allowed-tools":"許可済みツールの一覧をリセット","restart":"現在のセッションを保ったまま CLI を再起動","rubber-duck":"現在の作業への独立した批評を取得","search":"会話タイムラインを検索","session":"セッションを表示・管理","settings":"設定 UI を開く、または個別の値を表示・設定","share":"セッションを Markdown ファイルや GitHub gist として共有","undo":"直前のターンを巻き戻してファイル変更を取り消し","update":"CLI を最新バージョンに更新","user":"GitHub ユーザー一覧を管理","version":"バージョン情報を表示","mcps":"MCP サーバーの有効・無効を切り替え","move":"別のプロジェクトディレクトリへ移動","variants":"モデルのバリアントを切り替え"}},"session":{"confirmKill":"「{name}」のセッションを終了しますか?\\n\\n※全てのメッセージ履歴が削除されます。ログファイルは保持されます。","failedToKill":"セッションの終了に失敗しました","confirmEnd":"{tool} セッションを終了しますか?","endWarning":"セッションを終了すると、チャット履歴がクリアされます。","running":"セッション実行中","starting":"セッション起動中","startingEllipsis":"セッション起動中..."},"status":{"waitingForResponse":"レスポンス待ち","responseCompleted":"レスポンス完了","thinking":"考え中...","thinkingStatus":"思考中","agentIsThinking":"{toolName} が考え中です..."},"output":{"latest":"最新の出力","realtimeUpdate":"リアルタイム更新"},"errors":{"failedToUpdateFavorite":"お気に入りの更新に失敗しました","failedToUpdateStatus":"ステータスの更新に失敗しました"},"feedback":{"title":"フィードバック・サポート","bugReport":"バグを報告","featureRequest":"機能を提案","question":"質問する","viewIssues":"Issue一覧を見る"},"fileTree":{"moveTo":"移動先を選択...","moveDialogTitle":"移動先を選択","moveConfirm":"ここに移動","moveSuccess":"移動しました","timeAgo":"{time}前","rootDirectory":"ルート","metadata":{"size":"サイズ","created":"作成","modified":"更新","settingsLabel":"メタデータ表示設定","settingsTitle":"インライン表示","showSize":"ファイルサイズ","showCreated":"作成日時","showModified":"更新日時"},"loading":"ファイルを読み込み中","empty":"ファイルが見つかりません","newFile":"新規ファイル","newDirectory":"新規ディレクトリ","noResultsMatching":"「{query}」に一致するファイルはありません","noResultsContaining":"「{query}」を含むファイルはありません","label":"ファイルツリー","refreshing":"ファイルを更新中","refreshLabel":"ファイルツリーを更新","resetViewLabel":"ファイルツリーの表示をリセット","loadError":"ファイルの読み込みに失敗しました","loadDirectoryError":"ディレクトリの読み込みに失敗しました: {status}","itemCount":"{count} 項目"},"update":{"available":"新しいバージョンが利用可能です","latestVersion":"最新: v{version}","updateCommand":"更新コマンド:","viewRelease":"リリースを表示","dataPreserved":"アップデートによりデータベースのデータは保持されます。","version":"バージョン","installTypeGlobal":"npm(グローバル)","installTypeLocal":"ローカル(git pull)","updateNow":"今すぐアップデート","npxRestartNotice":"このサーバは npx で起動しています。アップデートは最新版を取得してサーバを再起動します。ポートなど一部の起動設定は変わることがあります。自動で再接続しない場合は「commandmate status」で稼働先を確認してください。","confirmTitle":"CommandMate をアップデートしますか?","confirmDescription":"CommandMate を v{version} に更新します。サーバを停止し、新しいバージョンをインストールして、再度起動します。数分かかります。","confirmButton":"アップデート","starting":"アップデートを開始しています...","updating":"アップデート中です。サーバは自動的に再起動します。","updatingHint":"数分かかります。この画面を開いたままにしてください。新しいバージョンの準備ができると自動的に再読み込みされます。","noRestartTitle":"更新をインストールしました","noRestartDescription":"このサーバは「commandmate start --daemon」以外の方法で起動されているため、旧バージョンのまま稼働しています。反映するにはサーバを手動で再起動してください。","timeoutTitle":"アップデートに失敗した可能性があります","timeoutDescription":"想定時間内にサーバが復帰しませんでした。状態を確認し、手動でアップデートを完了してください:","errorTitle":"アップデートを開始できませんでした","errorNotGlobal":"CommandMate はグローバルインストールではないため、自己更新できません。","errorInProgress":"アップデートは既に実行中です。","errorGeneric":"アップデートを開始できませんでした。手動でコマンドを実行してください:","logHint":"アップデートログ: {path}"},"terminal":{"historyLabel":"履歴","filesLabel":"ファイル","showHistory":"履歴を表示","hideHistory":"履歴を非表示","showFiles":"ファイルを表示","hideFiles":"ファイルを非表示","equalizeWidths":"均等幅","equalizeWidthsHint":"ターミナル幅を均等にし、履歴幅を初期値に戻す","addSplit":"分割を追加","removeSplit":"分割を削除","selectInstance":"{split} のエージェントインスタンスを選択","moreActions":"その他の操作","searchTerminal":"ターミナル内を検索","endSession":"セッションを終了","endSessionFor":"{name}のセッションを終了"},"unsentComposer":{"regionLabel":"未送信の入力","label":"未送信の入力:","run":"実行","clear":"クリア"},"todo":{"addPlaceholder":"ToDoを追加…","add":"追加","empty":"ToDoはまだありません。","loading":"読み込み中…","statusTodo":"未着手","statusDoing":"仕掛","statusDone":"完了","cycleStatus":"ステータス: {status}(クリックで変更)","moveUp":"上へ移動","moveDown":"下へ移動","delete":"ToDoを削除","edit":"ToDoを編集","editTitle":"ToDoを編集","contentLabel":"件名","contentPlaceholder":"ToDoの件名","detailLabel":"詳細","detailPlaceholder":"詳細を入力(任意)…","hasDetail":"詳細あり","copyDetail":"詳細をコピー","save":"保存","cancel":"キャンセル","loadError":"ToDoの読み込みに失敗しました","addError":"ToDoの追加に失敗しました","updateError":"ToDoの更新に失敗しました","deleteError":"ToDoの削除に失敗しました","reorderError":"ToDoの並び替えに失敗しました"},"htmlPreview":{"interactiveModeConfirm":"Interactiveモードではスクリプトが実行されます。信頼できないHTMLファイルではSafeモードを使用してください。","title":"HTML プレビュー: {path}","modeSource":"ソース","modePreview":"プレビュー","modeSplit":"分割","sandboxSafe":"セーフ","sandboxInteractive":"インタラクティブ"},"editor":{"saveFailedCloseConfirm":"保存に失敗しました。このまま閉じますか?","unsavedCloseConfirm":"未保存の変更があります。閉じてもよろしいですか?","loading":"読み込み中...","placeholder":"入力を開始...","placeholderMarkdown":"Markdown の入力を開始...","saveSuccess":"ファイルを保存しました","saveError":"ファイルの保存に失敗しました","loadError":"ファイルの読み込みに失敗しました","sessionExpired":"セッションの有効期限が切れました。再ログインしてください。","autoSaveFailed":"自動保存に失敗しました。手動保存に切り替えます。","unsaved":"未保存","auto":"自動","splitView":"分割表示","editorOnly":"エディタのみ","previewOnly":"プレビューのみ","enterFullscreen":"全画面にする (Ctrl+Shift+F)","exitFullscreen":"全画面を終了 (ESC)","indent":"インデント (Tab)","outdent":"アウトデント (Shift+Tab)","tabMovesFocusOn":"Tab はフォーカス移動 (Ctrl+M でインデントに切替)","tabMovesFocusOff":"Tab はインデント (Ctrl+M でフォーカス移動に切替)"},"actions":{"copyPath":"パスをコピー","copyContent":"内容をコピー","copyFilePath":"ファイルパスをコピー","copyFileContent":"ファイルの内容をコピー","search":"検索","searchInFile":"ファイル内を検索","edit":"編集","editFile":"ファイルを編集","download":"ダウンロード","downloadFile":"ファイルをダウンロード","close":"閉じる","save":"保存","saving":"保存中...","saved":"保存済み","prev":"前へ","next":"次へ","fullscreen":"全画面","exitFullscreen":"全画面を終了","minimize":"最小化","maximize":"最大化","retry":"再試行","refresh":"更新","resetView":"表示をリセット"},"fileSearch":{"placeholder":"検索...","prevMatch":"前の結果","nextMatch":"次の結果","close":"検索を閉じる"},"fileViewer":{"loading":"ファイルを読み込み中...","loadError":"ファイルの読み込みに失敗しました","tabSource":"ソース","tabPreview":"プレビュー","sandboxSafe":"セーフ","sandboxInteractive":"インタラクティブ","slideTitle":"{name} - スライド {number}","noSlides":"{fileName} にスライドが見つかりません","slides":"スライド","editor":"エディタ","modeSwitch":"表示モードの切替","modeViewer":"ビュワー","modeEditor":"編集","moreActions":"その他の操作"},"fileTabs":{"unsavedChanges":"未保存の変更","closeTab":"{name} を閉じる"},"markdownPreview":{"loadingImage":"[画像を読み込み中...]","editor":"エディタ","preview":"プレビュー","exitFullscreenHint":"ESC キーで全画面を終了","exitFullscreenHintSwipe":"(または下にスワイプ)","largeFileWarning":"大きなファイル: パフォーマンスに影響する場合があります。"},"mermaid":{"rendering":"図を描画中...","loading":"図を読み込み中...","errorTitle":"図のエラー","emptyCode":"図のコードが空です","renderError":"図の描画に失敗しました"},"imageViewer":{"loadError":"画像の読み込みに失敗しました"},"videoViewer":{"loadError":"動画の読み込みに失敗しました","loading":"動画を読み込み中...","unsupported":"お使いのブラウザは video タグに対応していません。"},"logViewer":{"title":"ログファイル","all":"すべて ({count})","toolCount":"{tool} ({count})","empty":"ログファイルが見つかりません","emptyFiltered":"{tool} のログファイルが見つかりません","copyTitle":"サニタイズしたログをクリップボードにコピー","export":"エクスポート","exporting":"エクスポート中...","copied":"ログをクリップボードにコピーしました (サニタイズ済み)","exportError":"ログのエクスポートに失敗しました: {error}","searchPlaceholder":"ログファイル内を検索...","prevMatch":"前の一致 (Shift+Enter)","nextMatch":"次の一致 (Enter)","noMatches":"「{query}」に一致するものはありません"},"pdfPreview":{"title":"PDF プレビュー: {path}","loadError":"PDFプレビューを読み込めませんでした。","openInNewTab":"PDFを新しいタブで開く","download":"ダウンロード","downloadPdf":"PDF をダウンロード"},"diffViewer":{"badge":"DIFF","close":"差分表示を閉じる"},"search":{"searching":"検索中...","placeholder":"ファイルを検索...","label":"ファイルを検索","clear":"検索をクリア","mode":"モード:","modeName":"名前","modeContent":"内容"},"tabs":{"ariaLabel":"モバイルナビゲーション","terminal":"ターミナル","history":"履歴","files":"ファイル","memo":"ツール","info":"情報","newOutput":"新しい出力があります","promptWaiting":"プロンプト待機中","updateAvailable":"更新があります"},"git":{"uncommittedChanges":"未コミットの変更","askAi":"AI に質問","askAiTooltip":"現在の状況を AI チャットに下書きします(自動送信はされません)","advancedOperations":"高度な操作","remote":"リモート","paneSections":"Git ペインのセクション","tabs":{"status":"ステータス","changes":"変更","history":"履歴","advanced":"高度な操作"},"checkout":{"action":"チェックアウト","ariaLabel":"ブランチをチェックアウト","noBranches":"ブランチがありません","checkoutBranch":"{name} をチェックアウト","checkedOutElsewhere":"別のワークツリーでチェックアウト中: {path}","defaultBadge":"デフォルト","confirmTitlePrefix":"","confirmTitleSuffix":" をチェックアウトしますか?","forceLabel":"変更を破棄して強制チェックアウト — 未コミットの変更は失われます","historyLossWarning":"別ブランチへ切り替えると、このワークツリーに紐づくチャット履歴・メモ・スケジュールが次回同期時に失われる可能性があります","runningSessionWarning":"このブランチに切り替えると、稼働中のセッションの作業ファイルが変化します。"},"branches":{"title":"ブランチ","newButton":"+ 新規","refresh":"ブランチを更新","filterLocal":"ローカル","filterRemote":"リモート","filterAll":"すべて","loading":"ブランチを読み込み中...","empty":"ブランチがありません","defaultBadge":"デフォルト","deleteBranch":"{name} を削除","delete":"削除","createTitle":"ブランチを作成","namePlaceholder":"ブランチ名(例: feature/123-foo)","nameLabel":"新しいブランチ名","baseLabel":"ベースブランチ","currentHead":"(現在の HEAD)","create":"作成","deleteTitlePrefix":"","deleteTitleSuffix":" を削除しますか?","forceDeleteLabel":"強制削除(-D)— マージされていないコミットは失われます"},"changes":{"title":"変更","refresh":"変更を更新","loading":"変更を読み込み中...","listHeader":"{title}({count})","empty":"なし","togglePreview":"{path} の差分プレビューを切り替え","showDiff":"{path} の差分を表示","diff":"差分","fileAction":"{path} を{action}","loadingPreview":"差分プレビューを読み込み中...","previewFailed":"プレビューの読み込みに失敗しました","noDiff":"差分がありません","truncated":"… 省略されました — 完全な差分を開く","staged":"ステージ済み","unstaged":"未ステージ","untracked":"未追跡","stage":"ステージ","unstage":"アンステージ","commitMessage":"コミットメッセージ","amend":"直前のコミットを修正","commit":"コミット","committing":"コミット中...","commitAndPush":"コミット + プッシュ","commitAndPushTooltip":"コミットしてからプッシュします。プッシュに失敗してもコミットは保存済みなので、プッシュを再実行してください。"},"history":{"title":"コミット履歴","refresh":"コミット履歴を更新","loading":"コミット履歴を読み込み中...","empty":"コミットがありません","viewDiffFor":"{hash} の差分を表示","viewDiff":"差分を表示","hideDiff":"差分を隠す","loadingChangedFiles":"変更ファイルを読み込み中...","noChangedFiles":"変更ファイルがありません","showCommitDiff":"{path} のコミット差分を表示","changedFiles":"変更ファイル","diffLabel":"差分: {file}","loadingDiff":"差分を読み込み中...","noDiff":"差分がありません","diffInFilePanel":"ファイルパネルに差分を表示中: {file}"},"currentStatus":{"title":"現在の状況","refresh":"リモートを確認して更新(git fetch)","refreshing":"リモートを確認中...","loading":"Git ステータスを読み込み中...","uncommitted":"未コミット","aheadTooltip":"最後に fetch した時点のアップストリームより先行しているコミット数(リモートの最新状態とは異なる場合があります)","behindTooltip":"最後に fetch した時点のアップストリームより遅れているコミット数(リモートの最新状態とは異なる場合があります)","lastFetch":"最終 fetch: {relative}","lastFetchNever":"最終 fetch: まだ実行していません","lastFetchTooltip":"ahead/behind はこの時点のリモート情報との比較です。更新ボタンで再取得できます。","noUpstreamBadge":"未プッシュ","noUpstreamTooltip":"このブランチにはアップストリームが設定されていないため、ahead/behind を計算できません(まだ push していません)","upstreamGoneBadge":"リモート削除済み","upstreamGoneTooltip":"設定されたアップストリームのリモート追跡ブランチが存在しません(リモート側で削除された可能性があります)","detachedBadge":"detached","detachedTooltip":"HEAD がブランチを指していないため、ahead/behind を計算できません","aheadBehindErrorBadge":"比較できません","aheadBehindErrorTooltip":"ahead/behind の取得に失敗しました(タイムアウトなど)。更新ボタンで再試行できます。"},"danger":{"title":"危険な操作","resetOpen":"リセット…","revertOpen":"リバート…","forcePushOpen":"強制プッシュ…","selectCommitHint":"リバート / 指定コミットへのリセットを行うには、コミット履歴でコミットを選択してください。","resetTitle":"リセット","resetTargetHead":"HEAD","resetTargetSelectedPrefix":"選択中のコミット ","resetTargetSelectedHash":"({hash})","resetTargetNoneSelected":"(未選択)","modeSoft":"soft","modeMixed":"mixed","modeHard":"hard","resetHardWarning":"ハードリセットは未コミットの変更を完全に破棄し、HEAD を移動するとコミットも失われる可能性があります。この操作は取り消せません。","runningSessionWarning":"この危険な操作は、稼働中のセッションが編集中の作業ファイルを破壊的に書き換えます。","confirmPlaceholder":"確認のため \\"{branch}\\" と入力してください","reset":"リセット","revertTitle":"リバート","revertBodyPrefix":"コミットをリバート ","revertNoCommit":"コミットしない(ステージのまま)","revert":"リバート","forcePushTitle":"強制プッシュ","protectedBranchWarning":"デフォルトブランチへの force push は禁止されています。","forceWithLease":"--force-with-lease を使用(推奨 — リモートが更新されていた場合は拒否されます)","forcePush":"強制プッシュ"},"network":{"quickActions":"クイック操作","fetch":"フェッチ","pull":"プル","push":"プッシュ","noUpstreamTooltip":"アップストリームがありません — プッシュ時に設定されます","pushing":"プッシュ中","pulling":"プル中","fetching":"フェッチ中","progress":"{operation}… {elapsed}秒","abort":"中止","conflicts":"プルで競合が発生しました: {files}。ターミナルで解決してください。","authFailedGuidance":"ターミナルで一度 push/pull して認証情報を設定してください。","failed":"Git のネットワーク操作に失敗しました"},"stash":{"titlePrefix":"スタッシュ ","count":"({count})","refresh":"スタッシュ一覧を更新","messagePlaceholder":"スタッシュメッセージ(任意)","includeUntracked":"未追跡ファイルを含める","push":"スタッシュ","loading":"スタッシュを読み込み中...","empty":"スタッシュがありません","apply":"適用","pop":"ポップ","drop":"破棄","dropConfirmSuffix":" を完全に削除します。この操作は取り消せません。"},"aiPrompts":{"branchCreate":"{base} から {name} ブランチを作成して checkout してください。","branchCreateBaseHead":"現在の HEAD","branchDelete":"{name} ブランチを削除してください。","branchDeleteForce":"{name} ブランチを削除してください。(マージされていないコミットがあっても -D で強制削除してください)","stashCleanup":"古い stash entry をリストアップし、不要なものを削除する提案をしてください。","stashCleanupCurrent":"現在の stash:","stashConflict":"stash の pop / apply で conflict が発生しました。conflict を解決してから commit してください。","reset":"{target} に対して {mode} reset を行いたいです。安全に実行してください。","resetHard":"{target} に対して hard reset を行いたいです。安全に実行してください。 hard reset は作業内容を失う可能性があります。もし直前の hard reset を取り消したい場合は git reflog から復旧してください。","revert":"コミット {commit} を revert してください。","forcePush":"{branchRef} を force-with-lease で push したいです。事前に upstream({upstream})との差分を確認し、安全な場合のみ push してください。","forcePushAhead":"{branchRef}(↑{ahead}) を force-with-lease で push したいです。事前に upstream({upstream})との差分を確認し、安全な場合のみ push してください。","forcePushCurrentBranch":"現在のブランチ"}},"activityBar":{"toggleSidebar":"サイドバーを切り替え","label":"アクティビティバー","files":"ファイル","git":"Git","notes":"メモ","schedules":"スケジュール","agent":"エージェント","timer":"タイマー","todo":"ToDo","skills":"スキル","verification":"検証","env":"環境変数"},"branchMismatch":{"changedFrom":"ブランチが","to":"から","dismiss":"アラートを閉じる"},"contextMenu":{"label":"ファイル操作","uploadFile":"ファイルをアップロード","rename":"名前を変更","move":"移動","delete":"削除"},"navigation":{"toolbarLabel":"TUI ナビゲーション","caption":"ナビ","quitPager":"ページャーを終了"},"newFileDialog":{"title":"新規ファイル","fileNameLabel":"ファイル名","placeholder":"document","create":"作成"},"paneResizer":{"label":"ペインのサイズを変更します。{arrows}キーで調整できます。","arrowsHorizontal":"左右の矢印","arrowsVertical":"上下の矢印"},"desktopLayout":{"activityPane":"アクティビティペイン","terminalPane":"ターミナルペイン"},"worktreeStatus":{"notSet":"未設定","ready":"準備完了","inProgress":"作業中","inReview":"レビュー中","done":"完了"},"card":{"main":"メイン","description":"説明","link":"リンク","openLink":"リンクを新しいタブで開く","updated":"更新 {time}"},"detail":{"worktree":"ワークツリー","repository":"リポジトリ","copyRepositoryPath":"リポジトリのパスをコピー","copyWorktreePath":"ワークツリーのパスをコピー","copyPath":"パスをコピー","copied":"コピーしました!","path":"パス","status":"ステータス","worktreeStatusLabel":"ワークツリーのステータス","description":"説明","addNotesPlaceholder":"このブランチについてのメモを追加...","noDescription":"説明はまだ追加されていません","link":"リンク","lastUpdated":"最終更新","logs":"ログ","hide":"隠す","show":"表示","goBack":"ワークツリー一覧に戻る","home":"ホーム","viewInfo":"ワークツリーの情報を表示","info":"情報","infoModalTitle":"ワークツリー情報","loading":"ワークツリーを読み込み中...","loadingInfo":"ワークツリー情報を読み込み中...","errorLoading":"ワークツリーの読み込みに失敗しました","uploadFile":"ファイルをアップロード","unknownRepository":"不明","loadingEditor":"エディタを読み込み中...","agentInstanceSelection":"エージェントインスタンスの選択","statusPill":"{label}: {status}","subTabMessage":"メッセージ","subTabGit":"Git","statusPillWithModel":"{label}: {status} — モデル {model}"},"detailStatus":{"idle":"アイドル - セッションなし","ready":"準備完了 - 入力待ち","running":"実行中 - 処理しています","waiting":"待機中 - ユーザー入力が必要です"},"agentModel":{"label":"モデル","modelLabel":"モデル: {model}"},"nextAction":{"start":"開始","sendMessage":"メッセージを送信","approveReject":"承認 / 拒否","replyToPrompt":"プロンプトに応答","checkStalled":"停滞を確認","running":"実行中..."},"awaitingInstruction":{"badge":"指示待ち","label":"エージェントはターンを終え、次の指示を待っています"},"verification":{"title":"検証","refresh":"再読み込み","loading":"検証情報を読み込み中…","loadError":"検証情報を取得できませんでした: {message}","contract":{"heading":"実行契約","empty":"このブランチには契約がありません。\\n`commandmate send --contract <ファイル>` か Skill `cmate-task-contract` で作成してください。","scopeAllow":"scope.allow","scopeDeny":"scope.deny","gates":"verify.gates","gatesAll":"宣言済みゲート全件","autoYes":"autoYes.mode","autoYesUnset":"未指定(既存の挙動を維持)","file":"契約ファイル","updated":"更新"},"runs":{"heading":"検証ラン","empty":"検証ランはまだありません。\\n「再検証」を押すか、`commandmate verify <worktree-id>` を実行してください。","rerun":"再検証","rerunPending":"開始中…","rerunConflict":"検証ランが既に実行中です(run {runId})。","rerunConflictUnknown":"検証ランが既に実行中です。","rerunError":"検証を開始できませんでした: {message}","select":"run {runId} のゲートを表示(RESULT {verdict})","runLabel":"run {runId}","trigger":"trigger={trigger}"},"gates":{"heading":"ゲート — run {runId}","empty":"このランにはゲートの記録がありません。","loading":"ゲートを読み込み中…","notFound":"その検証ランは見つかりませんでした。","loadError":"検証ランを取得できませんでした: {message}","exitCode":"exit={code}","duration":"duration={duration}","contractSource":"[contract]","showLog":"ログ末尾を表示","hideLog":"ログ末尾を隠す","logOmitted":"… (+{count} 行省略。全文は `commandmate verify show {runId}`)","noLog":"ログ出力は記録されていません。"},"runStatus":{"running":"running","passed":"passed","failed":"failed","not_started":"not_started","error":"error","cancelled":"cancelled"},"gateStatus":{"running":"RUNNING","passed":"PASS","failed":"FAIL","timeout":"TIMEOUT","skipped":"SKIP","error":"ERROR"},"chip":{"taskReason":"タスク「{title}」: {status}","resultBadge":"RESULT {verdict}","runReason":"直近の検証: RESULT {verdict}(run {runId})","noRun":"検証ランはまだありません","failingGates":"不合格ゲート: {gates}","gatesPassed":"全 {count} ゲート合格","openHint":"検証ペインを開く","dash":"—"}},"task":{"status":{"pending":"pending(未送信)","running":"running(作業中)","waiting_input":"waiting_input(プロンプト待ち)","verifying":"verifying(検証中)","succeeded":"succeeded(合格)","failed":"failed(不合格)","not_started":"not_started(作業証跡ゼロ)","cancelled":"cancelled(中止)"}},"envManager":{"title":"環境変数マネージャ","description":"このワークツリーの環境変数ファイルを表示・編集します。値は既定で伏せられます。","filePickerLabel":"環境変数ファイル","viewModeLabel":"表示形式","viewKeyValue":"キー / 値","viewRaw":"テキスト","notCreated":"未作成","templateBadge":"テンプレート","notCreatedHint":"{file} はまだ存在しません。キーを追加して保存すると作成されます。","keyLabel":"変数名","valueLabel":"{key} の値","showValue":"{key} の値を表示","hideValue":"{key} の値を隠す","removeRow":"{key} を削除","addRow":"変数を追加","revealAll":"値を表示","hideAll":"値を隠す","reload":"ディスクから再読み込み","save":"保存","saved":"保存しました。","loading":"環境変数ファイルを読み込み中...","loadError":"環境変数ファイルを読み込めませんでした。","empty":"変数はまだ定義されていません。","validationFailed":"このファイルはまだ保存できません。","suggestionsTitle":"テンプレートのキー","suggestionsHint":".env.example / .env.sample にあってこのファイルに無いキーです。タップで追加します。","rawLabel":"環境変数ファイル(テキスト)","rawMaskedLabel":"環境変数ファイル(値を伏せた表示)","rawMaskedHint":"値は {mask} で伏せられています。「値を表示」で表示・編集できます。","issues":{"invalidSyntax":"{line} 行目: KEY=VALUE の形式ではありません。","invalidKey":"{line} 行目: 変数名が不正です。英字かアンダースコアで始まり、英数字とアンダースコアのみが使えます。","unterminatedQuote":"{line} 行目: {key} の引用符が閉じられていません。","duplicateKey":"{line} 行目: {key} が重複しています。最後の定義が有効になります。","controlCharacter":"{line} 行目: 環境変数ファイルに使用できない制御文字が含まれています。","tooLarge":"このファイルは大きすぎるため、ここでは編集できません。","tooManyEntries":"このファイルは変数が多すぎるため、ここでは編集できません。"}}}')}};
1
+ "use strict";exports.id=2445,exports.ids=[2445],exports.modules={52445:a=>{a.exports=JSON.parse('{"agentStatus":{"moreAgents":"他 {count} 件のエージェント","overflowTrigger":"他のエージェント"},"toc":{"title":"目次","show":"目次を表示","hide":"目次を非表示","empty":"見出しなし"},"composer":{"placeholder":"メッセージを入力…","commandsHint":"コマンド","newlineHint":"改行","removeAttachment":"添付を削除","showSlashCommands":"スラッシュコマンドを表示","attachImage":"画像を添付","sendMessage":"メッセージを送信"},"interrupt":{"stopProcessing":"処理を中断"},"history":{"title":"メッセージ履歴","regionLabel":"メッセージ履歴","loading":"メッセージを読み込み中","empty":"メッセージはまだありません","show":"表示件数","displayLimit":"履歴の表示件数","showArchived":"アーカイブを表示","showUserOnly":"ユーザーのメッセージのみ表示","showAllMessages":"すべてのメッセージを表示","openSearch":"検索を開く","closeSearch":"検索を閉じる","copied":"クリップボードにコピーしました","copyFailed":"コピーに失敗しました","search":{"regionLabel":"履歴内テキスト検索","placeholder":"検索...","keywordLabel":"検索キーワード","prev":"前の結果 (prev)","next":"次の結果 (next)","close":"検索を閉じる (close)","countAtMax":"{current}/{max}以上"}},"conversation":{"waitingForResponse":"レスポンス待ち...","you":"あなた","assistant":"アシスタント","sending":"送信中…","failedToSend":"送信に失敗しました","retrySending":"メッセージを再送信","discard":"破棄","discardMessage":"メッセージを破棄","insertToMessage":"メッセージ欄に挿入","copy":"コピー","copyMessage":"メッセージをコピー","collapse":"折りたたむ","expand":"展開","collapseMessage":"メッセージを折りたたむ","expandMessage":"メッセージを展開","systemMessage":"システムメッセージ","systemMessageLabel":"システムメッセージ","openFile":"ファイルを開く: {path}","conversationLabel":"会話: {preview}"},"messages":{"loading":"メッセージを読み込み中...","empty":"メッセージはまだありません","you":"あなた","copy":"コピー","copyMessage":"メッセージをコピー","viewLogFile":"ログファイルを表示 →"},"slashCommands":{"title":"コマンド","searchPlaceholder":"コマンドを検索...","enterCustomCommand":"カスタムコマンドを入力...","selectHint":"選択","closeHint":"閉じる","empty":"利用可能なコマンドがありません","catalogStale":{"hint":"お使いのCLIがこの一覧より新しい可能性があります。表示されないコマンドは ~/.commandmate/slash-commands/ で追加できます。"},"sourceBadge":{"userCatalog":"カスタム"},"descriptions":{"clear":"会話履歴をクリア","compact":"コンテキストを圧縮してトークン使用量を削減","resume":"前回の会話を再開","rewind":"会話を以前の状態に巻き戻す","config":"設定を開く","model":"AI モデルを切り替え","permissions":"ツールの権限を表示・更新","status":"セッションの状態を確認","context":"コンテキストウィンドウの使用量を表示","review":"コードの変更をレビュー","help":"利用可能なすべてのコマンドを表示","doctor":"インストール状態を診断","export":"会話履歴をエクスポート","focus":"フォーカスモードを切り替え","effort":"モデルの思考量を調整(high/medium/low)","fast":"高速応答モードに切り替え","loop":"セッションを開いたままプロンプトを繰り返し実行","add-dir":"セッション中にファイルアクセス用の作業ディレクトリを追加","terminal-setup":"Shift+Enter などのターミナルキーバインドを設定","statusline":"ステータスラインの表示を設定","usage":"セッションのコスト・プラン使用量・アクティビティ統計を表示","tasks":"バックグラウンドタスクを表示・管理","memory":{"claude":"CLAUDE.md メモリファイルを編集し auto-memory を管理","copilot":"メモリの状態表示と、セッション間メモリの有効・無効切り替え"},"new":"新しい会話を開始","logout":{"codex":"Codex からサインアウト","claude":"Anthropic アカウントからサインアウト","copilot":"現在の OAuth ログインセッションからログアウト"},"quit":"Codex CLI を終了","diff":"Git の差分を表示(未追跡ファイルを含む)","mention":"次のやり取りにファイル/フォルダを添付","mcp":"MCP サーバーと利用可能なツールを管理","init":{"codex":"カレントディレクトリに AGENTS.md テンプレートを生成","claude":"リポジトリ向けの CLAUDE.md ガイドを生成","copilot":"このリポジトリ向けの Copilot 指示ファイルを初期化","opencode":"AGENTS.md のガイド付きセットアップを実行"},"feedback":{"codex":"Codex チームにフィードバックを送信","claude":"Claude Code についてのフィードバックを送信","copilot":"CLI についてのフィードバックを送信"},"plan":"プランモードを切り替え","goal":"現在のセッションの目標を設定","agent":{"copilot":"エージェントを一覧から選択"},"subagents":"サブエージェントを管理","fork":"現在のセッションをフォーク","memories":"Codex のメモリを管理","skills":{"codex":"Codex のスキルを管理","claude":"Claude Code のスキルを管理","copilot":"機能を拡張するスキルを管理","opencode":"利用可能なスキルを一覧・実行"},"hooks":"フック設定を確認・管理","sessions":"会話履歴を閲覧","connect":"プロバイダーを接続","exit":{"opencode":"OpenCode TUI を終了","claude":"CLI を終了","codex":"CLI を終了","copilot":"CLI を終了"},"models":"AI モデルを切り替え","agents":{"opencode":"利用可能なエージェントを一覧・管理","claude":"サブエージェントの作成・管理を Claude に依頼するか .claude/agents/ を直接編集するよう促す案内を表示","codex":"稼働中のすべてのエージェントセッションを一覧・切り替え"},"themes":"TUI のテーマを変更","editor":"長文メッセージ用のエディタを開く","advisor":"アドバイザーツールの有効・無効を切り替え(要所で第 2 のモデルに助言を求める)","autocompact":"自動コンパクトの閾値を設定(コンテキストがどれだけ埋まったら自動圧縮するか)","autofix-pr":"現在のブランチの PR を監視し、CI 失敗やレビュー指摘に応じて修正を push する web セッションを起動","background":"現在のセッションをバックグラウンドエージェントに切り離してターミナルを解放","batch":"コードベース全体の大規模変更を並列で実行","branch":"この時点で会話を分岐し、現在の流れを失わずに別方針を試す","btw":"一時的なフォークで、会話に残さず短い質問をする","bug":"バグを報告、または会話を共有","cd":{"claude":"このセッションの作業ディレクトリを変更","codex":"現在の作業ディレクトリを変更"},"chrome":"Claude in Chrome の設定","claude-api":"プロジェクトの言語向けの Claude API リファレンスと Managed Agents リファレンスを読み込み","code-review":"現在の差分をバグと整理観点でレビュー","color":"現在のセッションのプロンプトバーの色を設定","copy":"直近の応答を Markdown としてクリップボードにコピー","dataviz":"チャート・グラフ・ダッシュボードの設計ガイダンス","debug":{"claude":"デバッグログを有効化し、セッションのデバッグログを読んで問題を切り分け","opencode":"デバッグ情報を表示"},"deep-research":"質問に対して web 検索を展開し、出典を突き合わせて引用付きレポートを作成","design-login":"claude.ai アカウントで /design-sync のデザインシステムアクセスを認可","design-sync":"リポジトリの React デザインシステムを Claude Design にアップロードし、実際のコンポーネントを使わせる","desktop":"現在のセッションを Claude Code デスクトップアプリで継続","fewer-permission-prompts":"履歴から読み取り専用の Bash / MCP 呼び出しを洗い出し、許可リストを .claude/settings.json に追加して権限プロンプトを削減","heapdump":"ヒープスナップショットとメモリ内訳を書き出し(メモリ使用量の診断用)","ide":"IDE 連携を管理(状態表示と、現在の選択範囲・開いているファイル等の取り込み)","insights":"セッションを分析し、対象領域・対話パターン・摩擦点のレポートを生成","install-github-app":"リポジトリに Claude GitHub App を導入(GitHub Actions の設定も任意で実施)","install-slack-app":"Claude Slack アプリを導入","keybindings":"キーボードショートカットの設定ファイルを開く","login":{"claude":"Anthropic アカウントにサインイン","copilot":"Copilot にログイン"},"mobile":"Claude モバイルアプリのダウンロード用 QR コードを表示","passes":"Claude Code の 1 週間無料パスを友人に共有","plugin":{"claude":"Claude Code のプラグインを管理","copilot":"プラグインとプラグインマーケットプレイスを管理"},"powerup":"対話型レッスンとデモで Claude Code の機能を学ぶ","privacy-settings":"プライバシー設定を確認・更新","radio":"Claude FM の lo-fi ラジオをブラウザで開く","recap":"現在のセッションの 1 行要約を生成","release-notes":"変更履歴をバージョン選択つきで表示","reload-plugins":"再起動せずに有効なプラグインを再読み込み","reload-skills":"スキル・コマンドのディレクトリを再走査し、再起動せずに反映","remote-control":"このセッションを claude.ai のリモートコントロール対象にする","remote-env":"クラウドエージェントの既定環境を選択","rename":"現在のセッション(スレッド)の名前を変更","run":"プロジェクトのアプリを起動・操作し、テストだけでなく実際の動作で変更を確認","run-skill-generator":"/run と /verify がアプリをクリーンな環境で起動・操作できるよう、プロジェクト専用スキルを生成","sandbox":"サンドボックスモードを切り替え","scroll-speed":"マウスホイールのスクロール速度を対話的に調整","security-review":"現在のブランチの変更をセキュリティ脆弱性の観点で分析","setup-bedrock":"Amazon Bedrock の認証・リージョン・モデル指定をウィザードで設定","setup-vertex":"Google Cloud の認証・プロジェクト・リージョン・モデル指定をウィザードで設定","simplify":"変更されたコードを整理観点でレビューし、修正を適用","stickers":"Claude Code のステッカーを注文","stop":"バックグラウンドのセッション・ターミナルを停止","subtask":"会話全体を引き継ぐバックグラウンドのサブエージェントを起動(作業を続けながら並行実行)","team-onboarding":"利用履歴からチーム向けオンボーディングガイドを生成","teleport":"web の Claude Code セッションをこのターミナルに引き込み(ブランチと会話を取得)","theme":"配色・シンタックスハイライトのテーマを選択","tui":"端末 UI のレンダラーを設定し、会話を保ったまま再起動","ultrareview":"クラウドサンドボックスでマルチエージェントの詳細コードレビューを実行","upgrade":"上位プランへの切り替えページをブラウザで開く","usage-credits":"使用クレジットを設定、または上限到達時に管理者へ申請","verify":"ビルド・実行・観察によって、テストや型検査に頼らず変更の動作を確認","voice":"音声入力を切り替え、または特定モードで有効化","web-setup":"ローカルの gh CLI 認証を使って GitHub アカウントを Claude Code on the web に接続","workflows":"実行中・完了済みワークフローの進捗ビューを開く(監視・一時停止・再開・保存)","keymap":"TUI のショートカットを再割り当て","vim":"コンポーザーの Vim モードを切り替え","setup-default-sandbox":"昇格エージェント用のサンドボックスを設定","sandbox-add-read-dir":"サンドボックスに読み取り可能なディレクトリを追加: /sandbox-add-read-dir [絶対パス]","experimental":"実験的機能を切り替え","approve":"直近の自動レビュー拒否に対する再試行を 1 回承認","import":{"codex":"Claude Code から設定・プロジェクト・最近のチャットを取り込み","claude":"OpenAI Codex / Google Gemini CLI の設定(指示ファイル・MCP サーバー・コマンド・サブエージェント・スキル)を Claude Code に取り込み"},"archive":"このセッションをアーカイブして終了","delete":"このセッションを完全に削除して終了","app":{"codex":"このセッションをデスクトップアプリで継続","copilot":"GitHub Copilot デスクトップアプリを開く"},"side":"一時的なフォークで別の会話を開始","raw":"コピーしやすい raw スクロールバックモードを切り替え","debug-config":"設定の階層と要件の出所をデバッグ用に表示","title":"ターミナルのタイトルに表示する項目を設定","pets":"ターミナルのペットを選択・非表示","apps":"アプリを管理","plugins":"プラグインを閲覧","rollout":"rollout ファイルのパスを表示","ps":"バックグラウンドのターミナル一覧を表示","personality":"Codex の応答スタイルを選択","test-approval":"承認リクエストのテスト","list-agents":"Claude がメッセージを送れるサブエージェントと他の Claude Code セッションを宛先名つきで一覧表示","allow-all":"ツール・パス・URL の権限をすべて許可","ask":"会話履歴に残さない単発の質問","autopilot":"オートパイロットモードを切り替え","changelog":"CLI バージョンの変更履歴を表示","chronicle":"セッション履歴のツールとインサイトを表示","cwd":"作業ディレクトリを変更、または現在地を表示","delegate":"このセッションを GitHub に送りプルリクエストを作成","diagnose":"現在のセッションログを解析","env":"読み込み済みの環境情報を表示","fleet":"サブエージェント並列実行のフリートモードを有効化","footer":"ステータスライン項目を設定","instructions":"カスタム指示ファイルの表示と有効・無効切り替え","keep-alive":"システムスリープを防ぐ keep-alive モードを管理","limits":"セッションの上限を表示・編集","list-dirs":"許可済みディレクトリをすべて表示","lsp":"言語サーバーの設定を管理","pr":"現在のブランチのプルリクエストを操作","refine":"粗いプロンプトをレビュー用に書き直し","remote":"GitHub の Web・モバイルからのリモート操作を切り替え","research":"ディープリサーチ調査を実行","reset-allowed-tools":"許可済みツールの一覧をリセット","restart":"現在のセッションを保ったまま CLI を再起動","rubber-duck":"現在の作業への独立した批評を取得","search":"会話タイムラインを検索","session":"セッションを表示・管理","settings":"設定 UI を開く、または個別の値を表示・設定","share":"セッションを Markdown ファイルや GitHub gist として共有","undo":"直前のターンを巻き戻してファイル変更を取り消し","update":"CLI を最新バージョンに更新","user":"GitHub ユーザー一覧を管理","version":"バージョン情報を表示","mcps":"MCP サーバーの有効・無効を切り替え","move":"別のプロジェクトディレクトリへ移動","variants":"モデルのバリアントを切り替え","pwd":"現在の作業ディレクトリを表示","artifacts":"自分が所有または共有されている Artifact を一覧し、セッションへの添付・ブラウザで開く・リンクのコピーを行う","auto-mode-setup":"プロジェクトと最近のセッションから autoMode.environment の下書きを作成し、内容を確認してユーザー設定に保存する"}},"session":{"confirmKill":"「{name}」のセッションを終了しますか?\\n\\n※全てのメッセージ履歴が削除されます。ログファイルは保持されます。","failedToKill":"セッションの終了に失敗しました","confirmEnd":"{tool} セッションを終了しますか?","endWarning":"セッションを終了すると、チャット履歴がクリアされます。","running":"セッション実行中","starting":"セッション起動中","startingEllipsis":"セッション起動中..."},"status":{"waitingForResponse":"レスポンス待ち","responseCompleted":"レスポンス完了","thinking":"考え中...","thinkingStatus":"思考中","agentIsThinking":"{toolName} が考え中です..."},"output":{"latest":"最新の出力","realtimeUpdate":"リアルタイム更新"},"errors":{"failedToUpdateFavorite":"お気に入りの更新に失敗しました","failedToUpdateStatus":"ステータスの更新に失敗しました"},"feedback":{"title":"フィードバック・サポート","bugReport":"バグを報告","featureRequest":"機能を提案","question":"質問する","viewIssues":"Issue一覧を見る"},"fileTree":{"moveTo":"移動先を選択...","moveDialogTitle":"移動先を選択","moveConfirm":"ここに移動","moveSuccess":"移動しました","timeAgo":"{time}前","rootDirectory":"ルート","metadata":{"size":"サイズ","created":"作成","modified":"更新","settingsLabel":"メタデータ表示設定","settingsTitle":"インライン表示","showSize":"ファイルサイズ","showCreated":"作成日時","showModified":"更新日時"},"loading":"ファイルを読み込み中","empty":"ファイルが見つかりません","newFile":"新規ファイル","newDirectory":"新規ディレクトリ","noResultsMatching":"「{query}」に一致するファイルはありません","noResultsContaining":"「{query}」を含むファイルはありません","label":"ファイルツリー","refreshing":"ファイルを更新中","refreshLabel":"ファイルツリーを更新","resetViewLabel":"ファイルツリーの表示をリセット","loadError":"ファイルの読み込みに失敗しました","loadDirectoryError":"ディレクトリの読み込みに失敗しました: {status}","itemCount":"{count} 項目"},"update":{"available":"新しいバージョンが利用可能です","latestVersion":"最新: v{version}","updateCommand":"更新コマンド:","viewRelease":"リリースを表示","dataPreserved":"アップデートによりデータベースのデータは保持されます。","version":"バージョン","installTypeGlobal":"npm(グローバル)","installTypeLocal":"ローカル(git pull)","updateNow":"今すぐアップデート","npxRestartNotice":"このサーバは npx で起動しています。アップデートは最新版を取得してサーバを再起動します。ポートなど一部の起動設定は変わることがあります。自動で再接続しない場合は「commandmate status」で稼働先を確認してください。","confirmTitle":"CommandMate をアップデートしますか?","confirmDescription":"CommandMate を v{version} に更新します。サーバを停止し、新しいバージョンをインストールして、再度起動します。数分かかります。","confirmButton":"アップデート","starting":"アップデートを開始しています...","updating":"アップデート中です。サーバは自動的に再起動します。","updatingHint":"数分かかります。この画面を開いたままにしてください。新しいバージョンの準備ができると自動的に再読み込みされます。","noRestartTitle":"更新をインストールしました","noRestartDescription":"このサーバは「commandmate start --daemon」以外の方法で起動されているため、旧バージョンのまま稼働しています。反映するにはサーバを手動で再起動してください。","timeoutTitle":"アップデートに失敗した可能性があります","timeoutDescription":"想定時間内にサーバが復帰しませんでした。状態を確認し、手動でアップデートを完了してください:","errorTitle":"アップデートを開始できませんでした","errorNotGlobal":"CommandMate はグローバルインストールではないため、自己更新できません。","errorInProgress":"アップデートは既に実行中です。","errorGeneric":"アップデートを開始できませんでした。手動でコマンドを実行してください:","logHint":"アップデートログ: {path}"},"terminal":{"historyLabel":"履歴","filesLabel":"ファイル","showHistory":"履歴を表示","hideHistory":"履歴を非表示","showFiles":"ファイルを表示","hideFiles":"ファイルを非表示","equalizeWidths":"均等幅","equalizeWidthsHint":"ターミナル幅を均等にし、履歴幅を初期値に戻す","addSplit":"分割を追加","removeSplit":"分割を削除","selectInstance":"{split} のエージェントインスタンスを選択","moreActions":"その他の操作","searchTerminal":"ターミナル内を検索","endSession":"セッションを終了","endSessionFor":"{name}のセッションを終了"},"unsentComposer":{"regionLabel":"未送信の入力","label":"未送信の入力:","run":"実行","clear":"クリア"},"todo":{"addPlaceholder":"ToDoを追加…","add":"追加","empty":"ToDoはまだありません。","loading":"読み込み中…","statusTodo":"未着手","statusDoing":"仕掛","statusDone":"完了","cycleStatus":"ステータス: {status}(クリックで変更)","moveUp":"上へ移動","moveDown":"下へ移動","delete":"ToDoを削除","edit":"ToDoを編集","editTitle":"ToDoを編集","contentLabel":"件名","contentPlaceholder":"ToDoの件名","detailLabel":"詳細","detailPlaceholder":"詳細を入力(任意)…","hasDetail":"詳細あり","copyDetail":"詳細をコピー","save":"保存","cancel":"キャンセル","loadError":"ToDoの読み込みに失敗しました","addError":"ToDoの追加に失敗しました","updateError":"ToDoの更新に失敗しました","deleteError":"ToDoの削除に失敗しました","reorderError":"ToDoの並び替えに失敗しました"},"htmlPreview":{"interactiveModeConfirm":"Interactiveモードではスクリプトが実行されます。信頼できないHTMLファイルではSafeモードを使用してください。","title":"HTML プレビュー: {path}","modeSource":"ソース","modePreview":"プレビュー","modeSplit":"分割","sandboxSafe":"セーフ","sandboxInteractive":"インタラクティブ"},"editor":{"saveFailedCloseConfirm":"保存に失敗しました。このまま閉じますか?","unsavedCloseConfirm":"未保存の変更があります。閉じてもよろしいですか?","loading":"読み込み中...","placeholder":"入力を開始...","placeholderMarkdown":"Markdown の入力を開始...","saveSuccess":"ファイルを保存しました","saveError":"ファイルの保存に失敗しました","loadError":"ファイルの読み込みに失敗しました","sessionExpired":"セッションの有効期限が切れました。再ログインしてください。","autoSaveFailed":"自動保存に失敗しました。手動保存に切り替えます。","unsaved":"未保存","auto":"自動","splitView":"分割表示","editorOnly":"エディタのみ","previewOnly":"プレビューのみ","enterFullscreen":"全画面にする (Ctrl+Shift+F)","exitFullscreen":"全画面を終了 (ESC)","indent":"インデント (Tab)","outdent":"アウトデント (Shift+Tab)","tabMovesFocusOn":"Tab はフォーカス移動 (Ctrl+M でインデントに切替)","tabMovesFocusOff":"Tab はインデント (Ctrl+M でフォーカス移動に切替)"},"actions":{"copyPath":"パスをコピー","copyContent":"内容をコピー","copyFilePath":"ファイルパスをコピー","copyFileContent":"ファイルの内容をコピー","search":"検索","searchInFile":"ファイル内を検索","edit":"編集","editFile":"ファイルを編集","download":"ダウンロード","downloadFile":"ファイルをダウンロード","close":"閉じる","save":"保存","saving":"保存中...","saved":"保存済み","prev":"前へ","next":"次へ","fullscreen":"全画面","exitFullscreen":"全画面を終了","minimize":"最小化","maximize":"最大化","retry":"再試行","refresh":"更新","resetView":"表示をリセット"},"fileSearch":{"placeholder":"検索...","prevMatch":"前の結果","nextMatch":"次の結果","close":"検索を閉じる"},"fileViewer":{"loading":"ファイルを読み込み中...","loadError":"ファイルの読み込みに失敗しました","tabSource":"ソース","tabPreview":"プレビュー","sandboxSafe":"セーフ","sandboxInteractive":"インタラクティブ","slideTitle":"{name} - スライド {number}","noSlides":"{fileName} にスライドが見つかりません","slides":"スライド","editor":"エディタ","modeSwitch":"表示モードの切替","modeViewer":"ビュワー","modeEditor":"編集","moreActions":"その他の操作"},"fileTabs":{"unsavedChanges":"未保存の変更","closeTab":"{name} を閉じる"},"markdownPreview":{"loadingImage":"[画像を読み込み中...]","editor":"エディタ","preview":"プレビュー","exitFullscreenHint":"ESC キーで全画面を終了","exitFullscreenHintSwipe":"(または下にスワイプ)","largeFileWarning":"大きなファイル: パフォーマンスに影響する場合があります。"},"mermaid":{"rendering":"図を描画中...","loading":"図を読み込み中...","errorTitle":"図のエラー","emptyCode":"図のコードが空です","renderError":"図の描画に失敗しました"},"imageViewer":{"loadError":"画像の読み込みに失敗しました"},"videoViewer":{"loadError":"動画の読み込みに失敗しました","loading":"動画を読み込み中...","unsupported":"お使いのブラウザは video タグに対応していません。"},"logViewer":{"title":"ログファイル","all":"すべて ({count})","toolCount":"{tool} ({count})","empty":"ログファイルが見つかりません","emptyFiltered":"{tool} のログファイルが見つかりません","copyTitle":"サニタイズしたログをクリップボードにコピー","export":"エクスポート","exporting":"エクスポート中...","copied":"ログをクリップボードにコピーしました (サニタイズ済み)","exportError":"ログのエクスポートに失敗しました: {error}","searchPlaceholder":"ログファイル内を検索...","prevMatch":"前の一致 (Shift+Enter)","nextMatch":"次の一致 (Enter)","noMatches":"「{query}」に一致するものはありません"},"pdfPreview":{"title":"PDF プレビュー: {path}","loadError":"PDFプレビューを読み込めませんでした。","openInNewTab":"PDFを新しいタブで開く","download":"ダウンロード","downloadPdf":"PDF をダウンロード"},"diffViewer":{"badge":"DIFF","close":"差分表示を閉じる"},"search":{"searching":"検索中...","placeholder":"ファイルを検索...","label":"ファイルを検索","clear":"検索をクリア","mode":"モード:","modeName":"名前","modeContent":"内容"},"tabs":{"ariaLabel":"モバイルナビゲーション","terminal":"ターミナル","history":"履歴","files":"ファイル","memo":"ツール","info":"情報","newOutput":"新しい出力があります","promptWaiting":"プロンプト待機中","updateAvailable":"更新があります"},"git":{"uncommittedChanges":"未コミットの変更","askAi":"AI に質問","askAiTooltip":"現在の状況を AI チャットに下書きします(自動送信はされません)","advancedOperations":"高度な操作","remote":"リモート","paneSections":"Git ペインのセクション","tabs":{"status":"ステータス","changes":"変更","history":"履歴","advanced":"高度な操作"},"checkout":{"action":"チェックアウト","ariaLabel":"ブランチをチェックアウト","noBranches":"ブランチがありません","checkoutBranch":"{name} をチェックアウト","checkedOutElsewhere":"別のワークツリーでチェックアウト中: {path}","defaultBadge":"デフォルト","confirmTitlePrefix":"","confirmTitleSuffix":" をチェックアウトしますか?","forceLabel":"変更を破棄して強制チェックアウト — 未コミットの変更は失われます","historyLossWarning":"別ブランチへ切り替えると、このワークツリーに紐づくチャット履歴・メモ・スケジュールが次回同期時に失われる可能性があります","runningSessionWarning":"このブランチに切り替えると、稼働中のセッションの作業ファイルが変化します。"},"branches":{"title":"ブランチ","newButton":"+ 新規","refresh":"ブランチを更新","filterLocal":"ローカル","filterRemote":"リモート","filterAll":"すべて","loading":"ブランチを読み込み中...","empty":"ブランチがありません","defaultBadge":"デフォルト","deleteBranch":"{name} を削除","delete":"削除","createTitle":"ブランチを作成","namePlaceholder":"ブランチ名(例: feature/123-foo)","nameLabel":"新しいブランチ名","baseLabel":"ベースブランチ","currentHead":"(現在の HEAD)","create":"作成","deleteTitlePrefix":"","deleteTitleSuffix":" を削除しますか?","forceDeleteLabel":"強制削除(-D)— マージされていないコミットは失われます"},"changes":{"title":"変更","refresh":"変更を更新","loading":"変更を読み込み中...","listHeader":"{title}({count})","empty":"なし","togglePreview":"{path} の差分プレビューを切り替え","showDiff":"{path} の差分を表示","diff":"差分","fileAction":"{path} を{action}","loadingPreview":"差分プレビューを読み込み中...","previewFailed":"プレビューの読み込みに失敗しました","noDiff":"差分がありません","truncated":"… 省略されました — 完全な差分を開く","staged":"ステージ済み","unstaged":"未ステージ","untracked":"未追跡","stage":"ステージ","unstage":"アンステージ","commitMessage":"コミットメッセージ","amend":"直前のコミットを修正","commit":"コミット","committing":"コミット中...","commitAndPush":"コミット + プッシュ","commitAndPushTooltip":"コミットしてからプッシュします。プッシュに失敗してもコミットは保存済みなので、プッシュを再実行してください。"},"history":{"title":"コミット履歴","refresh":"コミット履歴を更新","loading":"コミット履歴を読み込み中...","empty":"コミットがありません","viewDiffFor":"{hash} の差分を表示","viewDiff":"差分を表示","hideDiff":"差分を隠す","loadingChangedFiles":"変更ファイルを読み込み中...","noChangedFiles":"変更ファイルがありません","showCommitDiff":"{path} のコミット差分を表示","changedFiles":"変更ファイル","diffLabel":"差分: {file}","loadingDiff":"差分を読み込み中...","noDiff":"差分がありません","diffInFilePanel":"ファイルパネルに差分を表示中: {file}"},"currentStatus":{"title":"現在の状況","refresh":"リモートを確認して更新(git fetch)","refreshing":"リモートを確認中...","loading":"Git ステータスを読み込み中...","uncommitted":"未コミット","aheadTooltip":"最後に fetch した時点のアップストリームより先行しているコミット数(リモートの最新状態とは異なる場合があります)","behindTooltip":"最後に fetch した時点のアップストリームより遅れているコミット数(リモートの最新状態とは異なる場合があります)","lastFetch":"最終 fetch: {relative}","lastFetchNever":"最終 fetch: まだ実行していません","lastFetchTooltip":"ahead/behind はこの時点のリモート情報との比較です。更新ボタンで再取得できます。","noUpstreamBadge":"未プッシュ","noUpstreamTooltip":"このブランチにはアップストリームが設定されていないため、ahead/behind を計算できません(まだ push していません)","upstreamGoneBadge":"リモート削除済み","upstreamGoneTooltip":"設定されたアップストリームのリモート追跡ブランチが存在しません(リモート側で削除された可能性があります)","detachedBadge":"detached","detachedTooltip":"HEAD がブランチを指していないため、ahead/behind を計算できません","aheadBehindErrorBadge":"比較できません","aheadBehindErrorTooltip":"ahead/behind の取得に失敗しました(タイムアウトなど)。更新ボタンで再試行できます。"},"danger":{"title":"危険な操作","resetOpen":"リセット…","revertOpen":"リバート…","forcePushOpen":"強制プッシュ…","selectCommitHint":"リバート / 指定コミットへのリセットを行うには、コミット履歴でコミットを選択してください。","resetTitle":"リセット","resetTargetHead":"HEAD","resetTargetSelectedPrefix":"選択中のコミット ","resetTargetSelectedHash":"({hash})","resetTargetNoneSelected":"(未選択)","modeSoft":"soft","modeMixed":"mixed","modeHard":"hard","resetHardWarning":"ハードリセットは未コミットの変更を完全に破棄し、HEAD を移動するとコミットも失われる可能性があります。この操作は取り消せません。","runningSessionWarning":"この危険な操作は、稼働中のセッションが編集中の作業ファイルを破壊的に書き換えます。","confirmPlaceholder":"確認のため \\"{branch}\\" と入力してください","reset":"リセット","revertTitle":"リバート","revertBodyPrefix":"コミットをリバート ","revertNoCommit":"コミットしない(ステージのまま)","revert":"リバート","forcePushTitle":"強制プッシュ","protectedBranchWarning":"デフォルトブランチへの force push は禁止されています。","forceWithLease":"--force-with-lease を使用(推奨 — リモートが更新されていた場合は拒否されます)","forcePush":"強制プッシュ"},"network":{"quickActions":"クイック操作","fetch":"フェッチ","pull":"プル","push":"プッシュ","noUpstreamTooltip":"アップストリームがありません — プッシュ時に設定されます","pushing":"プッシュ中","pulling":"プル中","fetching":"フェッチ中","progress":"{operation}… {elapsed}秒","abort":"中止","conflicts":"プルで競合が発生しました: {files}。ターミナルで解決してください。","authFailedGuidance":"ターミナルで一度 push/pull して認証情報を設定してください。","failed":"Git のネットワーク操作に失敗しました"},"stash":{"titlePrefix":"スタッシュ ","count":"({count})","refresh":"スタッシュ一覧を更新","messagePlaceholder":"スタッシュメッセージ(任意)","includeUntracked":"未追跡ファイルを含める","push":"スタッシュ","loading":"スタッシュを読み込み中...","empty":"スタッシュがありません","apply":"適用","pop":"ポップ","drop":"破棄","dropConfirmSuffix":" を完全に削除します。この操作は取り消せません。"},"aiPrompts":{"branchCreate":"{base} から {name} ブランチを作成して checkout してください。","branchCreateBaseHead":"現在の HEAD","branchDelete":"{name} ブランチを削除してください。","branchDeleteForce":"{name} ブランチを削除してください。(マージされていないコミットがあっても -D で強制削除してください)","stashCleanup":"古い stash entry をリストアップし、不要なものを削除する提案をしてください。","stashCleanupCurrent":"現在の stash:","stashConflict":"stash の pop / apply で conflict が発生しました。conflict を解決してから commit してください。","reset":"{target} に対して {mode} reset を行いたいです。安全に実行してください。","resetHard":"{target} に対して hard reset を行いたいです。安全に実行してください。 hard reset は作業内容を失う可能性があります。もし直前の hard reset を取り消したい場合は git reflog から復旧してください。","revert":"コミット {commit} を revert してください。","forcePush":"{branchRef} を force-with-lease で push したいです。事前に upstream({upstream})との差分を確認し、安全な場合のみ push してください。","forcePushAhead":"{branchRef}(↑{ahead}) を force-with-lease で push したいです。事前に upstream({upstream})との差分を確認し、安全な場合のみ push してください。","forcePushCurrentBranch":"現在のブランチ"}},"activityBar":{"toggleSidebar":"サイドバーを切り替え","label":"アクティビティバー","files":"ファイル","git":"Git","notes":"メモ","schedules":"スケジュール","agent":"エージェント","timer":"タイマー","todo":"ToDo","skills":"スキル","verification":"検証","env":"環境変数"},"branchMismatch":{"changedFrom":"ブランチが","to":"から","dismiss":"アラートを閉じる"},"contextMenu":{"label":"ファイル操作","uploadFile":"ファイルをアップロード","rename":"名前を変更","move":"移動","delete":"削除"},"navigation":{"toolbarLabel":"TUI ナビゲーション","caption":"ナビ","quitPager":"ページャーを終了"},"newFileDialog":{"title":"新規ファイル","fileNameLabel":"ファイル名","placeholder":"document","create":"作成"},"paneResizer":{"label":"ペインのサイズを変更します。{arrows}キーで調整できます。","arrowsHorizontal":"左右の矢印","arrowsVertical":"上下の矢印"},"desktopLayout":{"activityPane":"アクティビティペイン","terminalPane":"ターミナルペイン"},"worktreeStatus":{"notSet":"未設定","ready":"準備完了","inProgress":"作業中","inReview":"レビュー中","done":"完了"},"card":{"main":"メイン","description":"説明","link":"リンク","openLink":"リンクを新しいタブで開く","updated":"更新 {time}"},"detail":{"worktree":"ワークツリー","repository":"リポジトリ","copyRepositoryPath":"リポジトリのパスをコピー","copyWorktreePath":"ワークツリーのパスをコピー","copyPath":"パスをコピー","copied":"コピーしました!","path":"パス","status":"ステータス","worktreeStatusLabel":"ワークツリーのステータス","description":"説明","addNotesPlaceholder":"このブランチについてのメモを追加...","noDescription":"説明はまだ追加されていません","link":"リンク","lastUpdated":"最終更新","logs":"ログ","hide":"隠す","show":"表示","goBack":"ワークツリー一覧に戻る","home":"ホーム","viewInfo":"ワークツリーの情報を表示","info":"情報","infoModalTitle":"ワークツリー情報","loading":"ワークツリーを読み込み中...","loadingInfo":"ワークツリー情報を読み込み中...","errorLoading":"ワークツリーの読み込みに失敗しました","uploadFile":"ファイルをアップロード","unknownRepository":"不明","loadingEditor":"エディタを読み込み中...","agentInstanceSelection":"エージェントインスタンスの選択","statusPill":"{label}: {status}","subTabMessage":"メッセージ","subTabGit":"Git","statusPillWithModel":"{label}: {status} — モデル {model}","statusPillWithUsage":"{base} — {usage}","statusPillWithSource":"{base} — {source}"},"detailStatus":{"idle":"アイドル - セッションなし","ready":"準備完了 - 入力待ち","running":"実行中 - 処理しています","waiting":"待機中 - ユーザー入力が必要です"},"agentSource":{"line":"イベント源: {kind}({state})","lineBare":"イベント源: {kind}","kindSse":"SSE","kindHooks":"hooks","kindScraper":"画面スクレイプ","livenessLive":"接続中","livenessStale":"停止","reasonPortIdentityChanged":"ポートが別プロセスに変わりました","reasonHeartbeatStale":"ハートビートが30秒以上ありません","reasonNotSubscribed":"イベント購読なし","reasonOther":"理由: {reason}","degradedTitle":"構造化イベントが届いていません","healthyTitle":"構造化イベントを受信中"},"agentModel":{"label":"モデル","modelLabel":"モデル: {model}"},"nextAction":{"start":"開始","sendMessage":"メッセージを送信","approveReject":"承認 / 拒否","replyToPrompt":"プロンプトに応答","checkStalled":"停滞を確認","running":"実行中..."},"awaitingInstruction":{"badge":"指示待ち","label":"エージェントはターンを終え、次の指示を待っています"},"verification":{"title":"検証","refresh":"再読み込み","loading":"検証情報を読み込み中…","loadError":"検証情報を取得できませんでした: {message}","contract":{"heading":"実行契約","empty":"このブランチには契約がありません。\\n`commandmate send --contract <ファイル>` か Skill `cmate-task-contract` で作成してください。","scopeAllow":"scope.allow","scopeDeny":"scope.deny","gates":"verify.gates","gatesAll":"宣言済みゲート全件","autoYes":"autoYes.mode","autoYesUnset":"未指定(既存の挙動を維持)","file":"契約ファイル","updated":"更新"},"runs":{"heading":"検証ラン","empty":"検証ランはまだありません。\\n「再検証」を押すか、`commandmate verify <worktree-id>` を実行してください。","rerun":"再検証","rerunPending":"開始中…","rerunConflict":"検証ランが既に実行中です(run {runId})。","rerunConflictUnknown":"検証ランが既に実行中です。","rerunError":"検証を開始できませんでした: {message}","select":"run {runId} のゲートを表示(RESULT {verdict})","runLabel":"run {runId}","trigger":"trigger={trigger}"},"gates":{"heading":"ゲート — run {runId}","empty":"このランにはゲートの記録がありません。","loading":"ゲートを読み込み中…","notFound":"その検証ランは見つかりませんでした。","loadError":"検証ランを取得できませんでした: {message}","exitCode":"exit={code}","duration":"duration={duration}","contractSource":"[contract]","showLog":"ログ末尾を表示","hideLog":"ログ末尾を隠す","logOmitted":"… (+{count} 行省略。全文は `commandmate verify show {runId}`)","noLog":"ログ出力は記録されていません。"},"runStatus":{"running":"running","passed":"passed","failed":"failed","not_started":"not_started","error":"error","cancelled":"cancelled"},"gateStatus":{"running":"RUNNING","passed":"PASS","failed":"FAIL","timeout":"TIMEOUT","skipped":"SKIP","error":"ERROR"},"chip":{"taskReason":"タスク「{title}」: {status}","resultBadge":"RESULT {verdict}","runReason":"直近の検証: RESULT {verdict}(run {runId})","noRun":"検証ランはまだありません","failingGates":"不合格ゲート: {gates}","gatesPassed":"全 {count} ゲート合格","openHint":"検証ペインを開く","dash":"—"}},"task":{"status":{"pending":"pending(未送信)","running":"running(作業中)","waiting_input":"waiting_input(プロンプト待ち)","verifying":"verifying(検証中)","succeeded":"succeeded(合格)","failed":"failed(不合格)","not_started":"not_started(作業証跡ゼロ)","cancelled":"cancelled(中止)"}},"envManager":{"title":"環境変数マネージャ","description":"このワークツリーの環境変数ファイルを表示・編集します。値は既定で伏せられます。","filePickerLabel":"環境変数ファイル","viewModeLabel":"表示形式","viewKeyValue":"キー / 値","viewRaw":"テキスト","notCreated":"未作成","templateBadge":"テンプレート","notCreatedHint":"{file} はまだ存在しません。キーを追加して保存すると作成されます。","keyLabel":"変数名","valueLabel":"{key} の値","showValue":"{key} の値を表示","hideValue":"{key} の値を隠す","removeRow":"{key} を削除","addRow":"変数を追加","revealAll":"値を表示","hideAll":"値を隠す","reload":"ディスクから再読み込み","save":"保存","saved":"保存しました。","loading":"環境変数ファイルを読み込み中...","loadError":"環境変数ファイルを読み込めませんでした。","empty":"変数はまだ定義されていません。","validationFailed":"このファイルはまだ保存できません。","suggestionsTitle":"テンプレートのキー","suggestionsHint":".env.example / .env.sample にあってこのファイルに無いキーです。タップで追加します。","rawLabel":"環境変数ファイル(テキスト)","rawMaskedLabel":"環境変数ファイル(値を伏せた表示)","rawMaskedHint":"値は {mask} で伏せられています。「値を表示」で表示・編集できます。","issues":{"invalidSyntax":"{line} 行目: KEY=VALUE の形式ではありません。","invalidKey":"{line} 行目: 変数名が不正です。英字かアンダースコアで始まり、英数字とアンダースコアのみが使えます。","unterminatedQuote":"{line} 行目: {key} の引用符が閉じられていません。","duplicateKey":"{line} 行目: {key} が重複しています。最後の定義が有効になります。","controlCharacter":"{line} 行目: 環境変数ファイルに使用できない制御文字が含まれています。","tooLarge":"このファイルは大きすぎるため、ここでは編集できません。","tooManyEntries":"このファイルは変数が多すぎるため、ここでは編集できません。"}},"agentSession":{"context":"{tokens}({percent}%)","chipLabel":"セッション使用量 — {usage}","titleLabel":"セッション: {title}","agentLabel":"エージェント: {agent}","costLabel":"現在までのコスト: {cost}","spentLabel":"このセッションの消費: {tokens} トークン","contextLabel":"コンテキスト使用量: {limit} トークン中 {tokens} トークン({percent}%)","contextUnknownLabel":"コンテキスト使用量: {tokens} トークン(上限不明)"},"opencodeDiff":{"title":"このターンの変更ファイル","subtitle":"{count} ファイル","revertedTitle":"取り消し中の変更","revertedSubtitle":"{count} ファイルが取り消されています","openDiff":"{file} の差分を表示","unnamedFile":"(ファイル名なし)","status":{"added":"追加","deleted":"削除","modified":"変更"},"revert":"このターンを取り消す","unrevert":"やり直す","revertConfirmTitle":"このターンを取り消しますか?","revertConfirmBody":"opencode が {count} ファイルへの変更を巻き戻します。追加されたファイルは削除され、コミット済みの変更も作業ツリー上では巻き戻ります。この操作は「やり直す」で復元できます。","revertConfirmLabel":"取り消す","unrevertConfirmTitle":"取り消した変更をやり直しますか?","unrevertConfirmBody":"opencode が取り消し中の {count} ファイルへの変更をすべて作業ツリーに戻します。","unrevertConfirmLabel":"やり直す","busy":"エージェントが実行中のため実行できません。ターンの完了後に再試行してください。","noop":"opencode は変更しませんでした(対象のターンが見つかりません)。","failed":"opencode が操作を拒否しました。"},"opencodeQuickKeys":{"toolbarLabel":"opencode クイックキー","caption":"opencode","needsSession":"このペインの最初のターン以降に使えます({notation})","showKeys":"opencode クイックキーを表示","hideKeys":"opencode クイックキーを隠す","keys":{"agentNext":"次のエージェント","agentPrev":"前のエージェント","commands":"コマンド","variant":"バリアント","agents":"エージェント","sessions":"セッション","newSession":"新規セッション","models":"モデル","themes":"テーマ","timeline":"タイムライン","undo":"取り消し","redo":"やり直し","compact":"圧縮","pageUp":"1ページ上","pageDown":"1ページ下","first":"先頭メッセージ","last":"最新メッセージ"}},"opencodeSidebar":{"regionLabel":"opencode サイドバーの警告","label":"opencode のサイドバーが開いています","body":"トランスクリプトと同じ行を占有するため、ターンの終了を検出できません。opencode のペインで次のキーを押して閉じてください:"},"opencodeSession":{"new":"新規セッション","list":"セッション一覧","fork":"セッションを fork","share":"共有リンクを発行","unshare":"共有を取り消す","shareCopy":"リンクをコピー","shareConfirmTitle":"この会話を外部に公開しますか?","shareConfirmBody":"opencode がこのセッションを opencode のホスティングに公開し、リンクを知っている人なら誰でも読める状態になります。公開されるのは会話そのもの(あなたのプロンプト・エージェントの応答・実行したツールの入出力)と、セッションの作業ディレクトリの絶対パスです。内容は伏せ字になりません。公開後は「共有を取り消す」でページを取り下げられますが、それまでに読まれた内容は取り消せません。","shareConfirmLabel":"公開する","sharePublicNotice":"このリンクは第三者が読めます。","errorNoPort":"このペインに opencode サーバが接続されていません。ペインを起動し直してから再度お試しください。","errorNoSessionFork":"まだ fork できるセッションがありません。1 ターン実行してから再度お試しください。","errorNoSessionShare":"まだ共有できるセッションがありません。1 ターン実行してから再度お試しください。","errorRequestFailed":"リクエストを送信できませんでした。CommandMate サーバに接続できません。","errorUnknown":"操作に失敗しました。原因はサーバから返されていません。","errorCopyFailed":"リンクをコピーできませんでした。表示されているリンクを選択して手動でコピーしてください。"}}')}};
@@ -1,4 +1,4 @@
1
- exports.id=2759,exports.ids=[2759],exports.modules={3453:(a,b,c)=>{"use strict";c.d(b,{Rh:()=>r,T1:()=>o,Z2:()=>m,c$:()=>n,nu:()=>q});var d=c(72626),e=c(80438);let f=(0,d.h)("ip-restriction"),g="::ffff:",h=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/,i=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/(\d{1,2})$/,j=process.env.CM_ALLOWED_IPS?.trim()||"",k=process.env.CM_TRUST_PROXY?.trim()||"";""!==k&&"true"!==k&&"false"!==k&&(0,e.h)(f,"trust-proxy-unexpected",{value:k});let l="true"===k;function m(a){return a?a.toLowerCase().startsWith(g)?a.substring(g.length):a:""}function n(a,b){if(0===b.length)return!1;let c=function(a){let b=a.match(h);if(!b)return null;let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)];for(let a of c)if(a<0||a>255)return null;return(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0}(m(a));if(null===c)return!1;for(let a of b)if((c&a.mask)>>>0===a.network)return!0;return!1}function o(a){if(l){let b=a.get("x-forwarded-for");if(b){let a=b.split(",")[0].trim();if(a)return a}}return a.get("x-real-ip")||null}let p=j.length>0?function(a){let b=a.trim();if(0===b.length)return[];let c=b.split(",").map(a=>a.trim()).filter(a=>a.length>0);if(c.length>256)throw Error(`CM_ALLOWED_IPS: too many entries (${c.length}). Maximum is 256.`);let d=[];for(let a of c){if(a.length>18)throw Error(`CM_ALLOWED_IPS: entry "${a}" exceeds maximum length of 18 characters.`);let b=a.match(i);if(b){let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)],e=parseInt(b[5],10);for(let b of c)if(b<0||b>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);if(e<0||e>32)throw Error(`CM_ALLOWED_IPS: invalid prefix length in "${a}". Must be 0-32.`);let f=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0,g=0===e?0:0xffffffff<<32-e>>>0;d.push({network:(f&g)>>>0,mask:g});continue}let c=a.match(h);if(c){let b=[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10),parseInt(c[4],10)];for(let c of b)if(c<0||c>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);let e=(b[0]<<24|b[1]<<16|b[2]<<8|b[3])>>>0;d.push({network:e,mask:0xffffffff});continue}throw Error(`CM_ALLOWED_IPS: invalid entry "${a}". Expected IPv4 address or CIDR notation.`)}return d}(j):[];function q(){return p}function r(){return j.length>0}},7015:(a,b,c)=>{"use strict";c.d(b,{Ds:()=>g});var d=c(81719);class e{constructor(a,b=3e4){this.cache=new Map,this.allAppsCache=null,this.lastRefresh=0,this.db=a,this.ttl=b}getTTL(){return this.ttl}isStale(){return Date.now()-this.lastRefresh>this.ttl}async refresh(){let a=(0,d.$i)(this.db);for(let b of(this.cache.clear(),a))this.cache.set(b.pathPrefix,b);this.allAppsCache=a,this.lastRefresh=Date.now()}async getByPathPrefix(a){return this.isStale()&&await this.refresh(),this.cache.get(a)??null}async getAll(){return this.isStale()&&await this.refresh(),this.allAppsCache??[]}invalidate(){this.cache.clear(),this.allAppsCache=null,this.lastRefresh=0}invalidateByIssueNo(a){this.invalidate()}}let f=null;function g(a){if(!f){if(!a)throw Error("Database instance required to initialize cache");f=new e(a)}return f}},26838:(a,b,c)=>{"use strict";c.d(b,{Mj:()=>k,Sw:()=>j,lX:()=>l});var d=c(29021),e=c(33873),f=c(90164);let g=/^v?\d+\.\d+\.\d+$/,h=/^[a-zA-Z0-9.\-\s_v]+$/,i=globalThis.__versionCheckCache??(globalThis.__versionCheckCache={result:null,fetchedAt:0,rateLimitResetAt:null});function j(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.27.0"}function k(){return j()}async function l(){try{var a,b,c;if(null!==i.result&&Date.now()-i.fetchedAt<36e5||i.rateLimitResetAt&&(!(Date.now()>=i.rateLimitResetAt)||(i.rateLimitResetAt=null,0)))return i.result;let d=await fetch("https://api.github.com/repos/Kewton/CommandMate/releases/latest",{headers:{Accept:"application/vnd.github+json","User-Agent":`CommandMate/${k()}`},cache:"no-store",signal:AbortSignal.timeout(5e3)});if(403===d.status)return function(a){let b=a.headers.get("X-RateLimit-Reset");b?i.rateLimitResetAt=1e3*parseInt(b,10):i.rateLimitResetAt=Date.now()+36e5}(d),i.result;if(!d.ok)return i.result;let e=await d.json(),j=k(),l=e.tag_name.replace(/^v/,""),m={hasUpdate:function(a,b){if(!g.test(a)||!g.test(b))return!1;let c=a=>a.replace(/^v/,"").split(".").map(Number),[d,e,f]=c(a),[h,i,j]=c(b);return h!==d?h>d:i!==e?i>e:j>f}(j,e.tag_name),currentVersion:j,latestVersion:l,releaseUrl:(a=e.html_url).startsWith(f.Dk)?a:null,releaseName:(b=e.name,c=e.tag_name,h.test(b)&&b.length<=128?b:c),publishedAt:e.published_at};return i.result=m,i.fetchedAt=Date.now(),m}catch{return i.result}}},39727:()=>{},47990:()=>{},57836:(a,b,c)=>{"use strict";c.d(b,{Jp:()=>k,Te:()=>l,hd:()=>j,wN:()=>h});var d=c(24455);let e=(0,c(72626).h)("waiting-episode-state"),f=globalThis.__sessionWaitingEpisodes??(globalThis.__sessionWaitingEpisodes=new Map),g=globalThis.__sessionWaitingTransitionListeners??(globalThis.__sessionWaitingTransitionListeners=new Set);function h(a){return g.add(a),()=>{g.delete(a)}}function i(a){for(let b of g)try{b(a)}catch(b){e.error("waiting-transition-listener-failed",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId,waiting:a.waiting,error:b instanceof Error?b.message:String(b)})}}function j({worktreeId:a,cliToolId:b,instanceId:c,waiting:e,kind:g=null,structuredSince:h=null,now:j=Date.now()}){let k=(0,d.v7)(a,b,c),l=f.get(k);if(!e)return void 0===l||(f.delete(k),i({worktreeId:a,cliToolId:b,instanceId:c,waiting:!1,since:null,kind:null,at:j})),null;if(void 0!==l)return l.kind=g,l.since;let m=h??j;return f.set(k,{since:m,kind:g}),i({worktreeId:a,cliToolId:b,instanceId:c,waiting:!0,since:m,kind:g,at:j}),m}function k(a,b,c){return f.get((0,d.v7)(a,b,c))??null}function l(a){let b=`${a}${d.CS}`;for(let a of f.keys())if(a.startsWith(b))return!0;return!1}},90164:(a,b,c)=>{"use strict";c.d(b,{Dk:()=>e,kD:()=>f});let d="https://github.com/Kewton/CommandMate",e=`${d}/releases/`,f=`${d}/blob/main/docs/security-guide.md`},93390:(a,b,c)=>{"use strict";c.d(b,{aq:()=>f,sO:()=>j,r0:()=>q,x:()=>r,zr:()=>p,y2:()=>o,JT:()=>n,nr:()=>m});var d=c(55511),e=c.n(d);let f="cm_auth_token",g=/^[0-9a-f]{64}$/,h=2592e6,i={maxAttempts:5,lockoutDuration:9e5,cleanupInterval:36e5},j=86400,k=(()=>{let a=process.env.CM_AUTH_TOKEN_HASH||void 0;return a?!function(a){return!!a&&g.test(a)}(a)?void console.error("[auth] CM_AUTH_TOKEN_HASH is not a valid SHA-256 hash"):a:void 0})(),l=function(){let a=process.env.CM_AUTH_EXPIRE,b=Date.now();if(a)try{return b+function(a){let b=a.match(/^(\d+)([hdm])$/);if(!b)throw Error(`Invalid duration format: "${a}". Use Nh, Nd, or Nm (e.g., "24h", "7d", "90m")`);let c=parseInt(b[1],10),d=b[2],e={h:36e5,d:864e5,m:6e4}[d];if(void 0===e)throw Error(`Invalid duration unit: "${d}"`);let f=c*e;if(f<36e5)throw Error(`Duration too short: minimum is 1h (60m). Got: "${a}"`);if(f>h)throw Error(`Duration too long: maximum is 30d (720h). Got: "${a}"`);return f}(a)}catch{return b+864e5}return process.env.CM_AUTH_TOKEN_HASH?b+864e5:null}();function m(a){if(!k||!a||"string"!=typeof a||null!==l&&Date.now()>l)return!1;let b=e().createHash("sha256").update(a).digest("hex"),c=Buffer.from(b,"hex"),d=Buffer.from(k,"hex");return c.length===d.length&&e().timingSafeEqual(c,d)}function n(a){let b={};if(!a)return b;for(let c of a.split(";")){let a=c.indexOf("=");if(-1===a)continue;let d=c.substring(0,a).trim(),e=c.substring(a+1).trim();d&&(b[d]=e)}return b}function o(){return!!k}function p(){if(null===l)return 0;let a=l-Date.now();return a<=0?0:Math.floor(a/1e3)}function q(a){return{httpOnly:!0,sameSite:"strict",secure:!!process.env.CM_HTTPS_CERT,maxAge:a,path:"/"}}function r(){let a=new Map,b=setInterval(()=>{let b=Date.now();for(let[c,d]of a){let e=null===d.lockedUntil||b>d.lockedUntil,f=b-d.lastAttempt>i.lockoutDuration;e&&f&&a.delete(c)}},i.cleanupInterval);return b.unref&&b.unref(),{checkLimit(b){let c=a.get(b);if(!c)return{allowed:!0};if(null!==c.lockedUntil){let a=Date.now();if(a<c.lockedUntil)return{allowed:!1,retryAfter:Math.ceil((c.lockedUntil-a)/1e3)};c.attempts=0,c.lockedUntil=null}return{allowed:!0}},recordFailure(b){let c=Date.now(),d=a.get(b)||{attempts:0,lockedUntil:null,lastAttempt:c};d.attempts++,d.lastAttempt=c,d.attempts>=i.maxAttempts&&(d.lockedUntil=c+i.lockoutDuration),a.set(b,d)},recordSuccess(b){a.delete(b)},destroy(){clearInterval(b),a.clear()}}}},95620:(a,b,c)=>{"use strict";c.r(b),c.d(b,{WORKTREE_RENAMED_EVENT_TYPE:()=>X,__internal:()=>_,broadcast:()=>U,broadcastMessage:()=>W,cleanupRooms:()=>Z,closeWebSocket:()=>$,handleProxyUpgrade:()=>J,hasRoomSubscribers:()=>V,migrateWorktreeRooms:()=>Y,setupWebSocket:()=>K});var d=c(81503),e=c(91645),f=c(93390),g=c(3453),h=c(15194),i=c(40964),j=c(88807),k=c(56791);let l={capturePaneCalls:0,activeControlSessions:0,subscriberCount:0,cleanupCount:0,firstOutputLatencyCount:0,firstOutputLatencyTotalMs:0,firstOutputLatencyLastMs:null,firstOutputLatencyMinMs:null,firstOutputLatencyMaxMs:null};var m=c(69785),n=c(72626),o=c(79646);class p{push(a){if(0===a.length)return[];let b=(this.remainder+a).split("\n");this.remainder=b.pop()??"";let c=[];for(let a of b){let b=a.endsWith("\r")?a.slice(0,-1):a,d=this.parseLine(b);d&&c.push(d)}return c}flush(){if(0===this.remainder.length)return[];let a=this.parseLine(this.remainder);return this.remainder="",a?[a]:[]}parseLine(a){return 0===a.length?{type:"output",data:"\n"}:a.startsWith("%output ")?{type:"output",data:`${a.slice(8)}
1
+ exports.id=2759,exports.ids=[2759],exports.modules={3453:(a,b,c)=>{"use strict";c.d(b,{Rh:()=>r,T1:()=>o,Z2:()=>m,c$:()=>n,nu:()=>q});var d=c(72626),e=c(80438);let f=(0,d.h)("ip-restriction"),g="::ffff:",h=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/,i=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/(\d{1,2})$/,j=process.env.CM_ALLOWED_IPS?.trim()||"",k=process.env.CM_TRUST_PROXY?.trim()||"";""!==k&&"true"!==k&&"false"!==k&&(0,e.h)(f,"trust-proxy-unexpected",{value:k});let l="true"===k;function m(a){return a?a.toLowerCase().startsWith(g)?a.substring(g.length):a:""}function n(a,b){if(0===b.length)return!1;let c=function(a){let b=a.match(h);if(!b)return null;let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)];for(let a of c)if(a<0||a>255)return null;return(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0}(m(a));if(null===c)return!1;for(let a of b)if((c&a.mask)>>>0===a.network)return!0;return!1}function o(a){if(l){let b=a.get("x-forwarded-for");if(b){let a=b.split(",")[0].trim();if(a)return a}}return a.get("x-real-ip")||null}let p=j.length>0?function(a){let b=a.trim();if(0===b.length)return[];let c=b.split(",").map(a=>a.trim()).filter(a=>a.length>0);if(c.length>256)throw Error(`CM_ALLOWED_IPS: too many entries (${c.length}). Maximum is 256.`);let d=[];for(let a of c){if(a.length>18)throw Error(`CM_ALLOWED_IPS: entry "${a}" exceeds maximum length of 18 characters.`);let b=a.match(i);if(b){let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)],e=parseInt(b[5],10);for(let b of c)if(b<0||b>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);if(e<0||e>32)throw Error(`CM_ALLOWED_IPS: invalid prefix length in "${a}". Must be 0-32.`);let f=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0,g=0===e?0:0xffffffff<<32-e>>>0;d.push({network:(f&g)>>>0,mask:g});continue}let c=a.match(h);if(c){let b=[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10),parseInt(c[4],10)];for(let c of b)if(c<0||c>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);let e=(b[0]<<24|b[1]<<16|b[2]<<8|b[3])>>>0;d.push({network:e,mask:0xffffffff});continue}throw Error(`CM_ALLOWED_IPS: invalid entry "${a}". Expected IPv4 address or CIDR notation.`)}return d}(j):[];function q(){return p}function r(){return j.length>0}},7015:(a,b,c)=>{"use strict";c.d(b,{Ds:()=>g});var d=c(81719);class e{constructor(a,b=3e4){this.cache=new Map,this.allAppsCache=null,this.lastRefresh=0,this.db=a,this.ttl=b}getTTL(){return this.ttl}isStale(){return Date.now()-this.lastRefresh>this.ttl}async refresh(){let a=(0,d.$i)(this.db);for(let b of(this.cache.clear(),a))this.cache.set(b.pathPrefix,b);this.allAppsCache=a,this.lastRefresh=Date.now()}async getByPathPrefix(a){return this.isStale()&&await this.refresh(),this.cache.get(a)??null}async getAll(){return this.isStale()&&await this.refresh(),this.allAppsCache??[]}invalidate(){this.cache.clear(),this.allAppsCache=null,this.lastRefresh=0}invalidateByIssueNo(a){this.invalidate()}}let f=null;function g(a){if(!f){if(!a)throw Error("Database instance required to initialize cache");f=new e(a)}return f}},26838:(a,b,c)=>{"use strict";c.d(b,{Mj:()=>k,Sw:()=>j,lX:()=>l});var d=c(29021),e=c(33873),f=c(90164);let g=/^v?\d+\.\d+\.\d+$/,h=/^[a-zA-Z0-9.\-\s_v]+$/,i=globalThis.__versionCheckCache??(globalThis.__versionCheckCache={result:null,fetchedAt:0,rateLimitResetAt:null});function j(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.28.0"}function k(){return j()}async function l(){try{var a,b,c;if(null!==i.result&&Date.now()-i.fetchedAt<36e5||i.rateLimitResetAt&&(!(Date.now()>=i.rateLimitResetAt)||(i.rateLimitResetAt=null,0)))return i.result;let d=await fetch("https://api.github.com/repos/Kewton/CommandMate/releases/latest",{headers:{Accept:"application/vnd.github+json","User-Agent":`CommandMate/${k()}`},cache:"no-store",signal:AbortSignal.timeout(5e3)});if(403===d.status)return function(a){let b=a.headers.get("X-RateLimit-Reset");b?i.rateLimitResetAt=1e3*parseInt(b,10):i.rateLimitResetAt=Date.now()+36e5}(d),i.result;if(!d.ok)return i.result;let e=await d.json(),j=k(),l=e.tag_name.replace(/^v/,""),m={hasUpdate:function(a,b){if(!g.test(a)||!g.test(b))return!1;let c=a=>a.replace(/^v/,"").split(".").map(Number),[d,e,f]=c(a),[h,i,j]=c(b);return h!==d?h>d:i!==e?i>e:j>f}(j,e.tag_name),currentVersion:j,latestVersion:l,releaseUrl:(a=e.html_url).startsWith(f.Dk)?a:null,releaseName:(b=e.name,c=e.tag_name,h.test(b)&&b.length<=128?b:c),publishedAt:e.published_at};return i.result=m,i.fetchedAt=Date.now(),m}catch{return i.result}}},39727:()=>{},47990:()=>{},57836:(a,b,c)=>{"use strict";c.d(b,{Jp:()=>k,Te:()=>l,hd:()=>j,wN:()=>h});var d=c(24455);let e=(0,c(72626).h)("waiting-episode-state"),f=globalThis.__sessionWaitingEpisodes??(globalThis.__sessionWaitingEpisodes=new Map),g=globalThis.__sessionWaitingTransitionListeners??(globalThis.__sessionWaitingTransitionListeners=new Set);function h(a){return g.add(a),()=>{g.delete(a)}}function i(a){for(let b of g)try{b(a)}catch(b){e.error("waiting-transition-listener-failed",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId,waiting:a.waiting,error:b instanceof Error?b.message:String(b)})}}function j({worktreeId:a,cliToolId:b,instanceId:c,waiting:e,kind:g=null,structuredSince:h=null,now:j=Date.now()}){let k=(0,d.v7)(a,b,c),l=f.get(k);if(!e)return void 0===l||(f.delete(k),i({worktreeId:a,cliToolId:b,instanceId:c,waiting:!1,since:null,kind:null,at:j})),null;if(void 0!==l)return l.kind=g,l.since;let m=h??j;return f.set(k,{since:m,kind:g}),i({worktreeId:a,cliToolId:b,instanceId:c,waiting:!0,since:m,kind:g,at:j}),m}function k(a,b,c){return f.get((0,d.v7)(a,b,c))??null}function l(a){let b=`${a}${d.CS}`;for(let a of f.keys())if(a.startsWith(b))return!0;return!1}},90164:(a,b,c)=>{"use strict";c.d(b,{Dk:()=>e,kD:()=>f});let d="https://github.com/Kewton/CommandMate",e=`${d}/releases/`,f=`${d}/blob/main/docs/security-guide.md`},93390:(a,b,c)=>{"use strict";c.d(b,{aq:()=>f,sO:()=>j,r0:()=>q,x:()=>r,zr:()=>p,y2:()=>o,JT:()=>n,nr:()=>m});var d=c(55511),e=c.n(d);let f="cm_auth_token",g=/^[0-9a-f]{64}$/,h=2592e6,i={maxAttempts:5,lockoutDuration:9e5,cleanupInterval:36e5},j=86400,k=(()=>{let a=process.env.CM_AUTH_TOKEN_HASH||void 0;return a?!function(a){return!!a&&g.test(a)}(a)?void console.error("[auth] CM_AUTH_TOKEN_HASH is not a valid SHA-256 hash"):a:void 0})(),l=function(){let a=process.env.CM_AUTH_EXPIRE,b=Date.now();if(a)try{return b+function(a){let b=a.match(/^(\d+)([hdm])$/);if(!b)throw Error(`Invalid duration format: "${a}". Use Nh, Nd, or Nm (e.g., "24h", "7d", "90m")`);let c=parseInt(b[1],10),d=b[2],e={h:36e5,d:864e5,m:6e4}[d];if(void 0===e)throw Error(`Invalid duration unit: "${d}"`);let f=c*e;if(f<36e5)throw Error(`Duration too short: minimum is 1h (60m). Got: "${a}"`);if(f>h)throw Error(`Duration too long: maximum is 30d (720h). Got: "${a}"`);return f}(a)}catch{return b+864e5}return process.env.CM_AUTH_TOKEN_HASH?b+864e5:null}();function m(a){if(!k||!a||"string"!=typeof a||null!==l&&Date.now()>l)return!1;let b=e().createHash("sha256").update(a).digest("hex"),c=Buffer.from(b,"hex"),d=Buffer.from(k,"hex");return c.length===d.length&&e().timingSafeEqual(c,d)}function n(a){let b={};if(!a)return b;for(let c of a.split(";")){let a=c.indexOf("=");if(-1===a)continue;let d=c.substring(0,a).trim(),e=c.substring(a+1).trim();d&&(b[d]=e)}return b}function o(){return!!k}function p(){if(null===l)return 0;let a=l-Date.now();return a<=0?0:Math.floor(a/1e3)}function q(a){return{httpOnly:!0,sameSite:"strict",secure:!!process.env.CM_HTTPS_CERT,maxAge:a,path:"/"}}function r(){let a=new Map,b=setInterval(()=>{let b=Date.now();for(let[c,d]of a){let e=null===d.lockedUntil||b>d.lockedUntil,f=b-d.lastAttempt>i.lockoutDuration;e&&f&&a.delete(c)}},i.cleanupInterval);return b.unref&&b.unref(),{checkLimit(b){let c=a.get(b);if(!c)return{allowed:!0};if(null!==c.lockedUntil){let a=Date.now();if(a<c.lockedUntil)return{allowed:!1,retryAfter:Math.ceil((c.lockedUntil-a)/1e3)};c.attempts=0,c.lockedUntil=null}return{allowed:!0}},recordFailure(b){let c=Date.now(),d=a.get(b)||{attempts:0,lockedUntil:null,lastAttempt:c};d.attempts++,d.lastAttempt=c,d.attempts>=i.maxAttempts&&(d.lockedUntil=c+i.lockoutDuration),a.set(b,d)},recordSuccess(b){a.delete(b)},destroy(){clearInterval(b),a.clear()}}}},95620:(a,b,c)=>{"use strict";c.r(b),c.d(b,{WORKTREE_RENAMED_EVENT_TYPE:()=>X,__internal:()=>_,broadcast:()=>U,broadcastMessage:()=>W,cleanupRooms:()=>Z,closeWebSocket:()=>$,handleProxyUpgrade:()=>J,hasRoomSubscribers:()=>V,migrateWorktreeRooms:()=>Y,setupWebSocket:()=>K});var d=c(81503),e=c(91645),f=c(93390),g=c(3453),h=c(15194),i=c(40964),j=c(88807),k=c(56791);let l={capturePaneCalls:0,activeControlSessions:0,subscriberCount:0,cleanupCount:0,firstOutputLatencyCount:0,firstOutputLatencyTotalMs:0,firstOutputLatencyLastMs:null,firstOutputLatencyMinMs:null,firstOutputLatencyMaxMs:null};var m=c(79892),n=c(72626),o=c(79646);class p{push(a){if(0===a.length)return[];let b=(this.remainder+a).split("\n");this.remainder=b.pop()??"";let c=[];for(let a of b){let b=a.endsWith("\r")?a.slice(0,-1):a,d=this.parseLine(b);d&&c.push(d)}return c}flush(){if(0===this.remainder.length)return[];let a=this.parseLine(this.remainder);return this.remainder="",a?[a]:[]}parseLine(a){return 0===a.length?{type:"output",data:"\n"}:a.startsWith("%output ")?{type:"output",data:`${a.slice(8)}
2
2
  `}:"%exit"===a||a.startsWith("%exit ")?{type:"exit",exitCode:null}:a.startsWith("%error ")?{type:"error",error:Error(a.slice(7))}:a.startsWith("%")?null:{type:"output",data:`${a}
3
3
  `}}constructor(){this.remainder=""}}let q=(0,n.h)("tmux-control-client");class r{constructor(a={}){this.parser=new p,this.handlers=new Set,this.child=null,this.sessionName=null,this.idleTimer=null,this.started=!1,this.spawnProcess=a.spawnProcess??((a,b,c)=>(0,o.spawn)(a,b,c)),this.tmuxBinary=a.tmuxBinary??"tmux",this.idleTimeoutMs=a.idleTimeoutMs??3e4}start(a){this.started||(this.sessionName=a,this.child=this.spawnProcess(this.tmuxBinary,["-C","attach-session","-t",(0,m.lA)(a)],{stdio:"pipe"}),this.started=!0,this.child.stdout.setEncoding("utf8"),this.child.stdout.on("data",a=>{this.touch();let b="string"==typeof a?a:a.toString("utf8");for(let a of this.parser.push(b))this.emit(a)}),this.child.stderr.setEncoding("utf8"),this.child.stderr.on("data",a=>{let b="string"==typeof a?a:a.toString("utf8");this.emit({type:"error",error:Error(b.trim()||"tmux control stderr")})}),this.child.on("close",a=>{for(let a of this.parser.flush())this.emit(a);this.emit({type:"exit",exitCode:a}),this.stop()}),this.child.on("error",a=>{this.emit({type:"error",error:a}),this.stop()}),this.resetIdleTimer(),q.debug("start",{sessionName:a}))}onEvent(a){return this.handlers.add(a),()=>{this.handlers.delete(a)}}sendInput(a){if(!this.child?.stdin.writable)throw Error("Tmux control client is not writable");this.touch(),this.child.stdin.write(a)}resize(a,b){if(!this.child?.stdin.writable)throw Error("Tmux control client is not writable");this.touch(),this.child.stdin.write(`refresh-client -C ${a}x${b}
4
4
  `)}stop(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null),this.child&&(this.child.removeAllListeners(),this.child.stdout.removeAllListeners(),this.child.stderr.removeAllListeners(),this.child.kill(),this.child=null),this.started=!1}isStarted(){return this.started}setSessionName(a){this.sessionName=a}emit(a){for(let b of this.handlers)b(a)}touch(){this.resetIdleTimer()}resetIdleTimer(){this.idleTimeoutMs<=0||(this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{q.debug("idle-timeout",{sessionName:this.sessionName}),this.stop()},this.idleTimeoutMs))}}let s=(0,n.h)("tmux-control-registry");class t{constructor(a={}){this.entries=new Map,this.handlers=new Map,this.idleTimeoutMs=a.idleTimeoutMs??15e3,this.createClient=a.createClient??(()=>new r(a))}subscribe(a,b,c){let d=this.ensureEntry(a);d.subscribers.add(b),this.cancelIdleCleanup(d),this.updateMetrics();let e=this.handlers.get(a);return e||(e=new Set,this.handlers.set(a,e)),e.add(c),()=>{e?.delete(c),this.unsubscribe(a,b)}}sendInput(a,b){let c=this.entries.get(a);if(!c)throw Error(`No control client registered for ${a}`);c.client.sendInput(b)}resize(a,b,c){let d=this.entries.get(a);if(!d)throw Error(`No control client registered for ${a}`);d.client.resize(b,c)}hasSession(a){return this.entries.has(a)}getSubscriberCount(a){return this.entries.get(a)?.subscribers.size??0}getTotalSubscriberCount(){let a=0;for(let b of this.entries.values())a+=b.subscribers.size;return a}getSessionCount(){return this.entries.size}shutdown(){for(let[a,b]of this.entries)this.teardownEntry(a,b);this.entries.clear(),this.handlers.clear(),this.updateMetrics()}renameSession(a,b){if(a===b)return!1;let c=this.entries.get(a);if(!c)return!1;if(this.entries.has(b))return s.warn("rename:destination-occupied",{oldName:a,newName:b}),!1;this.entries.delete(a),c.sessionName=b,this.entries.set(b,c),c.client.setSessionName(b);let d=this.handlers.get(a);return d&&(this.handlers.delete(a),this.handlers.set(b,d)),s.debug("rename",{oldName:a,newName:b}),!0}ensureEntry(a){let b=this.entries.get(a);if(b)return b;let c=this.createClient(a);c.start(a);let d={client:c,subscribers:new Set,unsubscribeClientEvent:()=>{},idleTimer:null,sessionName:a};return d.unsubscribeClientEvent=c.onEvent(a=>{let b=this.handlers.get(d.sessionName);if(b)for(let c of b)c(a);("exit"===a.type||"error"===a.type)&&this.deleteEntry(d.sessionName)}),this.entries.set(a,d),this.updateMetrics(),d}unsubscribe(a,b){let c=this.entries.get(a);c&&(c.subscribers.delete(b),this.updateMetrics(),0===c.subscribers.size&&this.scheduleIdleCleanup(a,c))}scheduleIdleCleanup(a,b){if(this.idleTimeoutMs<=0)return void this.deleteEntry(a);this.cancelIdleCleanup(b),b.idleTimer=setTimeout(()=>{s.debug("idle-cleanup",{sessionName:b.sessionName}),this.deleteEntry(b.sessionName)},this.idleTimeoutMs)}cancelIdleCleanup(a){a.idleTimer&&(clearTimeout(a.idleTimer),a.idleTimer=null)}deleteEntry(a){let b=this.entries.get(a);b&&(this.teardownEntry(a,b),this.entries.delete(a),this.handlers.delete(a),this.updateMetrics())}teardownEntry(a,b){this.cancelIdleCleanup(b),b.unsubscribeClientEvent(),b.client.stop(),l.cleanupCount+=1}updateMetrics(){l.activeControlSessions=Math.max(0,this.getSessionCount()),l.subscriberCount=Math.max(0,this.getTotalSubscriberCount())}}let u=null,v={streamingOutput:!0,explicitResize:!0,snapshotFallback:!0};class w{constructor(a={}){this.registry=a.registry??(u||(u=new t),u)}async ensureSession(a,b){await (0,m.N)(a)||await (0,m.jw)(a,b)}async sessionExists(a){return(0,m.N)(a)}async sendInput(a,b){if(this.registry.hasSession(a))return void this.registry.sendInput(a,b);await (0,m.V1)(a,b)}async sendSpecialKey(a,b){if("Escape"!==b&&"C-c"!==b&&"C-d"!==b&&"C-m"!==b&&"Enter"!==b)throw Error(`Unsupported special key for ControlModeTmuxTransport: ${b}`);await (0,m.ds)(a,b)}async resize(a,b,c){this.registry.resize(a,b,c)}async captureSnapshot(a,b){return l.capturePaneCalls+=1,(0,m.Xg)(a,b)}async subscribe(a,b){let c=`sub-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,d=this.registry.subscribe(a,c,a=>{"output"===a.type?b.onOutput(a.data):"exit"===a.type?b.onExit?.({exitCode:a.exitCode}):b.onError(a.error)});return{async unsubscribe(){d()}}}getCapabilities(){return v}getSubscriberCount(a){return this.registry.getSubscriberCount(a)}renameSession(a,b){return this.registry.renameSession(a,b)}async killSession(a){return(0,m.fY)(a)}}let x=null;function y(){return x||(x=new w),x}var z=c(7015),A=c(26838),B=c(57836);function C(){let a=globalThis.__waitingStatusBroadcastUnsubscribe;a&&(a(),globalThis.__waitingStatusBroadcastUnsubscribe=void 0)}let D=(0,n.h)("ws-server"),E=null,F=new Map,G=new Map,H=new Set(["localhost","127.0.0.1"]);function I(a,b){try{a.write(`HTTP/1.1 ${b}\r
@@ -1 +1 @@
1
- "use strict";exports.id=3346,exports.ids=[3346],exports.modules={83346:a=>{a.exports=JSON.parse('{"page":{"title":"Review","description":"Worktrees that need your attention."},"tabs":{"review":"Review","report":"Report","template":"Template"},"status":{"inReview":"In Review","approval":"Approval","stalled":"Stalled"},"filters":{"ariaLabel":"Review filters","loading":"Loading reviews"},"empty":{"inReview":"No worktrees in review.","approval":"No worktrees waiting for approval.","stalled":"No stalled worktrees detected."},"datePicker":{"previousDay":"Previous day","nextDay":"Next day"},"report":{"regenerateConfirm":"A report already exists for this date. Regenerate and overwrite?","toolLabel":"Tool:","modelPlaceholder":"Model (optional)","generationMode":"Generation Mode","modes":{"none":"No instruction","template":"Template","custom":"Custom"},"selectTemplate":"Select Template","loadingTemplates":"Loading templates","noTemplates":"No templates available. Create one in the Template tab.","templatePlaceholderOption":"-- Select a template --","instructionPlaceholderTemplate":"Select a template above to populate this field","instructionPlaceholderCustom":"Additional instructions for summary generation","generate":"Generate Summary","generating":"Generating...","noMessages":"No messages for this date.","messagesFound":"{count} messages found for this date.","generatingRemote":"Generating report... (tool: {tool})","generatingRemoteWithTime":"Generating report... (tool: {tool}, started: {seconds}s ago)","generatingSummary":"Generating summary...","generatedBy":"Generated by: {tool}","copy":"Copy","copied":"Copied!","edit":"Edit","save":"Save","saving":"Saving...","errors":{"fetch":"Failed to fetch report","rateLimited":"Another summary is being generated. Please wait.","generate":"Failed to generate summary","emptyContent":"Content cannot be empty","save":"Failed to save report"}},"template":{"deleteConfirm":"Delete this template?","heading":"Templates ({count}/{max})","loading":"Loading templates","empty":"No templates yet.","edit":"Edit","delete":"Delete","save":"Save","saving":"Saving...","cancel":"Cancel","newHeading":"New Template","namePlaceholder":"Template name","contentPlaceholder":"Template content (instructions for report generation)","create":"Create Template","creating":"Creating...","errors":{"fetch":"Failed to fetch templates","nameAndContentRequired":"Name and content are required","create":"Failed to create template","update":"Failed to update template","delete":"Failed to delete template"}}}')}};
1
+ "use strict";exports.id=3346,exports.ids=[3346],exports.modules={83346:a=>{a.exports=JSON.parse('{"page":{"title":"Review","description":"Worktrees that need your attention."},"tabs":{"review":"Review","report":"Report","template":"Template"},"status":{"inReview":"In Review","approval":"Approval","stalled":"Stalled"},"filters":{"ariaLabel":"Review filters","loading":"Loading reviews"},"empty":{"inReview":"No worktrees in review.","approval":"No worktrees waiting for approval.","stalled":"No stalled worktrees detected."},"datePicker":{"previousDay":"Previous day","nextDay":"Next day"},"report":{"regenerateConfirm":"A report already exists for this date. Regenerate and overwrite?","toolLabel":"Tool:","modelPlaceholder":"Model (optional)","modelPlaceholderOpencode":"provider/model (optional)","generationMode":"Generation Mode","modes":{"none":"No instruction","template":"Template","custom":"Custom"},"selectTemplate":"Select Template","loadingTemplates":"Loading templates","noTemplates":"No templates available. Create one in the Template tab.","templatePlaceholderOption":"-- Select a template --","instructionPlaceholderTemplate":"Select a template above to populate this field","instructionPlaceholderCustom":"Additional instructions for summary generation","generate":"Generate Summary","generating":"Generating...","noMessages":"No messages for this date.","messagesFound":"{count} messages found for this date.","generatingRemote":"Generating report... (tool: {tool})","generatingRemoteWithTime":"Generating report... (tool: {tool}, started: {seconds}s ago)","generatingSummary":"Generating summary...","generatedBy":"Generated by: {tool}","copy":"Copy","copied":"Copied!","edit":"Edit","save":"Save","saving":"Saving...","errors":{"fetch":"Failed to fetch report","rateLimited":"Another summary is being generated. Please wait.","generate":"Failed to generate summary","emptyContent":"Content cannot be empty","save":"Failed to save report"}},"template":{"deleteConfirm":"Delete this template?","heading":"Templates ({count}/{max})","loading":"Loading templates","empty":"No templates yet.","edit":"Edit","delete":"Delete","save":"Save","saving":"Saving...","cancel":"Cancel","newHeading":"New Template","namePlaceholder":"Template name","contentPlaceholder":"Template content (instructions for report generation)","create":"Create Template","creating":"Creating...","errors":{"fetch":"Failed to fetch templates","nameAndContentRequired":"Name and content are required","create":"Failed to create template","update":"Failed to update template","delete":"Failed to delete template"}}}')}};
@@ -1 +1,17 @@
1
- "use strict";exports.id=3480,exports.ids=[1296,3480,9358],exports.modules={3915:(a,b,c)=>{c.d(b,{L_:()=>h,jQ:()=>f});var d=c(55511);let e=new Map;function f(a,b=Date.now(),c=3e4){var g;let h=`${a.worktreeId}:${a.kind}`,i=(g=a.content??"",(0,d.createHash)("sha256").update(g).digest("hex")),j=e.get(h);return(!j||j.hash!==i||!(b-j.at<c))&&(e.set(h,{hash:i,at:b}),!0)}let g=globalThis.__waitingPushDedup??(globalThis.__waitingPushDedup=new Map);function h(a){let b=`${a.worktreeId}::${a.instanceId}`,c=!0===a.escalated,d=g.get(b);return(!d||d.since!==a.since||!d.escalated&&!!c)&&(g.set(b,{since:a.since,escalated:c}),!0)}},4806:(a,b,c)=>{c.d(b,{_P:()=>g,pI:()=>e,r0:()=>f});let d=globalThis.__promptPushCards??(globalThis.__promptPushCards=new Map);function e(a,b=Date.now()){d.set(a,b)}function f(a){return d.has(a)}function g(a){return d.delete(a)}},25754:(a,b,c)=>{c.d(b,{Xn:()=>e,d9:()=>g,gB:()=>f,rv:()=>h});let d=["en","ja"],e="en",f="locale";function g(a){return"string"==typeof a&&d.includes(a)}function h(a,b){return g(a)?a:d.find(a=>(b??"").includes(a))??e}},27519:(a,b,c)=>{function d(){let a=process.env.CM_VAPID_PUBLIC_KEY?.trim(),b=process.env.CM_VAPID_PRIVATE_KEY?.trim();return a&&b?{publicKey:a,privateKey:b,subject:process.env.CM_VAPID_SUBJECT?.trim()||"mailto:commandmate@localhost"}:null}function e(){return null!==d()}function f(){return d()?.publicKey??null}c.d(b,{HR:()=>f,lU:()=>e,vB:()=>d})},49358:a=>{a.exports=JSON.parse('{"title":"Notifications","description":"Get a push notification when something needs you — a prompt, a failed verification, an upstream API fault, or a session that could not start — even when the app is closed. Completions are optional.","enable":"Enable notifications","enabling":"Enabling…","enabledOnThisDevice":"Notifications are enabled on this device.","unsubscribe":"Unsubscribe this device","types":{"heading":"Notify me about","promptWaiting":"When you need to act","promptWaitingDesc":"A prompt waiting for you, a failed verification gate, an upstream API fault, or a session that could not start. Nothing moves until you do","completion":"Also tell me about completions (optional)","completionDesc":"Ordinary completions that need nothing from you. Off by default on newly registered devices (change it for this device here)"},"permission":{"denied":"Notifications are blocked in your browser settings. Allow them for this site to receive push notifications."},"unsupported":"This browser does not support push notifications.","notConfigured":"Push notifications are not configured on this server. Set the VAPID keys to enable them.","ios":{"guidance":"On iPhone/iPad, add this app to your Home Screen and open it from there to enable notifications."},"toast":{"enabled":"Notifications enabled on this device","disabled":"Notifications turned off on this device","error":"Could not enable notifications","updated":"Notification settings updated"},"push":{"promptWaitingWithExcerpt":"Waiting for reply: {excerpt}","promptWaiting":"Waiting for your reply","completionWithExcerpt":"Done: {excerpt}","completion":"Session complete","terminalAttentionWithExcerpt":"Needs attention in the terminal: {excerpt}","terminalAttention":"Needs attention in the terminal","stillWaitingPrompt":"Still waiting for your reply ({minutes} min)","stillWaitingTerminal":"Still needs attention in the terminal ({minutes} min)","failureVerificationWithExcerpt":"Verification failed: {excerpt}","failureVerification":"Verification failed","failureUpstreamWithExcerpt":"Stalled by an upstream API fault: {excerpt}","failureUpstream":"Stalled by an upstream API fault","failureSessionStartWithExcerpt":"Could not start the session: {excerpt}","failureSessionStart":"Could not start the session","failureSessionUnavailableWithExcerpt":"Could not start the session: {excerpt} is not installed","failureSessionUnavailable":"Could not start the session: the CLI tool is not installed","failureWithExcerpt":"Failed: {excerpt}","failure":"Failed","promptResolved":"Handled — answered on another device"},"escalation":{"heading":"Reminder","toggle":"Remind me if still waiting","toggleDesc":"Send one more notification when an agent has been waiting this long. Applies to every device.","threshold":"Remind after","minutes":"{count} min"},"inApp":{"heading":"In-app notifications","waitingToggle":"Waiting toast","waitingToggleDesc":"Show a toast when another worktree starts waiting for you","waitingToast":"{name} is waiting for your input","soundToggle":"Waiting sound","soundToggleDesc":"Play a short chime when a worktree starts waiting for you. Takes effect after you click or press a key on the page."}}')},61191:(a,b,c)=>{c.d(b,{J$:()=>t});var d=c(48975),e=c.n(d),f=c(88807),g=c(43167),h=c(72626),i=c(25754),j=c(49358),k=c(61296),l=c(27519),m=c(3915),n=c(4806);let o=(0,h.h)("push/sender"),p={en:j.push,ja:k.push};function q(a){return(0,i.d9)(a)?a:i.Xn}let r={"verification-failed":{withExcerpt:"failureVerificationWithExcerpt",plain:"failureVerification"},"upstream-fault":{withExcerpt:"failureUpstreamWithExcerpt",plain:"failureUpstream"},"session-start-failed":{withExcerpt:"failureSessionStartWithExcerpt",plain:"failureSessionStart"},"session-start-unavailable":{withExcerpt:"failureSessionUnavailableWithExcerpt",plain:"failureSessionUnavailable"}};async function s(a,b){try{await e().sendNotification({endpoint:a.endpoint,keys:a.keys},b)}catch(c){let b=c.statusCode;if(404===b||410===b){(0,g.th)((0,f.getDbInstance)(),a.endpoint),o.info("push-subscription-removed",{statusCode:b});return}o.warn("push-send-failed",{statusCode:b??"unknown"})}}async function t(a,b=Date.now()){try{let c=(0,l.vB)();if(!c||!(!0===a.resolved||("prompt"===a.kind&&"number"==typeof a.waitingSince?(0,m.L_)({worktreeId:a.worktreeId,instanceId:a.instanceId??a.agentName??"",since:a.waitingSince,escalated:a.escalated}):(0,m.jQ)({worktreeId:a.worktreeId,kind:a.kind,content:"failure"===a.kind?a.failure?.signature:a.excerpt}))))return;let d=(0,f.getDbInstance)(),h=(0,g.gn)(d,a.kind);if(0===h.length)return;"prompt"===a.kind&&!0!==a.resolved&&(0,n.pI)(a.worktreeId,b),e().setVapidDetails(c.subject,c.publicKey,c.privateKey);let j=new Map;for(let a of h){let b=q(a.locale),c=j.get(b);c?c.push(a):j.set(b,[a])}await Promise.all(Array.from(j,([c,d])=>{let e=JSON.stringify(function(a,b=i.Xn,c=Date.now()){let d=function(a,b=120){if(!a)return"";let c=a.replace(/\s+/g," ").trim();return c.length<=b?c:c.slice(0,b-1).trimEnd()+"…"}(a.excerpt),e=a.agentName?` (${a.agentName})`:"",f=`${a.worktreeName}${e}`,g=p[q(b)],h="prompt"===a.kind?!0===a.resolved?g.promptResolved:function(a,b,c,d){var e;let f="menu"===(e=a.waitingKind)||"unclassified"===e;if(a.escalated){let c=String(Math.max(1,Math.floor((d-(a.waitingSince??d))/6e4)));return(f?b.stillWaitingTerminal:b.stillWaitingPrompt).replace("{minutes}",c)}return f?c?b.terminalAttentionWithExcerpt.replace("{excerpt}",c):b.terminalAttention:c?b.promptWaitingWithExcerpt.replace("{excerpt}",c):b.promptWaiting}(a,g,d,c):"failure"===a.kind?function(a,b,c){let d=a.failure?.reason;if(void 0===d)return c?b.failureWithExcerpt.replace("{excerpt}",c):b.failure;let e=r[d];return c?b[e.withExcerpt].replace("{excerpt}",c):b[e.plain]}(a,g,d):d?g.completionWithExcerpt.replace("{excerpt}",d):g.completion;return{kind:a.kind,title:f,body:h,worktreeId:a.worktreeId,url:`/worktrees/${a.worktreeId}`,tag:`${a.worktreeId}:${a.kind}`,timestamp:c,...a.waitingKind?{waitingKind:a.waitingKind}:{},...!0===a.resolved?{resolved:!0}:{}}}(a,c,b));return Promise.all(d.map(a=>s(a,e)))}))}catch(a){o.warn("push-fanout-error",{error:a instanceof Error?a.message:String(a)})}}},61296:a=>{a.exports=JSON.parse('{"title":"通知","description":"対応が必要になったとき(応答待ち・検証の不合格・上流APIの障害・セッションの起動失敗)に、アプリを開いていなくてもプッシュ通知を受け取れます。対応の要らない完了通知は任意です。","enable":"通知を有効にする","enabling":"有効化中…","enabledOnThisDevice":"この端末で通知が有効です。","unsubscribe":"この端末の通知を解除","types":{"heading":"通知する種別","promptWaiting":"対応が必要なとき","promptWaitingDesc":"応答待ち・検証ゲートの不合格・上流APIの障害・セッションの起動失敗。あなたが動かないと進みません","completion":"完了も知らせる(任意)","completionDesc":"対応の要らない正常完了。新しく登録した端末では既定でオフです(この端末の設定はここで変えられます)"},"permission":{"denied":"ブラウザの設定で通知がブロックされています。このサイトの通知を許可してください。"},"unsupported":"このブラウザはプッシュ通知に対応していません。","notConfigured":"このサーバーではプッシュ通知が設定されていません。VAPID鍵を設定すると有効になります。","ios":{"guidance":"iPhone/iPadでは、このアプリをホーム画面に追加し、そこから開くと通知を有効にできます。"},"toast":{"enabled":"この端末で通知を有効にしました","disabled":"この端末の通知をオフにしました","error":"通知を有効にできませんでした","updated":"通知設定を更新しました"},"push":{"promptWaitingWithExcerpt":"応答待ち: {excerpt}","promptWaiting":"応答待ちです","completionWithExcerpt":"完了: {excerpt}","completion":"セッションが完了しました","terminalAttentionWithExcerpt":"端末の確認が必要です: {excerpt}","terminalAttention":"端末の確認が必要です","stillWaitingPrompt":"まだ応答待ちです({minutes}分経過)","stillWaitingTerminal":"まだ端末の確認が必要です({minutes}分経過)","failureVerificationWithExcerpt":"検証ゲート不合格: {excerpt}","failureVerification":"検証ゲートに不合格しました","failureUpstreamWithExcerpt":"上流APIの障害で停止しています: {excerpt}","failureUpstream":"上流APIの障害で停止しています","failureSessionStartWithExcerpt":"セッションを起動できませんでした: {excerpt}","failureSessionStart":"セッションを起動できませんでした","failureSessionUnavailableWithExcerpt":"セッションを起動できませんでした: {excerpt} がインストールされていません","failureSessionUnavailable":"セッションを起動できませんでした: CLI ツールがインストールされていません","failureWithExcerpt":"失敗しました: {excerpt}","failure":"失敗しました","promptResolved":"対応済みです(他の端末で応答されました)"},"escalation":{"heading":"再通知","toggle":"待ち続けていたら再通知する","toggleDesc":"エージェントが入力待ちのまま指定時間を超えたら、もう1度だけ通知します。すべての端末に適用されます。","threshold":"再通知するまでの時間","minutes":"{count}分"},"inApp":{"heading":"アプリ内通知","waitingToggle":"入力待ちトースト","waitingToggleDesc":"別のワークツリーが入力待ちになったときにトーストを表示します","waitingToast":"{name} が入力待ちです","soundToggle":"入力待ちの通知音","soundToggleDesc":"ワークツリーが入力待ちになったときに短い通知音を鳴らします。ページを一度クリックまたはキー操作すると有効になります。"}}')},77703:(a,b,c)=>{c.d(b,{js:()=>f});var d=c(24455);let e=globalThis.__upstreamFaultPushState??(globalThis.__upstreamFaultPushState=new Map);function f({worktreeId:a,cliToolId:b,instanceId:c,faultId:f,now:g=Date.now(),cooldownMs:h=18e5}){let i=(0,d.v7)(a,b,c),j=e.get(i);if(null===f)return void 0!==j&&(null===j.lastNotifiedAt?e.delete(i):j.current=null),{notify:!1,reason:"no-fault",since:null};if(void 0!==j&&null!==j.current&&j.current.faultId===f)return{notify:!1,reason:"same-episode",since:j.current.since};let k=j?.lastNotifiedAt??null,l={faultId:f,since:g};return null!==k&&g-k<h?(e.set(i,{current:l,lastNotifiedAt:k}),{notify:!1,reason:"cooldown",since:g,cooldownRemainingMs:h-(g-k)}):(e.set(i,{current:l,lastNotifiedAt:g}),{notify:!0,reason:"new-episode",since:g})}},81099:(a,b,c)=>{c.r(b),c.d(b,{notifySessionStartFailurePush:()=>p,notifyUpstreamFaultPush:()=>o,notifyVerificationFailurePush:()=>n});var d=c(88807),e=c(73753),f=c(72626),g=c(2669),h=c(77703),i=c(61191),j=c(27519);let k=(0,f.h)("push/failure-notifier");async function l(a){let b={worktreeId:a.worktreeId,instanceId:a.instanceId,failureReason:a.reason,signature:a.signature,...a.logContext};if(!(0,j.lU)())return void k.debug("failure-push-suppressed",{...b,reason:"push-unconfigured"});k.info("failure-push-raised",b);try{await (0,i.J$)({worktreeId:a.worktreeId,worktreeName:function(a){try{return(0,e.Ui)((0,d.getDbInstance)(),a)?.name??a}catch{return a}}(a.worktreeId),kind:"failure",agentName:a.instanceId,instanceId:a.instanceId,excerpt:a.excerpt,failure:{reason:a.reason,signature:a.signature}})}catch(a){k.warn("failure-push-failed",{...b,error:a instanceof Error?a.message:String(a)})}}let m=["failed","error"];async function n(a){let b=a.instanceId??void 0,c={worktreeId:a.worktreeId,instanceId:b,runId:a.runId,status:a.status,trigger:a.trigger};if(!m.includes(a.status))return void k.debug("failure-push-suppressed",{...c,reason:"run-not-failed"});if(null!==a.taskId)return void k.info("failure-push-suppressed",{...c,taskId:a.taskId,reason:"contract-task"});let d=a.failedGateIds??[];await l({reason:"verification-failed",worktreeId:a.worktreeId,instanceId:b,signature:`verification:${a.runId}`,excerpt:d.length>0?d.join(", "):void 0,logContext:{runId:a.runId,status:a.status,trigger:a.trigger}})}async function o(a){if(!(0,j.lU)())return;let b=a.instanceId??a.cliToolId,c=(0,h.js)({worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,faultId:a.faultId,now:a.now});if("no-fault"!==c.reason){if(!c.notify){let d="cooldown"===c.reason?"upstream-cooldown":"upstream-same-episode",e={worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:b,faultId:a.faultId,since:c.since,reason:d,...void 0!==c.cooldownRemainingMs?{cooldownRemainingMs:c.cooldownRemainingMs}:{}};"cooldown"===c.reason?k.info("failure-push-suppressed",e):k.debug("failure-push-suppressed",e);return}await l({reason:"upstream-fault",worktreeId:a.worktreeId,instanceId:b,signature:`upstream:${a.faultId}:${c.since}`,excerpt:a.matchedText,logContext:{cliToolId:a.cliToolId,faultId:a.faultId,since:c.since}})}}async function p(a){let b=a.instanceId??a.cliToolId,c=function(a,b){if((0,g.wQ)(a.error))return{notify:!1,reason:"session-still-starting"};if((0,g.JI)(a.error))return{notify:!0,reason:"session-start-unavailable",excerpt:a.toolName,signature:`session-start:${b}:not-installed`};if(function(a){if("object"!=typeof a||null===a)return;let b=a.code;return"string"==typeof b?b:void 0}(a.error)===g.c7){let c=a.error.detectedPattern,d="string"==typeof c?c:"";return{notify:!0,reason:"session-start-failed",excerpt:d?`${a.toolName}: ${d}`:a.toolName,signature:`session-start:${b}:${d}`}}return{notify:!0,reason:"session-start-failed",excerpt:a.toolName,signature:`session-start:${b}:start-error`}}(a,b);if(!c.notify)return void k.info("failure-push-suppressed",{worktreeId:a.worktreeId,instanceId:b,cliToolId:a.cliToolId,reason:c.reason});await l({reason:c.reason,worktreeId:a.worktreeId,instanceId:b,signature:c.signature,excerpt:c.excerpt,logContext:{cliToolId:a.cliToolId}})}}};
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(12540),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
+ UPDATE execution_logs SET status = ?, result = ?, exit_code = ?, completed_at = ? WHERE id = ?
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
+ INSERT INTO execution_logs (id, schedule_id, worktree_id, message, status, started_at, created_at)
5
+ VALUES (?, ?, ?, ?, 'running', ?, ?)
6
+ `).run(f,a,b,c,e,e),f}(a.scheduleId,a.worktreeId,a.entry.message);let d=v().prepare("SELECT path, vibe_local_model FROM worktrees WHERE id = ?").get(a.worktreeId);if(!d)return void w(b,"failed","Worktree not found",null);let e=function(a,b){let c=(0,i.HA)(a);return c||("vibe-local"===a.cliToolId&&b.vibe_local_model?{model:b.vibe_local_model}:void 0)}(a.entry,d),f=await (0,p.V$)(a.entry.message,d.path,a.entry.cliToolId,a.entry.permission,e);w(b,f.status,f.output,f.exitCode);var c=a.scheduleId;let g=v(),h=Date.now();g.prepare("UPDATE scheduled_executions SET last_executed_at = ?, updated_at = ? WHERE id = ?").run(h,h,c),u.info("execution:completed",{name:a.entry.name,status:f.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"claude":a=j.kd;break;case"codex":a=j.o1;break;case"copilot":a=j.oN;break;case"antigravity":a=j.eb;break;default:a=[],v&&(m.warn("parse:permission-ignored",{name:o,cliToolId:t,permission:v}),v="")}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,agent:r.agent,variant:r.variant,continueSession:r.continueSession,title:r.title})}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
+ UPDATE scheduled_executions
8
+ SET message = ?, cron_expression = ?, cli_tool_id = ?, enabled = ?, updated_at = ?
9
+ WHERE id = ?
10
+ `),i=c.prepare(`
11
+ INSERT INTO scheduled_executions (id, worktree_id, name, message, cron_expression, cli_tool_id, enabled, created_at, updated_at)
12
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
13
+ `);return c.transaction(()=>{for(let c of b){let b=f.get(c.name);if(b)h.run(c.message,c.cronExpression,c.cliToolId,+!!c.enabled,d,b),g.push(b);else{let b=(0,q.randomUUID)();i.run(b,a,c.name,c.message,c.cronExpression,c.cliToolId,+!!c.enabled,d,d),g.push(b)}}})(),g}(d.id,u);for(let b=0;b<u.length;b++){let e=u[b],f=v[b];if(a.schedules.size>=100)return void y.warn("schedule:max-concurrent-reached",{limit:100});if(c.add(f),!e.enabled||!e.cronExpression){let b=a.schedules.get(f);b&&(b.cronJob.stop(),a.schedules.delete(f),y.info("schedule:disabled",{name:e.name}));continue}let g=a.schedules.get(f);if(g){if(!z(g.cronJob)){try{g.cronJob.stop()}catch{}let b=A(d.id,f,e);a.schedules.set(f,b),y.warn("schedule:recreated-inactive",{name:e.name,cron:e.cronExpression});continue}g.entry=e;continue}try{let b=A(d.id,f,e);a.schedules.set(f,b),y.info("schedule:created",{name:e.name,cron:e.cronExpression})}catch(a){y.warn("schedule:invalid-cron",{name:e.name,error:a instanceof Error?a.message:String(a)})}}}catch(a){y.error("schedule:sync-failed",{worktreeId:d.id,error:a instanceof Error?a.message:String(a)})}for(let[b,d]of a.schedules)c.has(b)||(d.cronJob.stop(),a.schedules.delete(b),y.info("schedule:removed-stale",{name:d.entry.name}));let d=b.map(a=>a.id);!function(a,b){if(0!==b.length)try{let c=t(),d=Date.now(),e=b.map(()=>"?").join(","),f=c.prepare(`SELECT id FROM scheduled_executions WHERE worktree_id IN (${e}) AND enabled = 1`).all(...b),g=0,h=c.prepare("UPDATE scheduled_executions SET enabled = 0, updated_at = ? WHERE id = ?");for(let b of f)!a.has(b.id)&&(h.run(d,b.id),g++);g>0&&s.info("schedule:disabled-stale",{count:g})}catch(a){s.error("schedule:disable-stale-failed",{error:a instanceof Error?a.message:String(a)})}}(c,d)}finally{a.isSyncing=!1}}}async function D(){await C()}function E(a){let b=B();for(let[c,d]of b.schedules)if(d.worktreeId===a){try{d.cronJob.stop()}catch{}b.schedules.delete(c)}try{let d=(function(){let{getDbInstance:a}=c(88807);return a()})().prepare("SELECT path FROM worktrees WHERE id = ?").get(a);d?.path&&b.cmateFileCache.delete(d.path)}catch{y.warn("cache:cleanup-failed",{worktreeId:a})}y.info("stop:worktree",{worktreeId:a})}function F(a){let b=B(),c=[];for(let[d,e]of b.schedules){if(e.worktreeId!==a)continue;let b=null;try{let a="function"==typeof e.cronJob.nextRun?e.cronJob.nextRun():null;a instanceof Date&&(b=a.getTime())}catch{b=null}c.push({scheduleId:d,worktreeId:a,name:e.entry.name,cronExpression:e.entry.cronExpression,cliToolId:e.entry.cliToolId,enabled:e.entry.enabled,isExecuting:e.isExecuting,isCronActive:z(e.cronJob),nextRunAt:b,model:e.entry.model})}return c.sort((a,b)=>a.name.localeCompare(b.name)),c}},12540:(a,b,c)=>{c.d(b,{Vt:()=>g,aN:()=>h,zK:()=>m,HA:()=>n,nq:()=>j,JY:()=>i,sd:()=>k,kj:()=>l});var d=c(56263);let e=/^[a-zA-Z0-9][a-zA-Z0-9 ()./_-]*$/,f=/^[a-zA-Z0-9][a-zA-Z0-9\-._]*$/,g=new Set(["copilot","opencode"]),h=new Set(["opencode"]);function i(a){return/[\x00-\x1f\x7f]/.test(a)?{valid:!1,reason:"Model name contains control characters"}:""===a.trim()?{valid:!1,reason:"Model name must not be empty"}:d.lM.test(a)?a.length>d.MJ?{valid:!1,reason:`Model name exceeds ${d.MJ} characters`}:{valid:!0}:{valid:!1,reason:"Model name contains invalid characters"}}function j(a){return/[\x00-\x1f\x7f]/.test(a)?{valid:!1,reason:"Model name contains control characters"}:""===a.trim()?{valid:!1,reason:"Model name must not be empty"}:e.test(a)?a.length>128?{valid:!1,reason:"Model name exceeds 128 characters"}:{valid:!0}:{valid:!1,reason:"Model name contains invalid characters"}}function k(a,b){return/[\x00-\x1f\x7f]/.test(a)?{valid:!1,reason:`opencode ${b} contains control characters`}:""===a.trim()?{valid:!1,reason:`opencode ${b} must not be empty`}:f.test(a)?a.length>64?{valid:!1,reason:`opencode ${b} exceeds 64 characters`}:{valid:!0}:{valid:!1,reason:`opencode ${b} contains invalid characters`}}function l(a){return/[\x00-\x1f\x7f]/.test(a)?{valid:!1,reason:"opencode title contains control characters"}:""===a.trim()?{valid:!1,reason:"opencode title must not be empty"}:a.startsWith("-")?{valid:!1,reason:'opencode title must not start with "-"'}:a.includes("|")?{valid:!1,reason:'opencode title must not contain "|"'}:a.length>200?{valid:!1,reason:"opencode title exceeds 200 characters"}:{valid:!0}}function m(a){let b=[],c=function(a){let b=a.trim();if(!b)return{cliToolId:"claude",model:void 0};let{tokens:c,error:d}=function(a){let b=[],c="",d=!1,e=null;for(let f of a){if(e){f===e?e=null:c+=f;continue}if('"'===f||"'"===f){e=f,d=!0;continue}if(/\s/.test(f)){d&&(b.push(c),c="",d=!1);continue}c+=f,d=!0}return e?{tokens:[],error:"CLI Tool column has an unterminated quote"}:(d&&b.push(c),{tokens:b})}(b);if(d)return{cliToolId:b.split(/\s+/)[0],error:d};let e=c[0];return 1===c.length?{cliToolId:e,model:void 0}:g.has(e)?h.has(e)?function(a,b){let c={cliToolId:a},d=new Set,e=(a,c)=>{let d=b[c+1];return void 0===d||d.startsWith("-")?null:d};for(let f=0;f<b.length;f++){let g=b[f];if(d.has(g))return{cliToolId:a,error:`${a} option "${g}" is repeated`};switch(g){case"--model":case"-m":{let b=e(g,f);if(null===b)return{cliToolId:a,error:`${a} option "${g}" needs a value`};d.add("--model"),d.add("-m"),c.model=b,f++;break}case"--agent":{let b=e(g,f);if(null===b)return{cliToolId:a,error:`${a} option "${g}" needs a value`};d.add(g),c.agent=b,f++;break}case"--variant":{let b=e(g,f);if(null===b)return{cliToolId:a,error:`${a} option "${g}" needs a value`};d.add(g),c.variant=b,f++;break}case"--title":{let b=e(g,f);if(null===b)return{cliToolId:a,error:`${a} option "${g}" needs a value`};d.add(g),c.title=b,f++;break}case"--continue":case"-c":d.add("--continue"),d.add("-c"),c.continueSession=!0;break;default:return{cliToolId:a,error:`${a} only supports: opencode [--model <provider/model>] [--agent <name>] [--variant <name>] [--continue] [--title <text>]`}}}return c}(e,c.slice(1)):3===c.length&&"--model"===c[1]?{cliToolId:e,model:c[2]}:{cliToolId:e,error:`${e} only supports: ${e} --model <modelName>`}:{cliToolId:e,error:`CLI Tool "${e}" does not support additional options`}}(a);if(c.error&&b.push(c.error),c.model){let a=i(c.model);a.valid||b.push(a.reason)}if(c.agent){let a=k(c.agent,"agent");a.valid||b.push(a.reason)}if(c.variant){let a=k(c.variant,"variant");a.valid||b.push(a.reason)}if(c.title){let a=l(c.title);a.valid||b.push(a.reason)}return{result:c,errors:b}}function n(a){let b={};return a.model&&g.has(a.cliToolId)&&(b.model=a.model),h.has(a.cliToolId)&&(a.agent&&(b.agent=a.agent),a.variant&&(b.variant=a.variant),a.continueSession&&(b.continueSession=!0),a.title&&(b.title=a.title)),Object.keys(b).length>0?b:void 0}},15003:(a,b,c)=>{c.d(b,{QD:()=>h,Vh:()=>g,fp:()=>d,j0:()=>f,ri:()=>i});let d="CMATE.md",e=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F\x80-\x9F\u200B-\u200F\u2028-\u202F\uFEFF]/;function f(a){return a.replace(RegExp(e.source,"g"),"")}let g=/^[\w\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FFF\uF900-\uFAFF\s-]{1,100}$/,h=100;function i(a){if(a.length>100)return!1;let b=a.trim().split(/\s+/);return b.length>=5&&b.length<=6}},20137:(a,b,c)=>{c.d(b,{Ar:()=>d,Hf:()=>n,Ww:()=>e,XI:()=>o,eb:()=>i,iI:()=>q,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=[],l=[],m=[],n={claude:"acceptEdits",codex:"workspace-write",gemini:"","vibe-local":"",opencode:"",copilot:"allow-all-tools",antigravity:"--dangerously-skip-permissions"};function o(a){switch(a){case"claude":return f;case"codex":return g;case"copilot":return h;case"antigravity":return i;case"gemini":return j;case"vibe-local":return k;case"opencode":return l;default:return m}}let p=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function q(a){return p.test(a)}},34207:(a,b,c)=>{c.d(b,{V$:()=>l,iv:()=>j,uv:()=>i});var d=c(79646),e=c(73434),f=c(85164),g=c(15194),h=c(20137);let i=1e4,j=new Set(g.XH);function k(a){return 102400>=Buffer.byteLength(a,"utf-8")?a:Buffer.from(a,"utf-8").subarray(0,102400).toString("utf-8")+"\n\n--- Output truncated (exceeded 100KB limit) ---"}async function l(a,b,c="claude",g,m){if(!j.has(c))return{output:"",exitCode:null,status:"failed",error:`Invalid CLI tool: ${c}`};let n=function(a,b,c,d){switch(b){case"codex":return["exec",a,"--sandbox",c??"workspace-write"];case"gemini":return["-p",a];case"vibe-local":if(d?.model)return["--model",d.model,"-p",a,"-y"];return["-p",a,"-y"];case"opencode":{let b=["run","--format","json"];return d?.model&&b.push("-m",d.model),d?.agent&&b.push("--agent",d.agent),d?.variant&&b.push("--variant",d.variant),d?.continueSession&&b.push("-c"),d?.title&&b.push("--title",d.title),b.push(a),b}case"antigravity":return["-p",a,"--dangerously-skip-permissions"];case"copilot":{let b=h.oN.includes(c)?c:"allow-all-tools",e=["copilot"];return d?.model&&e.push("--model",d.model),e.push("-p",a,`--${b}`),e}default:return["-p",a,"--output-format","text","--permission-mode",c??"acceptEdits"]}}(a.length>i?a.substring(0,i):a,c,g,m);return new Promise(a=>{let g=function(a){switch(a){case"copilot":return"gh";case"antigravity":return"agy";default:return a}}(c),h=(0,d.execFile)(g,n,{cwd:b,env:(0,e.hh)(),maxBuffer:0xa00000,timeout:m?.timeoutMs??9e5},(b,d,e)=>{if(b){let c=b.code,g="ERR_CHILD_PROCESS_STDIO_MAXBUFFER"===c,h=b.killed||"ETIMEDOUT"===c,i=[`Error: ${b.message}`,`Code: ${c??"unknown"}`,`Signal: ${b.signal??"none"}`,g?"Reason: stdout exceeded execFile maxBuffer (output_limit)":null].filter(a=>null!==a).join("\n");a({output:k((0,f.aJ)([i,d?`
14
+ --- stdout ---
15
+ ${d}`:"",e?`
16
+ --- stderr ---
17
+ ${e}`:""].join("\n"))),exitCode:"number"==typeof c?c:null,status:h?"timeout":"failed",error:b.message});return}let g="opencode"===c?function(a){let b=[],c=null;for(let d of a.split("\n")){let a,e=d.trim();if(!e.startsWith("{"))continue;try{a=JSON.parse(e)}catch{continue}if("object"!=typeof a||null===a)continue;let f=a,g="object"==typeof f.part&&null!==f.part?f.part:null;if("text"===f.type&&g&&"string"==typeof g.text){b.push({messageId:"string"==typeof g.messageID?g.messageID:null,text:g.text});continue}"error"===f.type&&(c=function(a){let b="object"==typeof a.error&&null!==a.error?a.error:{},c="string"==typeof b.name?b.name:"error",d="object"==typeof b.data&&null!==b.data?b.data:{},e="string"==typeof d.message?d.message:"";return e?`opencode error: ${c}: ${e}`:`opencode error: ${c}`}(f))}if(b.length>0){let a=b[b.length-1].messageId;return(null===a?[b[b.length-1]]:b.filter(b=>b.messageId===a)).map(a=>a.text).join("\n\n")}return c}(d||"")??d??"":d||"";a({output:k((0,f.aJ)(g)),exitCode:0,status:"completed"})});if(h.stdin?.end(),h.pid){let a=(globalThis.__scheduleActiveProcesses||(globalThis.__scheduleActiveProcesses=new Map),globalThis.__scheduleActiveProcesses);a.set(h.pid,h),h.on("exit",()=>{a.delete(h.pid)})}})}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=3558,exports.ids=[3558],exports.modules={3421:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(71237),e=c(55088),f=c(17679);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},12462:(a,b,c)=>{c.d(b,{T8:()=>j,o4:()=>k});var d=c(31766),e=c(56791),f=c(95620),g=c(82450),h=c(15194);let i=(0,c(72626).h)("assistant-response-saver");function j(a,b){switch(b){case"claude":return(0,g.NN)(a);case"gemini":return(0,g.IS)(a);case"opencode":return(0,g.aW)(a);case"copilot":return(0,g.LH)(a);default:return a.trim()}}async function k(a,b,c,g,k){let l=k??c;try{let m;if((0,h.VA)(c))return null;let n=(0,e.getSessionState)(a,b,l),o=n?.lastCapturedLine||0;try{m=await (0,d.Wh)(b,c,1e4,k)}catch{return i.info("failed-to-capture"),null}if(!m)return null;let p=m.split("\n"),q=p.length;for(;q>0&&""===p[q-1].trim();)q--;let r=q,{bufferReset:s,reason:t}=r>0&&o>25&&r+25<o?{bufferReset:!0,reason:"shrink"}:r>0&&o>50&&r<50?{bufferReset:!0,reason:"restart"}:{bufferReset:!1,reason:null};s&&i.info("buffer:reset-detected",{reason:t,currentLineCount:r,lastCapturedLine:o});let u=s?0:o;if(!s&&r<=o)return r<o&&((0,e.updateSessionState)(a,b,c,r,k),i.info("position:corrected-stale",{from:o,to:r})),null;let v=p.slice(u).join("\n"),w=j(v,c);if(!w||""===w.trim())return(0,e.updateSessionState)(a,b,c,r,k),i.debug("response:empty-after-clean",{currentLineCount:r}),null;let x=new Date(g.getTime()-1),y=(0,e.createMessage)(a,{worktreeId:b,role:"assistant",content:w,messageType:"normal",timestamp:x,cliToolId:c,instanceId:l});return(0,e.updateSessionState)(a,b,c,r,k),(0,f.broadcastMessage)("message",{worktreeId:b,message:y}),i.info("response:saved",{fromLine:o,toLine:r}),y}catch(a){return i.error("error:",{error:a instanceof Error?a.message:String(a)}),null}}},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.getAssistantConversationById)(a,b))return;let c=(0,d.getRunningAssistantExecutionByConversation)(a,b),f=(0,e.kx)(b);c&&!f&&((0,d.updateAssistantExecution)(a,c.id,{status:"failed",finishedAt:new Date,stderrText:[c.stderrText??"","[Execution reconciled after process registry loss]"].filter(Boolean).join("\n")}),(0,d.updateAssistantConversation)(a,b,{status:"ready"}))}},49070:(a,b,c)=>{c.d(b,{A:()=>l});var d=c(31766),e=c(80972),f=c(12462),g=c(56791),h=c(57821),i=c(72626),j=c(85164);let k=(0,i.h)("assistant/conversation-response-saver");async function l(a,b,c,i=new Date){try{let k=(0,g.getAssistantSessionState)(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.updateAssistantSessionState)(a,b,p.lineCount),null;let r=(0,g.createAssistantMessage)(a,{conversationId:b,role:"assistant",content:q,messageType:"normal",timestamp:i});return(0,g.updateAssistantSessionState)(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(59701);function e(a){return`assistant-${a}`}function f(a,b){let c=d.CLIToolManager.getInstance().getTool(a),f=e(b),g=c.getSessionName(f);return{cliTool:c,worktreeId:f,sessionName:g}}},82149:(a,b,c)=>{c.d(b,{AR:()=>i,Qi:()=>j,XO:()=>f,kx:()=>h,uT:()=>g});let d=new Map,e=new Map;function f(a,b,c){d.set(a,{executionId:a,conversationId:b,process:c,cancellationRequested:!1}),e.set(b,a)}function g(a){let b=d.get(a);b&&(e.delete(b.conversationId),d.delete(a))}function h(a){let b=e.get(a);return b?d.get(b)??null:null}function i(a){return d.get(a)?.cancellationRequested??!1}function j(a){let b=h(a);return!!b&&(b.cancellationRequested=!0,!b.process.killed&&b.process.kill("SIGTERM"))}},95736:(a,b,c)=>{a.exports=c(44870)}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=4299,exports.ids=[4299],exports.modules={8953:(a,b,c)=>{c.d(b,{Mx:()=>e,qD:()=>d,sM:()=>h});let d=["Up","Down","Left","Right","Enter","Escape","Tab","BTab","PageUp","PageDown","Home","End","q"],e="C-x",f=["a","l","n","t","m","g","u","r","c"],g=["C-p","C-t"],h=[...d,e,...g,...f];[...d,...g,...f]},40964:(a,b,c)=>{c.d(b,{m:()=>g});var d=c(15194);let e=/^[a-zA-Z0-9_-]+$/;function f(a){if(!e.test(a))throw Error(`Invalid session name format: ${a}`)}function g(a,b,c){let e=`mcbd-${a}-${b}`;if(!c||c===a)return f(e),e;let g=(0,d.pL)(c,a),h=g?`${e}-${g}`:e;return f(h),h}},79892:(a,b,c)=>{c.d(b,{Xg:()=>u,ou:()=>z,Ce:()=>y,jw:()=>q,lA:()=>m,N:()=>o,N6:()=>A,fY:()=>v,GW:()=>p,zT:()=>n,V1:()=>r,ds:()=>x,KB:()=>t,Sb:()=>B});var d=c(79646),e=c(28354),f=c(93997),g=c(16983),h=c(72626),i=c(8953),j=c(86069);let k=(0,e.promisify)(d.execFile),l=(0,h.h)("tmux");function m(a){return`=${a}:`}async function n(a,b={}){let c,d,e,f=b.windowWidth??g.Jn,h=b.windowHeight??g.sO,i=m(a);try{c=(await k("tmux",["show-window-options","-v","-t",i,"window-size"],{timeout:5e3})).stdout.trim();let[a,b]=(await k("tmux",["display-message","-p","-t",i,"#{window_width}|#{window_height}"],{timeout:5e3})).stdout.trim().split("|").map(Number);Number.isFinite(a)&&(d=a),Number.isFinite(b)&&(e=b)}catch{}let j="manual"===c,o=d===f&&e===h;if(j&&o)return!1;try{return j||await k("tmux",["set-window-option","-t",i,"window-size","manual"],{timeout:5e3}),o||await k("tmux",["resize-window","-t",i,"-x",String(f),"-y",String(h)],{timeout:5e3}),!0}catch(b){return l.warn("session-geometry:reconcile-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)}),!1}}async function o(a){try{return await k("tmux",["has-session","-t",m(a)],{timeout:5e3}),!0}catch{return!1}}async function p(){try{let{stdout:a}=await k("tmux",["list-sessions","-F","#{session_name}|#{session_windows}|#{session_attached}"],{timeout:5e3});if(!a||""===a.trim())return[];return a.trim().split("\n").map(a=>{let[b,c,d]=a.split("|");return{name:b,windows:parseInt(c,10)||0,attached:"1"===d}})}catch{return[]}}async function q(a,b){let c,d,e,f,h;"string"==typeof a?(c=a,d=b,e=g.eu,f=g.Jn,h=g.sO):(c=a.sessionName,d=a.workingDirectory,e=a.historyLimit||g.eu,f=a.windowWidth||g.Jn,h=a.windowHeight||g.sO);try{await k("tmux",["new-session","-d","-s",c,"-c",d,"-x",String(f),"-y",String(h)],{timeout:5e3}),await k("tmux",["set-option","-t",m(c),"history-limit",String(e)],{timeout:5e3});try{await k("tmux",["new-window","-k","-t",`${m(c)}0`,"-c",d],{timeout:5e3})}catch(a){l.warn("session-history-limit:window-rebuild-failed",{sessionName:c,historyLimit:e,error:a instanceof Error?a.message:String(a)})}await n(c,{windowWidth:f,windowHeight:h})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to create tmux session: ${a}`)}}async function r(a,b,c=!0,d){if(d?.literal&&c)throw Error("sendKeys: { literal: true } cannot be combined with sendEnter — a trailing C-m would be typed as text. Send Enter as a separate key.");let e=d?.literal?function(a,b){if("literal"===b.kind)return["send-keys","-t",a,"-l","--",b.text];if(!(0,j.vY)(b.name))throw Error(`Invalid key sequence key name: ${b.name}`);return["send-keys","-t",a,"--",b.name]}(m(a),{kind:"literal",text:b}):c?["send-keys","-t",m(a),b,"C-m"]:["send-keys","-t",m(a),b];try{await k("tmux",e,{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send keys to tmux session: ${a}`)}}let s=new Set(["Up","Down","Left","Right","Enter","Space","Tab","Escape","BTab","BSpace","DC","PageUp","PageDown","Home","End","q","C-x","C-p","C-t","a","l","n","t","m","g","u","r","c"]);async function t(a,b){if(0!==b.length){for(let a of b)if(!s.has(a))throw Error(`Invalid special key: ${a}`);try{for(let c=0;c<b.length;c++)await k("tmux",["send-keys","-t",m(a),b[c]],{timeout:5e3}),c<b.length-1&&await new Promise(a=>setTimeout(a,100))}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send special keys to tmux session: ${a}`)}}}async function u(a,b){let c,d;"number"==typeof b?(c=-b,d="-"):b?(c=b.startLine??-1e4,d=b.endLine??"-"):(c=-1e3,d="-");try{let{stdout:b}=await k("tmux",["capture-pane","-t",m(a),"-p","-e","-S",String(c),"-E",String(d)],{timeout:5e3,maxBuffer:0xa00000});return b}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to capture pane: ${a}`)}}async function v(a){try{return await k("tmux",["kill-session","-t",m(a)],{timeout:5e3}),!0}catch(b){let a=b instanceof Error?b.message:String(b);if(a?.includes("no server running")||a?.includes("can't find session"))return!1;throw Error(`Failed to kill tmux session: ${a}`)}}let w=new Set(["Escape","C-c","C-d","C-m","Enter"]);async function x(a,b){if(!w.has(b))throw Error(`Invalid special key: ${b}`);try{await k("tmux",["send-keys","-t",m(a),b],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send special key: ${a}`)}}async function y(a){try{await k("tmux",["send-keys","-t",m(a),"C-u"],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to clear tmux input line: ${a}`)}}async function z(a){try{await k("tmux",["send-keys","-t",m(a),"C-e","C-u"],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to clear tmux composer line: ${a}`)}}function A(a,b=i.qD){return b.includes(a)&&s.has(a)}async function B(a,b){await t(a,b),(0,f.gm)(a)}},86069:(a,b,c)=>{c.d(b,{IS:()=>e,iF:()=>f,vY:()=>g});let d=["Escape","C-c","C-d","C-m","Enter"];function e(a,b){return void 0===b?{kind:"key",name:a}:{kind:"key",name:a,delayAfterMs:b}}function f(a,b){return void 0===b?{kind:"literal",text:a}:{kind:"literal",text:a,delayAfterMs:b}}function g(a){return d.includes(a)}},93997:(a,b,c)=>{c.d(b,{aq:()=>m,gm:()=>k,pc:()=>l,sl:()=>f,vF:()=>j,wd:()=>i,xE:()=>e});let d=(0,c(72626).h)("tmux-capture-cache"),e=1e4;function f(a,b=e){return b>0&&a>=b}function g(){return globalThis.__tmuxCaptureCache??=new Map}function h(){return globalThis.__tmuxCaptureCacheInflight??=new Map}function i(a,b){if(""===a)return"";let c=a.split("\n");return b>=c.length?a:c.slice(-b).join("\n")}function j(a,b,c){let d=g(),e=Date.now();for(let[a,b]of d)e-b.timestamp>5e3&&d.delete(a);if(d.size>=100&&!d.has(a)){let a=null,b=1/0;for(let[c,e]of d)e.timestamp<b&&(b=e.timestamp,a=c);a&&d.delete(a)}d.set(a,{output:b,capturedLines:c,timestamp:e})}function k(a){g().delete(a),d.debug("cache:invalidate",{sessionName:a})}function l(){g().clear(),h().clear()}async function m(a,b,c){let d=function(a,b){let c=g(),d=c.get(a);return d?Date.now()-d.timestamp>5e3?(c.delete(a),null):b>d.capturedLines?null:i(d.output,b):null}(a,b);if(null!==d)return d;let f=h(),k=f.get(a);if(k)return i(await k,b);let l=c();f.set(a,l);try{let c=await l;return c.length>0&&j(a,c,e),i(c,b)}finally{f.delete(a)}}}};
@@ -1 +1 @@
1
- "use strict";exports.id=4393,exports.ids=[4393],exports.modules={23197:(a,b,c)=>{c.d(b,{$M:()=>e,H1:()=>d,q5:()=>f});let d="__global__",e=2e3,f=900},32002:(a,b,c)=>{c.d(b,{e:()=>f});var d=c(56791),e=c(15194);function f(a,b,c){let f=(0,d.getAgentInstances)(a,b);return f.length>0?f:(0,e.lu)(c??[])}},57836:(a,b,c)=>{c.d(b,{Jp:()=>k,Te:()=>l,hd:()=>j,wN:()=>h});var d=c(24455);let e=(0,c(72626).h)("waiting-episode-state"),f=globalThis.__sessionWaitingEpisodes??(globalThis.__sessionWaitingEpisodes=new Map),g=globalThis.__sessionWaitingTransitionListeners??(globalThis.__sessionWaitingTransitionListeners=new Set);function h(a){return g.add(a),()=>{g.delete(a)}}function i(a){for(let b of g)try{b(a)}catch(b){e.error("waiting-transition-listener-failed",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId,waiting:a.waiting,error:b instanceof Error?b.message:String(b)})}}function j({worktreeId:a,cliToolId:b,instanceId:c,waiting:e,kind:g=null,structuredSince:h=null,now:j=Date.now()}){let k=(0,d.v7)(a,b,c),l=f.get(k);if(!e)return void 0===l||(f.delete(k),i({worktreeId:a,cliToolId:b,instanceId:c,waiting:!1,since:null,kind:null,at:j})),null;if(void 0!==l)return l.kind=g,l.since;let m=h??j;return f.set(k,{since:m,kind:g}),i({worktreeId:a,cliToolId:b,instanceId:c,waiting:!0,since:m,kind:g,at:j}),m}function k(a,b,c){return f.get((0,d.v7)(a,b,c))??null}function l(a){let b=`${a}${d.CS}`;for(let a of f.keys())if(a.startsWith(b))return!0;return!1}},89398:(a,b,c)=>{c.d(b,{B:()=>t});var d=c(94565),e=c(15194),f=c(31766),g=c(95595),h=c(67882),i=c(23365),j=c(57905),k=c(45017),l=c(23197),m=c(30008),n=c(40043),o=c(57836),p=c(48083),q=c(26547);let r={prompt:3,menu:2,unclassified:1};async function s(a,b,c,d,e,l,r,s){let t=e.has(d);t&&"claude"===b&&((await (0,j.oV)(d)).healthy||(t=!1));let u=!1,v=!1,w=null,x=null,y=null,z=null;if(t)try{var A;let d=(0,i.y)(b).statusLines,e=await (0,f.Wh)(a,b,d,c),j=(0,k.v7)(a,b,c),o=(0,k.xU)(j),t=o?new Date(o):void 0,B=(0,g.WC)(e,b,t);(0,p.vm)(a,b,c,(0,q.jw)(b,e)),({isWaitingForResponse:u,isProcessing:v}=(0,h.O_)(B.status)),z=B.reason,y=B.evidence,(0,n.ox)(j,{status:B.status,reason:B.reason,evidence:y});let C=(0,m.xF)({worktreeId:a,cliToolId:b,instanceId:c,scraper:{status:B.status,reason:B.reason,hasActivePrompt:B.hasActivePrompt}});u=u||C.waiting,x=C.structured?.at??null,w=(A={waiting:u,hasActivePrompt:B.hasActivePrompt,scraperStatus:B.status,scraperReason:B.reason}).waiting?A.hasActivePrompt?"prompt":"waiting"===A.scraperStatus&&g.ug.has(A.scraperReason)?"menu":"unclassified":null,!B.hasActivePrompt&&r(l,a,{limit:10,cliToolId:b,instanceId:c}).some(a=>"prompt"===a.messageType&&a.promptData?.status!=="answered")&&s(l,a,b,c)}catch{v=!0}let B=(0,o.hd)({worktreeId:a,cliToolId:b,instanceId:c,waiting:u,kind:w,structuredSince:x}),{model:C,effort:D}=(0,p.jl)(a,b,c),E=(0,k.v7)(a,b,c);t||(0,n.xG)(E);let F=t?(0,n.AD)(E):null;return{isRunning:t,isWaitingForResponse:u,isProcessing:v,waitingKind:w,waitingSince:B,awaitingInstruction:t&&(0,p.pI)(a,b,c),...null!==C?{model:C}:{},...null!==D?{reasoningEffort:D}:{},...null!==y?{statusEvidence:y}:{},...null!==z?{sessionStatusReason:z}:{},...null!==F?{lastKnownStatus:F.status,lastKnownStatusAt:F.at}:{}}}async function t(a,b,c,f,g,h){if(a===l.H1)return{sessionStatusByCli:{},sessionStatusByInstance:{},isSessionRunning:!1,isWaitingForResponse:!1,isProcessing:!1};let i=d.s.getInstance(),j=e.XH,k=h(c,a).filter(a=>a.id!==a.cliTool),m=j.map(b=>({cliToolId:b,instanceId:b,sessionName:i.getTool(b).getSessionName(a,b)}));for(let b of k)m.push({cliToolId:b.cliTool,instanceId:b.id,sessionName:i.getTool(b.cliTool).getSessionName(a,b.id)});let n=await Promise.all(m.map(async d=>{let e=await s(a,d.cliToolId,d.instanceId,d.sessionName,b,c,f,g);return{...d,status:e}})),o={},p={};for(let{cliToolId:a,instanceId:b,status:c}of n){p[b]=c;let d=o[a];o[a]=d?function(a,b){var c,d,e,f;return{isRunning:a.isRunning||b.isRunning,isWaitingForResponse:a.isWaitingForResponse||b.isWaitingForResponse,isProcessing:a.isProcessing||b.isProcessing,waitingKind:(c=a.waitingKind,d=b.waitingKind,null===c?d:null===d||r[c]>=r[d]?c:d),waitingSince:(e=a.waitingSince,f=b.waitingSince,null===e?f:null===f?e:Math.min(e,f)),awaitingInstruction:a.awaitingInstruction||b.awaitingInstruction}}(d,c):c}let q=!1,t=!1,u=!1;for(let a of Object.values(o))a&&(a.isRunning&&(q=!0),a.isWaitingForResponse&&(t=!0),a.isProcessing&&(u=!0));return{sessionStatusByCli:o,sessionStatusByInstance:p,isSessionRunning:q,isWaitingForResponse:t,isProcessing:u}}}};
1
+ "use strict";exports.id=4393,exports.ids=[4393],exports.modules={23197:(a,b,c)=>{c.d(b,{$M:()=>e,H1:()=>d,q5:()=>f});let d="__global__",e=2e3,f=900},32002:(a,b,c)=>{c.d(b,{e:()=>f});var d=c(56791),e=c(15194);function f(a,b,c){let f=(0,d.getAgentInstances)(a,b);return f.length>0?f:(0,e.lu)(c??[])}},57836:(a,b,c)=>{c.d(b,{Jp:()=>k,Te:()=>l,hd:()=>j,wN:()=>h});var d=c(24455);let e=(0,c(72626).h)("waiting-episode-state"),f=globalThis.__sessionWaitingEpisodes??(globalThis.__sessionWaitingEpisodes=new Map),g=globalThis.__sessionWaitingTransitionListeners??(globalThis.__sessionWaitingTransitionListeners=new Set);function h(a){return g.add(a),()=>{g.delete(a)}}function i(a){for(let b of g)try{b(a)}catch(b){e.error("waiting-transition-listener-failed",{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId,waiting:a.waiting,error:b instanceof Error?b.message:String(b)})}}function j({worktreeId:a,cliToolId:b,instanceId:c,waiting:e,kind:g=null,structuredSince:h=null,now:j=Date.now()}){let k=(0,d.v7)(a,b,c),l=f.get(k);if(!e)return void 0===l||(f.delete(k),i({worktreeId:a,cliToolId:b,instanceId:c,waiting:!1,since:null,kind:null,at:j})),null;if(void 0!==l)return l.kind=g,l.since;let m=h??j;return f.set(k,{since:m,kind:g}),i({worktreeId:a,cliToolId:b,instanceId:c,waiting:!0,since:m,kind:g,at:j}),m}function k(a,b,c){return f.get((0,d.v7)(a,b,c))??null}function l(a){let b=`${a}${d.CS}`;for(let a of f.keys())if(a.startsWith(b))return!0;return!1}},89398:(a,b,c)=>{c.d(b,{B:()=>v});var d=c(59701),e=c(15194),f=c(31766),g=c(95595),h=c(67882),i=c(23365),j=c(57905),k=c(45017),l=c(23197),m=c(30008),n=c(40043),o=c(57836),p=c(48083),q=c(26547),r=c(97709),s=c(66101);let t={prompt:3,menu:2,unclassified:1};async function u(a,b,c,d,e,l,t,u){let v=e.has(d);v&&"claude"===b&&((await (0,j.oV)(d)).healthy||(v=!1));let w=!1,x=!1,y=null,z=null,A=null,B=null;if(v)try{var C;let d=(0,i.y)(b).statusLines,e=await (0,f.Wh)(a,b,d,c),j=(0,k.v7)(a,b,c),o=(0,k.xU)(j),r=o?new Date(o):void 0,s=(0,g.WC)(e,b,r);(0,p.vm)(a,b,c,(0,q.jw)(b,e)),({isWaitingForResponse:w,isProcessing:x}=(0,h.O_)(s.status)),B=s.reason,A=s.evidence,(0,n.ox)(j,{status:s.status,reason:s.reason,evidence:A});let v=(0,m.xF)({worktreeId:a,cliToolId:b,instanceId:c,scraper:{status:s.status,reason:s.reason,hasActivePrompt:s.hasActivePrompt}});w=w||v.waiting,z=v.structured?.at??null,y=(C={waiting:w,hasActivePrompt:s.hasActivePrompt,scraperStatus:s.status,scraperReason:s.reason}).waiting?C.hasActivePrompt?"prompt":"waiting"===C.scraperStatus&&g.ug.has(C.scraperReason)?"menu":"unclassified":null,!s.hasActivePrompt&&t(l,a,{limit:10,cliToolId:b,instanceId:c}).some(a=>"prompt"===a.messageType&&a.promptData?.status!=="answered")&&u(l,a,b,c)}catch{x=!0}let D=(0,o.hd)({worktreeId:a,cliToolId:b,instanceId:c,waiting:w,kind:y,structuredSince:z}),{model:E,effort:F}=(0,p.jl)(a,b,c),G=(0,k.v7)(a,b,c);v||(0,n.xG)(G);let H=v?(0,n.AD)(G):null,I=v?function(a,b,c){try{let d=(0,r.VM)(b),e=(0,s.Kf)(d,d.liveness({worktreeId:a,cliToolId:b,instanceId:c}),Date.now());if(void 0===e.degradedReason&&void 0===e.liveness)return null;return e}catch{return null}}(a,b,c):null;return{isRunning:v,isWaitingForResponse:w,isProcessing:x,waitingKind:y,waitingSince:D,awaitingInstruction:v&&(0,p.pI)(a,b,c),...null!==E?{model:E}:{},...null!==F?{reasoningEffort:F}:{},...null!==A?{statusEvidence:A}:{},...null!==B?{sessionStatusReason:B}:{},...null!==H?{lastKnownStatus:H.status,lastKnownStatusAt:H.at}:{},...null!==I?{eventSource:I}:{}}}async function v(a,b,c,f,g,h){if(a===l.H1)return{sessionStatusByCli:{},sessionStatusByInstance:{},isSessionRunning:!1,isWaitingForResponse:!1,isProcessing:!1};let i=d.CLIToolManager.getInstance(),j=e.XH,k=h(c,a).filter(a=>a.id!==a.cliTool),m=j.map(b=>({cliToolId:b,instanceId:b,sessionName:i.getTool(b).getSessionName(a,b)}));for(let b of k)m.push({cliToolId:b.cliTool,instanceId:b.id,sessionName:i.getTool(b.cliTool).getSessionName(a,b.id)});let n=await Promise.all(m.map(async d=>{let e=await u(a,d.cliToolId,d.instanceId,d.sessionName,b,c,f,g);return{...d,status:e}})),o={},p={};for(let{cliToolId:a,instanceId:b,status:c}of n){p[b]=c;let d=o[a];o[a]=d?function(a,b){var c,d,e,f;return{isRunning:a.isRunning||b.isRunning,isWaitingForResponse:a.isWaitingForResponse||b.isWaitingForResponse,isProcessing:a.isProcessing||b.isProcessing,waitingKind:(c=a.waitingKind,d=b.waitingKind,null===c?d:null===d||t[c]>=t[d]?c:d),waitingSince:(e=a.waitingSince,f=b.waitingSince,null===e?f:null===f?e:Math.min(e,f)),awaitingInstruction:a.awaitingInstruction||b.awaitingInstruction}}(d,c):c}let q=!1,r=!1,s=!1;for(let a of Object.values(o))a&&(a.isRunning&&(q=!0),a.isWaitingForResponse&&(r=!0),a.isProcessing&&(s=!0));return{sessionStatusByCli:o,sessionStatusByInstance:p,isSessionRunning:q,isWaitingForResponse:r,isProcessing:s}}}};