commandmate 0.42.2 → 0.43.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 (421) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +148 -148
  3. package/.next/app-path-routes-manifest.json +25 -25
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/update-check/route.js +1 -1
  13. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/capabilities/route.js +1 -1
  18. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/daily-summary/route.js +1 -1
  20. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  21. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  23. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  24. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/hooks/agent-event/route.js +103 -1
  31. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  32. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  34. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  35. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  37. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  38. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  45. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  46. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/relays/route.js +1 -1
  48. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  49. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  53. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  54. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/repositories/clone/route.js +1 -1
  56. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  57. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/repositories/restore/route.js +1 -1
  60. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  61. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/repositories/route.js +1 -1
  63. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  64. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/scan/route.js +1 -1
  66. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  67. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/sync/route.js +1 -1
  69. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  70. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  73. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  74. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/skills/[id]/route.js +1 -1
  78. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/skills/route.js +1 -1
  83. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/slash-commands/route.js +1 -1
  85. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  93. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  94. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  96. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  97. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  99. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  100. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +3 -1
  104. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  105. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  108. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  111. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +3 -1
  116. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  117. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  145. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  148. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  151. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  161. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  164. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  167. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  171. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/route.js +1 -103
  173. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  174. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +3 -1
  176. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  177. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +3 -1
  179. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  180. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -1
  182. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  183. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -103
  186. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  187. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +104 -2
  189. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  190. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  200. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  211. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/worktrees/route.js +1 -1
  225. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  226. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  228. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  230. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  231. package/.next/server/app/page_client-reference-manifest.js +1 -1
  232. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  234. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  235. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  236. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  237. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  238. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  239. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  240. package/.next/server/app/worktrees/[id]/page.js +9 -9
  241. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  242. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  243. package/.next/server/app-paths-manifest.json +25 -25
  244. package/.next/server/chunks/1068.js +1 -1
  245. package/.next/server/chunks/1210.js +1 -1
  246. package/.next/server/chunks/1501.js +3 -3
  247. package/.next/server/chunks/1990.js +1 -1
  248. package/.next/server/chunks/2119.js +1 -1
  249. package/.next/server/chunks/22.js +1 -1
  250. package/.next/server/chunks/2328.js +1 -1
  251. package/.next/server/chunks/2404.js +4 -3
  252. package/.next/server/chunks/2445.js +1 -1
  253. package/.next/server/chunks/252.js +1 -1
  254. package/.next/server/chunks/2816.js +1 -1
  255. package/.next/server/chunks/3543.js +1 -1
  256. package/.next/server/chunks/3730.js +1 -1
  257. package/.next/server/chunks/3945.js +1 -1
  258. package/.next/server/chunks/4207.js +3 -3
  259. package/.next/server/chunks/5064.js +1 -1
  260. package/.next/server/chunks/5571.js +1 -1
  261. package/.next/server/chunks/5742.js +1 -1
  262. package/.next/server/chunks/5775.js +1 -1
  263. package/.next/server/chunks/611.js +1 -1
  264. package/.next/server/chunks/6130.js +1 -1
  265. package/.next/server/chunks/6285.js +1 -1
  266. package/.next/server/chunks/6491.js +103 -0
  267. package/.next/server/chunks/6661.js +1 -1
  268. package/.next/server/chunks/6781.js +1 -1
  269. package/.next/server/chunks/6793.js +1 -1
  270. package/.next/server/chunks/7491.js +3 -0
  271. package/.next/server/chunks/7685.js +1 -1
  272. package/.next/server/chunks/7905.js +1 -1
  273. package/.next/server/chunks/8581.js +2 -2
  274. package/.next/server/chunks/8673.js +6 -6
  275. package/.next/server/chunks/8728.js +2 -2
  276. package/.next/server/chunks/8791.js +1 -1
  277. package/.next/server/chunks/8800.js +4 -3
  278. package/.next/server/chunks/8918.js +5 -5
  279. package/.next/server/chunks/9130.js +3 -3
  280. package/.next/server/chunks/{8052.js → 9353.js} +4 -2
  281. package/.next/server/chunks/9390.js +3 -0
  282. package/.next/server/chunks/9627.js +3 -3
  283. package/.next/server/chunks/967.js +1 -0
  284. package/.next/server/chunks/9731.js +3 -3
  285. package/.next/server/chunks/9882.js +3 -3
  286. package/.next/server/middleware-manifest.json +5 -5
  287. package/.next/server/pages/500.html +1 -1
  288. package/.next/server/server-reference-manifest.json +1 -1
  289. package/.next/static/chunks/{1642-fb2e176aaadbd137.js → 1642-767aed8e7c61ef7f.js} +1 -1
  290. package/.next/static/chunks/{2407-6b9e12c099fa598c.js → 2407-940df9b11fadafc6.js} +1 -1
  291. package/.next/static/chunks/{2619-04bc32f026a0d946.js → 2619-a305ad4810f1393a.js} +1 -1
  292. package/.next/static/chunks/5449-6cb80bab2bd06b79.js +1 -0
  293. package/.next/static/chunks/7705-1f58d4c03d991fcf.js +1 -0
  294. package/.next/static/chunks/8165-3525fb42f1b4976e.js +1 -0
  295. package/.next/static/chunks/app/{layout-5b95e1236dcd9ef6.js → layout-057c850cd0df978e.js} +1 -1
  296. package/.next/static/chunks/app/review/page-ff9efae3f86eb840.js +1 -0
  297. package/.next/static/chunks/app/skills/[skillId]/page-74aac15286504ef4.js +1 -0
  298. package/.next/static/chunks/app/skills/page-182e16168b2fc098.js +1 -0
  299. package/.next/static/chunks/app/worktrees/[id]/page-eab0bf7564d3f9e2.js +1 -0
  300. package/.next/static/chunks/app/worktrees/[id]/terminal/{page-373ea37b16d930c7.js → page-c601f3b3ece6557e.js} +1 -1
  301. package/.next/trace +13 -13
  302. package/README.md +3 -3
  303. package/dist/cli/commands/ask.d.ts.map +1 -1
  304. package/dist/cli/commands/ask.js +23 -149
  305. package/dist/cli/commands/reply.d.ts +40 -0
  306. package/dist/cli/commands/reply.d.ts.map +1 -0
  307. package/dist/cli/commands/reply.js +133 -0
  308. package/dist/cli/commands/wait.d.ts +5 -0
  309. package/dist/cli/commands/wait.d.ts.map +1 -1
  310. package/dist/cli/commands/wait.js +10 -1
  311. package/dist/cli/docs/agent-operations.d.ts +2 -2
  312. package/dist/cli/docs/agent-operations.d.ts.map +1 -1
  313. package/dist/cli/docs/agent-operations.js +13 -0
  314. package/dist/cli/program.d.ts.map +1 -1
  315. package/dist/cli/program.js +4 -0
  316. package/dist/cli/utils/reply-ledger.d.ts +95 -0
  317. package/dist/cli/utils/reply-ledger.d.ts.map +1 -0
  318. package/dist/cli/utils/reply-ledger.js +187 -0
  319. package/dist/lib/cli-tools/copilot-executable.d.ts +9 -0
  320. package/dist/lib/cli-tools/copilot-executable.d.ts.map +1 -1
  321. package/dist/lib/cli-tools/copilot-executable.js +21 -5
  322. package/dist/lib/cli-tools/opencode-executable.d.ts +103 -0
  323. package/dist/lib/cli-tools/opencode-executable.d.ts.map +1 -0
  324. package/dist/lib/cli-tools/opencode-executable.js +179 -0
  325. package/dist/lib/cli-tools/types.d.ts +1 -1
  326. package/dist/lib/cli-tools/types.d.ts.map +1 -1
  327. package/dist/lib/cli-tools/types.js +5 -1
  328. package/dist/lib/detection/tools/verified-against.d.ts +15 -0
  329. package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
  330. package/dist/lib/detection/tools/verified-against.js +17 -1
  331. package/dist/lib/detection/version-probes.d.ts.map +1 -1
  332. package/dist/lib/detection/version-probes.js +14 -1
  333. package/dist/lib/session/tmux-session-surface.d.ts.map +1 -1
  334. package/dist/lib/session/tmux-session-surface.js +1 -1
  335. package/dist/server/locales/en/worktree.json +44 -14
  336. package/dist/server/locales/ja/worktree.json +44 -14
  337. package/dist/server/server.js +23 -0
  338. package/dist/server/src/config/cli-tool-timing-config.js +19 -1
  339. package/dist/server/src/config/detection-evidence-config.js +3 -0
  340. package/dist/server/src/config/schedule-config.js +55 -1
  341. package/dist/server/src/lib/auto-yes-poller.js +47 -4
  342. package/dist/server/src/lib/cli-tools/agent-mode-spec.js +54 -2
  343. package/dist/server/src/lib/cli-tools/base.js +6 -2
  344. package/dist/server/src/lib/cli-tools/command-code.js +55 -1
  345. package/dist/server/src/lib/cli-tools/composer-spec.js +10 -0
  346. package/dist/server/src/lib/cli-tools/copilot-executable.js +21 -5
  347. package/dist/server/src/lib/cli-tools/graceful-exit.js +15 -1
  348. package/dist/server/src/lib/cli-tools/index.js +3 -1
  349. package/dist/server/src/lib/cli-tools/install-hints.js +9 -3
  350. package/dist/server/src/lib/cli-tools/liveness-spec.js +19 -0
  351. package/dist/server/src/lib/cli-tools/manager.js +2 -0
  352. package/dist/server/src/lib/cli-tools/opencode-executable.js +179 -0
  353. package/dist/server/src/lib/cli-tools/opencode-v2.js +369 -0
  354. package/dist/server/src/lib/cli-tools/opencode.js +29 -5
  355. package/dist/server/src/lib/cli-tools/types.js +5 -1
  356. package/dist/server/src/lib/cmate-cli-tool-parser.js +65 -7
  357. package/dist/server/src/lib/cmate-parser.js +12 -0
  358. package/dist/server/src/lib/cmate-validator.js +13 -1
  359. package/dist/server/src/lib/detection/cli-patterns.js +78 -2
  360. package/dist/server/src/lib/detection/model-info-extractor.js +79 -7
  361. package/dist/server/src/lib/detection/status-detector.js +10 -1
  362. package/dist/server/src/lib/detection/tools/codex/cli-patterns.js +2 -1
  363. package/dist/server/src/lib/detection/tools/opencode-v2/detect.js +253 -0
  364. package/dist/server/src/lib/detection/tools/opencode-v2/dialog-title.js +48 -0
  365. package/dist/server/src/lib/detection/tools/registry.js +2 -0
  366. package/dist/server/src/lib/detection/tools/run-detection.js +9 -0
  367. package/dist/server/src/lib/detection/tools/verified-against.js +17 -1
  368. package/dist/server/src/lib/detection/upstream-faults.js +8 -0
  369. package/dist/server/src/lib/detection/version-probes.js +14 -1
  370. package/dist/server/src/lib/hooks/agent-session-telemetry.js +36 -1
  371. package/dist/server/src/lib/hooks/sources/opencode/log-diagnosis.js +105 -0
  372. package/dist/server/src/lib/hooks/sources/opencode/source.js +7 -1
  373. package/dist/server/src/lib/hooks/sources/opencode-v2/client.js +422 -0
  374. package/dist/server/src/lib/hooks/sources/opencode-v2/decision-labels.js +24 -0
  375. package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +421 -0
  376. package/dist/server/src/lib/hooks/sources/opencode-v2/ingest.js +271 -0
  377. package/dist/server/src/lib/hooks/sources/opencode-v2/mappers.js +165 -0
  378. package/dist/server/src/lib/hooks/sources/opencode-v2/payloads.js +351 -0
  379. package/dist/server/src/lib/hooks/sources/opencode-v2/ports.js +230 -0
  380. package/dist/server/src/lib/hooks/sources/opencode-v2/reattach.js +149 -0
  381. package/dist/server/src/lib/hooks/sources/opencode-v2/runtime.js +180 -0
  382. package/dist/server/src/lib/hooks/sources/opencode-v2/secrets.js +182 -0
  383. package/dist/server/src/lib/hooks/sources/opencode-v2/source.js +295 -0
  384. package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +455 -0
  385. package/dist/server/src/lib/hooks/sources/opencode-v2/tool-id.js +18 -0
  386. package/dist/server/src/lib/hooks/sources/opencode-v2/usage.js +214 -0
  387. package/dist/server/src/lib/hooks/sources/registry.js +2 -0
  388. package/dist/server/src/lib/hooks/structured-decision-response.js +14 -5
  389. package/dist/server/src/lib/job-executor.js +2 -1
  390. package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +15 -1
  391. package/dist/server/src/lib/polling/structured-history-gate.js +19 -5
  392. package/dist/server/src/lib/relay/relay-delivery.js +4 -1
  393. package/dist/server/src/lib/session/agent-event-state.js +24 -0
  394. package/dist/server/src/lib/session/claude-executor.js +184 -10
  395. package/dist/server/src/lib/session/current-output-builder.js +27 -3
  396. package/dist/server/src/lib/session/send-user-message.js +4 -0
  397. package/dist/server/src/lib/session/structured-prompt.js +54 -0
  398. package/dist/server/src/lib/session/tmux-session-surface.js +1 -1
  399. package/dist/server/src/lib/skills/compatibility-matrix.js +65 -0
  400. package/dist/server/src/lib/tmux/tmux.js +48 -2
  401. package/dist/server/src/lib/verification/env-clean-gate.js +87 -5
  402. package/dist/server/src/types/cli-tool-contracts.js +10 -2
  403. package/dist/types/cli-tool-contracts.d.ts +16 -5
  404. package/dist/types/cli-tool-contracts.d.ts.map +1 -1
  405. package/dist/types/cli-tool-contracts.js +10 -2
  406. package/package.json +2 -1
  407. package/release-notes/0.43.0.json +130 -0
  408. package/scripts/hooks/cmate-agent-event.sh +14 -0
  409. package/scripts/opencode-v2/launch.sh +226 -0
  410. package/.next/server/chunks/4443.js +0 -3
  411. package/.next/server/chunks/5164.js +0 -1
  412. package/.next/server/chunks/650.js +0 -1
  413. package/.next/static/chunks/5449-550bd273dccc3ae4.js +0 -1
  414. package/.next/static/chunks/7705-2a2936551b0cf9a3.js +0 -1
  415. package/.next/static/chunks/8165-934ee7ff3b4ddfd4.js +0 -1
  416. package/.next/static/chunks/app/review/page-30616daa1dc595c2.js +0 -1
  417. package/.next/static/chunks/app/skills/[skillId]/page-ab7e432b69fccb3b.js +0 -1
  418. package/.next/static/chunks/app/skills/page-56b4fa11223e0cbd.js +0 -1
  419. package/.next/static/chunks/app/worktrees/[id]/page-59f5337e031518c6.js +0 -1
  420. /package/.next/static/{MXZXkcFAnpELZnxxHB4iJ → BVkBYdceLRvMROqQIqeBx}/_buildManifest.js +0 -0
  421. /package/.next/static/{MXZXkcFAnpELZnxxHB4iJ → BVkBYdceLRvMROqQIqeBx}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=3543,exports.ids=[3543],exports.modules={73543:a=>{a.exports=JSON.parse('{"sessions":{"idleAgents":"{count} idle","activeAgents":"{count} active","title":"Sessions","description":"All worktree sessions across repositories.","filterPlaceholder":"Filter by name or repository...","filterAriaLabel":"Filter sessions by name or repository","sortByAriaLabel":"Sort by","sortAscending":"Sort ascending","sortDescending":"Sort descending","loadingAriaLabel":"Loading sessions","refreshError":"Failed to refresh sessions: {message}","loadError":"Failed to load sessions: {message}","noMatching":"No matching sessions found.","empty":"No sessions yet.","viewMode":{"groupAriaLabel":"Session layout","list":"List view","tile":"Tile view"},"tileAriaLabel":"Session tile for {branch}","tileInstanceAriaLabel":"Agent instance shown in this tile"},"nav":{"sessions":"Sessions","repositories":"Repositories","repositoriesShort":"Repos","review":"Review","reviewReport":"Review/Report","more":"Settings","skills":"Skills"},"repositories":{"empty":"No repositories registered yet.","add":"Add Repository","syncAll":"Sync All","syncing":"Syncing...","addNewTitle":"Add New Repository","localPathTab":"Local Path","cloneUrlTab":"Clone URL","localPathDescription":"Enter the absolute path to a git repository containing worktrees.","localPathLabel":"Repository Path","localPathExample":"Example: {example}","localPathAllowedRoots":"Allowed roots: {roots}","browse":"Browse…","pickerTitle":"Select a repository folder","pickerRootsLabel":"Allowed roots","pickerRecentLabel":"Recently used","pickerSelectHere":"Select this folder","pickerUp":"Up one level","pickerEmpty":"No subfolders here.","pickerTruncated":"Showing the first {limit} folders only.","pickerLoading":"Loading…","pickerWorktreeCount":"{count} worktree(s)","validationGitRepo":"Git repository detected ({count} worktree(s))","validationNotGitRepo":"This folder is not a git repository.","validationNotFound":"This folder does not exist.","validationOutsideRoots":"Outside the allowed roots ({roots}).","scan":"Scan & Add","scanning":"Scanning...","cloneUrlDescription":"Enter a git clone URL to clone a remote repository.","cloneUrlLabel":"Clone URL","cloneUrlHelp":"Supports HTTPS and SSH URLs","clone":"Clone","forkAndClone":"Fork & Add","forkOptionLabel":"Fork before adding (gh repo fork)","forkOptionHelp":"Creates a fork in your GitHub account and clones that (origin = your fork, upstream = original). Requires an authenticated GitHub CLI (gh).","cloning":"Cloning...","cloneSuccess":"Repository cloned successfully","cloneFailed":"Clone failed","pathRequired":"Repository path is required","urlRequired":"Clone URL is required","urlInvalid":"Invalid URL format","loading":"Loading repositories","filterAll":"All ({count})","filterDisabled":"Disabled ({count})","emptyDisabled":"No repositories are excluded from scans.","disableConfirmTitle":"Exclude from scans?","disableConfirmBody":"\\"{name}\\" will no longer be scanned for worktrees.\\n\\nNothing is deleted: its {count} worktree(s) and their chat history, tasks and verification runs stay in the database, and any tmux session running under it keeps running.\\n\\nIts worktrees also stay in the sidebar — use the Visibility toggle to hide them.","disableConfirmAction":"Exclude from scans","disableSuccess":"\\"{name}\\" is excluded from scans.","enableSuccess":"\\"{name}\\" is scanned again ({count} worktree(s)).","duplicateScanRootWarning":"Same git repository as an existing scan root: {paths}. Both will be scanned, and every worktree they share will be registered twice.","duplicateConfirmTitle":"Register a second scan root for the same repository?","duplicateConfirmBody":"\\"{path}\\" is the same git repository as:\\n{paths}\\n\\nBoth roots list the same worktrees, so every sync registers each of them twice and their \\"repository path\\" flips between the roots run to run.\\n\\nThis is allowed — continue if you want to manage these worktrees as separate roots. Otherwise cancel, or use the Scan toggle on the Repositories list to exclude one of them later.","duplicateConfirmAction":"Add anyway","duplicateRowBadge":"Duplicate scan root","duplicateRowDetail":"Same git repository as {paths}. Use the Scan toggle on one of these rows to exclude it from scans."},"cancel":"Cancel","sending":"Sending...","end":"End","ending":"Ending...","retry":"Retry","reload":"Reload","reconnect":"Reconnect","close":"Close","back":"Back","menu":"Menu","sidebar":{"open":"Open sidebar","close":"Close sidebar","branchNavigation":"Branch navigation","branches":"Branches","searchBranches":"Search branches...","noBranchesFound":"No branches found","noBranchesAvailable":"No branches available","loadingBranches":"Loading branches...","branchesLoadFailed":"Failed to load branches","retryLoadBranches":"Retry","dragToReorderGroup":"Drag to reorder group","viewLabel":"View","viewMode":{"grouped":"Repository","flat":"Branch","sessions":"Session"}},"confirmDelete":"Delete \\"{name}\\"?","favorites":{"add":"Add to favorites","remove":"Remove from favorites"},"syncSuccess":"Synced {count} worktrees","syncError":"Sync failed","syncAuthError":"Authentication error","syncButtonLabel":"Sync branches","tooltips":{"sync":"Sync worktrees"},"displaySize":{"ariaLabel":"Display size","large":"Large","medium":"Medium","small":"Small","xsmall":"Extra small"},"repoTabBar":{"settingLabel":"Repository tabs","overflow":"More repositories","mode":{"always":"Always show","collapsed":"Only when the sidebar is collapsed","hidden":"Hidden"}},"confirmDialog":{"title":"Confirm","confirm":"OK"},"language":"Language","loadingPage":"Loading page","closeNotification":"Close notification","status":{"idle":"Idle","ready":"Ready","running":"Running","generating":"Generating","waiting":"Waiting for response","error":"Error","unknown":"Unknown"},"sort":{"options":"Sort options","updatedAt":"Updated","repositoryName":"Repository name","branchName":"Branch name","status":"Status","lastSent":"Last Sent","label":"Sort","sortBy":"Sort by {label}","ascending":"Sort ascending","descending":"Sort descending","ascShort":"ASC","descShort":"DESC","direction":{"newestFirst":"Newest first","oldestFirst":"Oldest first","aToZ":"A→Z","zToA":"Z→A","attentionFirst":"Needs attention first","attentionLast":"Needs attention last"}},"branchItem":{"cliToolStatus":"CLI tool status","hasUnread":"Has unread messages","agentExited":"exited"},"connection":{"reconnecting":"Reconnecting","offline":"Offline","reconnectingTooltip":"Re-establishing the live connection (running on polling)","offlineTooltip":"No live connection (running on polling)"},"versionMismatch":{"title":"A new version is running","description":"The server is now on {serverVersion}, but this tab is still on {clientVersion}. Reload to get the latest.","reload":"Reload","dismiss":"Dismiss"},"whatsNew":{"title":"What\'s new (v{from} → v{to})","highlight":"Highlights","added":"New","improved":"Improved","fixed":"Fixed","empty":"See the release page for the details of this update.","releaseLink":"Open the release page","close":"Close"},"meta":{"description":"Git worktree management with Claude CLI and tmux sessions"},"attention":{"label":"Needs attention","badgeLabel":"{count} worktrees need your attention"},"agentUpdates":{"title":"Agent CLI versions","description":"Installed versions of the agent CLIs on this machine. The update runs outside the agent pane, so a session that is already open is not interrupted.","installed":"installed {version}","notInstalled":"Not installed","available":"Update available: {version}","dismissed":"Marked as dismissed in codex","update":"Update","updating":"Updating...","running":"Running: {command}","succeeded":"Updated {from} to {to}.","failed":"Update failed: {error}","restartWarning":"These sessions keep the current version until they are restarted: {sessions}","restartNotice":"A session that is already running keeps its current version until it is restarted.","restart":"Restart {alias}","restarted":"Ended. The next message starts it on the new version.","restartError":"Could not restart the session.","loadError":"Could not read the agent CLI versions."},"settings":{"title":"Settings","pageDescription":"Defaults for new branches, notifications, external apps, and more.","sections":{"quickLinks":"Quick Links","general":"General","notifications":"Notifications","externalApps":"External Apps","about":"About"},"categoriesLabel":"Settings categories","defaultSurfaceMode":{"title":"Default output surface","description":"Which surface a session\'s output half opens in: the live terminal, or the conversation transcript. You can still switch either way from the session header.","appliesToNew":"Only affects surfaces you have not switched yet. A split or phone tab you already toggled keeps the mode you left it in.","mode":{"terminal":"Terminal","chat":"Chat"},"hint":{"terminal":"The agent\'s terminal, exactly as it is drawn in tmux.","chat":"The conversation transcript, as a message list."},"saving":"Saving...","saved":"Saved","configured":"Configured","usingBuiltIn":"Using the built-in default","saveError":"Could not save.","loadError":"Could not load the setting."},"defaultAgents":{"title":"Default agents for new branches","description":"The agents a newly discovered branch opens with, in order. The first one is the primary — the tab that opens first and the default target for sends.","appliesToNew":"Existing branches are left alone. Their tabs stay exactly as they are.","primary":"primary","installed":"Installed","notInstalled":"Not installed","addLabel":"Available to add","add":"Add","remove":"Remove","moveUp":"Move up","moveDown":"Move down","save":"Save","saving":"Saving...","saved":"Saved","reset":"Reset to default","builtIn":"Built-in default: {agents}","configured":"Configured","usingBuiltIn":"Using the built-in default","range":"Select between {min} and {max} agents.","saveError":"Could not save.","loadError":"Could not load the setting."}}}')}};
1
+ "use strict";exports.id=3543,exports.ids=[3543],exports.modules={73543:a=>{a.exports=JSON.parse('{"sessions":{"idleAgents":"{count} idle","activeAgents":"{count} active","title":"Sessions","description":"All worktree sessions across repositories.","filterPlaceholder":"Filter by name or repository...","filterAriaLabel":"Filter sessions by name or repository","sortByAriaLabel":"Sort by","sortAscending":"Sort ascending","sortDescending":"Sort descending","loadingAriaLabel":"Loading sessions","refreshError":"Failed to refresh sessions: {message}","loadError":"Failed to load sessions: {message}","noMatching":"No matching sessions found.","empty":"No sessions yet.","viewMode":{"groupAriaLabel":"Session layout","list":"List view","tile":"Tile view"},"tileAriaLabel":"Session tile for {branch}","tileInstanceAriaLabel":"Agent instance shown in this tile"},"nav":{"sessions":"Sessions","repositories":"Repositories","repositoriesShort":"Repos","review":"Review","reviewReport":"Review/Report","more":"Settings","skills":"Skills"},"repositories":{"empty":"No repositories registered yet.","add":"Add Repository","syncAll":"Sync All","syncing":"Syncing...","addNewTitle":"Add New Repository","localPathTab":"Local Path","cloneUrlTab":"Clone URL","localPathDescription":"Enter the absolute path to a git repository containing worktrees.","localPathLabel":"Repository Path","localPathExample":"Example: {example}","localPathAllowedRoots":"Allowed roots: {roots}","browse":"Browse…","pickerTitle":"Select a repository folder","pickerRootsLabel":"Allowed roots","pickerRecentLabel":"Recently used","pickerSelectHere":"Select this folder","pickerUp":"Up one level","pickerEmpty":"No subfolders here.","pickerTruncated":"Showing the first {limit} folders only.","pickerLoading":"Loading…","pickerWorktreeCount":"{count} worktree(s)","validationGitRepo":"Git repository detected ({count} worktree(s))","validationNotGitRepo":"This folder is not a git repository.","validationNotFound":"This folder does not exist.","validationOutsideRoots":"Outside the allowed roots ({roots}).","scan":"Scan & Add","scanning":"Scanning...","cloneUrlDescription":"Enter a git clone URL to clone a remote repository.","cloneUrlLabel":"Clone URL","cloneUrlHelp":"Supports HTTPS and SSH URLs","clone":"Clone","forkAndClone":"Fork & Add","forkOptionLabel":"Fork before adding (gh repo fork)","forkOptionHelp":"Creates a fork in your GitHub account and clones that (origin = your fork, upstream = original). Requires an authenticated GitHub CLI (gh).","cloning":"Cloning...","cloneSuccess":"Repository cloned successfully","cloneFailed":"Clone failed","pathRequired":"Repository path is required","urlRequired":"Clone URL is required","urlInvalid":"Invalid URL format","loading":"Loading repositories","filterAll":"All ({count})","filterDisabled":"Disabled ({count})","emptyDisabled":"No repositories are excluded from scans.","disableConfirmTitle":"Exclude from scans?","disableConfirmBody":"\\"{name}\\" will no longer be scanned for worktrees.\\n\\nNothing is deleted: its {count} worktree(s) and their chat history, tasks and verification runs stay in the database, and any tmux session running under it keeps running.\\n\\nIts worktrees also stay in the sidebar — use the Visibility toggle to hide them.","disableConfirmAction":"Exclude from scans","disableSuccess":"\\"{name}\\" is excluded from scans.","enableSuccess":"\\"{name}\\" is scanned again ({count} worktree(s)).","duplicateScanRootWarning":"Same git repository as an existing scan root: {paths}. Both will be scanned, and every worktree they share will be registered twice.","duplicateConfirmTitle":"Register a second scan root for the same repository?","duplicateConfirmBody":"\\"{path}\\" is the same git repository as:\\n{paths}\\n\\nBoth roots list the same worktrees, so every sync registers each of them twice and their \\"repository path\\" flips between the roots run to run.\\n\\nThis is allowed — continue if you want to manage these worktrees as separate roots. Otherwise cancel, or use the Scan toggle on the Repositories list to exclude one of them later.","duplicateConfirmAction":"Add anyway","duplicateRowBadge":"Duplicate scan root","duplicateRowDetail":"Same git repository as {paths}. Use the Scan toggle on one of these rows to exclude it from scans."},"cancel":"Cancel","sending":"Sending...","end":"End","ending":"Ending...","retry":"Retry","reload":"Reload","reconnect":"Reconnect","close":"Close","back":"Back","menu":"Menu","sidebar":{"open":"Open sidebar","close":"Close sidebar","branchNavigation":"Branch navigation","branches":"Branches","searchBranches":"Search branches...","noBranchesFound":"No branches found","noBranchesAvailable":"No branches available","loadingBranches":"Loading branches...","branchesLoadFailed":"Failed to load branches","retryLoadBranches":"Retry","dragToReorderGroup":"Drag to reorder group","viewLabel":"View","viewMode":{"grouped":"Repository","flat":"Branch","sessions":"Session"}},"confirmDelete":"Delete \\"{name}\\"?","favorites":{"add":"Add to favorites","remove":"Remove from favorites"},"syncSuccess":"Synced {count} worktrees","syncError":"Sync failed","syncAuthError":"Authentication error","syncButtonLabel":"Sync branches","tooltips":{"sync":"Sync worktrees"},"displaySize":{"ariaLabel":"Display size","large":"Large","medium":"Medium","small":"Small","xsmall":"Extra small"},"repoTabBar":{"settingLabel":"Repository tabs","overflow":"More repositories","mode":{"always":"Always show","collapsed":"Only when the sidebar is collapsed","hidden":"Hidden"}},"confirmDialog":{"title":"Confirm","confirm":"OK"},"language":"Language","loadingPage":"Loading page","closeNotification":"Close notification","status":{"idle":"Idle","ready":"Ready","running":"Running","generating":"Generating","waiting":"Waiting for response","error":"Error","unknown":"Unknown"},"sort":{"options":"Sort options","updatedAt":"Updated","repositoryName":"Repository name","branchName":"Branch name","status":"Status","lastSent":"Last Sent","label":"Sort","sortBy":"Sort by {label}","ascending":"Sort ascending","descending":"Sort descending","ascShort":"ASC","descShort":"DESC","direction":{"newestFirst":"Newest first","oldestFirst":"Oldest first","aToZ":"A→Z","zToA":"Z→A","attentionFirst":"Needs attention first","attentionLast":"Needs attention last"}},"branchItem":{"cliToolStatus":"CLI tool status","hasUnread":"Has unread messages","agentExited":"exited"},"connection":{"reconnecting":"Reconnecting","offline":"Offline","reconnectingTooltip":"Re-establishing the live connection (running on polling)","offlineTooltip":"No live connection (running on polling)"},"versionMismatch":{"title":"A new version is running","description":"The server is now on {serverVersion}, but this tab is still on {clientVersion}. Reload to get the latest.","reload":"Reload","dismiss":"Dismiss"},"whatsNew":{"title":"What\'s new (v{from} → v{to})","highlight":"Highlights","added":"New","improved":"Improved","fixed":"Fixed","empty":"See the release page for the details of this update.","releaseLink":"Open the release page","close":"Close"},"meta":{"description":"Git worktree management with Claude CLI and tmux sessions"},"attention":{"label":"Needs attention","badgeLabel":"{count} worktrees need your attention"},"agentUpdates":{"title":"Agent CLI versions","description":"Installed versions of the agent CLIs on this machine. The update runs outside the agent pane, so a session that is already open is not interrupted.","installed":"installed {version}","notInstalled":"Not installed","available":"Update available: {version}","dismissed":"Marked as dismissed in codex","update":"Update","updating":"Updating...","running":"Running: {command}","succeeded":"Updated {from} to {to}.","failed":"Update failed: {error}","restartWarning":"These sessions keep the current version until they are restarted: {sessions}","restartNotice":"A session that is already running keeps its current version until it is restarted.","restart":"Restart {alias}","restarted":"Ended. The next message starts it on the new version.","restartError":"Could not restart the session.","loadError":"Could not read the agent CLI versions."},"settings":{"title":"Settings","pageDescription":"Defaults for new branches, notifications, external apps, and more.","sections":{"quickLinks":"Quick Links","general":"General","notifications":"Notifications","externalApps":"External Apps","about":"About"},"categoriesLabel":"Settings categories","defaultSurfaceMode":{"title":"Default output surface","description":"Which surface a session\'s output half opens in: the live terminal, or the conversation transcript. You can still switch either way from the session header.","appliesToNew":"Only affects surfaces you have not switched yet. A split or phone tab you already toggled keeps the mode you left it in.","mode":{"terminal":"Terminal","chat":"Chat"},"hint":{"terminal":"The agent\'s terminal, exactly as it is drawn in tmux.","chat":"The conversation transcript, as a message list."},"saving":"Saving...","saved":"Saved","configured":"Configured","usingBuiltIn":"Using the built-in default","saveError":"Could not save.","loadError":"Could not load the setting."},"defaultAgents":{"title":"Default agents for new branches","description":"The agents a newly discovered branch opens with, in order. The first one is the primary — the tab that opens first and the default target for sends.","appliesToNew":"Existing branches are left alone. Their tabs stay exactly as they are.","primary":"primary","installed":"Installed","notInstalled":"Not installed","addLabel":"Available to add","add":"Add","remove":"Remove","moveUp":"Move up","moveDown":"Move down","save":"Save","saving":"Saving...","saved":"Saved","reset":"Reset to default","builtIn":"Built-in default: {agents}","configured":"Configured","usingBuiltIn":"Using the built-in default","range":"Select between {min} and {max} agents.","saveError":"Could not save.","loadError":"Could not load the setting.","opencodeSharedData":"OpenCode and OpenCode V2 are both installed. They share ~/.local/share/opencode, and V2 changes the database in ways OpenCode 1.x cannot read — if OpenCode fails to start, use OpenCode V2 only or give OpenCode 1.x its own data directory."}}}')}};
@@ -1 +1 @@
1
- "use strict";exports.id=3730,exports.ids=[3730],exports.modules={90277:(a,b,c)=>{c.d(b,{Vt:()=>f,aN:()=>g,zK:()=>l,I_:()=>h,JY:()=>i,sd:()=>j,kj:()=>k});let d=/^[a-zA-Z0-9][a-zA-Z0-9\-._/:]*$/,e=/^[a-zA-Z0-9][a-zA-Z0-9\-._]*$/,f=new Set(["copilot","opencode"]),g=new Set(["opencode"]);function h(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}:f.has(e)?g.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`}}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.test(a)?a.length>128?{valid:!1,reason:"Model name exceeds 128 characters"}:{valid:!0}:{valid:!1,reason:"Model name contains invalid characters"}}function j(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`}:e.test(a)?a.length>64?{valid:!1,reason:`opencode ${b} exceeds 64 characters`}:{valid:!0}:{valid:!1,reason:`opencode ${b} contains invalid characters`}}function k(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 l(a){let b=[],c=h(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=j(c.agent,"agent");a.valid||b.push(a.reason)}if(c.variant){let a=j(c.variant,"variant");a.valid||b.push(a.reason)}if(c.title){let a=k(c.title);a.valid||b.push(a.reason)}return{result:c,errors:b}}},99772:(a,b,c)=>{c.d(b,{q:()=>f});var d=c(38301),e=c(58970);function f(a=e.pX){let[b,c]=(0,d.useState)(!1),g=(0,d.useRef)(null);return{copied:b,markCopied:(0,d.useCallback)(()=>{c(!0),null!==g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{g.current=null,c(!1)},a)},[a]),reset:(0,d.useCallback)(()=>{null!==g.current&&(clearTimeout(g.current),g.current=null),c(!1)},[])}}}};
1
+ "use strict";exports.id=3730,exports.ids=[3730],exports.modules={90277:(a,b,c)=>{c.d(b,{Vt:()=>f,aN:()=>g,zK:()=>n,I_:()=>j,JY:()=>k,sd:()=>l,kj:()=>m,z7:()=>i});let d=/^[a-zA-Z0-9][a-zA-Z0-9\-._/:]*$/,e=/^[a-zA-Z0-9][a-zA-Z0-9\-._]*$/,f=new Set(["copilot","opencode","opencode-v2"]),g=new Set(["opencode","opencode-v2"]),h=new Set(["opencode-v2"]);function i(a,b,c){if(h.has(a)&&!(!c?.trim()||b?.trim()))return`${a} option "--variant" needs "--model" (sent as -m <provider/model>#<variant>)`}function j(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}:f.has(e)?g.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:{let b="opencode-v2"===a?"opencode-v2 [--model <provider/model> [--variant <name>]] [--agent <name>] [--continue] [--title <text>]":"opencode [--model <provider/model>] [--agent <name>] [--variant <name>] [--continue] [--title <text>]";return{cliToolId:a,error:`${a} only supports: ${b}`}}}}let f=i(a,c.model,c.variant);return f?{cliToolId:a,error:f}: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`}}function k(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.test(a)?a.length>128?{valid:!1,reason:"Model name exceeds 128 characters"}:{valid:!0}:{valid:!1,reason:"Model name contains invalid characters"}}function l(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`}:e.test(a)?a.length>64?{valid:!1,reason:`opencode ${b} exceeds 64 characters`}:{valid:!0}:{valid:!1,reason:`opencode ${b} contains invalid characters`}}function m(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 n(a){let b=[],c=j(a);if(c.error&&b.push(c.error),c.model){let a=k(c.model);a.valid||b.push(a.reason)}if(c.agent){let a=l(c.agent,"agent");a.valid||b.push(a.reason)}if(c.variant){let a=l(c.variant,"variant");a.valid||b.push(a.reason)}if(c.title){let a=m(c.title);a.valid||b.push(a.reason)}return{result:c,errors:b}}},99772:(a,b,c)=>{c.d(b,{q:()=>f});var d=c(38301),e=c(58970);function f(a=e.pX){let[b,c]=(0,d.useState)(!1),g=(0,d.useRef)(null);return{copied:b,markCopied:(0,d.useCallback)(()=>{c(!0),null!==g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{g.current=null,c(!1)},a)},[a]),reset:(0,d.useCallback)(()=>{null!==g.current&&(clearTimeout(g.current),g.current=null),c(!1)},[])}}}};
@@ -1 +1 @@
1
- "use strict";exports.id=3945,exports.ids=[3945],exports.modules={53945:a=>{a.exports=JSON.parse('{"sessions":{"idleAgents":"アイドル {count} 件","activeAgents":"稼働 {count} 件","title":"セッション","description":"全リポジトリの worktree セッション。","filterPlaceholder":"名前またはリポジトリで絞り込み...","filterAriaLabel":"名前またはリポジトリでセッションを絞り込む","sortByAriaLabel":"並び替え","sortAscending":"昇順に並び替え","sortDescending":"降順に並び替え","loadingAriaLabel":"セッションを読み込み中","refreshError":"セッションの更新に失敗しました: {message}","loadError":"セッションの読み込みに失敗しました: {message}","noMatching":"一致するセッションがありません。","empty":"セッションがまだありません。","viewMode":{"groupAriaLabel":"セッションの表示形式","list":"リスト表示","tile":"タイル表示"},"tileAriaLabel":"{branch} のセッションタイル","tileInstanceAriaLabel":"このタイルに表示するエージェントインスタンス"},"nav":{"sessions":"セッション","repositories":"リポジトリ","repositoriesShort":"リポジトリ","review":"レビュー","reviewReport":"レビュー/レポート","more":"設定","skills":"スキル"},"repositories":{"empty":"リポジトリが登録されていません。","add":"リポジトリを追加","syncAll":"すべて同期","syncing":"同期中...","addNewTitle":"リポジトリを新規追加","localPathTab":"ローカルパス","cloneUrlTab":"クローン URL","localPathDescription":"worktree を含む git リポジトリの絶対パスを入力してください。","localPathLabel":"リポジトリパス","localPathExample":"例: {example}","localPathAllowedRoots":"許可ルート: {roots}","browse":"参照…","pickerTitle":"リポジトリのフォルダを選択","pickerRootsLabel":"許可ルート","pickerRecentLabel":"最近使ったパス","pickerSelectHere":"このフォルダを選択","pickerUp":"1 階層上へ","pickerEmpty":"サブフォルダがありません。","pickerTruncated":"先頭 {limit} 件のみ表示しています。","pickerLoading":"読み込み中…","pickerWorktreeCount":"worktree {count} 件","validationGitRepo":"git リポジトリです(worktree {count} 件検出)","validationNotGitRepo":"このフォルダは git リポジトリではありません。","validationNotFound":"このフォルダは存在しません。","validationOutsideRoots":"許可ルート外です({roots})。","scan":"スキャンして追加","scanning":"スキャン中...","cloneUrlDescription":"リモートリポジトリをクローンする git の URL を入力してください。","cloneUrlLabel":"クローン URL","cloneUrlHelp":"HTTPS と SSH の URL に対応しています","clone":"クローン","forkAndClone":"Fork して追加","forkOptionLabel":"追加前に fork する(gh repo fork)","forkOptionHelp":"自分の GitHub アカウントに fork を作成し、それをクローンします(origin=自分の fork、upstream=元リポジトリ)。認証済みの GitHub CLI(gh)が必要です。","cloning":"クローン中...","cloneSuccess":"リポジトリをクローンしました","cloneFailed":"クローンに失敗しました","pathRequired":"リポジトリパスを入力してください","urlRequired":"クローン URL を入力してください","urlInvalid":"URL の形式が正しくありません","loading":"リポジトリを読み込み中","filterAll":"すべて ({count})","filterDisabled":"無効化中 ({count})","emptyDisabled":"走査対象から外したリポジトリはありません。","disableConfirmTitle":"走査対象から外しますか?","disableConfirmBody":"「{name}」は今後 worktree の走査対象から外れます。\\n\\n削除は行いません: {count} 件の worktree と、そのチャット履歴・タスク・検証実行はデータベースに残り、稼働中の tmux セッションもそのまま動き続けます。\\n\\nworktree はサイドバーにも残ります。非表示にする場合は Visibility トグルを使ってください。","disableConfirmAction":"走査対象から外す","disableSuccess":"「{name}」を走査対象から外しました。","enableSuccess":"「{name}」を走査対象に戻しました (worktree {count} 件)。","duplicateScanRootWarning":"既存の scan root と同じ git リポジトリです: {paths}。両方が走査され、共有している worktree はすべて二重に登録されます。","duplicateConfirmTitle":"同じリポジトリの scan root をもう 1 つ登録しますか?","duplicateConfirmBody":"「{path}」は次と同じ git リポジトリです:\\n{paths}\\n\\nどちらの root も同じ worktree を列挙するため、同期のたびに各 worktree が二重に登録され、「リポジトリパス」が実行ごとに入れ替わります。\\n\\nこの登録自体は可能です。これらの worktree を別々の root として管理したい場合はそのまま続行してください。そうでなければキャンセルするか、後から Repositories 一覧の Scan トグルで片方を走査対象から外してください。","duplicateConfirmAction":"このまま追加","duplicateRowBadge":"scan root 重複","duplicateRowDetail":"{paths} と同じ git リポジトリです。どちらかの行の Scan トグルで走査対象から外せます。"},"cancel":"キャンセル","sending":"送信中...","end":"終了する","ending":"終了中...","retry":"再試行","reload":"再読み込み","reconnect":"再接続","close":"閉じる","back":"戻る","menu":"メニュー","sidebar":{"open":"サイドバーを開く","close":"サイドバーを閉じる","branchNavigation":"ブランチナビゲーション","branches":"ブランチ","searchBranches":"ブランチを検索...","noBranchesFound":"ブランチが見つかりません","noBranchesAvailable":"ブランチがありません","loadingBranches":"ブランチを読み込み中...","branchesLoadFailed":"ブランチを取得できませんでした","retryLoadBranches":"再試行","dragToReorderGroup":"ドラッグでグループを並べ替え","viewLabel":"表示","viewMode":{"grouped":"リポジトリ","flat":"ブランチ","sessions":"セッション"}},"confirmDelete":"「{name}」を削除しますか?","favorites":{"add":"お気に入りに追加","remove":"お気に入りを解除"},"syncSuccess":"{count}件のworktreeを同期しました","syncError":"同期に失敗しました","syncAuthError":"認証エラー","syncButtonLabel":"ブランチを同期","tooltips":{"sync":"worktree を同期"},"displaySize":{"ariaLabel":"表示サイズ","large":"大","medium":"中","small":"小","xsmall":"極小"},"repoTabBar":{"settingLabel":"リポジトリタブ帯","overflow":"ほかのリポジトリ","mode":{"always":"常に表示","collapsed":"サイドバー折りたたみ時のみ","hidden":"非表示"}},"confirmDialog":{"title":"確認","confirm":"OK"},"language":"言語","loadingPage":"ページを読み込み中","closeNotification":"通知を閉じる","status":{"idle":"アイドル","ready":"準備完了","running":"実行中","generating":"生成中","waiting":"応答待ち","error":"エラー","unknown":"不明"},"sort":{"options":"並び替えオプション","updatedAt":"更新日時","repositoryName":"リポジトリ名","branchName":"ブランチ名","status":"ステータス","lastSent":"最終送信","label":"並び","sortBy":"並び順: {label}","ascending":"昇順に並び替え","descending":"降順に並び替え","ascShort":"昇順","descShort":"降順","direction":{"newestFirst":"新しい順","oldestFirst":"古い順","aToZ":"A→Z","zToA":"Z→A","attentionFirst":"要対応が先","attentionLast":"要対応が後"}},"branchItem":{"cliToolStatus":"CLI ツールのステータス","hasUnread":"未読メッセージあり","agentExited":"終了"},"connection":{"reconnecting":"再接続中","offline":"オフライン","reconnectingTooltip":"ライブ接続を再確立しています(ポーリングで動作中)","offlineTooltip":"ライブ接続なし(ポーリングで動作中)"},"versionMismatch":{"title":"新しいバージョンが起動しています","description":"サーバーは {serverVersion} になりましたが、このタブは {clientVersion} のままです。最新の状態にするには再読み込みしてください。","reload":"再読み込み","dismiss":"閉じる"},"whatsNew":{"title":"新機能と改善(v{from} → v{to})","highlight":"ハイライト","added":"新機能","improved":"改善","fixed":"修正","empty":"この更新の詳細はリリースページをご覧ください。","releaseLink":"リリースページを開く","close":"閉じる"},"meta":{"description":"Claude CLI と tmux セッションによる Git worktree 管理"},"attention":{"label":"要対応","badgeLabel":"要対応のワークツリーが {count} 件あります"},"agentUpdates":{"title":"エージェント CLI のバージョン","description":"このマシンにインストールされているエージェント CLI のバージョンです。更新はエージェントの pane ではなく別プロセスで実行するため、開いているセッションは中断されません。","installed":"インストール済み {version}","notInstalled":"未インストール","available":"更新あり: {version}","dismissed":"codex 側で「見送り」扱いになっています","update":"更新する","updating":"更新中...","running":"実行中: {command}","succeeded":"{from} から {to} に更新しました。","failed":"更新に失敗しました: {error}","restartWarning":"次のセッションは再起動するまで現在のバージョンのままです: {sessions}","restartNotice":"すでに起動しているセッションは、再起動するまで現在のバージョンのままです。","restart":"{alias} を再起動","restarted":"終了しました。次のメッセージ送信で新しいバージョンが起動します。","restartError":"セッションを再起動できませんでした。","loadError":"エージェント CLI のバージョンを読み取れませんでした。"},"settings":{"title":"設定","pageDescription":"新しいブランチの既定、通知、外部アプリなどを設定します。","sections":{"quickLinks":"クイックリンク","general":"一般","notifications":"通知","externalApps":"External Apps","about":"About"},"categoriesLabel":"設定のカテゴリ","defaultSurfaceMode":{"title":"出力面の既定","description":"セッションの出力側を最初に何で開くかです。ターミナル(tmux の画面そのまま)か、チャット(会話の履歴)を選べます。開いたあとはセッションのヘッダーからいつでも切り替えられます。","appliesToNew":"まだ切り替えていない出力面にだけ効きます。すでに手で切り替えた split やスマホのタブは、そのときのモードのままです。","mode":{"terminal":"ターミナル","chat":"チャット"},"hint":{"terminal":"エージェントのターミナルを tmux の描画のまま表示します。","chat":"会話の履歴をメッセージ一覧として表示します。"},"saving":"保存中...","saved":"保存しました","configured":"設定済み","usingBuiltIn":"既定値を使用中","saveError":"保存に失敗しました。","loadError":"設定を読み込めませんでした。"},"defaultAgents":{"title":"新規ブランチの既定エージェント","description":"新しく見つかったブランチが最初に開くエージェントと、その並び順です。先頭が primary(最初に開くタブ / 送り先の既定)になります。","appliesToNew":"既存のブランチには適用されません。すでに開いているブランチのタブ構成はそのまま残ります。","primary":"primary","installed":"インストール済み","notInstalled":"未インストール","addLabel":"追加できるエージェント","add":"追加","remove":"削除","moveUp":"上へ","moveDown":"下へ","save":"保存","saving":"保存中...","saved":"保存しました","reset":"既定に戻す","builtIn":"既定値: {agents}","configured":"設定済み","usingBuiltIn":"既定値を使用中","range":"エージェントは {min} 〜 {max} 個で選択してください。","saveError":"保存に失敗しました。","loadError":"設定を読み込めませんでした。"}}}')}};
1
+ "use strict";exports.id=3945,exports.ids=[3945],exports.modules={53945:a=>{a.exports=JSON.parse('{"sessions":{"idleAgents":"アイドル {count} 件","activeAgents":"稼働 {count} 件","title":"セッション","description":"全リポジトリの worktree セッション。","filterPlaceholder":"名前またはリポジトリで絞り込み...","filterAriaLabel":"名前またはリポジトリでセッションを絞り込む","sortByAriaLabel":"並び替え","sortAscending":"昇順に並び替え","sortDescending":"降順に並び替え","loadingAriaLabel":"セッションを読み込み中","refreshError":"セッションの更新に失敗しました: {message}","loadError":"セッションの読み込みに失敗しました: {message}","noMatching":"一致するセッションがありません。","empty":"セッションがまだありません。","viewMode":{"groupAriaLabel":"セッションの表示形式","list":"リスト表示","tile":"タイル表示"},"tileAriaLabel":"{branch} のセッションタイル","tileInstanceAriaLabel":"このタイルに表示するエージェントインスタンス"},"nav":{"sessions":"セッション","repositories":"リポジトリ","repositoriesShort":"リポジトリ","review":"レビュー","reviewReport":"レビュー/レポート","more":"設定","skills":"スキル"},"repositories":{"empty":"リポジトリが登録されていません。","add":"リポジトリを追加","syncAll":"すべて同期","syncing":"同期中...","addNewTitle":"リポジトリを新規追加","localPathTab":"ローカルパス","cloneUrlTab":"クローン URL","localPathDescription":"worktree を含む git リポジトリの絶対パスを入力してください。","localPathLabel":"リポジトリパス","localPathExample":"例: {example}","localPathAllowedRoots":"許可ルート: {roots}","browse":"参照…","pickerTitle":"リポジトリのフォルダを選択","pickerRootsLabel":"許可ルート","pickerRecentLabel":"最近使ったパス","pickerSelectHere":"このフォルダを選択","pickerUp":"1 階層上へ","pickerEmpty":"サブフォルダがありません。","pickerTruncated":"先頭 {limit} 件のみ表示しています。","pickerLoading":"読み込み中…","pickerWorktreeCount":"worktree {count} 件","validationGitRepo":"git リポジトリです(worktree {count} 件検出)","validationNotGitRepo":"このフォルダは git リポジトリではありません。","validationNotFound":"このフォルダは存在しません。","validationOutsideRoots":"許可ルート外です({roots})。","scan":"スキャンして追加","scanning":"スキャン中...","cloneUrlDescription":"リモートリポジトリをクローンする git の URL を入力してください。","cloneUrlLabel":"クローン URL","cloneUrlHelp":"HTTPS と SSH の URL に対応しています","clone":"クローン","forkAndClone":"Fork して追加","forkOptionLabel":"追加前に fork する(gh repo fork)","forkOptionHelp":"自分の GitHub アカウントに fork を作成し、それをクローンします(origin=自分の fork、upstream=元リポジトリ)。認証済みの GitHub CLI(gh)が必要です。","cloning":"クローン中...","cloneSuccess":"リポジトリをクローンしました","cloneFailed":"クローンに失敗しました","pathRequired":"リポジトリパスを入力してください","urlRequired":"クローン URL を入力してください","urlInvalid":"URL の形式が正しくありません","loading":"リポジトリを読み込み中","filterAll":"すべて ({count})","filterDisabled":"無効化中 ({count})","emptyDisabled":"走査対象から外したリポジトリはありません。","disableConfirmTitle":"走査対象から外しますか?","disableConfirmBody":"「{name}」は今後 worktree の走査対象から外れます。\\n\\n削除は行いません: {count} 件の worktree と、そのチャット履歴・タスク・検証実行はデータベースに残り、稼働中の tmux セッションもそのまま動き続けます。\\n\\nworktree はサイドバーにも残ります。非表示にする場合は Visibility トグルを使ってください。","disableConfirmAction":"走査対象から外す","disableSuccess":"「{name}」を走査対象から外しました。","enableSuccess":"「{name}」を走査対象に戻しました (worktree {count} 件)。","duplicateScanRootWarning":"既存の scan root と同じ git リポジトリです: {paths}。両方が走査され、共有している worktree はすべて二重に登録されます。","duplicateConfirmTitle":"同じリポジトリの scan root をもう 1 つ登録しますか?","duplicateConfirmBody":"「{path}」は次と同じ git リポジトリです:\\n{paths}\\n\\nどちらの root も同じ worktree を列挙するため、同期のたびに各 worktree が二重に登録され、「リポジトリパス」が実行ごとに入れ替わります。\\n\\nこの登録自体は可能です。これらの worktree を別々の root として管理したい場合はそのまま続行してください。そうでなければキャンセルするか、後から Repositories 一覧の Scan トグルで片方を走査対象から外してください。","duplicateConfirmAction":"このまま追加","duplicateRowBadge":"scan root 重複","duplicateRowDetail":"{paths} と同じ git リポジトリです。どちらかの行の Scan トグルで走査対象から外せます。"},"cancel":"キャンセル","sending":"送信中...","end":"終了する","ending":"終了中...","retry":"再試行","reload":"再読み込み","reconnect":"再接続","close":"閉じる","back":"戻る","menu":"メニュー","sidebar":{"open":"サイドバーを開く","close":"サイドバーを閉じる","branchNavigation":"ブランチナビゲーション","branches":"ブランチ","searchBranches":"ブランチを検索...","noBranchesFound":"ブランチが見つかりません","noBranchesAvailable":"ブランチがありません","loadingBranches":"ブランチを読み込み中...","branchesLoadFailed":"ブランチを取得できませんでした","retryLoadBranches":"再試行","dragToReorderGroup":"ドラッグでグループを並べ替え","viewLabel":"表示","viewMode":{"grouped":"リポジトリ","flat":"ブランチ","sessions":"セッション"}},"confirmDelete":"「{name}」を削除しますか?","favorites":{"add":"お気に入りに追加","remove":"お気に入りを解除"},"syncSuccess":"{count}件のworktreeを同期しました","syncError":"同期に失敗しました","syncAuthError":"認証エラー","syncButtonLabel":"ブランチを同期","tooltips":{"sync":"worktree を同期"},"displaySize":{"ariaLabel":"表示サイズ","large":"大","medium":"中","small":"小","xsmall":"極小"},"repoTabBar":{"settingLabel":"リポジトリタブ帯","overflow":"ほかのリポジトリ","mode":{"always":"常に表示","collapsed":"サイドバー折りたたみ時のみ","hidden":"非表示"}},"confirmDialog":{"title":"確認","confirm":"OK"},"language":"言語","loadingPage":"ページを読み込み中","closeNotification":"通知を閉じる","status":{"idle":"アイドル","ready":"準備完了","running":"実行中","generating":"生成中","waiting":"応答待ち","error":"エラー","unknown":"不明"},"sort":{"options":"並び替えオプション","updatedAt":"更新日時","repositoryName":"リポジトリ名","branchName":"ブランチ名","status":"ステータス","lastSent":"最終送信","label":"並び","sortBy":"並び順: {label}","ascending":"昇順に並び替え","descending":"降順に並び替え","ascShort":"昇順","descShort":"降順","direction":{"newestFirst":"新しい順","oldestFirst":"古い順","aToZ":"A→Z","zToA":"Z→A","attentionFirst":"要対応が先","attentionLast":"要対応が後"}},"branchItem":{"cliToolStatus":"CLI ツールのステータス","hasUnread":"未読メッセージあり","agentExited":"終了"},"connection":{"reconnecting":"再接続中","offline":"オフライン","reconnectingTooltip":"ライブ接続を再確立しています(ポーリングで動作中)","offlineTooltip":"ライブ接続なし(ポーリングで動作中)"},"versionMismatch":{"title":"新しいバージョンが起動しています","description":"サーバーは {serverVersion} になりましたが、このタブは {clientVersion} のままです。最新の状態にするには再読み込みしてください。","reload":"再読み込み","dismiss":"閉じる"},"whatsNew":{"title":"新機能と改善(v{from} → v{to})","highlight":"ハイライト","added":"新機能","improved":"改善","fixed":"修正","empty":"この更新の詳細はリリースページをご覧ください。","releaseLink":"リリースページを開く","close":"閉じる"},"meta":{"description":"Claude CLI と tmux セッションによる Git worktree 管理"},"attention":{"label":"要対応","badgeLabel":"要対応のワークツリーが {count} 件あります"},"agentUpdates":{"title":"エージェント CLI のバージョン","description":"このマシンにインストールされているエージェント CLI のバージョンです。更新はエージェントの pane ではなく別プロセスで実行するため、開いているセッションは中断されません。","installed":"インストール済み {version}","notInstalled":"未インストール","available":"更新あり: {version}","dismissed":"codex 側で「見送り」扱いになっています","update":"更新する","updating":"更新中...","running":"実行中: {command}","succeeded":"{from} から {to} に更新しました。","failed":"更新に失敗しました: {error}","restartWarning":"次のセッションは再起動するまで現在のバージョンのままです: {sessions}","restartNotice":"すでに起動しているセッションは、再起動するまで現在のバージョンのままです。","restart":"{alias} を再起動","restarted":"終了しました。次のメッセージ送信で新しいバージョンが起動します。","restartError":"セッションを再起動できませんでした。","loadError":"エージェント CLI のバージョンを読み取れませんでした。"},"settings":{"title":"設定","pageDescription":"新しいブランチの既定、通知、外部アプリなどを設定します。","sections":{"quickLinks":"クイックリンク","general":"一般","notifications":"通知","externalApps":"External Apps","about":"About"},"categoriesLabel":"設定のカテゴリ","defaultSurfaceMode":{"title":"出力面の既定","description":"セッションの出力側を最初に何で開くかです。ターミナル(tmux の画面そのまま)か、チャット(会話の履歴)を選べます。開いたあとはセッションのヘッダーからいつでも切り替えられます。","appliesToNew":"まだ切り替えていない出力面にだけ効きます。すでに手で切り替えた split やスマホのタブは、そのときのモードのままです。","mode":{"terminal":"ターミナル","chat":"チャット"},"hint":{"terminal":"エージェントのターミナルを tmux の描画のまま表示します。","chat":"会話の履歴をメッセージ一覧として表示します。"},"saving":"保存中...","saved":"保存しました","configured":"設定済み","usingBuiltIn":"既定値を使用中","saveError":"保存に失敗しました。","loadError":"設定を読み込めませんでした。"},"defaultAgents":{"title":"新規ブランチの既定エージェント","description":"新しく見つかったブランチが最初に開くエージェントと、その並び順です。先頭が primary(最初に開くタブ / 送り先の既定)になります。","appliesToNew":"既存のブランチには適用されません。すでに開いているブランチのタブ構成はそのまま残ります。","primary":"primary","installed":"インストール済み","notInstalled":"未インストール","addLabel":"追加できるエージェント","add":"追加","remove":"削除","moveUp":"上へ","moveDown":"下へ","save":"保存","saving":"保存中...","saved":"保存しました","reset":"既定に戻す","builtIn":"既定値: {agents}","configured":"設定済み","usingBuiltIn":"既定値を使用中","range":"エージェントは {min} 〜 {max} 個で選択してください。","saveError":"保存に失敗しました。","loadError":"設定を読み込めませんでした。","opencodeSharedData":"OpenCode と OpenCode V2 が両方入っています。両者は ~/.local/share/opencode を共有しており、V2 が変えたデータベースを OpenCode(1.x)が読めずに起動に失敗することがあります。その場合は V2 だけを使うか、1.x のデータの置き場所を分けてください。"}}}')}};
@@ -1,5 +1,5 @@
1
- "use strict";exports.id=4207,exports.ids=[4207],exports.modules={20137:(a,b,c)=>{c.d(b,{Ar:()=>d,En:()=>k,Hf:()=>q,Tp:()=>j,Ww:()=>e,XI:()=>r,dq:()=>l,eb:()=>i,iI:()=>t,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=["default","standard","plan","auto-accept","dont-ask"],k="yolo",l=[k,...j],m=[],n=[],o=[],p=[],q={claude:"acceptEdits",codex:"workspace-write",gemini:"","vibe-local":"",opencode:"",copilot:"allow-all-tools",antigravity:"--dangerously-skip-permissions","command-code":k};function r(a){switch(a){case"claude":return f;case"codex":return g;case"copilot":return h;case"antigravity":return i;case"command-code":return l;case"gemini":return m;case"vibe-local":return n;case"opencode":return o;default:return p}}let s=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function t(a){return s.test(a)}},34207:(a,b,c)=>{c.d(b,{$2:()=>o,$g:()=>s,To:()=>n,V$:()=>u,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) ---"}let l={1:"error",3:"authentication failed",4:"permission denied",5:"rate limited",6:"connection error",7:"server error",8:"max turns reached",9:"no response",10:"insufficient credits",130:"interrupted"};function m(a){let b=null,c=[],d=0;for(let e of a.split("\n")){let a,f=e.trim();if(!f.startsWith("{"))continue;try{a=JSON.parse(f)}catch{continue}if("object"!=typeof a||null===a)continue;let g=a;if("result"===g.type){if("string"!=typeof g.subtype)continue;b={subtype:g.subtype,finalText:"string"==typeof g.finalText?g.finalText:"",..."string"==typeof g.error?{error:g.error}:{}};continue}if("event"!==g.type||"object"!=typeof g.event||null===g.event)continue;let h=g.event;if("tool_running"===h.type){d+=1;continue}"tool_hook_blocked"===h.type&&c.push({toolCallId:"string"==typeof h.toolCallId?h.toolCallId:null,toolName:"string"==typeof h.toolName&&""!==h.toolName?h.toolName:"(unnamed tool)",hookOutput:"string"==typeof h.hookOutput?h.hookOutput:""})}return{result:b,blockedToolCalls:c,startedToolCalls:d}}let n="Warning: command-code blocked ",o=1024,p=/^Warning: command-code blocked \d+ tool call\(s\) \(tool_hook_blocked\): /;function q(a,b){let c=(0,f.aJ)(a).replace(/[\x00-\x1f\x7f\s]+/g," ").trim();return c.length>b?`${c.slice(0,b)}…`:c}function r(a){let{blockedToolCalls:b,startedToolCalls:c}=a;if(0===b.length)return null;let d=new Map,e=new Map;for(let a of b){let b=q(a.toolName,80);d.set(b,(d.get(b)??0)+1);let c=q(a.hookOutput,300)||"(no hook output)",f=JSON.stringify([b,c]);e.has(f)||e.set(f,`Blocked ${b}: ${c}`)}let f=[...d].slice(0,5).map(([a,b])=>`${a} (${b})`);d.size>5&&f.push(`+${d.size-5} more`);let g=`${n}${b.length} tool call(s) (tool_hook_blocked): ${f.join(", ")}; ${c} tool call(s) ran`,h=[...e.values()].slice(0,5);return e.size>5&&h.push(`Blocked: +${e.size-5} more distinct reason(s)`),[g,...h]}function s(a){if("string"!=typeof a)return null;let b=a.indexOf("\n"),c=-1===b?a:a.slice(0,b);return p.test(c)?c:null}function t(a,b){let c=null!==b&&"success"!==b.subtype;if((null===a||0===a)&&!c)return null;let d=[];if(null!==a&&0!==a){let b=l[a];d.push(b?`exit ${a} (${b})`:`exit ${a}`)}return b&&(d.push(`subtype=${b.subtype}`),b.error&&d.push(b.error)),`Reason: command-code ${d.join(" / ")}`}async function u(a,b,c="claude",g,l){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"command-code":{let b=["-p",a,"--output-format","json"];return c===h.En?b.push("--yolo"):h.Tp.includes(c)?b.push("--permission-mode",c):b.push("--yolo"),b.push("--no-auto-update"),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,l);return new Promise(a=>{let g=function(a){switch(a){case"copilot":return"gh";case"antigravity":return"agy";case"command-code":return"commandcode";default:return a}}(c),h=(0,d.execFile)(g,n,{cwd:b,env:(0,e.hh)(),maxBuffer:0xa00000,timeout:l?.timeoutMs??9e5},(b,d,e)=>{if(b){let g=b.code,h="ERR_CHILD_PROCESS_STDIO_MAXBUFFER"===g,i=b.killed||"ETIMEDOUT"===g,j="command-code"===c?m(d||""):null,l=j?j.result:null,n=j?r(j):null,o="number"==typeof g?g:null,p=[...n??[],`Error: ${b.message}`,`Code: ${g??"unknown"}`,`Signal: ${b.signal??"none"}`,h?"Reason: stdout exceeded execFile maxBuffer (output_limit)":null,"command-code"===c?t(o,l):null].filter(a=>null!==a).join("\n"),q=l?l.finalText:d||"";a({output:k((0,f.aJ)([p,q?`
1
+ "use strict";exports.id=4207,exports.ids=[4207],exports.modules={20137:(a,b,c)=>{c.d(b,{Ar:()=>d,Cb:()=>v,En:()=>k,Fs:()=>q,Hf:()=>t,Tp:()=>j,Ww:()=>e,XI:()=>w,dq:()=>l,eb:()=>i,iI:()=>y,kd:()=>f,o1:()=>g,oN:()=>h,u7:()=>r});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=["default","standard","plan","auto-accept","dont-ask"],k="yolo",l=[k,...j],m=[],n=[],o=[],p="default",q="auto",r=[p,q],s=[],t={claude:"acceptEdits",codex:"workspace-write",gemini:"","vibe-local":"",opencode:"",copilot:"allow-all-tools",antigravity:"--dangerously-skip-permissions","command-code":k,"opencode-v2":p},u=[];function v(a){return!u.includes(a)}function w(a){switch(a){case"claude":return f;case"codex":return g;case"copilot":return h;case"antigravity":return i;case"command-code":return l;case"gemini":return m;case"vibe-local":return n;case"opencode":return o;case"opencode-v2":return r;default:return s}}let x=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function y(a){return x.test(a)}},34207:(a,b,c)=>{c.d(b,{$2:()=>s,$g:()=>w,To:()=>r,V$:()=>y,iv:()=>k,uv:()=>j});var d=c(79646),e=c(73434),f=c(20967),g=c(15194),h=c(20137),i=c(95759);let j=1e4,k=new Set(g.XH);function l(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) ---"}function m(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=n(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}function n(a){let b="object"==typeof a.error&&null!==a.error?a.error:{},c="string"==typeof b.name?b.name:"string"==typeof b.type?b.type:"error",d="object"==typeof b.data&&null!==b.data?b.data:{},e="string"==typeof d.message?d.message:"string"==typeof b.message?b.message:"";return e?`opencode error: ${c}: ${e}`:`opencode error: ${c}`}function o(a){let b=null;for(let c of a.split("\n")){let a=c.trim();if(a.startsWith("{"))try{let c=JSON.parse(a);"object"==typeof c&&null!==c&&(b=c)}catch{continue}}return b&&"error"===b.type?n(b):null}let p={1:"error",3:"authentication failed",4:"permission denied",5:"rate limited",6:"connection error",7:"server error",8:"max turns reached",9:"no response",10:"insufficient credits",130:"interrupted"};function q(a){let b=null,c=[],d=0;for(let e of a.split("\n")){let a,f=e.trim();if(!f.startsWith("{"))continue;try{a=JSON.parse(f)}catch{continue}if("object"!=typeof a||null===a)continue;let g=a;if("result"===g.type){if("string"!=typeof g.subtype)continue;b={subtype:g.subtype,finalText:"string"==typeof g.finalText?g.finalText:"",..."string"==typeof g.error?{error:g.error}:{}};continue}if("event"!==g.type||"object"!=typeof g.event||null===g.event)continue;let h=g.event;if("tool_running"===h.type){d+=1;continue}"tool_hook_blocked"===h.type&&c.push({toolCallId:"string"==typeof h.toolCallId?h.toolCallId:null,toolName:"string"==typeof h.toolName&&""!==h.toolName?h.toolName:"(unnamed tool)",hookOutput:"string"==typeof h.hookOutput?h.hookOutput:""})}return{result:b,blockedToolCalls:c,startedToolCalls:d}}let r="Warning: command-code blocked ",s=1024,t=/^Warning: command-code blocked \d+ tool call\(s\) \(tool_hook_blocked\): /;function u(a,b){let c=(0,f.aJ)(a).replace(/[\x00-\x1f\x7f\s]+/g," ").trim();return c.length>b?`${c.slice(0,b)}…`:c}function v(a){let{blockedToolCalls:b,startedToolCalls:c}=a;if(0===b.length)return null;let d=new Map,e=new Map;for(let a of b){let b=u(a.toolName,80);d.set(b,(d.get(b)??0)+1);let c=u(a.hookOutput,300)||"(no hook output)",f=JSON.stringify([b,c]);e.has(f)||e.set(f,`Blocked ${b}: ${c}`)}let f=[...d].slice(0,5).map(([a,b])=>`${a} (${b})`);d.size>5&&f.push(`+${d.size-5} more`);let g=`${r}${b.length} tool call(s) (tool_hook_blocked): ${f.join(", ")}; ${c} tool call(s) ran`,h=[...e.values()].slice(0,5);return e.size>5&&h.push(`Blocked: +${e.size-5} more distinct reason(s)`),[g,...h]}function w(a){if("string"!=typeof a)return null;let b=a.indexOf("\n"),c=-1===b?a:a.slice(0,b);return t.test(c)?c:null}function x(a,b){let c=null!==b&&"success"!==b.subtype;if((null===a||0===a)&&!c)return null;let d=[];if(null!==a&&0!==a){let b=p[a];d.push(b?`exit ${a} (${b})`:`exit ${a}`)}return b&&(d.push(`subtype=${b.subtype}`),b.error&&d.push(b.error)),`Reason: command-code ${d.join(" / ")}`}async function y(a,b,c="claude",g,n){if(!k.has(c))return{output:"",exitCode:null,status:"failed",error:`Invalid CLI tool: ${c}`};let p=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"opencode-v2":{let b=["run","--standalone","--format","json"];return c===h.Fs&&b.push("--auto"),d?.model&&b.push("-m",d.variant?`${d.model}#${d.variant}`:d.model),d?.agent&&b.push("--agent",d.agent),d?.continueSession&&b.push("-c"),d?.title&&b.push("--title",d.title),b.push("--",a),b}case"command-code":{let b=["-p",a,"--output-format","json"];return c===h.En?b.push("--yolo"):h.Tp.includes(c)?b.push("--permission-mode",c):b.push("--yolo"),b.push("--no-auto-update"),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>j?a.substring(0,j):a,c,g,n),r=function(a){switch(a){case"copilot":return"gh";case"antigravity":return"agy";case"command-code":return"commandcode";case"opencode-v2":return i.b6;default:return a}}(c);if("opencode-v2"===c){let a=await (0,i.Qq)();if(!a.executable){let a="OpenCode V2 not found: no `opencode2` (or `opencode` reporting v2) on PATH";return{output:a,exitCode:null,status:"failed",error:a}}r=a.executable.path}let s="opencode-v2"===c?{...(0,e.hh)(),PWD:b}:(0,e.hh)();return new Promise(a=>{let e=(0,d.execFile)(r,p,{cwd:b,env:s,maxBuffer:0xa00000,timeout:n?.timeoutMs??9e5},(b,d,e)=>{if(b){let g=b.code,h="ERR_CHILD_PROCESS_STDIO_MAXBUFFER"===g,i=b.killed||"ETIMEDOUT"===g,j="command-code"===c?q(d||""):null,k=j?j.result:null,n=j?v(j):null,p="number"==typeof g?g:null,r="opencode-v2"===c,s=[...n??[],`Error: ${b.message}`,`Code: ${g??"unknown"}`,`Signal: ${b.signal??"none"}`,h?"Reason: stdout exceeded execFile maxBuffer (output_limit)":null,"command-code"===c?x(p,k):null,r?function(a,b){if(/permission requested: .*auto-rejecting/.test((0,f.aJ)(b)))return"Reason: opencode-v2 auto-rejected a permission request (an `ask` rule); set the schedule's Permission to `auto` to approve it unattended";let c=o(a);return c?`Reason: ${c}`:null}(d||"",e||""):null].filter(a=>null!==a).join("\n"),t=k?k.finalText:r?m(d||"")??(d||""):d||"";a({output:l((0,f.aJ)([s,t?`
2
2
  --- stdout ---
3
- ${q}`:"",e?`
3
+ ${t}`:"",e?`
4
4
  --- stderr ---
5
- ${e}`:""].join("\n"))),exitCode:o,status:i?"timeout":"failed",error:b.message,...n?{warning:n[0]}:{}});return}if("command-code"===c){let b=m(d||""),c=t(0,b.result),e=r(b),g=b.result?b.result.finalText:d||"",h=[...e??[],...c?[c]:[]];a({output:k((0,f.aJ)([...h,g].join("\n"))),exitCode:0,status:c?"failed":"completed",...c?{error:c}:{},...e?{warning:e[0]}:{}});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)})}})}}};
5
+ ${e}`:""].join("\n"))),exitCode:p,status:i?"timeout":"failed",error:b.message,...n?{warning:n[0]}:{}});return}if("command-code"===c){let b=q(d||""),c=x(0,b.result),e=v(b),g=b.result?b.result.finalText:d||"",h=[...e??[],...c?[c]:[]];a({output:l((0,f.aJ)([...h,g].join("\n"))),exitCode:0,status:c?"failed":"completed",...c?{error:c}:{},...e?{warning:e[0]}:{}});return}if("opencode-v2"===c){let b=o(d||""),c=m(d||"")??(d||""),e=b?[`Reason: ${b}`]:[];a({output:l((0,f.aJ)([...e,c].join("\n"))),exitCode:0,status:b?"failed":"completed",...b?{error:b}:{}});return}let g="opencode"===c?m(d||"")??d??"":d||"";a({output:l((0,f.aJ)(g)),exitCode:0,status:"completed"})});if(e.stdin?.end(),e.pid){let a=(globalThis.__scheduleActiveProcesses||(globalThis.__scheduleActiveProcesses=new Map),globalThis.__scheduleActiveProcesses);a.set(e.pid,e),e.on("exit",()=>{a.delete(e.pid)})}})}}};
@@ -1 +1 @@
1
- "use strict";exports.id=5064,exports.ids=[5064],exports.modules={55064:a=>{a.exports=JSON.parse('{"page":{"title":"Skills","description":"Browse the official Skill Catalog. Each entry shows what a Skill is, who publishes it, which CommandMate versions it needs, and what its publisher declares about risk.","backToCatalog":"Back to the Catalog"},"search":{"label":"Search Skills","placeholder":"Name, summary, keyword or provider","resultCount":"Showing {shown} of {total} Skills"},"filters":{"compatibility":"CommandMate compatibility","risk":"Publisher-declared risk","agent":"Agent support","all":"All","reset":"Reset filters"},"compatibility":{"label":"CommandMate compatibility","native":"Runs natively","commandmateRuntime":"Runs via CommandMate Runtime","unsupported":"Not supported","unknown":"Not verified","status":{"compatible":"Compatible","incompatible":"Incompatible","unknown":"Unverified"},"requiredRange":"Requires CommandMate {range}","currentVersion":"Running CommandMate {version}","currentVersionUnknown":"The running CommandMate version could not be determined.","unverifiedNotice":"Unverified is not the same as compatible. CommandMate could not decide, so this Skill may fail to run.","agentsHeading":"Agent support","agentsNotice":"Agent support starts as a claim made by the publisher, shown with the evidence they supplied. Where CommandMate has measured the Agent itself, that measurement is shown alongside it and caps what the claim can assert.","agentsUnknown":"No Agent support is declared for this version.","evidence":"Evidence","declaredLabel":"Publisher declares: {support}","measuredHeading":"Measured by CommandMate","testedVersion":"Tested against {agent} {version}","testedDate":"Measured on {date}","evidenceSource":"Evidence","discoveryRoots":"Reads from {roots}","evidenceStale":"This measurement is {days} days old. The Agent may have changed since it was taken.","reloadHeading":"How to make {agent} pick it up","axis":{"discovery":"Discovery","invocation":"Slash command"},"axisOutcome":{"verified":"Confirmed","unsupported":"Not available","unknown":"Not measured"},"evidenceKind":{"mechanical":"machine-checked","selfReport":"reported by the Agent","notMeasured":"no measurement"},"verification":{"confirmed":"CommandMate measured this Agent and the result matches what the publisher declares.","restricted":"CommandMate measured less support than the publisher declares, so the lower result is shown.","staleDeclaration":"CommandMate measured more support than the publisher declares. The declaration is shown as-is; only the publisher can raise it.","unverified":"CommandMate has not measured this Agent, so only the publisher\'s claim is shown."},"limitation":{"noSlashCommand":"This Agent version finds the Skill but does not list it as a slash command. Ask for it by name instead."},"skipReason":{"notMeasured":"This Agent has not been measured against a CommandMate install, so its discovery behaviour is unknown rather than unsupported."},"reload":{"sessionRestart":"Start a new {agent} session in this repository. Skills are scanned when a session starts.","sessionRestartNoSlash":"Start a new {agent} session in this repository, then ask for the Skill by name — this version does not list Skills as slash commands.","unknown":"CommandMate has not measured how {agent} reloads Skills. Restarting the session is the safe assumption."},"reason":{"satisfied":"CommandMate {currentVersion} satisfies the required range {range}.","hostVersionOutOfRange":"This Skill requires CommandMate {range}, but CommandMate {currentVersion} is running.","hostVersionUnknown":"The running CommandMate version could not be determined, so compatibility with {range} is unverified.","rangeUnsupported":"This Skill declares the version range {range}, which CommandMate cannot interpret, so compatibility is unverified."}},"risk":{"declaredLabel":"Declared risk: {level}","declaredHeading":"Publisher-declared risk","level":{"low":"Low","moderate":"Moderate","high":"High"},"declaredNotice":"This level is declared by the publisher of the Skill. It is a claim, not a CommandMate assessment.","computedHeading":"CommandMate-computed risk","computedUnavailable":"Not available from the Catalog. CommandMate computes its own risk level by inspecting the package contents, which only happens once the package has been downloaded.","highWarning":"The publisher declares this Skill as high risk. Read the changelog and the source coordinates before installing it."},"permissions":{"heading":"Declared permissions","declarationOnlyNotice":"Permissions are declarations written by the publisher, not restrictions CommandMate enforces. Installing a Skill does not sandbox what it can do.","unavailable":"The Catalog does not carry declared permissions. They live in the Skill manifest inside the package, which CommandMate only reads after downloading it."},"capabilities":{"heading":"What this Skill does","unavailable":"Detailed capabilities and expected outcomes live in the Skill manifest inside the package and are not part of the Catalog. The summary below is what the Catalog publishes."},"requirements":{"heading":"Required commands and network access","unavailable":"The Catalog does not carry runtime requirements. Required commands and network hosts live in the Skill manifest inside the package."},"contents":{"heading":"Files and scripts","unavailable":"The Catalog does not list package contents. Files, scripts and executables are enumerated when CommandMate downloads and inspects the package."},"detail":{"overview":"Overview","provider":"Provider","providerContact":"Contact","license":"License","homepage":"Homepage","keywords":"Keywords","skillId":"Skill ID","latestVersion":"Latest published version","recommendedVersion":"Recommended version","recommendedVersionNone":"None","requiredRangeLabel":"Required CommandMate range","publishedAt":"Published","sourceRepository":"Repository","sourceRef":"Ref","sourceCommit":"Commit","packageAsset":"Asset name","packageDigest":"SHA-256","packageSize":"Size","packageBytes":"{bytes} bytes","versionsHeading":"Version history","versionsEmpty":"This Skill lists no published versions that apply to this CommandMate.","changelogHeading":"Changelog","changelogEmpty":"This version publishes no changelog.","mediaStripped":"Images and embedded media are removed from Catalog text, so nothing is loaded from an external host.","prerelease":"Prerelease","recommendation":{"highestCompatible":"This is the newest published version that works with the CommandMate you are running.","latestUnverified":"The running CommandMate version could not be determined, so the publisher\'s latest version is offered without a compatibility check.","noneCompatible":"No published version of this Skill works with the CommandMate you are running.","noVersions":"No published version of this Skill applies to this CommandMate."},"install":{"action":"Choose an install target","blockedIncompatible":"Install is unavailable: {reason}","blockedNoVersion":"Install is unavailable because no published version applies to the CommandMate you are running."}},"target":{"heading":"Install target","loading":"Loading registered worktrees…","empty":"No worktree is registered yet. Register one before installing a Skill.","errorNotice":"The list of registered worktrees could not be loaded, so no install target can be chosen right now.","retry":"Retry","selected":"Selected","repository":"Repository","branch":"Branch","branchUnknown":"Not recorded","agents":"Agents","agentsNone":"None configured","workingTree":"Working tree","workingTreeClean":"No uncommitted changes","workingTreeDirty":"Has uncommitted changes","workingTreeUnknown":"Not inspected","sessionRunning":"A session is currently running in this worktree.","branchFreshnessNotice":"The branch shown here comes from the last worktree scan. CommandMate resolves the live branch and commit when it builds the install plan, and reports any difference there."},"plan":{"highRiskAcknowledgement":"CommandMate rated this package high risk after inspecting its contents. Review the files, scripts and declared permissions below, then confirm explicitly that you want to install it into this worktree.","build":"Build install plan","building":"Building the install plan…","chooseTarget":"Choose the worktree this Skill would be installed into.","ready":"Building a plan writes nothing. It downloads the package, inspects it and reports exactly what installing would change.","heading":"Install plan","expiresAt":"This plan is valid until {timestamp}. After that, build a new one.","targetHeading":"Where this would be installed","headStateLabel":"Git HEAD","headState":{"attached":"On a branch","detached":"Detached HEAD","unborn":"No commit yet","unknown":"Could not be resolved"},"installRoot":"Install directory","existingInstall":"Already installed here","existingInstallNone":"Nothing installed here yet","existingInstallVersion":"Version {version}","riskHeading":"Risk","riskDeclared":"Declared","riskComputed":"Computed","riskEffective":"Effective","riskNotice":"The computed level comes from inspecting the downloaded package. Where it disagrees with the publisher\'s claim, the higher of the two is the effective level.","permission":{"filesystemRead":"Reads files","filesystemWrite":"Writes files","networkAccess":"Accesses the network","processExecution":"Runs other programs","environmentRead":"Reads environment variables","credentialAccess":"Accesses credentials"},"permissionsNone":"The manifest declares no permissions.","requirementsNone":"The manifest requires no commands and no network access.","requirementsCommands":"Commands","requirementsHosts":"Network hosts","commandAnyVersion":"(any version)","scriptsHeading":"Scripts and executables in the package","scriptsNone":"The package contains no scripts and no executable files.","warningsHeading":"Caveats","warning":{"detachedHead":"This worktree is not on a branch, so the install would not belong to any branch history.","unbornHead":"This worktree has no commit yet.","headUnresolved":"The current commit could not be resolved.","workingTreeDirty":"This worktree has uncommitted changes, so the install would mix with work in progress.","pathGitIgnored":"Some destination paths are ignored by git, so the installed files would not show up in git status.","diffTruncated":"Some diffs were too large to show in full.","binaryContent":"Some files are binary, so no diff can be shown for them.","lineEndingCrlf":"Some files use CRLF line endings.","treeScanTruncated":"The destination directory was too large to inspect completely."},"filesHeading":"What this install would write","stats":"{added} added, {modified} modified, {unchanged} unchanged, {conflicted} conflicting, {unmanaged} unmanaged","filesEmpty":"This plan writes no files.","fileGenerated":"Install record","gitIgnored":"This path is ignored by git.","diffToggle":"Show the diff (+{additions} / -{deletions})","diffTruncated":"This diff was truncated.","diffBinary":"Binary file, so no diff is shown.","change":{"add":"Add","modify":"Modify","unchanged":"Unchanged","conflict":"Conflict","unmanaged":"Unmanaged"},"diffReason":{"newFile":"Nothing is at this path, so the file would simply be created.","contentIdentical":"What is already there is byte-identical to what would be written.","managedUpdate":"CommandMate installed this file and it is unchanged, so it would be replaced.","localModification":"This file has been edited since it was installed. CommandMate will not overwrite your changes.","unmanagedSkill":"A Skill directory is already here that CommandMate did not install, so it is not CommandMate\'s to replace.","receiptOrphan":"The install record lists this file but it is no longer on disk, so the recorded installation no longer matches the worktree.","notARegularFile":"This path is a symbolic link or another non-regular entry. CommandMate will not follow it."},"blockersHeading":"What stops this install","blockedNotice":"Nothing has been written. Resolve the paths above, then build a new plan.","acknowledgeLabel":"I have reviewed the files, scripts and declared permissions above, and I want to install this high-risk Skill into this worktree.","confirm":"Install into this worktree","confirming":"Installing…","discard":"Discard this plan"},"install":{"reload":{"native":"{agent} loads Skills from the worktree at startup. Restart the {agent} session in this worktree to make {skillId} {version} available.","commandmateRuntime":"{agent} runs this Skill through the CommandMate runtime. Restart the {agent} session in this worktree so the runtime picks up {skillId} {version}.","unsupported":"{agent} does not support this Skill. The files are installed, but {skillId} {version} will not be offered in {agent} sessions.","unknown":"Support for {agent} has not been verified. The files are installed; restart the {agent} session and check whether {skillId} {version} is offered."},"nextAction":{"succeeded":"The Skill is installed and recorded. Restart the agent sessions listed below to start using it.","committedReconciling":"The files were written and are already in the worktree, but the installation record is incomplete. CommandMate will finish it automatically; no reinstall is needed.","failed":"Nothing was written to the worktree. Review the reason and build a new install plan."}},"uninstall":{"reason":{"managedUnchanged":"Installed by CommandMate and unchanged since, so it can be removed safely.","localModification":"This file has been edited since it was installed. CommandMate will not delete your changes.","receiptOrphan":"The install record lists this file but it is no longer in the worktree, so what is on disk is no longer the installation CommandMate recorded.","unmanagedFile":"This file is inside the Skill directory but was not installed by CommandMate, so it is not CommandMate\'s to delete.","notARegularFile":"This path is a symbolic link or another non-regular entry. CommandMate will not follow it to decide what to delete.","notInstalled":"No CommandMate-managed installation of this Skill exists in this worktree.","receiptMissing":"The Skill directory has no CommandMate install record, so nothing proves which files belong to the Skill.","receiptUnreadable":"The install record could not be read, so file ownership cannot be established.","receiptForeign":"The install record in this directory describes a different Skill.","treeScanTruncated":"The Skill directory is too large or too deep to inspect completely, so CommandMate cannot rule out files it does not own."},"nextAction":{"removable":"Every file in this directory was installed by CommandMate and is unchanged. Confirm to remove them.","blocked":"Nothing has been deleted. Move or restore the files listed below, then build a new uninstall plan.","succeeded":"The Skill was removed and its record cleared. Restart the agent sessions listed below so they stop offering it.","committedReconciling":"Files were already being removed when the operation stopped. The install record is still in place for diagnosis; CommandMate will finish automatically.","failed":"Nothing was deleted from the worktree. Review the reason and build a new uninstall plan."},"reload":{"native":"{agent} loads Skills from the worktree at startup. Restart the {agent} session in this worktree so it stops offering {skillId}.","commandmateRuntime":"{agent} ran this Skill through the CommandMate runtime. Restart the {agent} session in this worktree so the runtime drops {skillId}.","unsupported":"{agent} did not support this Skill, so removing {skillId} changes nothing for {agent} sessions.","unknown":"Support for {agent} was never verified. The files are removed; restart the {agent} session if {skillId} is still offered."},"build":"Build uninstall plan","building":"Building the uninstall plan…","heading":"Uninstall plan","expiresAt":"This plan is valid until {timestamp}. After that, build a new one.","installedVersion":"Installed version","versionUnknown":"Not recorded","stats":"{removable} removable, {modified} modified, {missing} missing, {unknown} unknown, {irregular} not a regular file","removalsHeading":"What would be deleted","removalsEmpty":"This plan deletes nothing.","retainedHeading":"What would stay","retainedEmpty":"Nothing would be left behind.","blockersHeading":"What stops this uninstall","confirm":"Remove from this worktree","confirming":"Removing…","disposition":{"remove":"Delete","modified":"Keep (edited)","missing":"Already gone","unknown":"Keep (not recorded)","irregular":"Keep (not a regular file)"}},"update":{"badge":"Update available","upToDate":"Version {version} is the newest published version. Nothing to update.","open":"Review update","heading":"Update plan","intro":"{skill} is installed at version {version}. Choose the exact version to move to; the plan below shows precisely what would change.","ready":"Building an update plan writes nothing. It downloads and verifies the candidate package, compares it with what is installed, and reports every difference and every blocker.","fromTo":"{from} → {to}","latestAvailable":"Newest available: {version}","versionPicker":"Update to version","build":"Build update plan","building":"Building the update plan…","filesHeading":"File changes","stats":"+{added} added, ~{updated} updated, −{removed} removed, ={unchanged} unchanged","showDiff":"Show diff","permissionsAdded":"Permissions this update adds","permissionsRemoved":"Permissions this update drops","scriptsAdded":"New scripts","scriptsRemoved":"Scripts removed","executablesAdded":"New executable files","executablesRemoved":"Executable files removed","highRiskAcknowledgement":"CommandMate rated the candidate package high risk after inspecting its contents. Applying this update will require an explicit acknowledgement.","riskIncreaseAcknowledgement":"This update raises the Skill\'s effective risk above what is installed today. Applying it will require a separate, additional confirmation beyond the ordinary update confirmation.","change":{"add":"Added","update":"Updated","remove":"Removed","unchanged":"Unchanged"},"reason":{"upToDate":"No published version is newer than the installed one.","highestCompatible":"This is the newest published version that is newer than the install and works with the CommandMate you are running.","latestUnverified":"The running CommandMate version could not be determined, so the newest candidate is offered without a compatibility check.","noneCompatible":"Newer versions exist, but none of them works with the CommandMate you are running.","installedVersionInvalid":"The installed version recorded in the receipt is not a valid version, so no update can be resolved.","rangeUnsupported":"The requested version range is not supported, so no candidate was resolved."},"blocked":{"localChanges":"This path was changed after the install — edited, removed, or added by hand. CommandMate will not update over local changes. Restore the file (or uninstall and reinstall the Skill), then build a new update plan.","rootMissing":"A recorded install directory is gone entirely. Reinstall the Skill or rebuild the index before updating.","receiptMissing":"An install directory has no CommandMate install record, so nothing proves which files belong to the Skill.","receiptUnreadable":"An install record could not be read, so file ownership cannot be established.","receiptForeign":"The install record in this directory describes a different Skill.","rootReceiptDiverged":"The recorded install directories carry different install records, so the install is no longer one consistent version.","treeScanTruncated":"The Skill directory is too large or too deep to inspect completely, so CommandMate cannot rule out local changes.","incompatible":"The selected version is not compatible with the CommandMate you are running."},"nextAction":{"updatable":"Every installed file matches the install record. The update can be applied from this plan.","blocked":"Nothing has been changed. Resolve the paths listed below — restore locally changed files, or move files CommandMate does not manage out of the Skill directory — then build a new update plan.","succeeded":"The Skill was switched to the new version and recorded. Restart the agent sessions listed below to start using it.","committedReconciling":"The new version is already in the worktree, but the operation did not finish cleanly. CommandMate will converge the rest automatically; no re-update is needed.","failed":"Nothing was changed in the worktree. Review the reason below, resolve it, then build a new update plan."},"apply":"Apply update","applying":"Applying the update…","ackRisk":"I have reviewed the candidate\'s files, scripts and permissions, and I explicitly accept updating to this high-risk package.","ackRiskIncrease":"I understand this update raises the Skill\'s effective risk above what is installed today, and I confirm that separately.","rollbackAvailable":"The replaced version {version} was preserved in a verified, CommandMate-owned backup before the switch. Rolling back to it will be available as a separate operation.","reload":{"native":"{agent} loads Skills from the worktree at startup. Restart the {agent} session in this worktree to pick up {skillId} {version}.","commandmateRuntime":"{agent} runs this Skill through the CommandMate runtime. Restart the {agent} session in this worktree so the runtime picks up {skillId} {version}.","unsupported":"{agent} does not support this Skill. The files were updated, but {skillId} {version} will not be offered in {agent} sessions.","unknown":"Support for {agent} has not been verified. The files were updated; restart the {agent} session and check whether {skillId} {version} is offered."}},"card":{"provider":"by {provider}","noRecommendedVersion":"No installable version"},"worktreePane":{"installedHeading":"Installed in this worktree","installedError":"The installed Skills for this worktree could not be loaded.","installedEmpty":"No Skills are installed in this worktree yet.","catalogHeading":"Install from the Catalog","installedBadge":"Installed","version":"Version {version}","back":"Back to Skills","updateBadge":"Update available"},"state":{"loading":"Loading the Skill Catalog…","empty":"The official Catalog publishes no Skills yet.","noResults":"No Skill matches the current search and filters.","noResultsHint":"Try a different keyword or reset the filters.","errorHeading":"The Skill Catalog could not be loaded","errorNotice":"This is a retrieval failure, not an empty Catalog. No conclusion can be drawn about which Skills exist.","errorCode":"Error code: {code}","retry":"Retry","notFoundHeading":"Skill not found","notFoundNotice":"The official Catalog has no Skill with this ID."},"catalog":{"staleHeading":"Showing a cached Catalog","staleNotice":"CommandMate could not confirm this Catalog is current, so what you see may be out of date.","offlineNotice":"The Catalog origin could not be reached on the last attempt.","freshLabel":"Catalog confirmed current","fetchedAt":"Last validated: {timestamp}","revalidatedAt":"Last confirmed current: {timestamp}","sourceLabel":"Source: {repository} at {ref}","reason":{"fetchFailed":"The Catalog could not be retrieved.","rateLimited":"The Catalog origin is rate limiting requests.","oversized":"The Catalog response exceeded the allowed size.","malformed":"The Catalog response was not valid JSON.","invalidSchema":"The Catalog response failed contract validation.","unknown":"The reason was not reported."}},"operation":{"errorHeading":"The operation was refused","reloadHeading":"Restart these agent sessions","installedHeading":"Installed","uninstalledHeading":"Removed","replayNotice":"This answers a request CommandMate had already carried out, so the per-file list is not repeated.","filesWritten":"{count} files written","filesRemoved":"{count} files removed","startOver":"Choose another target","error":{"planStale":"The worktree changed after this plan was built, so the plan no longer describes what would happen. Nothing was written. Build a new plan.","planExpired":"This plan is too old to spend. Nothing was written. Build a new plan.","planConsumed":"This plan has already been used. Nothing was written a second time.","planNotFound":"CommandMate no longer holds this plan. Nothing was written. Build a new plan.","planBindingMismatch":"This plan was built for a different request and cannot be spent here. Build a new plan from this screen.","planNotInstallable":"This plan reports blockers, so it cannot be applied. Nothing was written.","planRiskNotAcknowledged":"This package is high risk and the install was not explicitly acknowledged. Nothing was written.","installLocked":"Another Skill operation is running in this worktree. Nothing was written. Try again once it finishes.","installInProgress":"An earlier attempt at this exact install is still running. Wait for it rather than starting a second one.","installDestinationExists":"Something is already at the install path. Nothing was written; CommandMate does not overwrite what it did not install.","installDestinationUnmanaged":"A Skill directory that CommandMate did not install is already at this path. Nothing was written.","installIdempotencyConflict":"This retry does not match the request it repeats. Nothing was written. Build a new plan.","installFailed":"An earlier attempt at this install failed and nothing was written. Build a new plan.","uninstallLocked":"Another Skill operation is running in this worktree. Nothing was deleted. Try again once it finishes.","uninstallInProgress":"An earlier attempt at this exact uninstall is still running. Wait for it rather than starting a second one.","uninstallIdempotencyConflict":"This retry does not match the request it repeats. Nothing was deleted. Build a new plan.","uninstallNotInstalled":"CommandMate has no record of this Skill in this worktree, so there is nothing for it to remove.","uninstallBlocked":"Nothing was deleted. Some paths are not CommandMate\'s to remove.","uninstallDrift":"The worktree no longer matches the install record, so CommandMate cannot tell which files it owns. Nothing was deleted.","uninstallFileChanged":"A file changed after the plan was built. Nothing was deleted. Build a new plan.","uninstallFailed":"An earlier attempt at this uninstall failed and nothing was deleted. Build a new plan.","requestFailed":"The request did not reach CommandMate, or it answered without naming a reason. Nothing is known to have changed.","unexpected":"CommandMate reported a failure it has no explanation for. Treat the worktree as unchanged only after checking it.","updateNotInstalled":"CommandMate has no record of this Skill in this worktree, so there is nothing to update.","updateUpToDate":"No published version is newer than the installed one. Nothing to update.","updateVersionNotEligible":"The requested version is not a strictly newer published version of this Skill.","updateNoneCompatible":"Newer versions exist, but none of them works with the CommandMate you are running."}},"dashboard":{"title":"Installed Skills","description":"Which Skill is applied in which worktree, and whether it still matches what was installed.","scannedAt":"Scanned {timestamp}","worktreeCount":"{count} worktrees","rescan":"Rescan","reindex":"Rebuild index","reindexRunning":"Rebuilding…","reindexDone":"Rebuilt from receipts: {indexed} indexed, {removed} removed, {skipped} skipped.","reindexFailed":"The index could not be rebuilt.","errorNotice":"The applied state of installed Skills could not be read. This is not the same as having no Skills installed.","catalogUnavailable":"The Catalog is unreachable, so available updates cannot be determined. Everything else on this page still reflects the receipts on disk.","truncated":"The scan stopped at its size limit, so this list is incomplete.","unreadableWorktrees":"These registered worktrees no longer exist on disk and were not scanned: {worktrees}","empty":"No Skill is installed in any registered worktree.","filterSkill":"Skill","filterWorktree":"Worktree","filterStatus":"State","all":"All","rootPresent":"Present","rootMissing":"Not found","rootTruncated":"Scan truncated","driftSummary":"{modified} modified, {missing} missing, {unmanaged} unmanaged, {irregular} irregular","status":{"installed":"Installed","modified":"Changed locally","missing":"Payload missing","unmanaged":"Not indexed","updateAvailable":"Update available"},"statusHint":{"installed":"Every recorded install root matches the receipt.","modified":"Files under an install root differ from the receipt. Review the changes before updating or removing.","missing":"An install root recorded in the receipt has no payload on disk. The Skill will not be discovered from that root.","unmanaged":"A payload is on disk with no index entry behind it. Rebuild the index to adopt it, or remove it by hand.","updateAvailable":"The install is intact and the Catalog offers a newer compatible version."}},"history":{"heading":"Operation history","loading":"Reading the operation log…","empty":"No Skill operation has been recorded yet.","errorNotice":"The operation log could not be read. This is not the same as nothing having happened.","filterOperation":"Operation","filterResult":"Outcome","loadMore":"Load older","recordedAt":"{timestamp}","transitionLabel":"Version","transition":"{from} → {to}","actorLabel":"Requested by","origin":"Origin","sourceCommit":"Commit","artifactDigest":"Artifact digest","retry":"Open the Skill to try again","none":"—","operation":{"install":"Install","uninstall":"Uninstall","update":"Update"},"result":{"succeeded":"Succeeded","failed":"Failed","reconciled":"Reconciled"},"actor":{"user":"Web UI","cli":"CLI","system":"CommandMate"}}}')}};
1
+ "use strict";exports.id=5064,exports.ids=[5064],exports.modules={55064:a=>{a.exports=JSON.parse('{"page":{"title":"Skills","description":"Browse the official Skill Catalog. Each entry shows what a Skill is, who publishes it, which CommandMate versions it needs, and what its publisher declares about risk.","backToCatalog":"Back to the Catalog"},"search":{"label":"Search Skills","placeholder":"Name, summary, keyword or provider","resultCount":"Showing {shown} of {total} Skills"},"filters":{"compatibility":"CommandMate compatibility","risk":"Publisher-declared risk","agent":"Agent support","all":"All","reset":"Reset filters"},"compatibility":{"label":"CommandMate compatibility","native":"Runs natively","commandmateRuntime":"Runs via CommandMate Runtime","unsupported":"Not supported","unknown":"Not verified","status":{"compatible":"Compatible","incompatible":"Incompatible","unknown":"Unverified"},"requiredRange":"Requires CommandMate {range}","currentVersion":"Running CommandMate {version}","currentVersionUnknown":"The running CommandMate version could not be determined.","unverifiedNotice":"Unverified is not the same as compatible. CommandMate could not decide, so this Skill may fail to run.","agentsHeading":"Agent support","agentsNotice":"Agent support starts as a claim made by the publisher, shown with the evidence they supplied. Where CommandMate has measured the Agent itself, that measurement is shown alongside it and caps what the claim can assert.","agentsUnknown":"No Agent support is declared for this version.","evidence":"Evidence","declaredLabel":"Publisher declares: {support}","measuredHeading":"Measured by CommandMate","testedVersion":"Tested against {agent} {version}","testedDate":"Measured on {date}","evidenceSource":"Evidence","discoveryRoots":"Reads from {roots}","evidenceStale":"This measurement is {days} days old. The Agent may have changed since it was taken.","reloadHeading":"How to make {agent} pick it up","axis":{"discovery":"Discovery","invocation":"Slash command"},"axisOutcome":{"verified":"Confirmed","unsupported":"Not available","unknown":"Not measured"},"evidenceKind":{"mechanical":"machine-checked","selfReport":"reported by the Agent","notMeasured":"no measurement"},"verification":{"confirmed":"CommandMate measured this Agent and the result matches what the publisher declares.","restricted":"CommandMate measured less support than the publisher declares, so the lower result is shown.","staleDeclaration":"CommandMate measured more support than the publisher declares. The declaration is shown as-is; only the publisher can raise it.","unverified":"CommandMate has not measured this Agent, so only the publisher\'s claim is shown."},"limitation":{"noSlashCommand":"This Agent version finds the Skill but does not list it as a slash command. Ask for it by name instead."},"skipReason":{"notMeasured":"This Agent has not been measured against a CommandMate install, so its discovery behaviour is unknown rather than unsupported."},"reload":{"sessionRestart":"Start a new {agent} session in this repository. Skills are scanned when a session starts.","sessionRestartNoSlash":"Start a new {agent} session in this repository, then ask for the Skill by name — this version does not list Skills as slash commands.","pickedUpLive":"No new {agent} session is needed. {agent} rescans Skills while it runs, so the new Skill is found from your next message in this repository.","unknown":"CommandMate has not measured how {agent} reloads Skills. Restarting the session is the safe assumption."},"reason":{"satisfied":"CommandMate {currentVersion} satisfies the required range {range}.","hostVersionOutOfRange":"This Skill requires CommandMate {range}, but CommandMate {currentVersion} is running.","hostVersionUnknown":"The running CommandMate version could not be determined, so compatibility with {range} is unverified.","rangeUnsupported":"This Skill declares the version range {range}, which CommandMate cannot interpret, so compatibility is unverified."}},"risk":{"declaredLabel":"Declared risk: {level}","declaredHeading":"Publisher-declared risk","level":{"low":"Low","moderate":"Moderate","high":"High"},"declaredNotice":"This level is declared by the publisher of the Skill. It is a claim, not a CommandMate assessment.","computedHeading":"CommandMate-computed risk","computedUnavailable":"Not available from the Catalog. CommandMate computes its own risk level by inspecting the package contents, which only happens once the package has been downloaded.","highWarning":"The publisher declares this Skill as high risk. Read the changelog and the source coordinates before installing it."},"permissions":{"heading":"Declared permissions","declarationOnlyNotice":"Permissions are declarations written by the publisher, not restrictions CommandMate enforces. Installing a Skill does not sandbox what it can do.","unavailable":"The Catalog does not carry declared permissions. They live in the Skill manifest inside the package, which CommandMate only reads after downloading it."},"capabilities":{"heading":"What this Skill does","unavailable":"Detailed capabilities and expected outcomes live in the Skill manifest inside the package and are not part of the Catalog. The summary below is what the Catalog publishes."},"requirements":{"heading":"Required commands and network access","unavailable":"The Catalog does not carry runtime requirements. Required commands and network hosts live in the Skill manifest inside the package."},"contents":{"heading":"Files and scripts","unavailable":"The Catalog does not list package contents. Files, scripts and executables are enumerated when CommandMate downloads and inspects the package."},"detail":{"overview":"Overview","provider":"Provider","providerContact":"Contact","license":"License","homepage":"Homepage","keywords":"Keywords","skillId":"Skill ID","latestVersion":"Latest published version","recommendedVersion":"Recommended version","recommendedVersionNone":"None","requiredRangeLabel":"Required CommandMate range","publishedAt":"Published","sourceRepository":"Repository","sourceRef":"Ref","sourceCommit":"Commit","packageAsset":"Asset name","packageDigest":"SHA-256","packageSize":"Size","packageBytes":"{bytes} bytes","versionsHeading":"Version history","versionsEmpty":"This Skill lists no published versions that apply to this CommandMate.","changelogHeading":"Changelog","changelogEmpty":"This version publishes no changelog.","mediaStripped":"Images and embedded media are removed from Catalog text, so nothing is loaded from an external host.","prerelease":"Prerelease","recommendation":{"highestCompatible":"This is the newest published version that works with the CommandMate you are running.","latestUnverified":"The running CommandMate version could not be determined, so the publisher\'s latest version is offered without a compatibility check.","noneCompatible":"No published version of this Skill works with the CommandMate you are running.","noVersions":"No published version of this Skill applies to this CommandMate."},"install":{"action":"Choose an install target","blockedIncompatible":"Install is unavailable: {reason}","blockedNoVersion":"Install is unavailable because no published version applies to the CommandMate you are running."}},"target":{"heading":"Install target","loading":"Loading registered worktrees…","empty":"No worktree is registered yet. Register one before installing a Skill.","errorNotice":"The list of registered worktrees could not be loaded, so no install target can be chosen right now.","retry":"Retry","selected":"Selected","repository":"Repository","branch":"Branch","branchUnknown":"Not recorded","agents":"Agents","agentsNone":"None configured","workingTree":"Working tree","workingTreeClean":"No uncommitted changes","workingTreeDirty":"Has uncommitted changes","workingTreeUnknown":"Not inspected","sessionRunning":"A session is currently running in this worktree.","branchFreshnessNotice":"The branch shown here comes from the last worktree scan. CommandMate resolves the live branch and commit when it builds the install plan, and reports any difference there."},"plan":{"highRiskAcknowledgement":"CommandMate rated this package high risk after inspecting its contents. Review the files, scripts and declared permissions below, then confirm explicitly that you want to install it into this worktree.","build":"Build install plan","building":"Building the install plan…","chooseTarget":"Choose the worktree this Skill would be installed into.","ready":"Building a plan writes nothing. It downloads the package, inspects it and reports exactly what installing would change.","heading":"Install plan","expiresAt":"This plan is valid until {timestamp}. After that, build a new one.","targetHeading":"Where this would be installed","headStateLabel":"Git HEAD","headState":{"attached":"On a branch","detached":"Detached HEAD","unborn":"No commit yet","unknown":"Could not be resolved"},"installRoot":"Install directory","existingInstall":"Already installed here","existingInstallNone":"Nothing installed here yet","existingInstallVersion":"Version {version}","riskHeading":"Risk","riskDeclared":"Declared","riskComputed":"Computed","riskEffective":"Effective","riskNotice":"The computed level comes from inspecting the downloaded package. Where it disagrees with the publisher\'s claim, the higher of the two is the effective level.","permission":{"filesystemRead":"Reads files","filesystemWrite":"Writes files","networkAccess":"Accesses the network","processExecution":"Runs other programs","environmentRead":"Reads environment variables","credentialAccess":"Accesses credentials"},"permissionsNone":"The manifest declares no permissions.","requirementsNone":"The manifest requires no commands and no network access.","requirementsCommands":"Commands","requirementsHosts":"Network hosts","commandAnyVersion":"(any version)","scriptsHeading":"Scripts and executables in the package","scriptsNone":"The package contains no scripts and no executable files.","warningsHeading":"Caveats","warning":{"detachedHead":"This worktree is not on a branch, so the install would not belong to any branch history.","unbornHead":"This worktree has no commit yet.","headUnresolved":"The current commit could not be resolved.","workingTreeDirty":"This worktree has uncommitted changes, so the install would mix with work in progress.","pathGitIgnored":"Some destination paths are ignored by git, so the installed files would not show up in git status.","diffTruncated":"Some diffs were too large to show in full.","binaryContent":"Some files are binary, so no diff can be shown for them.","lineEndingCrlf":"Some files use CRLF line endings.","treeScanTruncated":"The destination directory was too large to inspect completely."},"filesHeading":"What this install would write","stats":"{added} added, {modified} modified, {unchanged} unchanged, {conflicted} conflicting, {unmanaged} unmanaged","filesEmpty":"This plan writes no files.","fileGenerated":"Install record","gitIgnored":"This path is ignored by git.","diffToggle":"Show the diff (+{additions} / -{deletions})","diffTruncated":"This diff was truncated.","diffBinary":"Binary file, so no diff is shown.","change":{"add":"Add","modify":"Modify","unchanged":"Unchanged","conflict":"Conflict","unmanaged":"Unmanaged"},"diffReason":{"newFile":"Nothing is at this path, so the file would simply be created.","contentIdentical":"What is already there is byte-identical to what would be written.","managedUpdate":"CommandMate installed this file and it is unchanged, so it would be replaced.","localModification":"This file has been edited since it was installed. CommandMate will not overwrite your changes.","unmanagedSkill":"A Skill directory is already here that CommandMate did not install, so it is not CommandMate\'s to replace.","receiptOrphan":"The install record lists this file but it is no longer on disk, so the recorded installation no longer matches the worktree.","notARegularFile":"This path is a symbolic link or another non-regular entry. CommandMate will not follow it."},"blockersHeading":"What stops this install","blockedNotice":"Nothing has been written. Resolve the paths above, then build a new plan.","acknowledgeLabel":"I have reviewed the files, scripts and declared permissions above, and I want to install this high-risk Skill into this worktree.","confirm":"Install into this worktree","confirming":"Installing…","discard":"Discard this plan"},"install":{"reload":{"native":"{agent} loads Skills from the worktree at startup. Restart the {agent} session in this worktree to make {skillId} {version} available.","commandmateRuntime":"{agent} runs this Skill through the CommandMate runtime. Restart the {agent} session in this worktree so the runtime picks up {skillId} {version}.","unsupported":"{agent} does not support this Skill. The files are installed, but {skillId} {version} will not be offered in {agent} sessions.","unknown":"Support for {agent} has not been verified. The files are installed; restart the {agent} session and check whether {skillId} {version} is offered."},"nextAction":{"succeeded":"The Skill is installed and recorded. Restart the agent sessions listed below to start using it.","committedReconciling":"The files were written and are already in the worktree, but the installation record is incomplete. CommandMate will finish it automatically; no reinstall is needed.","failed":"Nothing was written to the worktree. Review the reason and build a new install plan."}},"uninstall":{"reason":{"managedUnchanged":"Installed by CommandMate and unchanged since, so it can be removed safely.","localModification":"This file has been edited since it was installed. CommandMate will not delete your changes.","receiptOrphan":"The install record lists this file but it is no longer in the worktree, so what is on disk is no longer the installation CommandMate recorded.","unmanagedFile":"This file is inside the Skill directory but was not installed by CommandMate, so it is not CommandMate\'s to delete.","notARegularFile":"This path is a symbolic link or another non-regular entry. CommandMate will not follow it to decide what to delete.","notInstalled":"No CommandMate-managed installation of this Skill exists in this worktree.","receiptMissing":"The Skill directory has no CommandMate install record, so nothing proves which files belong to the Skill.","receiptUnreadable":"The install record could not be read, so file ownership cannot be established.","receiptForeign":"The install record in this directory describes a different Skill.","treeScanTruncated":"The Skill directory is too large or too deep to inspect completely, so CommandMate cannot rule out files it does not own."},"nextAction":{"removable":"Every file in this directory was installed by CommandMate and is unchanged. Confirm to remove them.","blocked":"Nothing has been deleted. Move or restore the files listed below, then build a new uninstall plan.","succeeded":"The Skill was removed and its record cleared. Restart the agent sessions listed below so they stop offering it.","committedReconciling":"Files were already being removed when the operation stopped. The install record is still in place for diagnosis; CommandMate will finish automatically.","failed":"Nothing was deleted from the worktree. Review the reason and build a new uninstall plan."},"reload":{"native":"{agent} loads Skills from the worktree at startup. Restart the {agent} session in this worktree so it stops offering {skillId}.","commandmateRuntime":"{agent} ran this Skill through the CommandMate runtime. Restart the {agent} session in this worktree so the runtime drops {skillId}.","unsupported":"{agent} did not support this Skill, so removing {skillId} changes nothing for {agent} sessions.","unknown":"Support for {agent} was never verified. The files are removed; restart the {agent} session if {skillId} is still offered."},"build":"Build uninstall plan","building":"Building the uninstall plan…","heading":"Uninstall plan","expiresAt":"This plan is valid until {timestamp}. After that, build a new one.","installedVersion":"Installed version","versionUnknown":"Not recorded","stats":"{removable} removable, {modified} modified, {missing} missing, {unknown} unknown, {irregular} not a regular file","removalsHeading":"What would be deleted","removalsEmpty":"This plan deletes nothing.","retainedHeading":"What would stay","retainedEmpty":"Nothing would be left behind.","blockersHeading":"What stops this uninstall","confirm":"Remove from this worktree","confirming":"Removing…","disposition":{"remove":"Delete","modified":"Keep (edited)","missing":"Already gone","unknown":"Keep (not recorded)","irregular":"Keep (not a regular file)"}},"update":{"badge":"Update available","upToDate":"Version {version} is the newest published version. Nothing to update.","open":"Review update","heading":"Update plan","intro":"{skill} is installed at version {version}. Choose the exact version to move to; the plan below shows precisely what would change.","ready":"Building an update plan writes nothing. It downloads and verifies the candidate package, compares it with what is installed, and reports every difference and every blocker.","fromTo":"{from} → {to}","latestAvailable":"Newest available: {version}","versionPicker":"Update to version","build":"Build update plan","building":"Building the update plan…","filesHeading":"File changes","stats":"+{added} added, ~{updated} updated, −{removed} removed, ={unchanged} unchanged","showDiff":"Show diff","permissionsAdded":"Permissions this update adds","permissionsRemoved":"Permissions this update drops","scriptsAdded":"New scripts","scriptsRemoved":"Scripts removed","executablesAdded":"New executable files","executablesRemoved":"Executable files removed","highRiskAcknowledgement":"CommandMate rated the candidate package high risk after inspecting its contents. Applying this update will require an explicit acknowledgement.","riskIncreaseAcknowledgement":"This update raises the Skill\'s effective risk above what is installed today. Applying it will require a separate, additional confirmation beyond the ordinary update confirmation.","change":{"add":"Added","update":"Updated","remove":"Removed","unchanged":"Unchanged"},"reason":{"upToDate":"No published version is newer than the installed one.","highestCompatible":"This is the newest published version that is newer than the install and works with the CommandMate you are running.","latestUnverified":"The running CommandMate version could not be determined, so the newest candidate is offered without a compatibility check.","noneCompatible":"Newer versions exist, but none of them works with the CommandMate you are running.","installedVersionInvalid":"The installed version recorded in the receipt is not a valid version, so no update can be resolved.","rangeUnsupported":"The requested version range is not supported, so no candidate was resolved."},"blocked":{"localChanges":"This path was changed after the install — edited, removed, or added by hand. CommandMate will not update over local changes. Restore the file (or uninstall and reinstall the Skill), then build a new update plan.","rootMissing":"A recorded install directory is gone entirely. Reinstall the Skill or rebuild the index before updating.","receiptMissing":"An install directory has no CommandMate install record, so nothing proves which files belong to the Skill.","receiptUnreadable":"An install record could not be read, so file ownership cannot be established.","receiptForeign":"The install record in this directory describes a different Skill.","rootReceiptDiverged":"The recorded install directories carry different install records, so the install is no longer one consistent version.","treeScanTruncated":"The Skill directory is too large or too deep to inspect completely, so CommandMate cannot rule out local changes.","incompatible":"The selected version is not compatible with the CommandMate you are running."},"nextAction":{"updatable":"Every installed file matches the install record. The update can be applied from this plan.","blocked":"Nothing has been changed. Resolve the paths listed below — restore locally changed files, or move files CommandMate does not manage out of the Skill directory — then build a new update plan.","succeeded":"The Skill was switched to the new version and recorded. Restart the agent sessions listed below to start using it.","committedReconciling":"The new version is already in the worktree, but the operation did not finish cleanly. CommandMate will converge the rest automatically; no re-update is needed.","failed":"Nothing was changed in the worktree. Review the reason below, resolve it, then build a new update plan."},"apply":"Apply update","applying":"Applying the update…","ackRisk":"I have reviewed the candidate\'s files, scripts and permissions, and I explicitly accept updating to this high-risk package.","ackRiskIncrease":"I understand this update raises the Skill\'s effective risk above what is installed today, and I confirm that separately.","rollbackAvailable":"The replaced version {version} was preserved in a verified, CommandMate-owned backup before the switch. Rolling back to it will be available as a separate operation.","reload":{"native":"{agent} loads Skills from the worktree at startup. Restart the {agent} session in this worktree to pick up {skillId} {version}.","commandmateRuntime":"{agent} runs this Skill through the CommandMate runtime. Restart the {agent} session in this worktree so the runtime picks up {skillId} {version}.","unsupported":"{agent} does not support this Skill. The files were updated, but {skillId} {version} will not be offered in {agent} sessions.","unknown":"Support for {agent} has not been verified. The files were updated; restart the {agent} session and check whether {skillId} {version} is offered."}},"card":{"provider":"by {provider}","noRecommendedVersion":"No installable version"},"worktreePane":{"installedHeading":"Installed in this worktree","installedError":"The installed Skills for this worktree could not be loaded.","installedEmpty":"No Skills are installed in this worktree yet.","catalogHeading":"Install from the Catalog","installedBadge":"Installed","version":"Version {version}","back":"Back to Skills","updateBadge":"Update available"},"state":{"loading":"Loading the Skill Catalog…","empty":"The official Catalog publishes no Skills yet.","noResults":"No Skill matches the current search and filters.","noResultsHint":"Try a different keyword or reset the filters.","errorHeading":"The Skill Catalog could not be loaded","errorNotice":"This is a retrieval failure, not an empty Catalog. No conclusion can be drawn about which Skills exist.","errorCode":"Error code: {code}","retry":"Retry","notFoundHeading":"Skill not found","notFoundNotice":"The official Catalog has no Skill with this ID."},"catalog":{"staleHeading":"Showing a cached Catalog","staleNotice":"CommandMate could not confirm this Catalog is current, so what you see may be out of date.","offlineNotice":"The Catalog origin could not be reached on the last attempt.","freshLabel":"Catalog confirmed current","fetchedAt":"Last validated: {timestamp}","revalidatedAt":"Last confirmed current: {timestamp}","sourceLabel":"Source: {repository} at {ref}","reason":{"fetchFailed":"The Catalog could not be retrieved.","rateLimited":"The Catalog origin is rate limiting requests.","oversized":"The Catalog response exceeded the allowed size.","malformed":"The Catalog response was not valid JSON.","invalidSchema":"The Catalog response failed contract validation.","unknown":"The reason was not reported."}},"operation":{"errorHeading":"The operation was refused","reloadHeading":"Restart these agent sessions","installedHeading":"Installed","uninstalledHeading":"Removed","replayNotice":"This answers a request CommandMate had already carried out, so the per-file list is not repeated.","filesWritten":"{count} files written","filesRemoved":"{count} files removed","startOver":"Choose another target","error":{"planStale":"The worktree changed after this plan was built, so the plan no longer describes what would happen. Nothing was written. Build a new plan.","planExpired":"This plan is too old to spend. Nothing was written. Build a new plan.","planConsumed":"This plan has already been used. Nothing was written a second time.","planNotFound":"CommandMate no longer holds this plan. Nothing was written. Build a new plan.","planBindingMismatch":"This plan was built for a different request and cannot be spent here. Build a new plan from this screen.","planNotInstallable":"This plan reports blockers, so it cannot be applied. Nothing was written.","planRiskNotAcknowledged":"This package is high risk and the install was not explicitly acknowledged. Nothing was written.","installLocked":"Another Skill operation is running in this worktree. Nothing was written. Try again once it finishes.","installInProgress":"An earlier attempt at this exact install is still running. Wait for it rather than starting a second one.","installDestinationExists":"Something is already at the install path. Nothing was written; CommandMate does not overwrite what it did not install.","installDestinationUnmanaged":"A Skill directory that CommandMate did not install is already at this path. Nothing was written.","installIdempotencyConflict":"This retry does not match the request it repeats. Nothing was written. Build a new plan.","installFailed":"An earlier attempt at this install failed and nothing was written. Build a new plan.","uninstallLocked":"Another Skill operation is running in this worktree. Nothing was deleted. Try again once it finishes.","uninstallInProgress":"An earlier attempt at this exact uninstall is still running. Wait for it rather than starting a second one.","uninstallIdempotencyConflict":"This retry does not match the request it repeats. Nothing was deleted. Build a new plan.","uninstallNotInstalled":"CommandMate has no record of this Skill in this worktree, so there is nothing for it to remove.","uninstallBlocked":"Nothing was deleted. Some paths are not CommandMate\'s to remove.","uninstallDrift":"The worktree no longer matches the install record, so CommandMate cannot tell which files it owns. Nothing was deleted.","uninstallFileChanged":"A file changed after the plan was built. Nothing was deleted. Build a new plan.","uninstallFailed":"An earlier attempt at this uninstall failed and nothing was deleted. Build a new plan.","requestFailed":"The request did not reach CommandMate, or it answered without naming a reason. Nothing is known to have changed.","unexpected":"CommandMate reported a failure it has no explanation for. Treat the worktree as unchanged only after checking it.","updateNotInstalled":"CommandMate has no record of this Skill in this worktree, so there is nothing to update.","updateUpToDate":"No published version is newer than the installed one. Nothing to update.","updateVersionNotEligible":"The requested version is not a strictly newer published version of this Skill.","updateNoneCompatible":"Newer versions exist, but none of them works with the CommandMate you are running."}},"dashboard":{"title":"Installed Skills","description":"Which Skill is applied in which worktree, and whether it still matches what was installed.","scannedAt":"Scanned {timestamp}","worktreeCount":"{count} worktrees","rescan":"Rescan","reindex":"Rebuild index","reindexRunning":"Rebuilding…","reindexDone":"Rebuilt from receipts: {indexed} indexed, {removed} removed, {skipped} skipped.","reindexFailed":"The index could not be rebuilt.","errorNotice":"The applied state of installed Skills could not be read. This is not the same as having no Skills installed.","catalogUnavailable":"The Catalog is unreachable, so available updates cannot be determined. Everything else on this page still reflects the receipts on disk.","truncated":"The scan stopped at its size limit, so this list is incomplete.","unreadableWorktrees":"These registered worktrees no longer exist on disk and were not scanned: {worktrees}","empty":"No Skill is installed in any registered worktree.","filterSkill":"Skill","filterWorktree":"Worktree","filterStatus":"State","all":"All","rootPresent":"Present","rootMissing":"Not found","rootTruncated":"Scan truncated","driftSummary":"{modified} modified, {missing} missing, {unmanaged} unmanaged, {irregular} irregular","status":{"installed":"Installed","modified":"Changed locally","missing":"Payload missing","unmanaged":"Not indexed","updateAvailable":"Update available"},"statusHint":{"installed":"Every recorded install root matches the receipt.","modified":"Files under an install root differ from the receipt. Review the changes before updating or removing.","missing":"An install root recorded in the receipt has no payload on disk. The Skill will not be discovered from that root.","unmanaged":"A payload is on disk with no index entry behind it. Rebuild the index to adopt it, or remove it by hand.","updateAvailable":"The install is intact and the Catalog offers a newer compatible version."}},"history":{"heading":"Operation history","loading":"Reading the operation log…","empty":"No Skill operation has been recorded yet.","errorNotice":"The operation log could not be read. This is not the same as nothing having happened.","filterOperation":"Operation","filterResult":"Outcome","loadMore":"Load older","recordedAt":"{timestamp}","transitionLabel":"Version","transition":"{from} → {to}","actorLabel":"Requested by","origin":"Origin","sourceCommit":"Commit","artifactDigest":"Artifact digest","retry":"Open the Skill to try again","none":"—","operation":{"install":"Install","uninstall":"Uninstall","update":"Update"},"result":{"succeeded":"Succeeded","failed":"Failed","reconciled":"Reconciled"},"actor":{"user":"Web UI","cli":"CLI","system":"CommandMate"}}}')}};
@@ -1 +1 @@
1
- "use strict";exports.id=5571,exports.ids=[5571],exports.modules={95571:a=>{a.exports=JSON.parse('{"title":"Schedules","executionLogs":"Execution Logs","tabs":{"schedules":"Schedules","logs":"Logs"},"emptyState":{"title":"No schedules yet","description":"Run an agent automatically on a cron schedule.","createButton":"Create Schedule","manualToggle":"Or edit CMATE.md manually"},"noSchedules":"No schedules configured. Add a CMATE.md with a Schedules section.","noSchedulesTitle":"No schedules configured","noSchedulesStep1":"Switch to the Files tab","noSchedulesStep2":"Click the CMATE button in the toolbar to create CMATE.md","noSchedulesStep3":"Edit the Schedules table (Name, Cron, Message, CLI Tool, Enabled, Permission)","noSchedulesStep4":"Click CMATE again to validate","noLogs":"No execution logs yet.","status":{"running":"Running","completed":"Completed","failed":"Failed","timeout":"Timeout","cancelled":"Cancelled"},"enabled":"Enabled","disabled":"Disabled","activeSchedulesTitle":"Active Schedules","activeSchedulesDescription":"In-memory cron state currently registered by the scheduler.","noActiveSchedules":"No schedules are currently registered in memory.","nextRun":"Next run","agentLabel":"Agent","activeState":{"active":"Active","inactive":"Inactive","executing":"Executing"},"lastRun":"Last run","cron":"Cron","exitCode":"Exit","noOutput":"(no output)","message":"Message","response":"Response","unknownSchedule":"(deleted schedule)","retry":"Retry","loading":"Loading...","notes":"Notes","logs":"Schedules","notesAndLogs":"CMATE","agentTab":"Agent","agentSettings":"Agent Settings","selectAgents":"Select 2 agents to display in the terminal header tabs.","agentSaveSuccess":"Agent settings saved.","agentSaveError":"Failed to save agent settings.","agentInstances":"Agent Instances","agentInstancesDescription":"Manage the agents shown in the terminal header tabs. Add multiple instances of the same tool and give each an alias.","agentInstanceAliasLabel":"Alias","agentInstanceAliasPlaceholder":"Display name","agentInstanceBaseTool":"Base tool","agentInstanceAdd":"Add instance","agentInstanceDelete":"Delete instance","agentInstanceMoveUp":"Move up","agentInstanceMoveDown":"Move down","agentInstanceActions":"Instance actions","memoMoveUp":"Move up","memoMoveDown":"Move down","agentInstanceMax":"Up to {max} instances can be added.","agentInstanceMin":"At least {min} instance is required.","agentInstanceSaveError":"Failed to save agent instances.","agentDefaults":"Use this layout as the default","agentDefaultsDescription":"Save the tool order shown here as the default for new branches, or apply it to the branches of this repository that nobody has touched yet. Several instances of one tool count once.","agentDefaultsSetDefault":"Make this the default","agentDefaultsSaved":"Saved as the default. It now shows under \\"Default agents for new branches\\" in Settings.","agentDefaultsSaveError":"Could not save the default.","agentDefaultsApply":"Apply to unchanged branches","agentDefaultsApplyScope":"Only branches of this repository are affected. Other repositories, and branches whose agents you changed by hand, are left alone.","agentDefaultsEligible":"Would change {count} branch(es) in this repository","agentDefaultsEligibleUnknown":"Branches this would change: unknown","agentDefaultsRepositoryLabel":"Repository: {repository}","agentDefaultsRepoDeclared":"This repository declares its agents in .commandmate/agents.yaml. A bulk apply would override that declaration permanently, so it is disabled here — change the file instead.","agentDefaultsApplyConfirm":"Apply {agents} to {count} unchanged branch(es) in this repository. Other repositories, and branches whose agents you changed by hand, are left alone.","agentDefaultsApplied":"Applied to {count} branch(es).","agentDefaultsApplyError":"Could not apply to the branches.","agentDefaultsCountError":"Could not read how many branches this would change.","agentDefaultsRetry":"Retry the count","agentDefaultsInvalidRoster":"A default needs between {min} and {max} distinct tools. Add or remove a tool.","mobileVisibleInstances":"Show on this device","mobileVisibleInstancesDescription":"Choose which instances appear as tabs on this device. This selection is saved per device and does not change the shared instance list.","mobileVisibleInstanceMin":"At least one instance must stay visible on this device.","vibeLocalModel":"Ollama Model","vibeLocalModelDefault":"Default","vibeLocalContextWindow":"Context Window","vibeLocalContextWindowDefault":"Default (auto)","ollamaNotAvailable":"Ollama is not running. Start Ollama to select a model.","cmateCreated":"CMATE.md created with template. Edit it to configure schedules.","cmateValidation":{"noSchedulesSection":"CMATE.md has no Schedules section.","valid":"{count} schedule(s) validated successfully.","errors":"{errorCount} validation error(s) found: {details}","failed":"Failed to process CMATE.md."},"edit":{"newSchedule":"New Schedule","titleCreate":"New Schedule","titleEdit":"Edit Schedule","sectionBasic":"Basic","sectionAdvanced":"Advanced","sectionMessage":"Message","name":"Name","namePlaceholder":"daily-review","cron":"Cron Expression","cronPlaceholder":"0 9 * * *","cronPreset":"Preset","cronPresetHourly":"Every hour (0 */1 * * *)","cronPresetDaily9":"Daily at 9:00 (0 9 * * *)","cronPresetWeeklyMon9":"Mondays at 9:00 (0 9 * * 1)","cronPresetCustom":"Custom","askAiCron":"Ask AI","askAiMessage":"Ask AI to draft","askAiHint":"Drafts a prompt into the AI chat (no auto-send)","aiPrompts":{"cron":"I want to express the schedule timing as a cron expression. Convert a plain-language request (e.g. \\"every Monday at 9\\") into a cron expression and suggest a few candidates (e.g. \\"every Monday at 9\\" → `0 9 * * 1`).","cronRefine":"I want to express the schedule timing as a cron expression. The current input is {current}. Building on that, convert a plain-language request (e.g. \\"every Monday at 9\\") into a cron expression and suggest a few candidates (e.g. \\"every Monday at 9\\" → `0 9 * * 1`).","messageDraft":"For this schedule, I want to write the message (the instruction prompt) that the CLI tool will run on a schedule. First ask me what it is for, then propose the message content based on my answer.","messageDraftNamed":"For the schedule {name}, I want to write the message (the instruction prompt) that the CLI tool will run on a schedule. First ask me what it is for, then propose the message content based on my answer."},"cliTool":"CLI Tool","model":"Model","modelPlaceholder":"gpt-4.1","opencodeAgent":"Agent (opencode)","opencodeAgentPlaceholder":"plan","opencodeVariant":"Variant (opencode)","opencodeVariantPlaceholder":"high","opencodeTitle":"Session title (opencode)","opencodeTitlePlaceholder":"nightly-review","opencodeContinue":"Continue the last session (--continue)","permission":"Permission","commandCodeReadOnlyNote":"In command-code print mode, anything other than `yolo` blocks edit_file / write_file / shell_command / monitor_command / kill_shell, so the run is read-only (and is still recorded as a success).","message":"Message","messagePlaceholder":"Summarize README.md","charCount":"{count} / {max}","enabledLabel":"Enabled","save":"Save","cancel":"Cancel","edit":"Edit","delete":"Delete","enable":"Enable","disable":"Disable","confirmDelete":"Delete schedule \\"{name}\\"?","saveError":"Failed to save the schedule.","errorNameRequired":"Name is required.","errorNameTooLong":"Name must be {max} characters or less.","errorNameInvalid":"Name contains invalid characters.","errorCronInvalid":"Invalid cron expression.","errorMessageRequired":"Message is required.","errorMessageTooLong":"Message must be {max} characters or less.","errorModelInvalid":"Invalid model name.","errorAgentInvalid":"Invalid agent name.","errorVariantInvalid":"Invalid variant name.","errorTitleInvalid":"Invalid session title."},"timerTab":"Timer","todoTab":"ToDo","skillsTab":"Skills","verificationTab":"Verification","envTab":"Env","timer":{"title":"Delayed Messages","titleCreate":"New Timer","createButton":"Create Timer","newTimer":"New Timer","close":"Cancel","agent":"Agent","message":"Message","delay":"Send After","register":"Register Timer","cancel":"Cancel","noTimers":"No timers registered.","maxReached":"Maximum {max} timers per worktree.","registerSuccess":"Timer registered.","registerError":"Failed to register timer.","cancelSuccess":"Timer cancelled.","cancelError":"Failed to cancel timer.","status":{"pending":"Pending","sending":"Sending","sent":"Sent","failed":"Failed","cancelled":"Cancelled","no_session":"No Session"},"sessionWarning":"Session is not running. If the session is not running when the timer fires, the message will not be sent.","minutesShort":"{minutes}m","hoursMinutesShort":"{hours}h {minutes}m","loadMore":"Load more","clearHistory":"Clear history","clearConfirm":"Delete all sent, failed, and cancelled timer history?","cleared":"History cleared ({count} items)","detailTitle":"Timer Details","statusLabel":"Status","scheduledTime":"Scheduled Send","createdTime":"Created","sentTime":"Sent","failureReason":"Failure Reason"},"memoAdd":"Add Memo","memoRemaining":"{count} remaining","memoDefaultTitle":"Memo","memoTitlePlaceholder":"Memo title","memoInsertToMessage":"Insert to message","memoCopyContent":"Copy memo content","memoDelete":"Delete memo","memoContentPlaceholder":"Enter memo content...","memoLoading":"Loading memos...","memoSearchToggle":"Search memos","memoEmpty":"No memos yet.","memoEmptyHint":"Click the button below to add one.","memoNoMatch":"No memos match your search.","memoSearchLabel":"Memo search","memoSearchPlaceholder":"Search...","memoSearchInputLabel":"Search memos","memoSearchPrev":"Previous match (prev)","memoSearchNext":"Next match (next)","memoSearchClose":"Close search (close)","opencodeSettings":"opencode launch settings","opencodeSettingsDescription":"The agent, model and variant this instance starts opencode with and sends prompts as.","opencodeAgent":"Agent","opencodeModel":"Model","opencodeVariant":"Variant (reasoning effort)","opencodeDefault":"opencode default","opencodeAgentPlaceholder":"build","opencodeModelPlaceholder":"provider/model","opencodeVariantPlaceholder":"high","opencodeNoVariants":"This model has no variants.","opencodeSettingsOffline":"opencode is not running, so no candidates could be read. Values can be typed in directly (model as provider/model).","opencodeVariantLaunchNote":"Agent and model take effect the next time this instance starts. The variant cannot be passed as a launch flag — opencode 1.18.22\'s TUI has no --variant — so it is applied to the prompts CommandMate posts, from the next message on.","opencodeSettingsLoadError":"Failed to load the opencode launch settings.","opencodeSettingsSaveError":"Failed to save the opencode launch settings."}')}};
1
+ "use strict";exports.id=5571,exports.ids=[5571],exports.modules={95571:a=>{a.exports=JSON.parse('{"title":"Schedules","executionLogs":"Execution Logs","tabs":{"schedules":"Schedules","logs":"Logs"},"emptyState":{"title":"No schedules yet","description":"Run an agent automatically on a cron schedule.","createButton":"Create Schedule","manualToggle":"Or edit CMATE.md manually"},"noSchedules":"No schedules configured. Add a CMATE.md with a Schedules section.","noSchedulesTitle":"No schedules configured","noSchedulesStep1":"Switch to the Files tab","noSchedulesStep2":"Click the CMATE button in the toolbar to create CMATE.md","noSchedulesStep3":"Edit the Schedules table (Name, Cron, Message, CLI Tool, Enabled, Permission)","noSchedulesStep4":"Click CMATE again to validate","noLogs":"No execution logs yet.","status":{"running":"Running","completed":"Completed","failed":"Failed","timeout":"Timeout","cancelled":"Cancelled"},"enabled":"Enabled","disabled":"Disabled","activeSchedulesTitle":"Active Schedules","activeSchedulesDescription":"In-memory cron state currently registered by the scheduler.","noActiveSchedules":"No schedules are currently registered in memory.","nextRun":"Next run","agentLabel":"Agent","activeState":{"active":"Active","inactive":"Inactive","executing":"Executing"},"lastRun":"Last run","cron":"Cron","exitCode":"Exit","noOutput":"(no output)","message":"Message","response":"Response","unknownSchedule":"(deleted schedule)","retry":"Retry","loading":"Loading...","notes":"Notes","logs":"Schedules","notesAndLogs":"CMATE","agentTab":"Agent","agentSettings":"Agent Settings","selectAgents":"Select 2 agents to display in the terminal header tabs.","agentSaveSuccess":"Agent settings saved.","agentSaveError":"Failed to save agent settings.","agentInstances":"Agent Instances","agentInstancesDescription":"Manage the agents shown in the terminal header tabs. Add multiple instances of the same tool and give each an alias.","agentInstanceAliasLabel":"Alias","agentInstanceAliasPlaceholder":"Display name","agentInstanceBaseTool":"Base tool","agentInstanceAdd":"Add instance","agentInstanceDelete":"Delete instance","agentInstanceMoveUp":"Move up","agentInstanceMoveDown":"Move down","agentInstanceActions":"Instance actions","memoMoveUp":"Move up","memoMoveDown":"Move down","agentInstanceMax":"Up to {max} instances can be added.","agentInstanceMin":"At least {min} instance is required.","agentInstanceSaveError":"Failed to save agent instances.","agentDefaults":"Use this layout as the default","agentDefaultsDescription":"Save the tool order shown here as the default for new branches, or apply it to the branches of this repository that nobody has touched yet. Several instances of one tool count once.","agentDefaultsSetDefault":"Make this the default","agentDefaultsSaved":"Saved as the default. It now shows under \\"Default agents for new branches\\" in Settings.","agentDefaultsSaveError":"Could not save the default.","agentDefaultsApply":"Apply to unchanged branches","agentDefaultsApplyScope":"Only branches of this repository are affected. Other repositories, and branches whose agents you changed by hand, are left alone.","agentDefaultsEligible":"Would change {count} branch(es) in this repository","agentDefaultsEligibleUnknown":"Branches this would change: unknown","agentDefaultsRepositoryLabel":"Repository: {repository}","agentDefaultsRepoDeclared":"This repository declares its agents in .commandmate/agents.yaml. A bulk apply would override that declaration permanently, so it is disabled here — change the file instead.","agentDefaultsApplyConfirm":"Apply {agents} to {count} unchanged branch(es) in this repository. Other repositories, and branches whose agents you changed by hand, are left alone.","agentDefaultsApplied":"Applied to {count} branch(es).","agentDefaultsApplyError":"Could not apply to the branches.","agentDefaultsCountError":"Could not read how many branches this would change.","agentDefaultsRetry":"Retry the count","agentDefaultsInvalidRoster":"A default needs between {min} and {max} distinct tools. Add or remove a tool.","mobileVisibleInstances":"Show on this device","mobileVisibleInstancesDescription":"Choose which instances appear as tabs on this device. This selection is saved per device and does not change the shared instance list.","mobileVisibleInstanceMin":"At least one instance must stay visible on this device.","vibeLocalModel":"Ollama Model","vibeLocalModelDefault":"Default","vibeLocalContextWindow":"Context Window","vibeLocalContextWindowDefault":"Default (auto)","ollamaNotAvailable":"Ollama is not running. Start Ollama to select a model.","cmateCreated":"CMATE.md created with template. Edit it to configure schedules.","cmateValidation":{"noSchedulesSection":"CMATE.md has no Schedules section.","valid":"{count} schedule(s) validated successfully.","errors":"{errorCount} validation error(s) found: {details}","failed":"Failed to process CMATE.md."},"edit":{"newSchedule":"New Schedule","titleCreate":"New Schedule","titleEdit":"Edit Schedule","sectionBasic":"Basic","sectionAdvanced":"Advanced","sectionMessage":"Message","name":"Name","namePlaceholder":"daily-review","cron":"Cron Expression","cronPlaceholder":"0 9 * * *","cronPreset":"Preset","cronPresetHourly":"Every hour (0 */1 * * *)","cronPresetDaily9":"Daily at 9:00 (0 9 * * *)","cronPresetWeeklyMon9":"Mondays at 9:00 (0 9 * * 1)","cronPresetCustom":"Custom","askAiCron":"Ask AI","askAiMessage":"Ask AI to draft","askAiHint":"Drafts a prompt into the AI chat (no auto-send)","aiPrompts":{"cron":"I want to express the schedule timing as a cron expression. Convert a plain-language request (e.g. \\"every Monday at 9\\") into a cron expression and suggest a few candidates (e.g. \\"every Monday at 9\\" → `0 9 * * 1`).","cronRefine":"I want to express the schedule timing as a cron expression. The current input is {current}. Building on that, convert a plain-language request (e.g. \\"every Monday at 9\\") into a cron expression and suggest a few candidates (e.g. \\"every Monday at 9\\" → `0 9 * * 1`).","messageDraft":"For this schedule, I want to write the message (the instruction prompt) that the CLI tool will run on a schedule. First ask me what it is for, then propose the message content based on my answer.","messageDraftNamed":"For the schedule {name}, I want to write the message (the instruction prompt) that the CLI tool will run on a schedule. First ask me what it is for, then propose the message content based on my answer."},"cliTool":"CLI Tool","model":"Model","modelPlaceholder":"gpt-4.1","opencodeAgent":"Agent (opencode)","opencodeAgentPlaceholder":"plan","opencodeVariant":"Variant (opencode)","opencodeVariantPlaceholder":"high","opencodeTitle":"Session title (opencode)","opencodeTitlePlaceholder":"nightly-review","opencodeContinue":"Continue the last session (--continue)","permission":"Permission","commandCodeReadOnlyNote":"In command-code print mode, anything other than `yolo` blocks edit_file / write_file / shell_command / monitor_command / kill_shell, so the run is read-only (and is still recorded as a success).","message":"Message","messagePlaceholder":"Summarize README.md","charCount":"{count} / {max}","enabledLabel":"Enabled","save":"Save","cancel":"Cancel","edit":"Edit","delete":"Delete","enable":"Enable","disable":"Disable","confirmDelete":"Delete schedule \\"{name}\\"?","saveError":"Failed to save the schedule.","errorNameRequired":"Name is required.","errorNameTooLong":"Name must be {max} characters or less.","errorNameInvalid":"Name contains invalid characters.","errorCronInvalid":"Invalid cron expression.","errorMessageRequired":"Message is required.","errorMessageTooLong":"Message must be {max} characters or less.","errorModelInvalid":"Invalid model name.","errorAgentInvalid":"Invalid agent name.","errorVariantInvalid":"Invalid variant name.","errorVariantNeedsModel":"OpenCode V2 needs a Model to go with the Variant (it is sent as -m <provider/model>#<variant>).","errorTitleInvalid":"Invalid session title."},"timerTab":"Timer","todoTab":"ToDo","skillsTab":"Skills","verificationTab":"Verification","envTab":"Env","timer":{"title":"Delayed Messages","titleCreate":"New Timer","createButton":"Create Timer","newTimer":"New Timer","close":"Cancel","agent":"Agent","message":"Message","delay":"Send After","register":"Register Timer","cancel":"Cancel","noTimers":"No timers registered.","maxReached":"Maximum {max} timers per worktree.","registerSuccess":"Timer registered.","registerError":"Failed to register timer.","cancelSuccess":"Timer cancelled.","cancelError":"Failed to cancel timer.","status":{"pending":"Pending","sending":"Sending","sent":"Sent","failed":"Failed","cancelled":"Cancelled","no_session":"No Session"},"sessionWarning":"Session is not running. If the session is not running when the timer fires, the message will not be sent.","minutesShort":"{minutes}m","hoursMinutesShort":"{hours}h {minutes}m","loadMore":"Load more","clearHistory":"Clear history","clearConfirm":"Delete all sent, failed, and cancelled timer history?","cleared":"History cleared ({count} items)","detailTitle":"Timer Details","statusLabel":"Status","scheduledTime":"Scheduled Send","createdTime":"Created","sentTime":"Sent","failureReason":"Failure Reason"},"memoAdd":"Add Memo","memoRemaining":"{count} remaining","memoDefaultTitle":"Memo","memoTitlePlaceholder":"Memo title","memoInsertToMessage":"Insert to message","memoCopyContent":"Copy memo content","memoDelete":"Delete memo","memoContentPlaceholder":"Enter memo content...","memoLoading":"Loading memos...","memoSearchToggle":"Search memos","memoEmpty":"No memos yet.","memoEmptyHint":"Click the button below to add one.","memoNoMatch":"No memos match your search.","memoSearchLabel":"Memo search","memoSearchPlaceholder":"Search...","memoSearchInputLabel":"Search memos","memoSearchPrev":"Previous match (prev)","memoSearchNext":"Next match (next)","memoSearchClose":"Close search (close)","opencodeSettings":"opencode launch settings","opencodeSettingsDescription":"The agent, model and variant this instance starts opencode with and sends prompts as.","opencodeAgent":"Agent","opencodeModel":"Model","opencodeVariant":"Variant (reasoning effort)","opencodeDefault":"opencode default","opencodeAgentPlaceholder":"build","opencodeModelPlaceholder":"provider/model","opencodeVariantPlaceholder":"high","opencodeNoVariants":"This model has no variants.","opencodeSettingsOffline":"opencode is not running, so no candidates could be read. Values can be typed in directly (model as provider/model).","opencodeVariantLaunchNote":"Agent and model take effect the next time this instance starts. The variant cannot be passed as a launch flag — opencode 1.18.22\'s TUI has no --variant — so it is applied to the prompts CommandMate posts, from the next message on.","opencodeSettingsLoadError":"Failed to load the opencode launch settings.","opencodeSettingsSaveError":"Failed to save the opencode launch settings."}')}};