commandmate 0.14.1 → 0.15.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 (639) hide show
  1. package/.env.example +7 -0
  2. package/.next/BUILD_ID +1 -1
  3. package/.next/app-build-manifest.json +352 -333
  4. package/.next/app-path-routes-manifest.json +31 -28
  5. package/.next/build-manifest.json +5 -5
  6. package/.next/prerender-manifest.json +15 -15
  7. package/.next/react-loadable-manifest.json +11 -13
  8. package/.next/required-server-files.json +1 -1
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/update-check/route.js +1 -1
  12. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  14. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  15. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  17. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  18. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/assistant/messages/route.js +1 -1
  20. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  21. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/assistant/session/route.js +1 -1
  23. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  24. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/assistant/start/route.js +1 -1
  26. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  27. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/assistant/terminal/route.js +1 -1
  29. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  30. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/assistant/tools/route.js +1 -1
  32. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  33. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/daily-summary/route.js +1 -1
  38. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  39. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  41. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  42. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
  44. package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
  45. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  47. package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
  48. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/external-apps/route.js +1 -1
  50. package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
  51. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/fs/browse/route.js +7 -0
  53. package/.next/server/app/api/fs/browse/route.js.nft.json +1 -0
  54. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -0
  55. package/.next/server/app/api/fs/recent-paths/route.js +7 -0
  56. package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -0
  57. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -0
  58. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  59. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  60. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/push/subscriptions/route.js +1 -1
  63. package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
  64. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/push/vapid/route.js +1 -1
  66. package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
  67. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/[id]/route.js +1 -1
  69. package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
  70. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
  72. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +1 -1
  73. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
  75. package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +1 -1
  76. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  78. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  79. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/repositories/clone/route.js +1 -1
  81. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  82. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/repositories/excluded/route.js +1 -1
  84. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
  85. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/repositories/restore/route.js +1 -1
  87. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  88. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/repositories/route.js +1 -1
  90. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  91. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/repositories/scan/route.js +1 -1
  93. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  94. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/repositories/sync/route.js +1 -1
  96. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  97. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/repositories/validate-path/route.js +1 -0
  99. package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -0
  100. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -0
  101. package/.next/server/app/api/sidebar/group-order/route.js +2 -2
  102. package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
  103. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/skills/[id]/route.js +1 -1
  105. package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
  106. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/skills/route.js +1 -1
  108. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  109. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/slash-commands/route.js +1 -1
  111. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  112. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/templates/[id]/route.js +1 -1
  114. package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
  115. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/templates/route.js +1 -1
  117. package/.next/server/app/api/templates/route.js.nft.json +1 -1
  118. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/todos/route.js +1 -1
  120. package/.next/server/app/api/todos/route.js.nft.json +1 -1
  121. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  124. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  127. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
  130. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  133. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  136. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
  139. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  142. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
  145. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
  169. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
  172. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
  175. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
  178. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
  181. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
  184. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
  187. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
  190. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
  193. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
  196. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
  199. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
  202. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
  205. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
  208. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
  211. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
  214. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  217. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  220. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
  223. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
  226. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
  229. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
  232. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
  235. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
  238. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  240. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  241. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  244. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  245. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  247. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  250. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  253. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  256. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
  259. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  262. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  263. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
  264. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
  265. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  266. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  267. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
  268. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  269. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
  270. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
  271. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  272. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
  273. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
  274. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  275. package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
  276. package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
  277. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  278. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  279. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  280. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  281. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  282. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  283. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  284. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  285. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
  286. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  287. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  288. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  289. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  290. package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
  291. package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
  292. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  293. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  294. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  295. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  296. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  297. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
  298. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  299. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  300. package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
  301. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  302. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  303. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
  304. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  305. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  306. package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
  307. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  308. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  309. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
  310. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  311. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  312. package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
  313. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  314. package/.next/server/app/api/worktrees/route.js +1 -1
  315. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  316. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  317. package/.next/server/app/chat/page.js +1 -1
  318. package/.next/server/app/chat/page.js.nft.json +1 -1
  319. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  320. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  321. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  322. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  323. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  324. package/.next/server/app/page_client-reference-manifest.js +1 -1
  325. package/.next/server/app/proxy/[...path]/route.js +1 -1
  326. package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
  327. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  328. package/.next/server/app/repositories/page.js +2 -2
  329. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  330. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  331. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  332. package/.next/server/app/skills/[skillId]/page.js +2 -2
  333. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  334. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  335. package/.next/server/app/skills/page.js +1 -1
  336. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  337. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
  338. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  339. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  340. package/.next/server/app/worktrees/[id]/page.js +9 -9
  341. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  342. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  343. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  344. package/.next/server/app-paths-manifest.json +31 -28
  345. package/.next/server/chunks/1355.js +1 -0
  346. package/.next/server/chunks/1808.js +1 -1
  347. package/.next/server/chunks/2119.js +1 -1
  348. package/.next/server/chunks/2445.js +1 -1
  349. package/.next/server/chunks/3543.js +1 -1
  350. package/.next/server/chunks/3722.js +1 -1
  351. package/.next/server/chunks/3736.js +1 -1
  352. package/.next/server/chunks/3753.js +1 -1
  353. package/.next/server/chunks/3945.js +1 -1
  354. package/.next/server/chunks/4390.js +1 -0
  355. package/.next/server/chunks/4444.js +1 -1
  356. package/.next/server/chunks/5326.js +1 -1
  357. package/.next/server/chunks/593.js +1 -0
  358. package/.next/server/chunks/5959.js +2 -2
  359. package/.next/server/chunks/6065.js +1 -1
  360. package/.next/server/chunks/6130.js +1 -1
  361. package/.next/server/chunks/646.js +2 -2
  362. package/.next/server/chunks/7593.js +1 -0
  363. package/.next/server/chunks/8356.js +1 -1
  364. package/.next/server/chunks/9123.js +1 -1
  365. package/.next/server/chunks/9192.js +1 -1
  366. package/.next/server/chunks/9687.js +1 -1
  367. package/.next/server/middleware-build-manifest.js +1 -1
  368. package/.next/server/middleware-manifest.json +5 -5
  369. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  370. package/.next/server/pages/500.html +1 -1
  371. package/.next/server/server-reference-manifest.json +1 -1
  372. package/.next/server/src/middleware.js.map +1 -1
  373. package/.next/static/MqlW91_Se_kEW6mtm-1x0/_buildManifest.js +1 -0
  374. package/.next/static/chunks/1191-b7dfdfe86b1d31d1.js +1 -0
  375. package/.next/static/chunks/{4560-04e5aebcab96bfa1.js → 4560-8ffb0bb19f2ba998.js} +1 -1
  376. package/.next/static/chunks/530.e31cc754677fed0f.js +1 -0
  377. package/.next/static/chunks/5542-b6457f305d724a6b.js +1 -0
  378. package/.next/static/chunks/{6488-74d2f443e43c07b7.js → 6488-93870a55f4a3e3cd.js} +1 -1
  379. package/.next/static/chunks/8566-a6a7c70558927410.js +1 -0
  380. package/.next/static/chunks/9142-41b13a2f278529cc.js +1 -0
  381. package/.next/static/chunks/9263.5259f73f89220d64.js +1 -0
  382. package/.next/static/chunks/9599-d29d2f8eeaf7c249.js +1 -0
  383. package/.next/static/chunks/app/api/app/update/route-8c8bebe20cebf964.js +1 -0
  384. package/.next/static/chunks/app/api/app/update-check/route-8c8bebe20cebf964.js +1 -0
  385. package/.next/static/chunks/app/api/assistant/conversation/route-8c8bebe20cebf964.js +1 -0
  386. package/.next/static/chunks/app/api/assistant/current-output/route-8c8bebe20cebf964.js +1 -0
  387. package/.next/static/chunks/app/api/assistant/messages/route-8c8bebe20cebf964.js +1 -0
  388. package/.next/static/chunks/app/api/assistant/session/route-8c8bebe20cebf964.js +1 -0
  389. package/.next/static/chunks/app/api/assistant/start/route-8c8bebe20cebf964.js +1 -0
  390. package/.next/static/chunks/app/api/assistant/terminal/route-8c8bebe20cebf964.js +1 -0
  391. package/.next/static/chunks/app/api/assistant/tools/route-8c8bebe20cebf964.js +1 -0
  392. package/.next/static/chunks/app/api/auth/login/route-8c8bebe20cebf964.js +1 -0
  393. package/.next/static/chunks/app/api/auth/logout/route-8c8bebe20cebf964.js +1 -0
  394. package/.next/static/chunks/app/api/auth/status/route-8c8bebe20cebf964.js +1 -0
  395. package/.next/static/chunks/app/api/daily-summary/route-8c8bebe20cebf964.js +1 -0
  396. package/.next/static/chunks/app/api/daily-summary/status/route-8c8bebe20cebf964.js +1 -0
  397. package/.next/static/chunks/app/api/external-apps/[id]/health/route-8c8bebe20cebf964.js +1 -0
  398. package/.next/static/chunks/app/api/external-apps/[id]/route-8c8bebe20cebf964.js +1 -0
  399. package/.next/static/chunks/app/api/external-apps/route-8c8bebe20cebf964.js +1 -0
  400. package/.next/static/chunks/app/api/fs/browse/route-8c8bebe20cebf964.js +1 -0
  401. package/.next/static/chunks/app/api/fs/recent-paths/route-8c8bebe20cebf964.js +1 -0
  402. package/.next/static/chunks/app/api/hooks/claude-done/route-8c8bebe20cebf964.js +1 -0
  403. package/.next/static/chunks/app/api/ollama/models/route-8c8bebe20cebf964.js +1 -0
  404. package/.next/static/chunks/app/api/push/subscriptions/route-8c8bebe20cebf964.js +1 -0
  405. package/.next/static/chunks/app/api/push/vapid/route-8c8bebe20cebf964.js +1 -0
  406. package/.next/static/chunks/app/api/repositories/[id]/route-8c8bebe20cebf964.js +1 -0
  407. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-8c8bebe20cebf964.js +1 -0
  408. package/.next/static/chunks/app/api/repositories/[id]/todos/route-8c8bebe20cebf964.js +1 -0
  409. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-8c8bebe20cebf964.js +1 -0
  410. package/.next/static/chunks/app/api/repositories/clone/route-8c8bebe20cebf964.js +1 -0
  411. package/.next/static/chunks/app/api/repositories/excluded/route-8c8bebe20cebf964.js +1 -0
  412. package/.next/static/chunks/app/api/repositories/restore/route-8c8bebe20cebf964.js +1 -0
  413. package/.next/static/chunks/app/api/repositories/route-8c8bebe20cebf964.js +1 -0
  414. package/.next/static/chunks/app/api/repositories/scan/route-8c8bebe20cebf964.js +1 -0
  415. package/.next/static/chunks/app/api/repositories/sync/route-8c8bebe20cebf964.js +1 -0
  416. package/.next/static/chunks/app/api/repositories/validate-path/route-8c8bebe20cebf964.js +1 -0
  417. package/.next/static/chunks/app/api/sidebar/group-order/route-8c8bebe20cebf964.js +1 -0
  418. package/.next/static/chunks/app/api/skills/[id]/route-8c8bebe20cebf964.js +1 -0
  419. package/.next/static/chunks/app/api/skills/route-8c8bebe20cebf964.js +1 -0
  420. package/.next/static/chunks/app/api/slash-commands/route-8c8bebe20cebf964.js +1 -0
  421. package/.next/static/chunks/app/api/templates/[id]/route-8c8bebe20cebf964.js +1 -0
  422. package/.next/static/chunks/app/api/templates/route-8c8bebe20cebf964.js +1 -0
  423. package/.next/static/chunks/app/api/todos/route-8c8bebe20cebf964.js +1 -0
  424. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-8c8bebe20cebf964.js +1 -0
  425. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-8c8bebe20cebf964.js +1 -0
  426. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-8c8bebe20cebf964.js +1 -0
  427. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-8c8bebe20cebf964.js +1 -0
  428. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-8c8bebe20cebf964.js +1 -0
  429. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-8c8bebe20cebf964.js +1 -0
  430. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-8c8bebe20cebf964.js +1 -0
  431. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-8c8bebe20cebf964.js +1 -0
  432. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-8c8bebe20cebf964.js +1 -0
  433. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-8c8bebe20cebf964.js +1 -0
  434. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-8c8bebe20cebf964.js +1 -0
  435. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-8c8bebe20cebf964.js +1 -0
  436. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-8c8bebe20cebf964.js +1 -0
  437. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-8c8bebe20cebf964.js +1 -0
  438. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-8c8bebe20cebf964.js +1 -0
  439. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-8c8bebe20cebf964.js +1 -0
  440. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-8c8bebe20cebf964.js +1 -0
  441. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-8c8bebe20cebf964.js +1 -0
  442. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-8c8bebe20cebf964.js +1 -0
  443. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-8c8bebe20cebf964.js +1 -0
  444. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-8c8bebe20cebf964.js +1 -0
  445. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-8c8bebe20cebf964.js +1 -0
  446. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-8c8bebe20cebf964.js +1 -0
  447. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-8c8bebe20cebf964.js +1 -0
  448. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-8c8bebe20cebf964.js +1 -0
  449. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-8c8bebe20cebf964.js +1 -0
  450. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-8c8bebe20cebf964.js +1 -0
  451. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-8c8bebe20cebf964.js +1 -0
  452. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-8c8bebe20cebf964.js +1 -0
  453. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-8c8bebe20cebf964.js +1 -0
  454. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-8c8bebe20cebf964.js +1 -0
  455. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-8c8bebe20cebf964.js +1 -0
  456. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-8c8bebe20cebf964.js +1 -0
  457. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-8c8bebe20cebf964.js +1 -0
  458. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-8c8bebe20cebf964.js +1 -0
  459. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-8c8bebe20cebf964.js +1 -0
  460. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-8c8bebe20cebf964.js +1 -0
  461. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-8c8bebe20cebf964.js +1 -0
  462. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-8c8bebe20cebf964.js +1 -0
  463. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-8c8bebe20cebf964.js +1 -0
  464. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-8c8bebe20cebf964.js +1 -0
  465. package/.next/static/chunks/app/api/worktrees/[id]/route-8c8bebe20cebf964.js +1 -0
  466. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-8c8bebe20cebf964.js +1 -0
  467. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-8c8bebe20cebf964.js +1 -0
  468. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-8c8bebe20cebf964.js +1 -0
  469. package/.next/static/chunks/app/api/worktrees/[id]/search/route-8c8bebe20cebf964.js +1 -0
  470. package/.next/static/chunks/app/api/worktrees/[id]/send/route-8c8bebe20cebf964.js +1 -0
  471. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-8c8bebe20cebf964.js +1 -0
  472. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-8c8bebe20cebf964.js +1 -0
  473. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-8c8bebe20cebf964.js +1 -0
  474. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-8c8bebe20cebf964.js +1 -0
  475. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-8c8bebe20cebf964.js +1 -0
  476. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-8c8bebe20cebf964.js +1 -0
  477. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-8c8bebe20cebf964.js +1 -0
  478. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-8c8bebe20cebf964.js +1 -0
  479. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-8c8bebe20cebf964.js +1 -0
  480. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-8c8bebe20cebf964.js +1 -0
  481. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-8c8bebe20cebf964.js +1 -0
  482. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-8c8bebe20cebf964.js +1 -0
  483. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-8c8bebe20cebf964.js +1 -0
  484. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-8c8bebe20cebf964.js +1 -0
  485. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-8c8bebe20cebf964.js +1 -0
  486. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-8c8bebe20cebf964.js +1 -0
  487. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-8c8bebe20cebf964.js +1 -0
  488. package/.next/static/chunks/app/api/worktrees/route-8c8bebe20cebf964.js +1 -0
  489. package/.next/static/chunks/app/chat/page-83a2238ab453afaa.js +1 -0
  490. package/.next/static/chunks/app/manifest.webmanifest/route-8c8bebe20cebf964.js +1 -0
  491. package/.next/static/chunks/app/proxy/[...path]/route-8c8bebe20cebf964.js +1 -0
  492. package/.next/static/chunks/app/repositories/page-3c4fb889da48ce24.js +1 -0
  493. package/.next/static/chunks/app/skills/[skillId]/page-8c40c9683f242207.js +1 -0
  494. package/.next/static/chunks/app/worktrees/[id]/files/[...path]/{page-6a45f3744da50d95.js → page-6041d3c3db326317.js} +1 -1
  495. package/.next/static/chunks/app/worktrees/[id]/page-6da38f0a06dfd9db.js +1 -0
  496. package/.next/static/chunks/webpack-6b35d37d50302d27.js +1 -0
  497. package/.next/static/css/5127edd9aa8f3b49.css +1 -0
  498. package/.next/trace +11 -11
  499. package/.next/types/app/api/fs/browse/route.ts +347 -0
  500. package/.next/types/app/api/fs/recent-paths/route.ts +347 -0
  501. package/.next/types/app/api/repositories/validate-path/route.ts +347 -0
  502. package/.next/types/routes.d.ts +4 -1
  503. package/.next/types/validator.ts +27 -0
  504. package/dist/cli/commands/init.d.ts.map +1 -1
  505. package/dist/cli/commands/init.js +15 -0
  506. package/dist/cli/types/index.d.ts +6 -0
  507. package/dist/cli/types/index.d.ts.map +1 -1
  508. package/dist/cli/utils/env-setup.d.ts +8 -0
  509. package/dist/cli/utils/env-setup.d.ts.map +1 -1
  510. package/dist/cli/utils/env-setup.js +23 -0
  511. package/dist/server/src/lib/git/git-exec.js +48 -1
  512. package/dist/server/src/lib/selected-agents-validator.js +3 -2
  513. package/dist/server/src/types/markdown-editor.js +13 -1
  514. package/package.json +1 -1
  515. package/.next/server/chunks/186.js +0 -1
  516. package/.next/server/chunks/7013.js +0 -1
  517. package/.next/server/chunks/9067.js +0 -1
  518. package/.next/static/1WyelLMRgPnhvA2HmhZmm/_buildManifest.js +0 -1
  519. package/.next/static/chunks/1668-e703b8b55775844b.js +0 -1
  520. package/.next/static/chunks/2069-c55de93eb6403961.js +0 -1
  521. package/.next/static/chunks/4027-000402aee1e3520b.js +0 -1
  522. package/.next/static/chunks/530.e377b0f1a7a89620.js +0 -1
  523. package/.next/static/chunks/6007-de36119357dcd418.js +0 -1
  524. package/.next/static/chunks/6497-ea466b22a6c1ae89.js +0 -1
  525. package/.next/static/chunks/8361.4bf062be2d2962f4.js +0 -1
  526. package/.next/static/chunks/8566-9da32e46c9d3fd54.js +0 -1
  527. package/.next/static/chunks/934-a37509667baa86ee.js +0 -1
  528. package/.next/static/chunks/app/api/app/update/route-56dad0523d3c4a92.js +0 -1
  529. package/.next/static/chunks/app/api/app/update-check/route-56dad0523d3c4a92.js +0 -1
  530. package/.next/static/chunks/app/api/assistant/conversation/route-56dad0523d3c4a92.js +0 -1
  531. package/.next/static/chunks/app/api/assistant/current-output/route-56dad0523d3c4a92.js +0 -1
  532. package/.next/static/chunks/app/api/assistant/messages/route-56dad0523d3c4a92.js +0 -1
  533. package/.next/static/chunks/app/api/assistant/session/route-56dad0523d3c4a92.js +0 -1
  534. package/.next/static/chunks/app/api/assistant/start/route-56dad0523d3c4a92.js +0 -1
  535. package/.next/static/chunks/app/api/assistant/terminal/route-56dad0523d3c4a92.js +0 -1
  536. package/.next/static/chunks/app/api/assistant/tools/route-56dad0523d3c4a92.js +0 -1
  537. package/.next/static/chunks/app/api/auth/login/route-56dad0523d3c4a92.js +0 -1
  538. package/.next/static/chunks/app/api/auth/logout/route-56dad0523d3c4a92.js +0 -1
  539. package/.next/static/chunks/app/api/auth/status/route-56dad0523d3c4a92.js +0 -1
  540. package/.next/static/chunks/app/api/daily-summary/route-56dad0523d3c4a92.js +0 -1
  541. package/.next/static/chunks/app/api/daily-summary/status/route-56dad0523d3c4a92.js +0 -1
  542. package/.next/static/chunks/app/api/external-apps/[id]/health/route-56dad0523d3c4a92.js +0 -1
  543. package/.next/static/chunks/app/api/external-apps/[id]/route-56dad0523d3c4a92.js +0 -1
  544. package/.next/static/chunks/app/api/external-apps/route-56dad0523d3c4a92.js +0 -1
  545. package/.next/static/chunks/app/api/hooks/claude-done/route-56dad0523d3c4a92.js +0 -1
  546. package/.next/static/chunks/app/api/ollama/models/route-56dad0523d3c4a92.js +0 -1
  547. package/.next/static/chunks/app/api/push/subscriptions/route-56dad0523d3c4a92.js +0 -1
  548. package/.next/static/chunks/app/api/push/vapid/route-56dad0523d3c4a92.js +0 -1
  549. package/.next/static/chunks/app/api/repositories/[id]/route-56dad0523d3c4a92.js +0 -1
  550. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-56dad0523d3c4a92.js +0 -1
  551. package/.next/static/chunks/app/api/repositories/[id]/todos/route-56dad0523d3c4a92.js +0 -1
  552. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-56dad0523d3c4a92.js +0 -1
  553. package/.next/static/chunks/app/api/repositories/clone/route-56dad0523d3c4a92.js +0 -1
  554. package/.next/static/chunks/app/api/repositories/excluded/route-56dad0523d3c4a92.js +0 -1
  555. package/.next/static/chunks/app/api/repositories/restore/route-56dad0523d3c4a92.js +0 -1
  556. package/.next/static/chunks/app/api/repositories/route-56dad0523d3c4a92.js +0 -1
  557. package/.next/static/chunks/app/api/repositories/scan/route-56dad0523d3c4a92.js +0 -1
  558. package/.next/static/chunks/app/api/repositories/sync/route-56dad0523d3c4a92.js +0 -1
  559. package/.next/static/chunks/app/api/sidebar/group-order/route-56dad0523d3c4a92.js +0 -1
  560. package/.next/static/chunks/app/api/skills/[id]/route-56dad0523d3c4a92.js +0 -1
  561. package/.next/static/chunks/app/api/skills/route-56dad0523d3c4a92.js +0 -1
  562. package/.next/static/chunks/app/api/slash-commands/route-56dad0523d3c4a92.js +0 -1
  563. package/.next/static/chunks/app/api/templates/[id]/route-56dad0523d3c4a92.js +0 -1
  564. package/.next/static/chunks/app/api/templates/route-56dad0523d3c4a92.js +0 -1
  565. package/.next/static/chunks/app/api/todos/route-56dad0523d3c4a92.js +0 -1
  566. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-56dad0523d3c4a92.js +0 -1
  567. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-56dad0523d3c4a92.js +0 -1
  568. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-56dad0523d3c4a92.js +0 -1
  569. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-56dad0523d3c4a92.js +0 -1
  570. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-56dad0523d3c4a92.js +0 -1
  571. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-56dad0523d3c4a92.js +0 -1
  572. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-56dad0523d3c4a92.js +0 -1
  573. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-56dad0523d3c4a92.js +0 -1
  574. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-56dad0523d3c4a92.js +0 -1
  575. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-56dad0523d3c4a92.js +0 -1
  576. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-56dad0523d3c4a92.js +0 -1
  577. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-56dad0523d3c4a92.js +0 -1
  578. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-56dad0523d3c4a92.js +0 -1
  579. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-56dad0523d3c4a92.js +0 -1
  580. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-56dad0523d3c4a92.js +0 -1
  581. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-56dad0523d3c4a92.js +0 -1
  582. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-56dad0523d3c4a92.js +0 -1
  583. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-56dad0523d3c4a92.js +0 -1
  584. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-56dad0523d3c4a92.js +0 -1
  585. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-56dad0523d3c4a92.js +0 -1
  586. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-56dad0523d3c4a92.js +0 -1
  587. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-56dad0523d3c4a92.js +0 -1
  588. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-56dad0523d3c4a92.js +0 -1
  589. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-56dad0523d3c4a92.js +0 -1
  590. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-56dad0523d3c4a92.js +0 -1
  591. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-56dad0523d3c4a92.js +0 -1
  592. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-56dad0523d3c4a92.js +0 -1
  593. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-56dad0523d3c4a92.js +0 -1
  594. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-56dad0523d3c4a92.js +0 -1
  595. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-56dad0523d3c4a92.js +0 -1
  596. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-56dad0523d3c4a92.js +0 -1
  597. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-56dad0523d3c4a92.js +0 -1
  598. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-56dad0523d3c4a92.js +0 -1
  599. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-56dad0523d3c4a92.js +0 -1
  600. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-56dad0523d3c4a92.js +0 -1
  601. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-56dad0523d3c4a92.js +0 -1
  602. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-56dad0523d3c4a92.js +0 -1
  603. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-56dad0523d3c4a92.js +0 -1
  604. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-56dad0523d3c4a92.js +0 -1
  605. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-56dad0523d3c4a92.js +0 -1
  606. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-56dad0523d3c4a92.js +0 -1
  607. package/.next/static/chunks/app/api/worktrees/[id]/route-56dad0523d3c4a92.js +0 -1
  608. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-56dad0523d3c4a92.js +0 -1
  609. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-56dad0523d3c4a92.js +0 -1
  610. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-56dad0523d3c4a92.js +0 -1
  611. package/.next/static/chunks/app/api/worktrees/[id]/search/route-56dad0523d3c4a92.js +0 -1
  612. package/.next/static/chunks/app/api/worktrees/[id]/send/route-56dad0523d3c4a92.js +0 -1
  613. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-56dad0523d3c4a92.js +0 -1
  614. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-56dad0523d3c4a92.js +0 -1
  615. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-56dad0523d3c4a92.js +0 -1
  616. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-56dad0523d3c4a92.js +0 -1
  617. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-56dad0523d3c4a92.js +0 -1
  618. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-56dad0523d3c4a92.js +0 -1
  619. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-56dad0523d3c4a92.js +0 -1
  620. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-56dad0523d3c4a92.js +0 -1
  621. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-56dad0523d3c4a92.js +0 -1
  622. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-56dad0523d3c4a92.js +0 -1
  623. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-56dad0523d3c4a92.js +0 -1
  624. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-56dad0523d3c4a92.js +0 -1
  625. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-56dad0523d3c4a92.js +0 -1
  626. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-56dad0523d3c4a92.js +0 -1
  627. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-56dad0523d3c4a92.js +0 -1
  628. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-56dad0523d3c4a92.js +0 -1
  629. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-56dad0523d3c4a92.js +0 -1
  630. package/.next/static/chunks/app/api/worktrees/route-56dad0523d3c4a92.js +0 -1
  631. package/.next/static/chunks/app/chat/page-623f5cb9040de639.js +0 -1
  632. package/.next/static/chunks/app/manifest.webmanifest/route-56dad0523d3c4a92.js +0 -1
  633. package/.next/static/chunks/app/proxy/[...path]/route-56dad0523d3c4a92.js +0 -1
  634. package/.next/static/chunks/app/repositories/page-70d4b997492884b8.js +0 -1
  635. package/.next/static/chunks/app/skills/[skillId]/page-68ed5e9186efe56d.js +0 -1
  636. package/.next/static/chunks/app/worktrees/[id]/page-983a80ece6289026.js +0 -1
  637. package/.next/static/chunks/webpack-e655374fed175528.js +0 -1
  638. package/.next/static/css/b4bdb1f3457fe9a7.css +0 -1
  639. /package/.next/static/{1WyelLMRgPnhvA2HmhZmm → MqlW91_Se_kEW6mtm-1x0}/_ssgManifest.js +0 -0
@@ -20,6 +20,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  exports.GIT_LOG_TIMEOUT_MS = exports.execFileAsync = void 0;
22
22
  exports.execGitCommand = execGitCommand;
23
+ exports.execGitCommandCapture = execGitCommandCapture;
23
24
  exports.execGitCommandTyped = execGitCommandTyped;
24
25
  exports.runSerializedWrite = runSerializedWrite;
25
26
  exports.execGitConflictAware = execGitConflictAware;
@@ -66,6 +67,42 @@ async function execGitCommand(args, cwd) {
66
67
  return null;
67
68
  }
68
69
  }
70
+ /**
71
+ * Execute a READ-ONLY git command like {@link execGitCommand} (never throws,
72
+ * same default 1s timeout) but return the stderr alongside the outcome instead
73
+ * of collapsing every failure into `null` (Issue #1515, B-1).
74
+ *
75
+ * execGitCommand is intentionally left untouched: its all-failures-to-null
76
+ * contract is relied on by the high-frequency getGitStatus path. This variant
77
+ * exists for the single caller (getAheadBehind) that must tell "no upstream"
78
+ * apart from "upstream gone" / "detached" / "error".
79
+ *
80
+ * Deliberately does NOT log: the failures it reports are EXPECTED states
81
+ * (a branch with no upstream) polled every few seconds, and its caller logs a
82
+ * classified reason instead of the raw stderr.
83
+ *
84
+ * @param args - Git command arguments (static array; no shell)
85
+ * @param cwd - Working directory (must be from DB, trusted source)
86
+ * @param timeout - Timeout in ms (defaults to the 1s status-read timeout)
87
+ */
88
+ async function execGitCommandCapture(args, cwd, timeout = GIT_COMMAND_TIMEOUT_MS) {
89
+ try {
90
+ const { stdout, stderr } = await (0, exports.execFileAsync)('git', args, { cwd, timeout });
91
+ return { ok: true, stdout: stdout.trim(), stderr: stderr ?? '', timedOut: false };
92
+ }
93
+ catch (error) {
94
+ const err = error;
95
+ const timedOut = err.killed === true ||
96
+ err.code === 'ERR_CHILD_PROCESS_EXEC_TIMEOUT' ||
97
+ err.code === 'ETIMEDOUT';
98
+ return {
99
+ ok: false,
100
+ stdout: '',
101
+ stderr: `${err.stderr ?? ''} ${err.message ?? ''}`,
102
+ timedOut,
103
+ };
104
+ }
105
+ }
69
106
  /**
70
107
  * Execute a git command with timeout, distinguishing error types
71
108
  * Unlike execGitCommand, this throws typed errors for API-level error handling.
@@ -265,10 +302,20 @@ classifyNetwork = false) {
265
302
  * Does NOT use execGitCommandTyped (whose preserve regex stays unmodified) and
266
303
  * does NOT log the raw stderr/message (DR4-002): a failed network op's stderr can
267
304
  * echo a credential-bearing remote URL, and the typed error carries no message.
305
+ *
306
+ * Issue #1515 (E-1): runs with `GIT_TERMINAL_PROMPT=0` so a remote that needs
307
+ * credentials fails FAST with "could not read Username" (-> GitAuthFailedError,
308
+ * 401) instead of blocking on an interactive prompt until the timeout. This is
309
+ * load-bearing for the Current Status refresh button, which now fetches (A-1) on
310
+ * a user click and must never leave the UI waiting on an invisible prompt.
268
311
  */
269
312
  async function execGitNetworkAware(args, worktreePath, timeout) {
270
313
  try {
271
- const { stdout } = await (0, exports.execFileAsync)('git', args, { cwd: worktreePath, timeout });
314
+ const { stdout } = await (0, exports.execFileAsync)('git', args, {
315
+ cwd: worktreePath,
316
+ timeout,
317
+ env: { ...process.env, GIT_TERMINAL_PROMPT: '0' },
318
+ });
272
319
  return stdout;
273
320
  }
274
321
  catch (error) {
@@ -20,9 +20,10 @@ exports.MIN_SELECTED_AGENTS = 2;
20
20
  exports.MAX_SELECTED_AGENTS = 6;
21
21
  /**
22
22
  * Default selected agents when DB value is missing or invalid.
23
- * Issue #989: PC default expands to 6 agents (claude/codex/gemini/opencode/copilot/antigravity).
23
+ * Issue #1516: narrowed to the 3 agents in routine use (claude/codex/antigravity).
24
+ * The others stay selectable via CLI_TOOL_IDS — they are just not preselected.
24
25
  */
25
- exports.DEFAULT_SELECTED_AGENTS = ['claude', 'codex', 'gemini', 'opencode', 'copilot', 'antigravity'];
26
+ exports.DEFAULT_SELECTED_AGENTS = ['claude', 'codex', 'antigravity'];
26
27
  /**
27
28
  * Core validation function for CLI tool ID arrays (R1-001)
28
29
  * Accepts 2-5 unique valid CLI tool IDs (Issue #836).
@@ -5,7 +5,7 @@
5
5
  * @module types/markdown-editor
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.DEFAULT_LAYOUT_STATE = exports.AUTO_SAVE_DEBOUNCE_MS = exports.LOCAL_STORAGE_KEY_AUTO_SAVE = exports.MAX_SPLIT_RATIO = exports.MIN_SPLIT_RATIO = exports.DEFAULT_SPLIT_RATIO = exports.FILE_SIZE_LIMITS = exports.PREVIEW_DEBOUNCE_MS = exports.LOCAL_STORAGE_KEY_MAXIMIZED = exports.LOCAL_STORAGE_KEY_SPLIT_RATIO = exports.LOCAL_STORAGE_KEY = exports.VIEW_MODE_STRATEGIES = void 0;
8
+ exports.DEFAULT_LAYOUT_STATE = exports.INDENT_UNIT = exports.LOCAL_STORAGE_KEY_TAB_MOVES_FOCUS = exports.AUTO_SAVE_DEBOUNCE_MS = exports.LOCAL_STORAGE_KEY_AUTO_SAVE = exports.MAX_SPLIT_RATIO = exports.MIN_SPLIT_RATIO = exports.DEFAULT_SPLIT_RATIO = exports.FILE_SIZE_LIMITS = exports.PREVIEW_DEBOUNCE_MS = exports.LOCAL_STORAGE_KEY_MAXIMIZED = exports.LOCAL_STORAGE_KEY_SPLIT_RATIO = exports.LOCAL_STORAGE_KEY = exports.VIEW_MODE_STRATEGIES = void 0;
9
9
  exports.isValidSplitRatio = isValidSplitRatio;
10
10
  exports.isValidBoolean = isValidBoolean;
11
11
  /**
@@ -79,6 +79,18 @@ exports.LOCAL_STORAGE_KEY_AUTO_SAVE = 'commandmate:md-editor-auto-save';
79
79
  * Auto-save debounce delay (3 seconds)
80
80
  */
81
81
  exports.AUTO_SAVE_DEBOUNCE_MS = 3000;
82
+ /**
83
+ * Local storage key for the "Tab moves focus" accessibility toggle (Issue #1518)
84
+ */
85
+ exports.LOCAL_STORAGE_KEY_TAB_MOVES_FOCUS = 'commandmate:md-editor-tab-moves-focus';
86
+ /**
87
+ * Indent unit inserted by Tab (Issue #1518).
88
+ *
89
+ * Spaces, never a tab character: the same textarea edits YAML in text mode and
90
+ * YAML forbids tabs, and a literal tab renders at the browser's default 8-column
91
+ * `tab-size` which breaks Markdown nested lists.
92
+ */
93
+ exports.INDENT_UNIT = ' ';
82
94
  /**
83
95
  * Default editor layout state
84
96
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "commandmate",
3
- "version": "0.14.1",
3
+ "version": "0.15.0",
4
4
  "description": "A local control plane for agent CLIs — orchestration and visibility for Claude Code, Codex, Gemini CLI, and more across Git worktrees",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -1 +0,0 @@
1
- "use strict";exports.id=186,exports.ids=[186],exports.modules={9815:(a,b,c)=>{c.d(b,{B:()=>A});var d=c(21124),e=c(38301),f=c(20481),g=c(73451),h=c(17252),i=c(90349),j=c(3805);let k={status:"loading",options:[]};function l({selectedWorktreeId:a,onSelect:b,disabled:c=!1}){let h=(0,f.c)("skills"),[i,l]=(0,e.useState)(k),[n,o]=(0,e.useState)(0),p=(0,e.useCallback)(()=>o(a=>a+1),[]);return"loading"===i.status?(0,d.jsxs)("div",{className:"space-y-2","data-testid":"skill-target-loading",children:[(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:h("target.loading")}),(0,d.jsx)(g.EA,{className:"h-24 w-full rounded-lg"})]}):"error"===i.status?(0,d.jsxs)(g.Zp,{className:"space-y-3","data-testid":"skill-target-error",children:[(0,d.jsx)(j.u,{tone:"danger",children:h("target.errorNotice")}),(0,d.jsx)(g.$n,{variant:"secondary",size:"sm",onClick:p,"data-testid":"skill-target-retry",children:h("target.retry")})]}):0===i.options.length?(0,d.jsx)(g.Zp,{"data-testid":"skill-target-empty",children:(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:h("target.empty")})}):(0,d.jsxs)("div",{className:"space-y-3","data-testid":"skill-target-selector",children:[(0,d.jsx)("div",{role:"radiogroup","aria-label":h("target.heading"),className:"space-y-2",children:i.options.map(e=>(0,d.jsx)(m,{option:e,selected:e.id===a,disabled:c,onSelect:b},e.id))}),(0,d.jsx)(j.u,{tone:"neutral","data-testid":"skill-target-branch-notice",children:h("target.branchFreshnessNotice")})]})}function m({option:a,selected:b,disabled:c,onSelect:e}){let h=(0,f.c)("skills"),i=a.liveBranch??a.syncedBranch;return(0,d.jsxs)("button",{type:"button",role:"radio","aria-checked":b,disabled:c,onClick:()=>e(a.id),"data-testid":`skill-target-option-${a.id}`,className:`w-full rounded-lg border px-3 py-2.5 text-left transition-colors disabled:cursor-not-allowed disabled:opacity-60 ${b?"border-accent-500 bg-accent-50 dark:bg-accent-950/40":"border-border bg-card hover:bg-muted"}`,children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("span",{className:"text-sm font-semibold text-foreground break-all",children:a.name}),b&&(0,d.jsx)(g.Ex,{variant:"info",children:h("target.selected")})]}),(0,d.jsxs)("dl",{className:"mt-1.5 grid grid-cols-1 gap-x-4 gap-y-1 sm:grid-cols-2",children:[(0,d.jsx)(n,{label:h("target.repository"),children:a.repositoryName}),(0,d.jsx)(n,{label:h("target.branch"),children:i??h("target.branchUnknown")}),(0,d.jsx)(n,{label:h("target.agents"),children:a.agents.length>0?a.agents.join(", "):h("target.agentsNone")}),(0,d.jsx)(n,{label:h("target.workingTree"),children:h(null===a.dirty?"target.workingTreeUnknown":a.dirty?"target.workingTreeDirty":"target.workingTreeClean")})]}),a.sessionRunning&&(0,d.jsx)("p",{className:"mt-1.5 text-xs text-muted-foreground","data-testid":`skill-target-session-${a.id}`,children:h("target.sessionRunning")})]})}function n({label:a,children:b}){return(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("dt",{className:"text-xs font-medium text-muted-foreground",children:a}),(0,d.jsx)("dd",{className:"text-xs text-foreground break-words",children:b})]})}var o=c(27884);function p({label:a,children:b}){return(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("dt",{className:"text-xs font-medium text-muted-foreground",children:a}),(0,d.jsx)("dd",{className:"mt-0.5 break-words text-sm text-foreground",children:b})]})}function q({level:a,kind:b,label:c}){let e=(0,f.c)("skills");return(0,d.jsxs)(g.Ex,{variant:o.eK[a],"data-testid":`skill-plan-risk-${b}-${a}`,children:[c,": ",e(o.pP[a])]})}function r({entry:a}){let b=(0,f.c)("skills"),c=o.KL[a.reason];return(0,d.jsxs)("li",{className:"space-y-1.5 rounded-md border border-border px-3 py-2","data-testid":`skill-plan-file-${a.path}`,children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)(g.Ex,{variant:o.tC[a.change],children:b(o.AS[a.change])}),(0,d.jsx)("span",{className:"break-all font-mono text-xs text-foreground",children:a.path}),a.generated&&(0,d.jsx)(g.Ex,{variant:"gray",children:b("plan.fileGenerated")})]}),c&&(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:b(c)}),a.gitIgnored&&(0,d.jsx)("p",{className:"text-xs text-warning-foreground",children:b("plan.gitIgnored")}),a.binary?(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:b("plan.diffBinary")}):a.diff?(0,d.jsxs)("details",{children:[(0,d.jsx)("summary",{className:"cursor-pointer text-xs text-accent-600 dark:text-accent-400",children:b("plan.diffToggle",{additions:a.additions,deletions:a.deletions})}),(0,d.jsx)("pre",{className:"mt-1 overflow-x-auto rounded bg-muted p-2 font-mono text-[11px] leading-snug text-foreground",children:a.diff}),a.diffTruncated&&(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:b("plan.diffTruncated")})]}):null]})}function s({plan:a}){let b=(0,f.c)("skills"),{target:c,skill:e}=a,h=e.compatibility.commandmate;return(0,d.jsxs)(g.Zp,{className:"space-y-4","data-testid":"skill-install-plan",children:[(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:b("plan.heading")}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:b("plan.expiresAt",{timestamp:a.expiresAt})})]}),(0,d.jsxs)("section",{className:"space-y-2",children:[(0,d.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:b("plan.targetHeading")}),(0,d.jsxs)("dl",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[(0,d.jsx)(p,{label:b("target.repository"),children:c.repositoryName}),(0,d.jsx)(p,{label:b("target.heading"),children:c.worktreeName}),(0,d.jsx)(p,{label:b("target.branch"),children:c.branch??b("target.branchUnknown")}),(0,d.jsx)(p,{label:b("plan.headStateLabel"),children:b(o.kF[c.headState]??"plan.headState.unknown")}),(0,d.jsx)(p,{label:b("target.workingTree"),children:c.workingTreeDirty?b("target.workingTreeDirty"):b("target.workingTreeClean")}),(0,d.jsx)(p,{label:b("plan.installRoot"),children:(0,d.jsx)("span",{className:"break-all font-mono text-xs",children:(c.installRoots&&c.installRoots.length>0?c.installRoots:[c.installRoot]).map(a=>(0,d.jsx)("span",{className:"block",children:a},a))})}),(0,d.jsx)(p,{label:b("plan.existingInstall"),children:c.existingInstall?b("plan.existingInstallVersion",{version:c.existingInstall.version}):b("plan.existingInstallNone")}),(0,d.jsx)(p,{label:b("detail.recommendedVersion"),children:(0,d.jsx)("span",{className:"font-mono text-xs",children:e.version})})]})]}),(0,d.jsxs)("section",{className:"space-y-2","data-testid":"skill-plan-risk-section",children:[(0,d.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:b("plan.riskHeading")}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:[(0,d.jsx)(q,{level:e.declaredRisk,kind:"declared",label:b("plan.riskDeclared")}),(0,d.jsx)(q,{level:e.computedRisk,kind:"computed",label:b("plan.riskComputed")}),(0,d.jsx)(q,{level:e.effectiveRisk,kind:"effective",label:b("plan.riskEffective")})]}),(0,d.jsx)("p",{className:"break-words text-sm text-foreground",children:e.riskRationale}),(0,d.jsx)(j.u,{tone:"neutral",children:b("plan.riskNotice")})]}),(0,d.jsxs)("section",{className:"space-y-2","data-testid":"skill-plan-permissions",children:[(0,d.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:b("permissions.heading")}),e.declaredPermissions.length>0?(0,d.jsx)("div",{className:"flex flex-wrap gap-1.5",children:e.declaredPermissions.map(a=>(0,d.jsx)(g.Ex,{variant:"warning",children:o.z2[a]?b(o.z2[a]):a},a))}):(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:b("plan.permissionsNone")}),(0,d.jsx)(j.u,{tone:"warning",children:b("permissions.declarationOnlyNotice")})]}),(0,d.jsxs)("section",{className:"space-y-2","data-testid":"skill-plan-requirements",children:[(0,d.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:b("requirements.heading")}),0===e.requirements.commands.length&&0===e.requirements.networkHosts.length?(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:b("plan.requirementsNone")}):(0,d.jsxs)("dl",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[e.requirements.commands.length>0&&(0,d.jsx)(p,{label:b("plan.requirementsCommands"),children:e.requirements.commands.map(a=>`${a.name} ${a.versionRange??b("plan.commandAnyVersion")}`).join(", ")}),e.requirements.networkHosts.length>0&&(0,d.jsx)(p,{label:b("plan.requirementsHosts"),children:e.requirements.networkHosts.join(", ")})]})]}),(0,d.jsxs)("section",{className:"space-y-2","data-testid":"skill-plan-scripts",children:[(0,d.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:b("plan.scriptsHeading")}),0===e.executablePaths.length&&0===e.scriptPaths.length?(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:b("plan.scriptsNone")}):(0,d.jsx)("ul",{className:"space-y-1",children:[...new Set([...e.scriptPaths,...e.executablePaths])].map(a=>(0,d.jsx)("li",{className:"break-all font-mono text-xs text-foreground",children:a},a))})]}),"compatible"!==h.status&&(0,d.jsx)(j.u,{tone:"warning","data-testid":"skill-plan-compatibility-notice",children:b((0,o.e5)(h.messageKey),{range:h.requiredRange,currentVersion:h.currentVersion??""})}),a.warnings.length>0&&(0,d.jsxs)("section",{className:"space-y-2","data-testid":"skill-plan-warnings",children:[(0,d.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:b("plan.warningsHeading")}),(0,d.jsx)("ul",{className:"space-y-1",children:a.warnings.map(a=>(0,d.jsx)("li",{className:"text-xs text-warning-foreground",children:o.RO[a]?b(o.RO[a]):a},a))})]}),(0,d.jsxs)("section",{className:"space-y-2","data-testid":"skill-plan-files",children:[(0,d.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:b("plan.filesHeading")}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground","data-testid":"skill-plan-stats",children:b("plan.stats",{added:a.stats.added,modified:a.stats.modified,unchanged:a.stats.unchanged,conflicted:a.stats.conflicted,unmanaged:a.stats.unmanaged})}),0===a.files.length?(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:b("plan.filesEmpty")}):(0,d.jsx)("ul",{className:"space-y-2",children:a.files.map(a=>(0,d.jsx)(r,{entry:a},a.path))})]}),a.blockers.length>0&&(0,d.jsxs)("section",{className:"space-y-2","data-testid":"skill-install-blockers",children:[(0,d.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-danger-foreground",children:b("plan.blockersHeading")}),(0,d.jsx)("ul",{className:"space-y-1",children:a.blockers.map(a=>(0,d.jsxs)("li",{className:"text-xs text-danger-foreground",children:[a.path&&(0,d.jsx)("span",{className:"mr-1 break-all font-mono",children:a.path}),a.code.startsWith("skills.")?b((0,o.e5)(a.code),{range:h.requiredRange,currentVersion:h.currentVersion??""}):o.KL[a.code]?b(o.KL[a.code]):a.code]},`${a.code}:${a.path??""}`))}),(0,d.jsx)(j.u,{tone:"danger",children:b("plan.blockedNotice")})]})]})}function t({entry:a}){let b=(0,f.c)("skills"),c=o.Mj[a.disposition],e=o.hJ[a.reason];return(0,d.jsxs)("li",{className:"flex flex-wrap items-center gap-2","data-testid":`skill-uninstall-file-${a.path}`,children:[(0,d.jsx)(g.Ex,{variant:"remove"===a.disposition?"info":"warning",children:c?b(c):a.disposition}),(0,d.jsx)("span",{className:"break-all font-mono text-xs text-foreground",children:a.path}),e&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:b(e)})]})}function u({plan:a}){let b=(0,f.c)("skills"),{target:c,skill:e}=a;return(0,d.jsxs)(g.Zp,{className:"space-y-4","data-testid":"skill-uninstall-plan",children:[(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:b("uninstall.heading")}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:b("uninstall.expiresAt",{timestamp:a.expiresAt})})]}),(0,d.jsxs)("dl",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[(0,d.jsx)(p,{label:b("target.repository"),children:c.repositoryName}),(0,d.jsx)(p,{label:b("target.heading"),children:c.worktreeName}),(0,d.jsx)(p,{label:b("target.branch"),children:c.branch??b("target.branchUnknown")}),(0,d.jsx)(p,{label:b("uninstall.installedVersion"),children:(0,d.jsx)("span",{className:"font-mono text-xs",children:e.version||b("uninstall.versionUnknown")})}),(0,d.jsx)(p,{label:b("plan.installRoot"),children:(0,d.jsx)("span",{className:"break-all font-mono text-xs",children:c.installRoot})}),(0,d.jsx)(p,{label:b("target.workingTree"),children:c.workingTreeDirty?b("target.workingTreeDirty"):b("target.workingTreeClean")})]}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground","data-testid":"skill-uninstall-stats",children:b("uninstall.stats",{removable:a.stats.removable,modified:a.stats.modified,missing:a.stats.missing,unknown:a.stats.unknown,irregular:a.stats.irregular})}),(0,d.jsxs)("section",{className:"space-y-2",children:[(0,d.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:b("uninstall.removalsHeading")}),0===a.removals.length?(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:b("uninstall.removalsEmpty")}):(0,d.jsx)("ul",{className:"space-y-1.5",children:a.removals.map(a=>(0,d.jsx)(t,{entry:a},a.path))})]}),(0,d.jsxs)("section",{className:"space-y-2",children:[(0,d.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:b("uninstall.retainedHeading")}),0===a.retained.length?(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:b("uninstall.retainedEmpty")}):(0,d.jsx)("ul",{className:"space-y-1.5",children:a.retained.map(a=>(0,d.jsx)(t,{entry:a},a.path))})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[a.skill.agents.length>0&&(0,d.jsx)("div",{className:"flex flex-wrap gap-1.5","data-testid":"skill-uninstall-agents",children:a.skill.agents.map(a=>(0,d.jsx)(g.Ex,{variant:"gray",children:(0,h.f_)(a.agent)},a.agent))}),(0,d.jsx)(j.u,{tone:"neutral",children:b((0,o.e5)(a.nextActionKey))})]}),a.blockers.length>0&&(0,d.jsxs)("section",{className:"space-y-2","data-testid":"skill-uninstall-blockers",children:[(0,d.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-danger-foreground",children:b("uninstall.blockersHeading")}),(0,d.jsx)("ul",{className:"space-y-1",children:a.blockers.map(a=>(0,d.jsxs)("li",{className:"text-xs text-danger-foreground",children:[a.path&&(0,d.jsx)("span",{className:"mr-1 break-all font-mono",children:a.path}),b((0,o.e5)(a.messageKey))]},`${a.code}:${a.path??""}`))})]})]})}var v=c(30156);let w={worktreeId:null,busy:null,installPlan:null,uninstallPlan:null,installResult:null,uninstallResult:null,riskAcknowledged:!1,failure:null};function x(a){return{...a,installPlan:null,uninstallPlan:null,installResult:null,uninstallResult:null,riskAcknowledged:!1,failure:null}}function y({failure:a}){let b=(0,f.c)("skills");return(0,d.jsxs)("div",{className:"space-y-2","data-testid":"skill-operation-error",children:[(0,d.jsxs)(j.u,{tone:"danger",children:[(0,d.jsx)("p",{className:"font-medium",children:b("operation.errorHeading")}),(0,d.jsx)("p",{className:"mt-1",children:b((0,o.FW)(a.code))}),(0,d.jsx)("p",{className:"mt-1 break-words",children:b("state.errorCode",{code:a.code})})]}),a.nextActionKey&&(0,d.jsx)(j.u,{tone:"warning",children:b((0,o.e5)(a.nextActionKey))}),a.blockers&&a.blockers.length>0&&(0,d.jsx)("ul",{className:"space-y-1","data-testid":"skill-operation-error-blockers",children:a.blockers.map(a=>(0,d.jsxs)("li",{className:"text-xs text-danger-foreground",children:[a.path&&(0,d.jsx)("span",{className:"mr-1 break-all font-mono",children:a.path}),b((0,o.e5)(a.messageKey))]},`${a.code}:${a.path??""}`))})]})}function z({agents:a,skillId:b,version:c}){let e=(0,f.c)("skills");return 0===a.length?null:(0,d.jsxs)("div",{className:"space-y-1","data-testid":"skill-operation-reload",children:[(0,d.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:e("operation.reloadHeading")}),(0,d.jsx)("ul",{className:"space-y-1",children:a.map(a=>(0,d.jsx)("li",{className:"text-xs text-muted-foreground",children:e((0,o.e5)(a.messageKey),{agent:(0,h.f_)(a.agent),skillId:b,version:c})},a.agent))})]})}function A({skillId:a,version:b,blockedReason:c,worktreeId:h}){let k=(0,f.c)("skills"),[m,n]=(0,e.useState)(()=>h?{...w,worktreeId:h}:w),p=(0,e.useCallback)(a=>{n(b=>b.worktreeId===a?b:x({...b,worktreeId:a,busy:null}))},[]),q=(0,e.useCallback)(async()=>{let c=m.worktreeId;if(!c)return;n(a=>({...x(a),busy:"install-plan"}));let d=await (0,v.Q6)(c,a,{version:b??void 0});n(a=>({...a,busy:null,installPlan:d.ok?d.data.plan:null,failure:d.ok?null:d.failure}))},[a,m.worktreeId,b]),r=(0,e.useCallback)(async()=>{var b;let c=m.worktreeId,d=m.installPlan;if(!c||!d||d.requiresRiskAcknowledgement&&!m.riskAcknowledged)return;n(a=>({...a,busy:"install-apply",failure:null}));let e=await (0,v.Xi)(c,a,{planToken:d.token,version:d.skill.version,acknowledgeRisk:!!d.requiresRiskAcknowledgement||void 0,idempotencyKey:(b=d.token,`skill-install-${b}`)});e.ok&&(0,i.k)(c),n(a=>({...a,busy:null,installPlan:e.ok?null:a.installPlan,installResult:e.ok?e.data:null,failure:e.ok?null:e.failure}))},[a,m.installPlan,m.riskAcknowledged,m.worktreeId]),t=(0,e.useCallback)(async()=>{let b=m.worktreeId;if(!b)return;n(a=>({...x(a),busy:"uninstall-plan"}));let c=await (0,v.hN)(b,a);n(a=>({...a,busy:null,uninstallPlan:c.ok?c.data.plan:null,failure:c.ok?null:c.failure}))},[a,m.worktreeId]),A=(0,e.useCallback)(async()=>{var b;let c=m.worktreeId,d=m.uninstallPlan;if(!c||!d)return;n(a=>({...a,busy:"uninstall-apply",failure:null}));let e=await (0,v.E)(c,a,{planToken:d.token,idempotencyKey:(b=d.token,`skill-uninstall-${b}`)});n(a=>({...a,busy:null,uninstallPlan:e.ok?null:a.uninstallPlan,uninstallResult:e.ok?e.data:null,failure:e.ok?null:e.failure}))},[a,m.uninstallPlan,m.worktreeId]),B=(0,e.useCallback)(()=>{n(a=>x(a))},[]),C=null!==m.busy,D=m.installPlan,E=m.uninstallPlan,F=c??k(m.worktreeId?"plan.ready":"plan.chooseTarget"),G=null!==D&&D.requiresRiskAcknowledgement&&!m.riskAcknowledged;return(0,d.jsxs)("div",{className:"space-y-3","data-testid":"skill-install-panel",children:[!h&&(0,d.jsx)(l,{selectedWorktreeId:m.worktreeId,onSelect:p,disabled:C}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(g.$n,{variant:"primary",disabled:C||null!==c||!m.worktreeId,onClick:q,"data-testid":"skill-install-action","aria-describedby":"skill-install-reason",children:k("install-plan"===m.busy?"plan.building":"plan.build")}),(0,d.jsx)(g.$n,{variant:"secondary",disabled:C||!m.worktreeId,onClick:t,"data-testid":"skill-uninstall-action",children:k("uninstall-plan"===m.busy?"uninstall.building":"uninstall.build")})]}),(0,d.jsx)("p",{id:"skill-install-reason",className:"text-sm text-muted-foreground","data-testid":"skill-install-reason",children:F}),m.failure&&(0,d.jsx)(y,{failure:m.failure}),D&&(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)(s,{plan:D}),D.requiresRiskAcknowledgement&&(0,d.jsxs)(g.Zp,{className:"space-y-3","data-testid":"skill-install-risk-acknowledgement",children:[(0,d.jsx)(j.u,{tone:"danger",children:k((0,o.e5)(D.riskAcknowledgementMessageKey??"skills.plan.highRiskAcknowledgement"))}),(0,d.jsxs)("label",{className:"flex items-start gap-2 text-sm text-foreground",children:[(0,d.jsx)(g.Sc,{checked:m.riskAcknowledged,onCheckedChange:a=>n(b=>({...b,riskAcknowledged:!0===a})),disabled:C,"data-testid":"skill-install-risk-checkbox",className:"mt-0.5"}),(0,d.jsx)("span",{children:k("plan.acknowledgeLabel")})]})]}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(g.$n,{variant:D.requiresRiskAcknowledgement?"danger":"primary",disabled:C||!D.installable||G,onClick:r,"data-testid":"skill-install-confirm",children:k("install-apply"===m.busy?"plan.confirming":"plan.confirm")}),(0,d.jsx)(g.$n,{variant:"ghost",disabled:C,onClick:B,"data-testid":"skill-install-discard",children:k("plan.discard")})]})]}),E&&(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)(u,{plan:E}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(g.$n,{variant:"danger",disabled:C||!E.removable,onClick:A,"data-testid":"skill-uninstall-confirm",children:k("uninstall-apply"===m.busy?"uninstall.confirming":"uninstall.confirm")}),(0,d.jsx)(g.$n,{variant:"ghost",disabled:C,onClick:B,"data-testid":"skill-uninstall-discard",children:k("plan.discard")})]})]}),m.installResult&&(0,d.jsxs)(g.Zp,{className:"space-y-3","data-testid":"skill-install-result",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:k("operation.installedHeading")}),(0,d.jsx)(j.u,{tone:"info",children:k((0,o.e5)(m.installResult.operation.nextActionKey))}),m.installResult.operation.replayed&&(0,d.jsx)(j.u,{tone:"neutral","data-testid":"skill-operation-replayed",children:k("operation.replayNotice")}),m.installResult.install&&"files"in m.installResult.install&&(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:k("operation.filesWritten",{count:m.installResult.install.files.length})}),"reload"in m.installResult&&(0,d.jsx)(z,{agents:m.installResult.reload.agents,skillId:m.installResult.reload.skillId,version:m.installResult.reload.version}),(0,d.jsx)(g.$n,{variant:"secondary",size:"sm",onClick:B,"data-testid":"skill-operation-reset",children:k("operation.startOver")})]}),m.uninstallResult&&(0,d.jsxs)(g.Zp,{className:"space-y-3","data-testid":"skill-uninstall-result",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:k("operation.uninstalledHeading")}),(0,d.jsx)(j.u,{tone:"info",children:k((0,o.e5)(m.uninstallResult.operation.nextActionKey))}),m.uninstallResult.operation.replayed&&(0,d.jsx)(j.u,{tone:"neutral","data-testid":"skill-operation-replayed",children:k("operation.replayNotice")}),m.uninstallResult.uninstall&&"removedFiles"in m.uninstallResult.uninstall&&(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:k("operation.filesRemoved",{count:m.uninstallResult.uninstall.removedFiles.length})}),"reload"in m.uninstallResult&&(0,d.jsx)(z,{agents:m.uninstallResult.reload.agents,skillId:m.uninstallResult.reload.skillId,version:m.uninstallResult.reload.version}),(0,d.jsx)(g.$n,{variant:"secondary",size:"sm",onClick:B,"data-testid":"skill-operation-reset",children:k("operation.startOver")})]})]})}},12894:(a,b,c)=>{c.d(b,{o:()=>d});function d(a){return a?a.split("/").map(encodeURIComponent).join("/"):""}},13973:(a,b,c)=>{c.d(b,{default:()=>e.a});var d=c(33540),e=c.n(d)},24207:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"BailoutToCSR",{enumerable:!0,get:function(){return e}});let d=c(84339);function e(a){let{reason:b,children:c}=a;throw Object.defineProperty(new d.BailoutToCSRError(b),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}},33540:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"default",{enumerable:!0,get:function(){return e}});let d=c(35288)._(c(43972));function e(a,b){var c;let e={};"function"==typeof a&&(e.loader=a);let f={...e,...b};return(0,d.default)({...f,modules:null==(c=f.loadableGenerated)?void 0:c.modules})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},43972:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"default",{enumerable:!0,get:function(){return j}});let d=c(21124),e=c(38301),f=c(24207),g=c(52402);function h(a){return{default:a&&"default"in a?a.default:a}}let i={loader:()=>Promise.resolve(h(()=>null)),loading:null,ssr:!0},j=function(a){let b={...i,...a},c=(0,e.lazy)(()=>b.loader().then(h)),j=b.loading;function k(a){let h=j?(0,d.jsx)(j,{isLoading:!0,pastDelay:!0,error:null}):null,i=!b.ssr||!!b.loading,k=i?e.Suspense:e.Fragment,l=b.ssr?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g.PreloadChunks,{moduleIds:b.modules}),(0,d.jsx)(c,{...a})]}):(0,d.jsx)(f.BailoutToCSR,{reason:"next/dynamic",children:(0,d.jsx)(c,{...a})});return(0,d.jsx)(k,{...i?{fallback:h}:{},children:l})}return k.displayName="LoadableComponent",k}},52402:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"PreloadChunks",{enumerable:!0,get:function(){return h}});let d=c(21124),e=c(23312),f=c(29294),g=c(61348);function h(a){let{moduleIds:b}=a,c=f.workAsyncStorage.getStore();if(void 0===c)return null;let h=[];if(c.reactLoadableManifest&&b){let a=c.reactLoadableManifest;for(let c of b){if(!a[c])continue;let b=a[c].files;h.push(...b)}}return 0===h.length?null:(0,d.jsx)(d.Fragment,{children:h.map(a=>{let b=c.assetPrefix+"/_next/"+(0,g.encodeURIPath)(a);return a.endsWith(".css")?(0,d.jsx)("link",{precedence:"dynamic",href:b,rel:"stylesheet",as:"style"},a):((0,e.preload)(b,{as:"script",fetchPriority:"low"}),null)})})}},61348:(a,b)=>{function c(a){return a.split("/").map(a=>encodeURIComponent(a)).join("/")}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"encodeURIPath",{enumerable:!0,get:function(){return c}})},62484:(a,b,c)=>{c.d(b,{i:()=>j});var d=c(21124),e=c(38301),f=c(63156),g=c(58970);function h(){return(0,d.jsx)("svg",{className:"h-3.5 w-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})})}function i(){return(0,d.jsx)("svg",{className:"h-3.5 w-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})})}function j({text:a,className:b="",label:c="Copy"}){let[j,k]=(0,e.useState)(!1),l=(0,e.useRef)(null),m=(0,e.useCallback)(async()=>{try{await (0,f.l)(a),k(!0),l.current&&clearTimeout(l.current),l.current=setTimeout(()=>k(!1),g.s7)}catch{}},[a]);return(0,d.jsxs)("button",{type:"button",onClick:m,className:`inline-flex items-center gap-1 rounded border border-border bg-surface px-2 py-0.5 text-[11px] font-medium text-foreground transition-colors hover:bg-muted ${b}`,"aria-label":j?"Copied":c,title:j?"Copied!":c,children:[j?(0,d.jsx)(i,{}):(0,d.jsx)(h,{}),(0,d.jsx)("span",{children:j?"Copied":c})]})}},63156:(a,b,c)=>{c.d(b,{l:()=>e});let d=/\x1b\[[0-9;]*[a-zA-Z]|\x1b\][^\x07]*\x07|\[[0-9;]*m/g;async function e(a){if(!a||0===a.trim().length)return;let b=a.replace(d,"");if(navigator.clipboard?.writeText)try{await navigator.clipboard.writeText(b);return}catch{}let c=document.createElement("textarea");c.value=b,c.style.position="fixed",c.style.left="-9999px",c.style.top="-9999px",c.style.opacity="0",document.body.appendChild(c),c.focus(),c.select();try{document.execCommand("copy")}finally{document.body.removeChild(c)}}},79944:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(23339).A)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]])},90349:(a,b,c)=>{c.d(b,{I:()=>d,k:()=>e});let d="skill:installed";function e(a){}}};
@@ -1 +0,0 @@
1
- exports.id=7013,exports.ids=[7013],exports.modules={27013:a=>{class b{constructor(a){void 0===a.data&&(a.data={}),this.data=a.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function c(a){return a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function d(a,...b){let c=Object.create(null);for(let b in a)c[b]=a[b];return b.forEach(function(a){for(let b in a)c[b]=a[b]}),c}class e{constructor(a,b){this.buffer="",this.classPrefix=b.classPrefix,a.walk(this)}addText(a){this.buffer+=c(a)}openNode(a){if(!a.scope)return;let b=((a,{prefix:b})=>{if(a.startsWith("language:"))return a.replace("language:","language-");if(a.includes(".")){let c=a.split(".");return[`${b}${c.shift()}`,...c.map((a,b)=>`${a}${"_".repeat(b+1)}`)].join(" ")}return`${b}${a}`})(a.scope,{prefix:this.classPrefix});this.span(b)}closeNode(a){a.scope&&(this.buffer+="</span>")}value(){return this.buffer}span(a){this.buffer+=`<span class="${a}">`}}let f=(a={})=>{let b={children:[]};return Object.assign(b,a),b};class g{constructor(){this.rootNode=f(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(a){this.top.children.push(a)}openNode(a){let b=f({scope:a});this.add(b),this.stack.push(b)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(a){return this.constructor._walk(a,this.rootNode)}static _walk(a,b){return"string"==typeof b?a.addText(b):b.children&&(a.openNode(b),b.children.forEach(b=>this._walk(a,b)),a.closeNode(b)),a}static _collapse(a){"string"!=typeof a&&a.children&&(a.children.every(a=>"string"==typeof a)?a.children=[a.children.join("")]:a.children.forEach(a=>{g._collapse(a)}))}}class h extends g{constructor(a){super(),this.options=a}addText(a){""!==a&&this.add(a)}startScope(a){this.openNode(a)}endScope(){this.closeNode()}__addSublanguage(a,b){let c=a.root;b&&(c.scope=`language:${b}`),this.add(c)}toHTML(){return new e(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function i(a){return a?"string"==typeof a?a:a.source:null}function j(a){return m("(?=",a,")")}function k(a){return m("(?:",a,")*")}function l(a){return m("(?:",a,")?")}function m(...a){return a.map(a=>i(a)).join("")}function n(...a){return"("+(function(a){let b=a[a.length-1];return"object"==typeof b&&b.constructor===Object?(a.splice(a.length-1,1),b):{}}(a).capture?"":"?:")+a.map(a=>i(a)).join("|")+")"}function o(a){return RegExp(a.toString()+"|").exec("").length-1}let p=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function q(a,{joinWith:b}){let c=0;return a.map(a=>{let b=c+=1,d=i(a),e="";for(;d.length>0;){let a=p.exec(d);if(!a){e+=d;break}e+=d.substring(0,a.index),d=d.substring(a.index+a[0].length),"\\"===a[0][0]&&a[1]?e+="\\"+String(Number(a[1])+b):(e+=a[0],"("===a[0]&&c++)}return e}).map(a=>`(${a})`).join(b)}let r="[a-zA-Z]\\w*",s="[a-zA-Z_]\\w*",t="\\b\\d+(\\.\\d+)?",u="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",v="\\b(0b[01]+)",w={begin:"\\\\[\\s\\S]",relevance:0},x=function(a,b,c={}){let e=d({scope:"comment",begin:a,end:b,contains:[]},c);e.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let f=n("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return e.contains.push({begin:m(/[ ]+/,"(",f,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),e},y=x("//","$"),z=x("/\\*","\\*/"),A=x("#","$");var B=Object.freeze({__proto__:null,APOS_STRING_MODE:{scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[w]},BACKSLASH_ESCAPE:w,BINARY_NUMBER_MODE:{scope:"number",begin:v,relevance:0},BINARY_NUMBER_RE:v,COMMENT:x,C_BLOCK_COMMENT_MODE:z,C_LINE_COMMENT_MODE:y,C_NUMBER_MODE:{scope:"number",begin:u,relevance:0},C_NUMBER_RE:u,END_SAME_AS_BEGIN:function(a){return Object.assign(a,{"on:begin":(a,b)=>{b.data._beginMatch=a[1]},"on:end":(a,b)=>{b.data._beginMatch!==a[1]&&b.ignoreMatch()}})},HASH_COMMENT_MODE:A,IDENT_RE:r,MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:"\\.\\s*"+s,relevance:0},NUMBER_MODE:{scope:"number",begin:t,relevance:0},NUMBER_RE:t,PHRASAL_WORDS_MODE:{begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},QUOTE_STRING_MODE:{scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[w]},REGEXP_MODE:{scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[w,{begin:/\[/,end:/\]/,relevance:0,contains:[w]}]},RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(a={})=>{let b=/^#![ ]*\//;return a.binary&&(a.begin=m(b,/.*\b/,a.binary,/\b.*/)),d({scope:"meta",begin:b,end:/$/,relevance:0,"on:begin":(a,b)=>{0!==a.index&&b.ignoreMatch()}},a)},TITLE_MODE:{scope:"title",begin:r,relevance:0},UNDERSCORE_IDENT_RE:s,UNDERSCORE_TITLE_MODE:{scope:"title",begin:s,relevance:0}});function C(a,b){"."===a.input[a.index-1]&&b.ignoreMatch()}function D(a,b){void 0!==a.className&&(a.scope=a.className,delete a.className)}function E(a,b){b&&a.beginKeywords&&(a.begin="\\b("+a.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",a.__beforeBegin=C,a.keywords=a.keywords||a.beginKeywords,delete a.beginKeywords,void 0===a.relevance&&(a.relevance=0))}function F(a,b){Array.isArray(a.illegal)&&(a.illegal=n(...a.illegal))}function G(a,b){if(a.match){if(a.begin||a.end)throw Error("begin & end are not supported with match");a.begin=a.match,delete a.match}}function H(a,b){void 0===a.relevance&&(a.relevance=1)}let I=(a,b)=>{if(!a.beforeMatch)return;if(a.starts)throw Error("beforeMatch cannot be used with starts");let c=Object.assign({},a);Object.keys(a).forEach(b=>{delete a[b]}),a.keywords=c.keywords,a.begin=m(c.beforeMatch,j(c.begin)),a.starts={relevance:0,contains:[Object.assign(c,{endsParent:!0})]},a.relevance=0,delete c.beforeMatch},J=["of","and","for","in","not","or","if","then","parent","list","value"],K={},L=a=>{console.error(a)},M=(a,...b)=>{console.log(`WARN: ${a}`,...b)},N=(a,b)=>{K[`${a}/${b}`]||(console.log(`Deprecated as of ${a}. ${b}`),K[`${a}/${b}`]=!0)},O=Error();function P(a,b,{key:c}){let d=0,e=a[c],f={},g={};for(let a=1;a<=b.length;a++)g[a+d]=e[a],f[a+d]=!0,d+=o(b[a-1]);a[c]=g,a[c]._emit=f,a[c]._multi=!0}function Q(a){if(a.scope&&"object"==typeof a.scope&&null!==a.scope&&(a.beginScope=a.scope,delete a.scope),"string"==typeof a.beginScope&&(a.beginScope={_wrap:a.beginScope}),"string"==typeof a.endScope&&(a.endScope={_wrap:a.endScope}),Array.isArray(a.begin)){if(a.skip||a.excludeBegin||a.returnBegin)throw L("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),O;if("object"!=typeof a.beginScope||null===a.beginScope)throw L("beginScope must be object"),O;P(a,a.begin,{key:"beginScope"}),a.begin=q(a.begin,{joinWith:""})}if(Array.isArray(a.end)){if(a.skip||a.excludeEnd||a.returnEnd)throw L("skip, excludeEnd, returnEnd not compatible with endScope: {}"),O;if("object"!=typeof a.endScope||null===a.endScope)throw L("endScope must be object"),O;P(a,a.end,{key:"endScope"}),a.end=q(a.end,{joinWith:""})}}class R extends Error{constructor(a,b){super(a),this.name="HTMLInjectionError",this.html=b}}let S=Symbol("nomatch"),T=function(a){let e=Object.create(null),f=Object.create(null),g=[],p=!0,r="Could not find the language '{}', did you forget to load/include a language module?",s={disableAutodetect:!0,name:"Plain text",contains:[]},t={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:h};function u(a){return t.noHighlightRe.test(a)}function v(a,b,c){let d="",e="";"object"==typeof b?(d=a,c=b.ignoreIllegals,e=b.language):(N("10.7.0","highlight(lang, code, ...args) has been deprecated."),N("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),e=a,d=b),void 0===c&&(c=!0);let f={code:d,language:e};P("before:highlight",f);let g=f.result?f.result:w(f.language,f.code,c);return g.code=f.code,P("after:highlight",g),g}function w(a,f,g,h){let j=Object.create(null);function k(){if(!B.keywords)return void M.addText(O);let a=0;B.keywordPatternRe.lastIndex=0;let b=B.keywordPatternRe.exec(O),c="";for(;b;){c+=O.substring(a,b.index);let d=y.case_insensitive?b[0].toLowerCase():b[0],e=B.keywords[d];if(e){let[a,f]=e;if(M.addText(c),c="",j[d]=(j[d]||0)+1,j[d]<=7&&(P+=f),a.startsWith("_"))c+=b[0];else{let c=y.classNameAliases[a]||a;m(b[0],c)}}else c+=b[0];a=B.keywordPatternRe.lastIndex,b=B.keywordPatternRe.exec(O)}c+=O.substring(a),M.addText(c)}function l(){null!=B.subLanguage?function(){if(""===O)return;let a=null;if("string"==typeof B.subLanguage){if(!e[B.subLanguage])return M.addText(O);a=w(B.subLanguage,O,!0,K[B.subLanguage]),K[B.subLanguage]=a._top}else a=x(O,B.subLanguage.length?B.subLanguage:null);B.relevance>0&&(P+=a.relevance),M.__addSublanguage(a._emitter,a.language)}():k(),O=""}function m(a,b){""!==a&&(M.startScope(b),M.addText(a),M.endScope())}function n(a,b){let c=1,d=b.length-1;for(;c<=d;){if(!a._emit[c]){c++;continue}let d=y.classNameAliases[a[c]]||a[c],e=b[c];d?m(e,d):(O=e,k(),O=""),c++}}function s(a,b){return a.scope&&"string"==typeof a.scope&&M.openNode(y.classNameAliases[a.scope]||a.scope),a.beginScope&&(a.beginScope._wrap?(m(O,y.classNameAliases[a.beginScope._wrap]||a.beginScope._wrap),O=""):a.beginScope._multi&&(n(a.beginScope,b),O="")),B=Object.create(a,{parent:{value:B}})}let u={};function v(c,d){let e=d&&d[0];if(O+=c,null==e)return l(),0;if("begin"===u.type&&"end"===d.type&&u.index===d.index&&""===e){if(O+=f.slice(d.index,d.index+1),!p){let b=Error(`0 width match regex (${a})`);throw b.languageName=a,b.badRule=u.rule,b}return 1}if(u=d,"begin"===d.type){let a=d[0],c=d.rule,e=new b(c);for(let b of[c.__beforeBegin,c["on:begin"]])if(b&&(b(d,e),e.isMatchIgnored))return 0===B.matcher.regexIndex?(O+=a[0],1):(U=!0,0);return c.skip?O+=a:(c.excludeBegin&&(O+=a),l(),c.returnBegin||c.excludeBegin||(O=a)),s(c,d),c.returnBegin?0:a.length}if("illegal"!==d.type||g){if("end"===d.type){let a=function(a){let c=a[0],d=f.substring(a.index),e=function a(c,d,e){let f=function(a,b){let c=a&&a.exec(b);return c&&0===c.index}(c.endRe,e);if(f){if(c["on:end"]){let a=new b(c);c["on:end"](d,a),a.isMatchIgnored&&(f=!1)}if(f){for(;c.endsParent&&c.parent;)c=c.parent;return c}}if(c.endsWithParent)return a(c.parent,d,e)}(B,a,d);if(!e)return S;let g=B;B.endScope&&B.endScope._wrap?(l(),m(c,B.endScope._wrap)):B.endScope&&B.endScope._multi?(l(),n(B.endScope,a)):g.skip?O+=c:(g.returnEnd||g.excludeEnd||(O+=c),l(),g.excludeEnd&&(O=c));do B.scope&&M.closeNode(),B.skip||B.subLanguage||(P+=B.relevance),B=B.parent;while(B!==e.parent);return e.starts&&s(e.starts,a),g.returnEnd?0:c.length}(d);if(a!==S)return a}}else{let a=Error('Illegal lexeme "'+e+'" for mode "'+(B.scope||"<unnamed>")+'"');throw a.mode=B,a}if("illegal"===d.type&&""===e)return O+="\n",1;if(T>1e5&&T>3*d.index)throw Error("potential infinite loop, way more iterations than matches");return O+=e,e.length}let y=C(a);if(!y)throw L(r.replace("{}",a)),Error('Unknown language: "'+a+'"');let z=function(a){function b(b,c){return RegExp(i(b),"m"+(a.case_insensitive?"i":"")+(a.unicodeRegex?"u":"")+(c?"g":""))}class c{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(a,b){b.position=this.position++,this.matchIndexes[this.matchAt]=b,this.regexes.push([b,a]),this.matchAt+=o(a)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);let a=this.regexes.map(a=>a[1]);this.matcherRe=b(q(a,{joinWith:"|"}),!0),this.lastIndex=0}exec(a){this.matcherRe.lastIndex=this.lastIndex;let b=this.matcherRe.exec(a);if(!b)return null;let c=b.findIndex((a,b)=>b>0&&void 0!==a),d=this.matchIndexes[c];return b.splice(0,c),Object.assign(b,d)}}class e{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(a){if(this.multiRegexes[a])return this.multiRegexes[a];let b=new c;return this.rules.slice(a).forEach(([a,c])=>b.addRule(a,c)),b.compile(),this.multiRegexes[a]=b,b}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(a,b){this.rules.push([a,b]),"begin"===b.type&&this.count++}exec(a){let b=this.getMatcher(this.regexIndex);b.lastIndex=this.lastIndex;let c=b.exec(a);if(this.resumingScanAtSamePosition())if(c&&c.index===this.lastIndex);else{let b=this.getMatcher(0);b.lastIndex=this.lastIndex+1,c=b.exec(a)}return c&&(this.regexIndex+=c.position+1,this.regexIndex===this.count&&this.considerAll()),c}}if(a.compilerExtensions||(a.compilerExtensions=[]),a.contains&&a.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return a.classNameAliases=d(a.classNameAliases||{}),function c(f,g){if(f.isCompiled)return f;[D,G,Q,I].forEach(a=>a(f,g)),a.compilerExtensions.forEach(a=>a(f,g)),f.__beforeBegin=null,[E,F,H].forEach(a=>a(f,g)),f.isCompiled=!0;let h=null;return"object"==typeof f.keywords&&f.keywords.$pattern&&(f.keywords=Object.assign({},f.keywords),h=f.keywords.$pattern,delete f.keywords.$pattern),h=h||/\w+/,f.keywords&&(f.keywords=function a(b,c,d="keyword"){let e=Object.create(null);return"string"==typeof b?f(d,b.split(" ")):Array.isArray(b)?f(d,b):Object.keys(b).forEach(function(d){Object.assign(e,a(b[d],c,d))}),e;function f(a,b){c&&(b=b.map(a=>a.toLowerCase())),b.forEach(function(b){var c,d,f;let g=b.split("|");e[g[0]]=[a,(c=g[0],(d=g[1])?Number(d):+(f=c,!J.includes(f.toLowerCase())))]})}}(f.keywords,a.case_insensitive)),f.keywordPatternRe=b(h,!0),g&&(f.begin||(f.begin=/\B|\b/),f.beginRe=b(f.begin),f.end||f.endsWithParent||(f.end=/\B|\b/),f.end&&(f.endRe=b(f.end)),f.terminatorEnd=i(f.end)||"",f.endsWithParent&&g.terminatorEnd&&(f.terminatorEnd+=(f.end?"|":"")+g.terminatorEnd)),f.illegal&&(f.illegalRe=b(f.illegal)),f.contains||(f.contains=[]),f.contains=[].concat(...f.contains.map(function(a){var b;return((b="self"===a?f:a).variants&&!b.cachedVariants&&(b.cachedVariants=b.variants.map(function(a){return d(b,{variants:null},a)})),b.cachedVariants)?b.cachedVariants:!function a(b){return!!b&&(b.endsWithParent||a(b.starts))}(b)?Object.isFrozen(b)?d(b):b:d(b,{starts:b.starts?d(b.starts):null})})),f.contains.forEach(function(a){c(a,f)}),f.starts&&c(f.starts,g),f.matcher=function(a){let b=new e;return a.contains.forEach(a=>b.addRule(a.begin,{rule:a,type:"begin"})),a.terminatorEnd&&b.addRule(a.terminatorEnd,{type:"end"}),a.illegal&&b.addRule(a.illegal,{type:"illegal"}),b}(f),f}(a)}(y),A="",B=h||z,K={},M=new t.__emitter(t),N=[];for(let a=B;a!==y;a=a.parent)a.scope&&N.unshift(a.scope);N.forEach(a=>M.openNode(a));let O="",P=0,R=0,T=0,U=!1;try{if(y.__emitTokens)y.__emitTokens(f,M);else{for(B.matcher.considerAll();;){T++,U?U=!1:B.matcher.considerAll(),B.matcher.lastIndex=R;let a=B.matcher.exec(f);if(!a)break;let b=f.substring(R,a.index),c=v(b,a);R=a.index+c}v(f.substring(R))}return M.finalize(),A=M.toHTML(),{language:a,value:A,relevance:P,illegal:!1,_emitter:M,_top:B}}catch(b){if(b.message&&b.message.includes("Illegal"))return{language:a,value:c(f),illegal:!0,relevance:0,_illegalBy:{message:b.message,index:R,context:f.slice(R-100,R+100),mode:b.mode,resultSoFar:A},_emitter:M};if(p)return{language:a,value:c(f),illegal:!1,relevance:0,errorRaised:b,_emitter:M,_top:B};throw b}}function x(a,b){b=b||t.languages||Object.keys(e);let d=function(a){let b={value:c(a),illegal:!1,relevance:0,_top:s,_emitter:new t.__emitter(t)};return b._emitter.addText(a),b}(a),f=b.filter(C).filter(O).map(b=>w(b,a,!1));f.unshift(d);let[g,h]=f.sort((a,b)=>{if(a.relevance!==b.relevance)return b.relevance-a.relevance;if(a.language&&b.language){if(C(a.language).supersetOf===b.language)return 1;else if(C(b.language).supersetOf===a.language)return -1}return 0});return g.secondBest=h,g}function y(a){let b=function(a){let b=a.className+" ";b+=a.parentNode?a.parentNode.className:"";let c=t.languageDetectRe.exec(b);if(c){let b=C(c[1]);return b||(M(r.replace("{}",c[1])),M("Falling back to no-highlight mode for this block.",a)),b?c[1]:"no-highlight"}return b.split(/\s+/).find(a=>u(a)||C(a))}(a);if(u(b))return;if(P("before:highlightElement",{el:a,language:b}),a.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",a);if(a.children.length>0&&(t.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(a)),t.throwUnescapedHTML))throw new R("One of your code blocks includes unescaped HTML.",a.innerHTML);let c=a.textContent,d=b?v(c,{language:b,ignoreIllegals:!0}):x(c);a.innerHTML=d.value,a.dataset.highlighted="yes";var e=d.language;let g=b&&f[b]||e;a.classList.add("hljs"),a.classList.add(`language-${g}`),a.result={language:d.language,re:d.relevance,relevance:d.relevance},d.secondBest&&(a.secondBest={language:d.secondBest.language,relevance:d.secondBest.relevance}),P("after:highlightElement",{el:a,result:d,text:c})}let z=!1;function A(){if("loading"===document.readyState){z||window.addEventListener("DOMContentLoaded",function(){A()},!1),z=!0;return}document.querySelectorAll(t.cssSelector).forEach(y)}function C(a){return e[a=(a||"").toLowerCase()]||e[f[a]]}function K(a,{languageName:b}){"string"==typeof a&&(a=[a]),a.forEach(a=>{f[a.toLowerCase()]=b})}function O(a){let b=C(a);return b&&!b.disableAutodetect}function P(a,b){g.forEach(function(c){c[a]&&c[a](b)})}for(let b in Object.assign(a,{highlight:v,highlightAuto:x,highlightAll:A,highlightElement:y,highlightBlock:function(a){return N("10.7.0","highlightBlock will be removed entirely in v12.0"),N("10.7.0","Please use highlightElement now."),y(a)},configure:function(a){t=d(t,a)},initHighlighting:()=>{A(),N("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},initHighlightingOnLoad:function(){A(),N("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")},registerLanguage:function(b,c){let d=null;try{d=c(a)}catch(a){if(L("Language definition for '{}' could not be registered.".replace("{}",b)),p)L(a);else throw a;d=s}d.name||(d.name=b),e[b]=d,d.rawDefinition=c.bind(null,a),d.aliases&&K(d.aliases,{languageName:b})},unregisterLanguage:function(a){for(let b of(delete e[a],Object.keys(f)))f[b]===a&&delete f[b]},listLanguages:function(){return Object.keys(e)},getLanguage:C,registerAliases:K,autoDetection:O,inherit:d,addPlugin:function(a){var b;(b=a)["before:highlightBlock"]&&!b["before:highlightElement"]&&(b["before:highlightElement"]=a=>{b["before:highlightBlock"](Object.assign({block:a.el},a))}),b["after:highlightBlock"]&&!b["after:highlightElement"]&&(b["after:highlightElement"]=a=>{b["after:highlightBlock"](Object.assign({block:a.el},a))}),g.push(a)},removePlugin:function(a){let b=g.indexOf(a);-1!==b&&g.splice(b,1)}}),a.debugMode=function(){p=!1},a.safeMode=function(){p=!0},a.versionString="11.11.1",a.regex={concat:m,lookahead:j,either:n,optional:l,anyNumberOfTimes:k},B)"object"==typeof B[b]&&function a(b){return b instanceof Map?b.clear=b.delete=b.set=function(){throw Error("map is read-only")}:b instanceof Set&&(b.add=b.clear=b.delete=function(){throw Error("set is read-only")}),Object.freeze(b),Object.getOwnPropertyNames(b).forEach(c=>{let d=b[c],e=typeof d;"object"!==e&&"function"!==e||Object.isFrozen(d)||a(d)}),b}(B[b]);return Object.assign(a,B),a},U=T({});U.newInstance=()=>T({}),a.exports=U,U.HighlightJS=U,U.default=U}};
@@ -1 +0,0 @@
1
- exports.id=9067,exports.ids=[9067],exports.modules={7956:(a,b,c)=>{"use strict";c.d(b,{ZU:()=>i,fW:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f);let h=["/etc","/usr","/bin","/sbin","/var","/tmp","/dev","/sys","/proc"];function i(a,b){let c=b.endsWith("/")?b.slice(0,-1):b;return a===c||a.startsWith(c+"/")}let j=null;function k(a){let b=g().resolve(a),c=function(a){let b=[],c=a;for(;;)try{let a=e().realpathSync(c);return b.length>0?g().join(a,...b):a}catch{let d=g().dirname(c);if(d===c)return a;b.unshift(g().basename(c)),c=d}}(b);return(function(){if(null!==j)return j;let a=new Set;for(let b of h){a.add(b);try{a.add(e().realpathSync(b))}catch{}}return j=Array.from(a)})().some(a=>i(b,a)||i(c,a))}},15194:(a,b,c)=>{"use strict";c.d(b,{Ab:()=>g,FV:()=>s,NL:()=>r,QP:()=>t,Sj:()=>k,VA:()=>f,XH:()=>d,_J:()=>u,ef:()=>m,hR:()=>n,lu:()=>p,n6:()=>j,oo:()=>o,pL:()=>l,pQ:()=>h,vz:()=>q});let d=["claude","codex","gemini","vibe-local","opencode","copilot","antigravity"],e=new Set(["claude","opencode","copilot"]);function f(a){return e.has(a)}let g=10,h=50,i=/^[a-zA-Z0-9_-]+$/;function j(a){return"string"==typeof a&&a.length>0&&a.length<=64&&i.test(a)}function k(a,b){return!a||a===b}function l(a,b){let c=`${b}-`;return a.startsWith(c)?a.slice(c.length):a}let m={claude:"Claude",codex:"Codex",gemini:"Gemini","vibe-local":"Vibe Local",opencode:"OpenCode",copilot:"Copilot",antigravity:"Antigravity"};function n(a){return d.includes(a)}function o(a){return m[a]??a}function p(a){return a.map((a,b)=>({id:a,cliTool:a,alias:o(a),order:b}))}let q=128,r=2097152;function s(a){return"number"==typeof a&&Number.isInteger(a)&&a>=q&&a<=r}let t=/^[a-zA-Z0-9][a-zA-Z0-9._:/-]*$/;function u(a){return"function"==typeof a.supportsImage&&!0===a.supportsImage()}},20416:(a,b,c)=>{"use strict";c.d(b,{$b:()=>i,Sv:()=>j});var d=c(33873),e=c.n(d),f=c(21820),g=c(48870),h=c(7956);function i(){return(0,g.TJ)()?e().join((0,f.homedir)(),".commandmate","data","cm.db"):e().resolve(process.cwd(),"data","cm.db")}function j(a){let b=e().resolve(a);if((0,g.TJ)()){let a=(0,f.homedir)();if(!(0,h.ZU)(b,a))throw Error(`Security error: DB path must be within home directory: ${b}`)}else if((0,h.fW)(b))throw Error(`Security error: DB path cannot be in system directory: ${b}`);return b}},48870:(a,b,c)=>{"use strict";c.d(b,{GQ:()=>j,TJ:()=>g,Tf:()=>h,WI:()=>i});var d=c(29021),e=c(33873),f=c(21820);function g(){let a=(0,e.dirname)(__dirname);return a.includes("/lib/node_modules/")||a.includes("\\node_modules\\")||a.includes("/node_modules/commandmate")}function h(){let a=(0,e.dirname)(__dirname);return a.includes("/_npx/")||a.includes("\\_npx\\")}function i(){if(g()){let a=(0,e.join)((0,f.homedir)(),".commandmate");if((0,d.existsSync)(a)){let b=(0,d.realpathSync)(a),c=(0,d.realpathSync)((0,f.homedir)());if(!b.startsWith(c))throw Error(`Security error: Config directory ${a} is outside home directory`);return b}return a}let a=process.cwd();return(0,d.realpathSync)(a)}function j(){let a=g()?(0,e.join)((0,f.homedir)(),".commandmate"):process.cwd();return(0,d.existsSync)(a)||(0,d.mkdirSync)(a,{recursive:!0,mode:448}),i()}},72626:(a,b,c)=>{"use strict";c.d(b,{K:()=>i,h:()=>j});var d=c(87447);let e=[{pattern:/Bearer\s+[A-Za-z0-9\-._~+/]+=*/gi,replacement:"Bearer [REDACTED]"},{pattern:/(password|passwd|pwd)[=:]\s*\S+/gi,replacement:"$1=[REDACTED]"},{pattern:/(token|secret|api_key|apikey|auth)[=:]\s*\S+/gi,replacement:"$1=[REDACTED]"},{pattern:/Authorization:\s*\S+/gi,replacement:"Authorization: [REDACTED]"},{pattern:/-----BEGIN\s+\w+\s+PRIVATE\s+KEY-----[\s\S]*?-----END\s+\w+\s+PRIVATE\s+KEY-----/g,replacement:"[SSH_KEY_REDACTED]"},{pattern:/(\w+:\/\/)[^/@\s]+@/g,replacement:"$1[REDACTED]@"}],f=/password|secret|token|key|auth/i,g={debug:0,info:1,warn:2,error:3};function h(a,b,c,h,i){let j=(0,d.nR)().level;if(g[a]<g[j])return;let k=h?function a(b){if("string"==typeof b){let a=b;for(let{pattern:b,replacement:c}of e)a=a.replace(b,c);return a}if("object"==typeof b&&null!==b){if(Array.isArray(b))return b.map(a);let c={};for(let[d,e]of Object.entries(b))f.test(d)?c[d]="[REDACTED]":c[d]=a(e);return c}return b}(h):void 0,l=function(a){if("json"===(0,d.nR)().format)return JSON.stringify(a);let{timestamp:b,level:c,module:e,action:f,data:g,worktreeId:h,cliToolId:i,requestId:j}=a,k=[h,i].filter(Boolean),l=k.length>0?` [${k.join(":")}]`:"",m=j?` (${j.slice(0,8)})`:"",n=g?` ${JSON.stringify(g)}`:"";return`[${b}] [${c.toUpperCase()}] [${e}]${l}${m} ${f}${n}`}({level:a,module:b,action:c,timestamp:new Date().toISOString(),...i,...k&&{data:k}});switch(a){case"error":console.error(l);break;case"warn":console.warn(l);break;default:console.log(l)}}function i(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,a=>{let b=16*Math.random()|0;return("x"===a?b:3&b|8).toString(16)})}function j(a){let b=c=>({debug:(b,d)=>h("debug",a,b,d,c),info:(b,d)=>h("info",a,b,d,c),warn:(b,d)=>h("warn",a,b,d,c),error:(b,d)=>h("error",a,b,d,c),withContext:a=>b({...c,...a})});return b()}},78335:()=>{},87447:(a,b,c)=>{"use strict";c.d(b,{_$:()=>l,_p:()=>i,nR:()=>k});var d=c(33873),e=c.n(d),f=c(20416);let g={CM_ROOT_DIR:"MCBD_ROOT_DIR",CM_PORT:"MCBD_PORT",CM_BIND:"MCBD_BIND",CM_LOG_LEVEL:"MCBD_LOG_LEVEL",CM_LOG_FORMAT:"MCBD_LOG_FORMAT",CM_LOG_DIR:"MCBD_LOG_DIR",CM_DB_PATH:"MCBD_DB_PATH"},h=new Set;function i(a){var b=g[a];let c=process.env[a];if(void 0!==c)return c;let d=process.env[b];return void 0!==d?(h.has(b)||(console.warn(`[DEPRECATED] ${b} is deprecated, use ${a} instead`),h.add(b)),d):void 0}let j=!1;function k(){let a=i("CM_LOG_LEVEL")?.toLowerCase(),b=i("CM_LOG_FORMAT")?.toLowerCase();return{level:void 0!==a&&["debug","info","warn","error"].includes(a)?a:"info",format:"json"===b?"json":"text"}}function l(){let a,b=i("CM_ROOT_DIR")||process.cwd(),c=parseInt(i("CM_PORT")||"3000",10),d=i("CM_BIND")||"127.0.0.1",g=i("CM_DB_PATH"),h=g||function(){let a=process.env.DATABASE_PATH;return a&&!j&&(console.warn("[DEPRECATED] DATABASE_PATH is deprecated. Use CM_DB_PATH instead."),j=!0),a}()||(0,f.$b)();if(!b)throw Error("CM_ROOT_DIR (or MCBD_ROOT_DIR) is required");if(isNaN(c)||c<1||c>65535)throw Error(`Invalid CM_PORT: ${i("CM_PORT")}. Must be between 1 and 65535.`);if("127.0.0.1"!==d&&"0.0.0.0"!==d&&"localhost"!==d)throw Error(`Invalid CM_BIND: ${d}. Must be '127.0.0.1', '0.0.0.0', or 'localhost'.`);try{a=(0,f.Sv)(h)}catch(b){if(void 0!==g){let a=b instanceof Error?b.message:String(b);throw Error(`Invalid CM_DB_PATH: ${a}. Set CM_DB_PATH to an allowed location, or unset it to use the default (${(0,f.$b)()}).`)}console.warn(`[Security] Invalid DB path "${h}", using default.`),a=(0,f.Sv)((0,f.$b)())}return{CM_ROOT_DIR:e().resolve(b),CM_PORT:c,CM_BIND:d,CM_DB_PATH:a}}},96487:()=>{}};
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST=function(e,r,t,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:46,errorRate:1e-4,numBits:882,numHashes:14,bitArray:[0,1,1,e,e,e,0,r,e,r,e,r,r,e,e,r,e,r,r,e,e,e,r,e,e,r,r,e,e,e,e,r,e,r,e,e,r,r,r,r,r,r,e,e,e,e,r,e,r,e,r,e,r,r,r,e,r,r,r,e,r,e,r,e,r,r,e,e,e,r,r,e,r,r,r,e,r,e,e,e,e,e,e,e,e,e,r,e,e,r,r,r,e,r,e,e,e,e,e,r,e,e,e,e,r,e,r,e,r,r,r,r,e,e,e,r,r,r,e,r,e,r,r,e,e,r,e,e,e,e,r,r,r,e,r,r,r,e,e,r,r,r,e,e,e,r,r,e,r,r,r,e,e,e,r,e,e,r,e,r,e,e,e,e,r,e,e,e,r,e,e,r,e,r,r,e,e,r,r,e,e,r,e,r,r,r,r,r,r,e,e,r,r,r,r,e,r,e,e,r,r,r,r,e,r,e,e,r,e,e,e,e,e,r,e,e,r,r,e,e,e,e,r,r,r,r,e,r,r,e,r,e,r,r,e,r,r,e,r,e,r,r,e,r,e,r,r,r,r,r,r,e,r,r,r,r,r,r,e,r,e,e,r,e,r,e,r,r,r,r,r,r,e,r,e,r,e,r,r,r,e,r,r,r,r,e,r,e,r,e,e,e,r,r,e,e,e,e,r,e,e,r,e,r,r,e,e,r,r,r,e,e,e,e,e,r,r,r,e,r,e,e,r,e,e,r,e,e,r,e,r,r,r,e,e,r,r,e,r,e,e,r,e,e,e,r,e,e,e,r,r,r,r,e,r,e,r,e,r,e,r,e,r,r,r,e,r,e,e,e,r,e,e,e,r,e,e,r,r,e,e,r,r,r,e,r,r,e,e,e,r,r,e,e,e,e,e,e,r,e,e,e,r,r,e,r,r,r,r,e,e,e,r,e,e,r,e,e,r,r,e,e,r,r,r,e,e,e,e,e,e,r,e,r,e,r,e,r,e,r,r,e,r,e,r,e,r,e,e,e,e,e,e,r,r,e,e,e,e,e,r,e,r,r,r,r,e,e,e,r,r,e,e,e,e,e,e,e,r,r,r,r,r,e,r,e,r,e,r,r,e,e,r,e,r,e,e,e,r,e,r,r,r,e,e,e,e,e,r,r,e,r,r,e,e,r,e,e,r,e,e,e,e,r,e,e,r,e,e,r,r,r,e,e,e,r,e,e,r,r,e,e,e,e,r,r,r,r,e,r,e,e,e,e,r,e,r,r,r,r,r,r,r,e,r,r,e,r,e,e,r,e,e,e,e,e,r,r,e,e,r,e,e,e,e,r,e,e,r,e,r,r,r,e,e,e,r,r,e,e,r,r,r,r,e,r,e,r,e,r,e,e,r,r,e,e,e,r,r,r,r,r,e,r,e,e,e,r,r,e,e,r,r,e,e,e,e,e,e,r,e,r,r,e,e,e,e,e,e,e,e,e,e,r,r,e,r,r,r,e,r,r,r,r,e,e,r,r,e,r,e,r,r,r,e,e,r,e,e,e,e,r,e,e,r,r,e,r,r,e,r,e,e,r,e,e,r,r,r,r,r,r,e,e,r,r,r,e,e,r,r,r,r,e,r,e,r,e,r,r,e,e,r,e,e,r,e,r,e,r,e,e,e,e,e,e,r,r,r,e,r,r,e,r,e,r,e,e,e,e,e,e,r,e,e,e,r,r,e,e,e,r,e,r,r,r,r,r,r,r,r,r,e,e,r,e,e,r,r,r,e,e,r,e,r,r,r,e,e,r,r,r,e,e,r,r,e,e,e,r,r,e,e,r,r,r,r,e,e,r,e,e,e,r,r,r,e,e,r,e,r,r,e,r,e,r,e,e,r,r,r,e,r,r,e,e,r,r,e,r,e,e,r,r,e,e,e,r,e,r,e,r,e,r,e,r,e,e,r,e,e,r,e,r,e,e,r,e,e,e,r,r,e,r,r,e,e,r,e,r,e,r]},__routerFilterDynamic:{numItems:9,errorRate:1e-4,numBits:173,numHashes:14,bitArray:[e,r,e,e,r,r,e,e,e,r,r,e,e,e,e,r,e,e,e,e,e,r,e,r,r,e,r,e,e,e,r,e,e,e,r,e,e,e,r,r,r,e,e,e,e,r,e,e,e,e,e,e,e,r,r,e,r,r,r,r,e,r,e,r,e,e,r,r,e,e,r,e,e,e,r,e,r,r,r,r,r,e,r,r,r,e,e,e,e,r,e,e,r,e,r,r,e,e,e,r,e,r,r,e,e,r,e,r,e,r,r,r,r,r,r,e,r,r,e,r,e,e,e,e,r,r,e,r,r,r,r,r,r,e,r,r,r,r,r,e,r,e,r,e,e,e,e,r,e,r,e,e,r,r,e,e,e,e,e,e,e,r,r,e,r,e,e,r,r,e,r,e,e]},"/_error":["static/chunks/pages/_error-c970d8b55ace1b48.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1668],{34380:(e,s,l)=>{l.d(s,{B:()=>T});var t=l(95155),n=l(12115),a=l(18955),r=l(744),i=l(54014),d=l(74385),o=l(37381);function c(e){var s,l,t,n,a;let r=e.agentInstances&&e.agentInstances.length>0?e.agentInstances.map(e=>e.alias||e.cliTool):null!=(l=e.selectedAgents)?l:e.cliToolId?[e.cliToolId]:[];return{id:e.id,name:e.name,repositoryName:null!=(t=e.repositoryDisplayName)?t:e.repositoryName,syncedBranch:null!=(n=e.branch)?n:null,liveBranch:null!=(a=null==(s=e.gitStatus)?void 0:s.currentBranch)?a:null,dirty:e.gitStatus?e.gitStatus.isDirty:null,agents:[...new Set(r)],sessionRunning:!0===e.isSessionRunning}}let u={status:"loading",options:[]};async function x(e){let s=await fetch("/api/worktrees",{signal:e,headers:{Accept:"application/json"}});if(!s.ok)throw Error("HTTP ".concat(s.status));let l=await s.json(),t=null==l?void 0:l.worktrees;if(!Array.isArray(t))throw Error("Malformed worktree list");return t.map(c)}function m(e){let{selectedWorktreeId:s,onSelect:l,disabled:i=!1}=e,d=(0,a.c)("skills"),[c,m]=(0,n.useState)(u),[g,h]=(0,n.useState)(0);(0,n.useEffect)(()=>{let e=new AbortController;return m(u),x(e.signal).then(s=>{e.signal.aborted||m({status:"loaded",options:s})}).catch(()=>{e.signal.aborted||m({status:"error",options:[]})}),()=>e.abort()},[g]);let k=(0,n.useCallback)(()=>h(e=>e+1),[]);return"loading"===c.status?(0,t.jsxs)("div",{className:"space-y-2","data-testid":"skill-target-loading",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:d("target.loading")}),(0,t.jsx)(r.EA,{className:"h-24 w-full rounded-lg"})]}):"error"===c.status?(0,t.jsxs)(r.Zp,{className:"space-y-3","data-testid":"skill-target-error",children:[(0,t.jsx)(o.u,{tone:"danger",children:d("target.errorNotice")}),(0,t.jsx)(r.$n,{variant:"secondary",size:"sm",onClick:k,"data-testid":"skill-target-retry",children:d("target.retry")})]}):0===c.options.length?(0,t.jsx)(r.Zp,{"data-testid":"skill-target-empty",children:(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:d("target.empty")})}):(0,t.jsxs)("div",{className:"space-y-3","data-testid":"skill-target-selector",children:[(0,t.jsx)("div",{role:"radiogroup","aria-label":d("target.heading"),className:"space-y-2",children:c.options.map(e=>(0,t.jsx)(p,{option:e,selected:e.id===s,disabled:i,onSelect:l},e.id))}),(0,t.jsx)(o.u,{tone:"neutral","data-testid":"skill-target-branch-notice",children:d("target.branchFreshnessNotice")})]})}function p(e){var s;let{option:l,selected:n,disabled:i,onSelect:d}=e,o=(0,a.c)("skills"),c=null!=(s=l.liveBranch)?s:l.syncedBranch;return(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":n,disabled:i,onClick:()=>d(l.id),"data-testid":"skill-target-option-".concat(l.id),className:"w-full rounded-lg border px-3 py-2.5 text-left transition-colors disabled:cursor-not-allowed disabled:opacity-60 ".concat(n?"border-accent-500 bg-accent-50 dark:bg-accent-950/40":"border-border bg-card hover:bg-muted"),children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-semibold text-foreground break-all",children:l.name}),n&&(0,t.jsx)(r.Ex,{variant:"info",children:o("target.selected")})]}),(0,t.jsxs)("dl",{className:"mt-1.5 grid grid-cols-1 gap-x-4 gap-y-1 sm:grid-cols-2",children:[(0,t.jsx)(g,{label:o("target.repository"),children:l.repositoryName}),(0,t.jsx)(g,{label:o("target.branch"),children:null!=c?c:o("target.branchUnknown")}),(0,t.jsx)(g,{label:o("target.agents"),children:l.agents.length>0?l.agents.join(", "):o("target.agentsNone")}),(0,t.jsx)(g,{label:o("target.workingTree"),children:o(null===l.dirty?"target.workingTreeUnknown":l.dirty?"target.workingTreeDirty":"target.workingTreeClean")})]}),l.sessionRunning&&(0,t.jsx)("p",{className:"mt-1.5 text-xs text-muted-foreground","data-testid":"skill-target-session-".concat(l.id),children:o("target.sessionRunning")})]})}function g(e){let{label:s,children:l}=e;return(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("dt",{className:"text-xs font-medium text-muted-foreground",children:s}),(0,t.jsx)("dd",{className:"text-xs text-foreground break-words",children:l})]})}var h=l(95584);function k(e){let{label:s,children:l}=e;return(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("dt",{className:"text-xs font-medium text-muted-foreground",children:s}),(0,t.jsx)("dd",{className:"mt-0.5 break-words text-sm text-foreground",children:l})]})}function f(e){let{level:s,kind:l,label:n}=e,i=(0,a.c)("skills");return(0,t.jsxs)(r.Ex,{variant:h.eK[s],"data-testid":"skill-plan-risk-".concat(l,"-").concat(s),children:[n,": ",i(h.pP[s])]})}function j(e){let{entry:s}=e,l=(0,a.c)("skills"),n=h.KL[s.reason];return(0,t.jsxs)("li",{className:"space-y-1.5 rounded-md border border-border px-3 py-2","data-testid":"skill-plan-file-".concat(s.path),children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsx)(r.Ex,{variant:h.tC[s.change],children:l(h.AS[s.change])}),(0,t.jsx)("span",{className:"break-all font-mono text-xs text-foreground",children:s.path}),s.generated&&(0,t.jsx)(r.Ex,{variant:"gray",children:l("plan.fileGenerated")})]}),n&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:l(n)}),s.gitIgnored&&(0,t.jsx)("p",{className:"text-xs text-warning-foreground",children:l("plan.gitIgnored")}),s.binary?(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:l("plan.diffBinary")}):s.diff?(0,t.jsxs)("details",{children:[(0,t.jsx)("summary",{className:"cursor-pointer text-xs text-accent-600 dark:text-accent-400",children:l("plan.diffToggle",{additions:s.additions,deletions:s.deletions})}),(0,t.jsx)("pre",{className:"mt-1 overflow-x-auto rounded bg-muted p-2 font-mono text-[11px] leading-snug text-foreground",children:s.diff}),s.diffTruncated&&(0,t.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:l("plan.diffTruncated")})]}):null]})}function b(e){var s,l,n;let{plan:i}=e,d=(0,a.c)("skills"),{target:c,skill:u}=i,x=u.compatibility.commandmate;return(0,t.jsxs)(r.Zp,{className:"space-y-4","data-testid":"skill-install-plan",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:d("plan.heading")}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:d("plan.expiresAt",{timestamp:i.expiresAt})})]}),(0,t.jsxs)("section",{className:"space-y-2",children:[(0,t.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:d("plan.targetHeading")}),(0,t.jsxs)("dl",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[(0,t.jsx)(k,{label:d("target.repository"),children:c.repositoryName}),(0,t.jsx)(k,{label:d("target.heading"),children:c.worktreeName}),(0,t.jsx)(k,{label:d("target.branch"),children:null!=(s=c.branch)?s:d("target.branchUnknown")}),(0,t.jsx)(k,{label:d("plan.headStateLabel"),children:d(null!=(l=h.kF[c.headState])?l:"plan.headState.unknown")}),(0,t.jsx)(k,{label:d("target.workingTree"),children:c.workingTreeDirty?d("target.workingTreeDirty"):d("target.workingTreeClean")}),(0,t.jsx)(k,{label:d("plan.installRoot"),children:(0,t.jsx)("span",{className:"break-all font-mono text-xs",children:(c.installRoots&&c.installRoots.length>0?c.installRoots:[c.installRoot]).map(e=>(0,t.jsx)("span",{className:"block",children:e},e))})}),(0,t.jsx)(k,{label:d("plan.existingInstall"),children:c.existingInstall?d("plan.existingInstallVersion",{version:c.existingInstall.version}):d("plan.existingInstallNone")}),(0,t.jsx)(k,{label:d("detail.recommendedVersion"),children:(0,t.jsx)("span",{className:"font-mono text-xs",children:u.version})})]})]}),(0,t.jsxs)("section",{className:"space-y-2","data-testid":"skill-plan-risk-section",children:[(0,t.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:d("plan.riskHeading")}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:[(0,t.jsx)(f,{level:u.declaredRisk,kind:"declared",label:d("plan.riskDeclared")}),(0,t.jsx)(f,{level:u.computedRisk,kind:"computed",label:d("plan.riskComputed")}),(0,t.jsx)(f,{level:u.effectiveRisk,kind:"effective",label:d("plan.riskEffective")})]}),(0,t.jsx)("p",{className:"break-words text-sm text-foreground",children:u.riskRationale}),(0,t.jsx)(o.u,{tone:"neutral",children:d("plan.riskNotice")})]}),(0,t.jsxs)("section",{className:"space-y-2","data-testid":"skill-plan-permissions",children:[(0,t.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:d("permissions.heading")}),u.declaredPermissions.length>0?(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5",children:u.declaredPermissions.map(e=>(0,t.jsx)(r.Ex,{variant:"warning",children:h.z2[e]?d(h.z2[e]):e},e))}):(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:d("plan.permissionsNone")}),(0,t.jsx)(o.u,{tone:"warning",children:d("permissions.declarationOnlyNotice")})]}),(0,t.jsxs)("section",{className:"space-y-2","data-testid":"skill-plan-requirements",children:[(0,t.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:d("requirements.heading")}),0===u.requirements.commands.length&&0===u.requirements.networkHosts.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:d("plan.requirementsNone")}):(0,t.jsxs)("dl",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[u.requirements.commands.length>0&&(0,t.jsx)(k,{label:d("plan.requirementsCommands"),children:u.requirements.commands.map(e=>{var s;return"".concat(e.name," ").concat(null!=(s=e.versionRange)?s:d("plan.commandAnyVersion"))}).join(", ")}),u.requirements.networkHosts.length>0&&(0,t.jsx)(k,{label:d("plan.requirementsHosts"),children:u.requirements.networkHosts.join(", ")})]})]}),(0,t.jsxs)("section",{className:"space-y-2","data-testid":"skill-plan-scripts",children:[(0,t.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:d("plan.scriptsHeading")}),0===u.executablePaths.length&&0===u.scriptPaths.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:d("plan.scriptsNone")}):(0,t.jsx)("ul",{className:"space-y-1",children:[...new Set([...u.scriptPaths,...u.executablePaths])].map(e=>(0,t.jsx)("li",{className:"break-all font-mono text-xs text-foreground",children:e},e))})]}),"compatible"!==x.status&&(0,t.jsx)(o.u,{tone:"warning","data-testid":"skill-plan-compatibility-notice",children:d((0,h.e5)(x.messageKey),{range:x.requiredRange,currentVersion:null!=(n=x.currentVersion)?n:""})}),i.warnings.length>0&&(0,t.jsxs)("section",{className:"space-y-2","data-testid":"skill-plan-warnings",children:[(0,t.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:d("plan.warningsHeading")}),(0,t.jsx)("ul",{className:"space-y-1",children:i.warnings.map(e=>(0,t.jsx)("li",{className:"text-xs text-warning-foreground",children:h.RO[e]?d(h.RO[e]):e},e))})]}),(0,t.jsxs)("section",{className:"space-y-2","data-testid":"skill-plan-files",children:[(0,t.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:d("plan.filesHeading")}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground","data-testid":"skill-plan-stats",children:d("plan.stats",{added:i.stats.added,modified:i.stats.modified,unchanged:i.stats.unchanged,conflicted:i.stats.conflicted,unmanaged:i.stats.unmanaged})}),0===i.files.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:d("plan.filesEmpty")}):(0,t.jsx)("ul",{className:"space-y-2",children:i.files.map(e=>(0,t.jsx)(j,{entry:e},e.path))})]}),i.blockers.length>0&&(0,t.jsxs)("section",{className:"space-y-2","data-testid":"skill-install-blockers",children:[(0,t.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-danger-foreground",children:d("plan.blockersHeading")}),(0,t.jsx)("ul",{className:"space-y-1",children:i.blockers.map(e=>{var s,l;return(0,t.jsxs)("li",{className:"text-xs text-danger-foreground",children:[e.path&&(0,t.jsx)("span",{className:"mr-1 break-all font-mono",children:e.path}),e.code.startsWith("skills.")?d((0,h.e5)(e.code),{range:x.requiredRange,currentVersion:null!=(s=x.currentVersion)?s:""}):h.KL[e.code]?d(h.KL[e.code]):e.code]},"".concat(e.code,":").concat(null!=(l=e.path)?l:""))})}),(0,t.jsx)(o.u,{tone:"danger",children:d("plan.blockedNotice")})]})]})}function y(e){let{entry:s}=e,l=(0,a.c)("skills"),n=h.Mj[s.disposition],i=h.hJ[s.reason];return(0,t.jsxs)("li",{className:"flex flex-wrap items-center gap-2","data-testid":"skill-uninstall-file-".concat(s.path),children:[(0,t.jsx)(r.Ex,{variant:"remove"===s.disposition?"info":"warning",children:n?l(n):s.disposition}),(0,t.jsx)("span",{className:"break-all font-mono text-xs text-foreground",children:s.path}),i&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:l(i)})]})}function N(e){var s;let{plan:l}=e,n=(0,a.c)("skills"),{target:d,skill:c}=l;return(0,t.jsxs)(r.Zp,{className:"space-y-4","data-testid":"skill-uninstall-plan",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:n("uninstall.heading")}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:n("uninstall.expiresAt",{timestamp:l.expiresAt})})]}),(0,t.jsxs)("dl",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[(0,t.jsx)(k,{label:n("target.repository"),children:d.repositoryName}),(0,t.jsx)(k,{label:n("target.heading"),children:d.worktreeName}),(0,t.jsx)(k,{label:n("target.branch"),children:null!=(s=d.branch)?s:n("target.branchUnknown")}),(0,t.jsx)(k,{label:n("uninstall.installedVersion"),children:(0,t.jsx)("span",{className:"font-mono text-xs",children:c.version||n("uninstall.versionUnknown")})}),(0,t.jsx)(k,{label:n("plan.installRoot"),children:(0,t.jsx)("span",{className:"break-all font-mono text-xs",children:d.installRoot})}),(0,t.jsx)(k,{label:n("target.workingTree"),children:d.workingTreeDirty?n("target.workingTreeDirty"):n("target.workingTreeClean")})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground","data-testid":"skill-uninstall-stats",children:n("uninstall.stats",{removable:l.stats.removable,modified:l.stats.modified,missing:l.stats.missing,unknown:l.stats.unknown,irregular:l.stats.irregular})}),(0,t.jsxs)("section",{className:"space-y-2",children:[(0,t.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:n("uninstall.removalsHeading")}),0===l.removals.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:n("uninstall.removalsEmpty")}):(0,t.jsx)("ul",{className:"space-y-1.5",children:l.removals.map(e=>(0,t.jsx)(y,{entry:e},e.path))})]}),(0,t.jsxs)("section",{className:"space-y-2",children:[(0,t.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:n("uninstall.retainedHeading")}),0===l.retained.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:n("uninstall.retainedEmpty")}):(0,t.jsx)("ul",{className:"space-y-1.5",children:l.retained.map(e=>(0,t.jsx)(y,{entry:e},e.path))})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[l.skill.agents.length>0&&(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5","data-testid":"skill-uninstall-agents",children:l.skill.agents.map(e=>(0,t.jsx)(r.Ex,{variant:"gray",children:(0,i.f_)(e.agent)},e.agent))}),(0,t.jsx)(o.u,{tone:"neutral",children:n((0,h.e5)(l.nextActionKey))})]}),l.blockers.length>0&&(0,t.jsxs)("section",{className:"space-y-2","data-testid":"skill-uninstall-blockers",children:[(0,t.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-danger-foreground",children:n("uninstall.blockersHeading")}),(0,t.jsx)("ul",{className:"space-y-1",children:l.blockers.map(e=>{var s;return(0,t.jsxs)("li",{className:"text-xs text-danger-foreground",children:[e.path&&(0,t.jsx)("span",{className:"mr-1 break-all font-mono",children:e.path}),n((0,h.e5)(e.messageKey))]},"".concat(e.code,":").concat(null!=(s=e.path)?s:""))})})]})]})}var w=l(80130);let v={worktreeId:null,busy:null,installPlan:null,uninstallPlan:null,installResult:null,uninstallResult:null,riskAcknowledged:!1,failure:null};function R(e){return{...e,installPlan:null,uninstallPlan:null,installResult:null,uninstallResult:null,riskAcknowledged:!1,failure:null}}function C(e,s){return"".concat(e,"-").concat(s)}function I(e){let{failure:s}=e,l=(0,a.c)("skills");return(0,t.jsxs)("div",{className:"space-y-2","data-testid":"skill-operation-error",children:[(0,t.jsxs)(o.u,{tone:"danger",children:[(0,t.jsx)("p",{className:"font-medium",children:l("operation.errorHeading")}),(0,t.jsx)("p",{className:"mt-1",children:l((0,h.FW)(s.code))}),(0,t.jsx)("p",{className:"mt-1 break-words",children:l("state.errorCode",{code:s.code})})]}),s.nextActionKey&&(0,t.jsx)(o.u,{tone:"warning",children:l((0,h.e5)(s.nextActionKey))}),s.blockers&&s.blockers.length>0&&(0,t.jsx)("ul",{className:"space-y-1","data-testid":"skill-operation-error-blockers",children:s.blockers.map(e=>{var s;return(0,t.jsxs)("li",{className:"text-xs text-danger-foreground",children:[e.path&&(0,t.jsx)("span",{className:"mr-1 break-all font-mono",children:e.path}),l((0,h.e5)(e.messageKey))]},"".concat(e.code,":").concat(null!=(s=e.path)?s:""))})})]})}function A(e){let{agents:s,skillId:l,version:n}=e,r=(0,a.c)("skills");return 0===s.length?null:(0,t.jsxs)("div",{className:"space-y-1","data-testid":"skill-operation-reload",children:[(0,t.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:r("operation.reloadHeading")}),(0,t.jsx)("ul",{className:"space-y-1",children:s.map(e=>(0,t.jsx)("li",{className:"text-xs text-muted-foreground",children:r((0,h.e5)(e.messageKey),{agent:(0,i.f_)(e.agent),skillId:l,version:n})},e.agent))})]})}function T(e){var s;let{skillId:l,version:i,blockedReason:c,worktreeId:u}=e,x=(0,a.c)("skills"),[p,g]=(0,n.useState)(()=>u?{...v,worktreeId:u}:v),k=(0,n.useCallback)(e=>{g(s=>s.worktreeId===e?s:R({...s,worktreeId:e,busy:null}))},[]);(0,n.useEffect)(()=>{u&&k(u)},[u,k]);let f=(0,n.useCallback)(async()=>{let e=p.worktreeId;if(!e)return;g(e=>({...R(e),busy:"install-plan"}));let s=await (0,w.Q6)(e,l,{version:null!=i?i:void 0});g(e=>({...e,busy:null,installPlan:s.ok?s.data.plan:null,failure:s.ok?null:s.failure}))},[l,p.worktreeId,i]),j=(0,n.useCallback)(async()=>{let e=p.worktreeId,s=p.installPlan;if(!e||!s||s.requiresRiskAcknowledgement&&!p.riskAcknowledged)return;g(e=>({...e,busy:"install-apply",failure:null}));let t=await (0,w.Xi)(e,l,{planToken:s.token,version:s.skill.version,acknowledgeRisk:!!s.requiresRiskAcknowledgement||void 0,idempotencyKey:C("skill-install",s.token)});t.ok&&(0,d.k)(e),g(e=>({...e,busy:null,installPlan:t.ok?null:e.installPlan,installResult:t.ok?t.data:null,failure:t.ok?null:t.failure}))},[l,p.installPlan,p.riskAcknowledged,p.worktreeId]),y=(0,n.useCallback)(async()=>{let e=p.worktreeId;if(!e)return;g(e=>({...R(e),busy:"uninstall-plan"}));let s=await (0,w.hN)(e,l);g(e=>({...e,busy:null,uninstallPlan:s.ok?s.data.plan:null,failure:s.ok?null:s.failure}))},[l,p.worktreeId]),T=(0,n.useCallback)(async()=>{let e=p.worktreeId,s=p.uninstallPlan;if(!e||!s)return;g(e=>({...e,busy:"uninstall-apply",failure:null}));let t=await (0,w.E)(e,l,{planToken:s.token,idempotencyKey:C("skill-uninstall",s.token)});g(e=>({...e,busy:null,uninstallPlan:t.ok?null:e.uninstallPlan,uninstallResult:t.ok?t.data:null,failure:t.ok?null:t.failure}))},[l,p.uninstallPlan,p.worktreeId]),P=(0,n.useCallback)(()=>{g(e=>R(e))},[]),E=null!==p.busy,H=p.installPlan,q=p.uninstallPlan,S=null!=c?c:x(p.worktreeId?"plan.ready":"plan.chooseTarget"),K=null!==H&&H.requiresRiskAcknowledgement&&!p.riskAcknowledged;return(0,t.jsxs)("div",{className:"space-y-3","data-testid":"skill-install-panel",children:[!u&&(0,t.jsx)(m,{selectedWorktreeId:p.worktreeId,onSelect:k,disabled:E}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(r.$n,{variant:"primary",disabled:E||null!==c||!p.worktreeId,onClick:f,"data-testid":"skill-install-action","aria-describedby":"skill-install-reason",children:x("install-plan"===p.busy?"plan.building":"plan.build")}),(0,t.jsx)(r.$n,{variant:"secondary",disabled:E||!p.worktreeId,onClick:y,"data-testid":"skill-uninstall-action",children:x("uninstall-plan"===p.busy?"uninstall.building":"uninstall.build")})]}),(0,t.jsx)("p",{id:"skill-install-reason",className:"text-sm text-muted-foreground","data-testid":"skill-install-reason",children:S}),p.failure&&(0,t.jsx)(I,{failure:p.failure}),H&&(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)(b,{plan:H}),H.requiresRiskAcknowledgement&&(0,t.jsxs)(r.Zp,{className:"space-y-3","data-testid":"skill-install-risk-acknowledgement",children:[(0,t.jsx)(o.u,{tone:"danger",children:x((0,h.e5)(null!=(s=H.riskAcknowledgementMessageKey)?s:"skills.plan.highRiskAcknowledgement"))}),(0,t.jsxs)("label",{className:"flex items-start gap-2 text-sm text-foreground",children:[(0,t.jsx)(r.Sc,{checked:p.riskAcknowledged,onCheckedChange:e=>g(s=>({...s,riskAcknowledged:!0===e})),disabled:E,"data-testid":"skill-install-risk-checkbox",className:"mt-0.5"}),(0,t.jsx)("span",{children:x("plan.acknowledgeLabel")})]})]}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(r.$n,{variant:H.requiresRiskAcknowledgement?"danger":"primary",disabled:E||!H.installable||K,onClick:j,"data-testid":"skill-install-confirm",children:x("install-apply"===p.busy?"plan.confirming":"plan.confirm")}),(0,t.jsx)(r.$n,{variant:"ghost",disabled:E,onClick:P,"data-testid":"skill-install-discard",children:x("plan.discard")})]})]}),q&&(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)(N,{plan:q}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(r.$n,{variant:"danger",disabled:E||!q.removable,onClick:T,"data-testid":"skill-uninstall-confirm",children:x("uninstall-apply"===p.busy?"uninstall.confirming":"uninstall.confirm")}),(0,t.jsx)(r.$n,{variant:"ghost",disabled:E,onClick:P,"data-testid":"skill-uninstall-discard",children:x("plan.discard")})]})]}),p.installResult&&(0,t.jsxs)(r.Zp,{className:"space-y-3","data-testid":"skill-install-result",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:x("operation.installedHeading")}),(0,t.jsx)(o.u,{tone:"info",children:x((0,h.e5)(p.installResult.operation.nextActionKey))}),p.installResult.operation.replayed&&(0,t.jsx)(o.u,{tone:"neutral","data-testid":"skill-operation-replayed",children:x("operation.replayNotice")}),p.installResult.install&&"files"in p.installResult.install&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:x("operation.filesWritten",{count:p.installResult.install.files.length})}),"reload"in p.installResult&&(0,t.jsx)(A,{agents:p.installResult.reload.agents,skillId:p.installResult.reload.skillId,version:p.installResult.reload.version}),(0,t.jsx)(r.$n,{variant:"secondary",size:"sm",onClick:P,"data-testid":"skill-operation-reset",children:x("operation.startOver")})]}),p.uninstallResult&&(0,t.jsxs)(r.Zp,{className:"space-y-3","data-testid":"skill-uninstall-result",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:x("operation.uninstalledHeading")}),(0,t.jsx)(o.u,{tone:"info",children:x((0,h.e5)(p.uninstallResult.operation.nextActionKey))}),p.uninstallResult.operation.replayed&&(0,t.jsx)(o.u,{tone:"neutral","data-testid":"skill-operation-replayed",children:x("operation.replayNotice")}),p.uninstallResult.uninstall&&"removedFiles"in p.uninstallResult.uninstall&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:x("operation.filesRemoved",{count:p.uninstallResult.uninstall.removedFiles.length})}),"reload"in p.uninstallResult&&(0,t.jsx)(A,{agents:p.uninstallResult.reload.agents,skillId:p.uninstallResult.reload.skillId,version:p.uninstallResult.reload.version}),(0,t.jsx)(r.$n,{variant:"secondary",size:"sm",onClick:P,"data-testid":"skill-operation-reset",children:x("operation.startOver")})]})]})}},53482:(e,s,l)=>{l.d(s,{i:()=>o});var t=l(95155),n=l(12115),a=l(60322),r=l(9900);function i(){return(0,t.jsx)("svg",{className:"h-3.5 w-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})})}function d(){return(0,t.jsx)("svg",{className:"h-3.5 w-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})})}function o(e){let{text:s,className:l="",label:o="Copy"}=e,[c,u]=(0,n.useState)(!1),x=(0,n.useRef)(null);(0,n.useEffect)(()=>()=>{x.current&&clearTimeout(x.current)},[]);let m=(0,n.useCallback)(async()=>{try{await (0,a.l)(s),u(!0),x.current&&clearTimeout(x.current),x.current=setTimeout(()=>u(!1),r.s7)}catch(e){}},[s]);return(0,t.jsxs)("button",{type:"button",onClick:m,className:"inline-flex items-center gap-1 rounded border border-border bg-surface px-2 py-0.5 text-[11px] font-medium text-foreground transition-colors hover:bg-muted ".concat(l),"aria-label":c?"Copied":o,title:c?"Copied!":o,children:[c?(0,t.jsx)(d,{}):(0,t.jsx)(i,{}),(0,t.jsx)("span",{children:c?"Copied":o})]})}},60322:(e,s,l)=>{l.d(s,{l:()=>n});let t=/\x1b\[[0-9;]*[a-zA-Z]|\x1b\][^\x07]*\x07|\[[0-9;]*m/g;async function n(e){var s;if(!e||0===e.trim().length)return;let l=e.replace(t,"");if(null==(s=navigator.clipboard)?void 0:s.writeText)try{await navigator.clipboard.writeText(l);return}catch(e){}let n=document.createElement("textarea");n.value=l,n.style.position="fixed",n.style.left="-9999px",n.style.top="-9999px",n.style.opacity="0",document.body.appendChild(n),n.focus(),n.select();try{document.execCommand("copy")}finally{document.body.removeChild(n)}}},74385:(e,s,l)=>{l.d(s,{I:()=>t,k:()=>n});let t="skill:installed";function n(e){window.dispatchEvent(new CustomEvent(t,{detail:{worktreeId:e}}))}},76246:(e,s,l)=>{l.d(s,{o:()=>t});function t(e){return e?e.split("/").map(encodeURIComponent).join("/"):""}}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2069],{32069:e=>{class t{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function n(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function i(e,...t){let n=Object.create(null);for(let t in e)n[t]=e[t];return t.forEach(function(e){for(let t in e)n[t]=e[t]}),n}class r{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=n(e)}openNode(e){if(!e.scope)return;let t=((e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){let n=e.split(".");return[`${t}${n.shift()}`,...n.map((e,t)=>`${e}${"_".repeat(t+1)}`)].join(" ")}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){e.scope&&(this.buffer+="</span>")}value(){return this.buffer}span(e){this.buffer+=`<span class="${e}">`}}let o=(e={})=>{let t={children:[]};return Object.assign(t,e),t};class s{constructor(){this.rootNode=o(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){let t=o({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(e=>"string"==typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{s._collapse(e)}))}}class a extends s{constructor(e){super(),this.options=e}addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){let n=e.root;t&&(n.scope=`language:${t}`),this.add(n)}toHTML(){return new r(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function l(e){return e?"string"==typeof e?e:e.source:null}function c(e){return d("(?=",e,")")}function u(e){return d("(?:",e,")*")}function g(e){return d("(?:",e,")?")}function d(...e){return e.map(e=>l(e)).join("")}function h(...e){return"("+(function(e){let t=e[e.length-1];return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}(e).capture?"":"?:")+e.map(e=>l(e)).join("|")+")"}function f(e){return RegExp(e.toString()+"|").exec("").length-1}let p=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function b(e,{joinWith:t}){let n=0;return e.map(e=>{let t=n+=1,i=l(e),r="";for(;i.length>0;){let e=p.exec(i);if(!e){r+=i;break}r+=i.substring(0,e.index),i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+String(Number(e[1])+t):(r+=e[0],"("===e[0]&&n++)}return r}).map(e=>`(${e})`).join(t)}let m="[a-zA-Z]\\w*",E="[a-zA-Z_]\\w*",x="\\b\\d+(\\.\\d+)?",_="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",w="\\b(0b[01]+)",y={begin:"\\\\[\\s\\S]",relevance:0},O=function(e,t,n={}){let r=i({scope:"comment",begin:e,end:t,contains:[]},n);r.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let o=h("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:d(/[ ]+/,"(",o,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),r},k=O("//","$"),S=O("/\\*","\\*/"),v=O("#","$");var N=Object.freeze({__proto__:null,APOS_STRING_MODE:{scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[y]},BACKSLASH_ESCAPE:y,BINARY_NUMBER_MODE:{scope:"number",begin:w,relevance:0},BINARY_NUMBER_RE:w,COMMENT:O,C_BLOCK_COMMENT_MODE:S,C_LINE_COMMENT_MODE:k,C_NUMBER_MODE:{scope:"number",begin:_,relevance:0},C_NUMBER_RE:_,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})},HASH_COMMENT_MODE:v,IDENT_RE:m,MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:"\\.\\s*"+E,relevance:0},NUMBER_MODE:{scope:"number",begin:x,relevance:0},NUMBER_RE:x,PHRASAL_WORDS_MODE:{begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},QUOTE_STRING_MODE:{scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[y]},REGEXP_MODE:{scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[y,{begin:/\[/,end:/\]/,relevance:0,contains:[y]}]},RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=d(t,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},TITLE_MODE:{scope:"title",begin:m,relevance:0},UNDERSCORE_IDENT_RE:E,UNDERSCORE_TITLE_MODE:{scope:"title",begin:E,relevance:0}});function M(e,t){"."===e.input[e.index-1]&&t.ignoreMatch()}function R(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function j(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=M,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function A(e,t){Array.isArray(e.illegal)&&(e.illegal=h(...e.illegal))}function I(e,t){if(e.match){if(e.begin||e.end)throw Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function T(e,t){void 0===e.relevance&&(e.relevance=1)}let L=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw Error("beforeMatch cannot be used with starts");let n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=d(n.beforeMatch,c(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},B=["of","and","for","in","not","or","if","then","parent","list","value"],H={},P=e=>{console.error(e)},C=(e,...t)=>{console.log(`WARN: ${e}`,...t)},D=(e,t)=>{H[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),H[`${e}/${t}`]=!0)},$=Error();function U(e,t,{key:n}){let i=0,r=e[n],o={},s={};for(let e=1;e<=t.length;e++)s[e+i]=r[e],o[e+i]=!0,i+=f(t[e-1]);e[n]=s,e[n]._emit=o,e[n]._multi=!0}function z(e){if(e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope),"string"==typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope}),Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw P("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),$;if("object"!=typeof e.beginScope||null===e.beginScope)throw P("beginScope must be object"),$;U(e,e.begin,{key:"beginScope"}),e.begin=b(e.begin,{joinWith:""})}if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw P("skip, excludeEnd, returnEnd not compatible with endScope: {}"),$;if("object"!=typeof e.endScope||null===e.endScope)throw P("endScope must be object"),$;U(e,e.end,{key:"endScope"}),e.end=b(e.end,{joinWith:""})}}class W extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}let X=Symbol("nomatch"),G=function(e){let r=Object.create(null),o=Object.create(null),s=[],p=!0,m="Could not find the language '{}', did you forget to load/include a language module?",E={disableAutodetect:!0,name:"Plain text",contains:[]},x={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:a};function _(e){return x.noHighlightRe.test(e)}function w(e,t,n){let i="",r="";"object"==typeof t?(i=e,n=t.ignoreIllegals,r=t.language):(D("10.7.0","highlight(lang, code, ...args) has been deprecated."),D("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),r=e,i=t),void 0===n&&(n=!0);let o={code:i,language:r};U("before:highlight",o);let s=o.result?o.result:y(o.language,o.code,n);return s.code=o.code,U("after:highlight",s),s}function y(e,o,s,a){let c=Object.create(null);function u(){if(!N.keywords)return void C.addText($);let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec($),n="";for(;t;){n+=$.substring(e,t.index);let i=k.case_insensitive?t[0].toLowerCase():t[0],r=N.keywords[i];if(r){let[e,o]=r;if(C.addText(n),n="",c[i]=(c[i]||0)+1,c[i]<=7&&(U+=o),e.startsWith("_"))n+=t[0];else{let n=k.classNameAliases[e]||e;d(t[0],n)}}else n+=t[0];e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec($)}n+=$.substring(e),C.addText(n)}function g(){null!=N.subLanguage?function(){if(""===$)return;let e=null;if("string"==typeof N.subLanguage){if(!r[N.subLanguage])return C.addText($);e=y(N.subLanguage,$,!0,H[N.subLanguage]),H[N.subLanguage]=e._top}else e=O($,N.subLanguage.length?N.subLanguage:null);N.relevance>0&&(U+=e.relevance),C.__addSublanguage(e._emitter,e.language)}():u(),$=""}function d(e,t){""!==e&&(C.startScope(t),C.addText(e),C.endScope())}function h(e,t){let n=1,i=t.length-1;for(;n<=i;){if(!e._emit[n]){n++;continue}let i=k.classNameAliases[e[n]]||e[n],r=t[n];i?d(r,i):($=r,u(),$=""),n++}}function E(e,t){return e.scope&&"string"==typeof e.scope&&C.openNode(k.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(d($,k.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),$=""):e.beginScope._multi&&(h(e.beginScope,t),$="")),N=Object.create(e,{parent:{value:N}})}let _={};function w(n,i){let r=i&&i[0];if($+=n,null==r)return g(),0;if("begin"===_.type&&"end"===i.type&&_.index===i.index&&""===r){if($+=o.slice(i.index,i.index+1),!p){let t=Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=_.rule,t}return 1}if(_=i,"begin"===i.type){let e=i[0],n=i.rule,r=new t(n);for(let t of[n.__beforeBegin,n["on:begin"]])if(t&&(t(i,r),r.isMatchIgnored))return 0===N.matcher.regexIndex?($+=e[0],1):(K=!0,0);return n.skip?$+=e:(n.excludeBegin&&($+=e),g(),n.returnBegin||n.excludeBegin||($=e)),E(n,i),n.returnBegin?0:e.length}if("illegal"!==i.type||s){if("end"===i.type){let e=function(e){let n=e[0],i=o.substring(e.index),r=function e(n,i,r){let o=function(e,t){let n=e&&e.exec(t);return n&&0===n.index}(n.endRe,r);if(o){if(n["on:end"]){let e=new t(n);n["on:end"](i,e),e.isMatchIgnored&&(o=!1)}if(o){for(;n.endsParent&&n.parent;)n=n.parent;return n}}if(n.endsWithParent)return e(n.parent,i,r)}(N,e,i);if(!r)return X;let s=N;N.endScope&&N.endScope._wrap?(g(),d(n,N.endScope._wrap)):N.endScope&&N.endScope._multi?(g(),h(N.endScope,e)):s.skip?$+=n:(s.returnEnd||s.excludeEnd||($+=n),g(),s.excludeEnd&&($=n));do N.scope&&C.closeNode(),N.skip||N.subLanguage||(U+=N.relevance),N=N.parent;while(N!==r.parent);return r.starts&&E(r.starts,e),s.returnEnd?0:n.length}(i);if(e!==X)return e}}else{let e=Error('Illegal lexeme "'+r+'" for mode "'+(N.scope||"<unnamed>")+'"');throw e.mode=N,e}if("illegal"===i.type&&""===r)return $+="\n",1;if(G>1e5&&G>3*i.index)throw Error("potential infinite loop, way more iterations than matches");return $+=r,r.length}let k=M(e);if(!k)throw P(m.replace("{}",e)),Error('Unknown language: "'+e+'"');let S=function(e){function t(t,n){return RegExp(l(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=f(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);let e=this.regexes.map(e=>e[1]);this.matcherRe=t(b(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;let t=this.matcherRe.exec(e);if(!t)return null;let n=t.findIndex((e,t)=>t>0&&void 0!==e),i=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,i)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];let t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){let t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{let t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=i(e.classNameAliases||{}),function n(o,s){if(o.isCompiled)return o;[R,I,z,L].forEach(e=>e(o,s)),e.compilerExtensions.forEach(e=>e(o,s)),o.__beforeBegin=null,[j,A,T].forEach(e=>e(o,s)),o.isCompiled=!0;let a=null;return"object"==typeof o.keywords&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords),a=o.keywords.$pattern,delete o.keywords.$pattern),a=a||/\w+/,o.keywords&&(o.keywords=function e(t,n,i="keyword"){let r=Object.create(null);return"string"==typeof t?o(i,t.split(" ")):Array.isArray(t)?o(i,t):Object.keys(t).forEach(function(i){Object.assign(r,e(t[i],n,i))}),r;function o(e,t){n&&(t=t.map(e=>e.toLowerCase())),t.forEach(function(t){var n,i,o;let s=t.split("|");r[s[0]]=[e,(n=s[0],(i=s[1])?Number(i):+(o=n,!B.includes(o.toLowerCase())))]})}}(o.keywords,e.case_insensitive)),o.keywordPatternRe=t(a,!0),s&&(o.begin||(o.begin=/\B|\b/),o.beginRe=t(o.begin),o.end||o.endsWithParent||(o.end=/\B|\b/),o.end&&(o.endRe=t(o.end)),o.terminatorEnd=l(o.end)||"",o.endsWithParent&&s.terminatorEnd&&(o.terminatorEnd+=(o.end?"|":"")+s.terminatorEnd)),o.illegal&&(o.illegalRe=t(o.illegal)),o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map(function(e){var t;return((t="self"===e?o:e).variants&&!t.cachedVariants&&(t.cachedVariants=t.variants.map(function(e){return i(t,{variants:null},e)})),t.cachedVariants)?t.cachedVariants:!function e(t){return!!t&&(t.endsWithParent||e(t.starts))}(t)?Object.isFrozen(t)?i(t):t:i(t,{starts:t.starts?i(t.starts):null})})),o.contains.forEach(function(e){n(e,o)}),o.starts&&n(o.starts,s),o.matcher=function(e){let t=new r;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:"begin"})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}(o),o}(e)}(k),v="",N=a||S,H={},C=new x.__emitter(x),D=[];for(let e=N;e!==k;e=e.parent)e.scope&&D.unshift(e.scope);D.forEach(e=>C.openNode(e));let $="",U=0,W=0,G=0,K=!1;try{if(k.__emitTokens)k.__emitTokens(o,C);else{for(N.matcher.considerAll();;){G++,K?K=!1:N.matcher.considerAll(),N.matcher.lastIndex=W;let e=N.matcher.exec(o);if(!e)break;let t=o.substring(W,e.index),n=w(t,e);W=e.index+n}w(o.substring(W))}return C.finalize(),v=C.toHTML(),{language:e,value:v,relevance:U,illegal:!1,_emitter:C,_top:N}}catch(t){if(t.message&&t.message.includes("Illegal"))return{language:e,value:n(o),illegal:!0,relevance:0,_illegalBy:{message:t.message,index:W,context:o.slice(W-100,W+100),mode:t.mode,resultSoFar:v},_emitter:C};if(p)return{language:e,value:n(o),illegal:!1,relevance:0,errorRaised:t,_emitter:C,_top:N};throw t}}function O(e,t){t=t||x.languages||Object.keys(r);let i=function(e){let t={value:n(e),illegal:!1,relevance:0,_top:E,_emitter:new x.__emitter(x)};return t._emitter.addText(e),t}(e),o=t.filter(M).filter($).map(t=>y(t,e,!1));o.unshift(i);let[s,a]=o.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(M(e.language).supersetOf===t.language)return 1;else if(M(t.language).supersetOf===e.language)return -1}return 0});return s.secondBest=a,s}function k(e){let t=function(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";let n=x.languageDetectRe.exec(t);if(n){let t=M(n[1]);return t||(C(m.replace("{}",n[1])),C("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find(e=>_(e)||M(e))}(e);if(_(t))return;if(U("before:highlightElement",{el:e,language:t}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);if(e.children.length>0&&(x.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(e)),x.throwUnescapedHTML))throw new W("One of your code blocks includes unescaped HTML.",e.innerHTML);let n=e.textContent,i=t?w(n,{language:t,ignoreIllegals:!0}):O(n);e.innerHTML=i.value,e.dataset.highlighted="yes";var r=i.language;let s=t&&o[t]||r;e.classList.add("hljs"),e.classList.add(`language-${s}`),e.result={language:i.language,re:i.relevance,relevance:i.relevance},i.secondBest&&(e.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance}),U("after:highlightElement",{el:e,result:i,text:n})}let S=!1;function v(){if("loading"===document.readyState){S||window.addEventListener("DOMContentLoaded",function(){v()},!1),S=!0;return}document.querySelectorAll(x.cssSelector).forEach(k)}function M(e){return r[e=(e||"").toLowerCase()]||r[o[e]]}function H(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach(e=>{o[e.toLowerCase()]=t})}function $(e){let t=M(e);return t&&!t.disableAutodetect}function U(e,t){s.forEach(function(n){n[e]&&n[e](t)})}for(let t in Object.assign(e,{highlight:w,highlightAuto:O,highlightAll:v,highlightElement:k,highlightBlock:function(e){return D("10.7.0","highlightBlock will be removed entirely in v12.0"),D("10.7.0","Please use highlightElement now."),k(e)},configure:function(e){x=i(x,e)},initHighlighting:()=>{v(),D("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},initHighlightingOnLoad:function(){v(),D("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")},registerLanguage:function(t,n){let i=null;try{i=n(e)}catch(e){if(P("Language definition for '{}' could not be registered.".replace("{}",t)),p)P(e);else throw e;i=E}i.name||(i.name=t),r[t]=i,i.rawDefinition=n.bind(null,e),i.aliases&&H(i.aliases,{languageName:t})},unregisterLanguage:function(e){for(let t of(delete r[e],Object.keys(o)))o[t]===e&&delete o[t]},listLanguages:function(){return Object.keys(r)},getLanguage:M,registerAliases:H,autoDetection:$,inherit:i,addPlugin:function(e){var t;(t=e)["before:highlightBlock"]&&!t["before:highlightElement"]&&(t["before:highlightElement"]=e=>{t["before:highlightBlock"](Object.assign({block:e.el},e))}),t["after:highlightBlock"]&&!t["after:highlightElement"]&&(t["after:highlightElement"]=e=>{t["after:highlightBlock"](Object.assign({block:e.el},e))}),s.push(e)},removePlugin:function(e){let t=s.indexOf(e);-1!==t&&s.splice(t,1)}}),e.debugMode=function(){p=!1},e.safeMode=function(){p=!0},e.versionString="11.11.1",e.regex={concat:d,lookahead:c,either:h,optional:g,anyNumberOfTimes:u},N)"object"==typeof N[t]&&function e(t){return t instanceof Map?t.clear=t.delete=t.set=function(){throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=function(){throw Error("set is read-only")}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach(n=>{let i=t[n],r=typeof i;"object"!==r&&"function"!==r||Object.isFrozen(i)||e(i)}),t}(N[t]);return Object.assign(e,N),e},K=G({});K.newInstance=()=>G({}),e.exports=K,K.HighlightJS=K,K.default=K}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4027],{24027:(e,t,r)=>{r.d(t,{Uc:()=>C,G8:()=>N,OJ:()=>W,RF:()=>A});var n=r(95155),i=r(12115),l=r(18955),a=r(51238),s=r(22133),o=r(89451),c=r(10934),d=r(92254),u=r(5225);r(1226);var m=r(89715),h=r(57828),f=r(52056),p=r(65229),x=r(67909),g=r(3005);let w=(0,x.default)(()=>Promise.all([r.e(221),r.e(7485),r.e(953)]).then(r.bind(r,90953)).then(e=>({default:e.MermaidDiagram})),{loadableGenerated:{webpack:()=>[90953]},ssr:!1,loading:function(){let e=(0,l.c)("worktree");return(0,n.jsxs)("div",{className:"mermaid-loading flex items-center gap-2 text-muted-foreground p-4",children:[(0,n.jsx)(g.y,{size:"sm"}),(0,n.jsx)("span",{children:e("mermaid.loading")})]})}});function b(e){let{className:t,children:r}=e;if(t&&t.split(" ").includes("language-mermaid")){let e=null==r?"":"string"==typeof r?r:Array.isArray(r)?r.map(e=>"string"==typeof e?e:"").join(""):String(r);return(0,n.jsx)(w,{code:e})}return(0,n.jsx)("code",{className:t,children:r})}var j=r(50666),k=r(69352),v=r(76246);function y(e){let{apiUrl:t,alt:r,width:a,height:s}=e,o=(0,l.c)("worktree"),[c,d]=(0,i.useState)(null);return((0,i.useEffect)(()=>{let e=!1;return fetch(t).then(e=>e.ok?e.json():null).then(t=>{!e&&(null==t?void 0:t.content)&&d(t.content)}).catch(()=>{}),()=>{e=!0}},[t]),c)?(0,n.jsx)("img",{src:c,alt:r,width:a,height:s,style:{maxWidth:a||"100%"}}):(0,n.jsx)("span",{style:{color:"#999"},children:o("markdownPreview.loadingImage")})}let N=(0,i.memo)(function(e){let{content:t,onOpenFile:r,currentFilePath:l,worktreeId:m}=e,h=(0,i.useRef)(r);h.current=r;let f=(0,i.useRef)(l);f.current=l;let p=(0,i.useRef)(m);p.current=m;let x=(0,i.useCallback)((e,t)=>{let r=(0,k.d3)(t);if(r)switch((0,k.dj)(r)){case"anchor":break;case"external":e.preventDefault(),window.open(r,"_blank","noopener,noreferrer");break;case"relative":{e.preventDefault();let t=f.current,n=h.current;if(t&&n){let e=(0,k.WU)(t,r);e&&n(e)}}}},[]),g=(0,i.useMemo)(()=>({code:b,pre:e=>{let{children:t}=e;return!function(e){let t=i.Children.toArray(e)[0];if(!i.isValidElement(t))return!1;let r=t.props.className;return"string"==typeof r&&r.split(" ").includes("language-mermaid")}(t)?(0,n.jsx)(j.Ck,{children:(0,n.jsx)("pre",{className:"overflow-x-auto",children:t})}):(0,n.jsx)("pre",{children:t})},img:e=>{var t,r,i,l;let{src:a,alt:s,width:o,height:c,...d}=e,u=null!=o?o:null==(r=d.node)||null==(t=r.properties)?void 0:t.width,m=null!=c?c:null==(l=d.node)||null==(i=l.properties)?void 0:i.height;if("string"==typeof a&&!a.startsWith("http://")&&!a.startsWith("https://")&&!a.startsWith("data:")){let e=f.current,t=p.current;if(e&&t){let r=(0,k.WU)(e,a);if(r){let e="/api/worktrees/".concat(t,"/files/").concat((0,v.o)(r));return(0,n.jsx)(y,{apiUrl:e,alt:null!=s?s:"",width:u,height:m})}}}return(0,n.jsx)("img",{src:a,alt:null!=s?s:"",width:u,height:m,style:{maxWidth:u||"100%"}})},a:e=>{let{href:t,children:r,...i}=e;return t?(0,n.jsx)("a",{...i,href:t,onClick:e=>x(e,t),children:r}):(0,n.jsx)("a",{...i,children:r})}}),[x]),w=(0,i.useMemo)(()=>[s.A],[]),N=(0,i.useMemo)(()=>[o.A,[c.A,k.uO],d.A,u.A],[]);return(0,n.jsx)(a.oz,{remarkPlugins:w,rehypePlugins:N,components:g,children:t})}),A=(0,i.memo)(function(e){let{mobileTab:t,onTabChange:r}=e,i=(0,l.c)("worktree");return(0,n.jsxs)("div",{className:"flex border-b border-border",children:[(0,n.jsxs)("button",{"data-testid":"mobile-tab-editor",onClick:()=>r("editor"),className:"flex-1 py-2 text-sm font-medium ".concat("editor"===t?"text-accent-600 dark:text-accent-400 border-b-2 border-accent-600 dark:border-accent-400":"text-muted-foreground"),children:[(0,n.jsx)(m.A,{className:"h-4 w-4 inline-block mr-1"}),i("markdownPreview.editor")]}),(0,n.jsxs)("button",{"data-testid":"mobile-tab-preview",onClick:()=>r("preview"),className:"flex-1 py-2 text-sm font-medium ".concat("preview"===t?"text-accent-600 dark:text-accent-400 border-b-2 border-accent-600 dark:border-accent-400":"text-muted-foreground"),children:[(0,n.jsx)(h.A,{className:"h-4 w-4 inline-block mr-1"}),i("markdownPreview.preview")]})]})}),W=(0,i.memo)(function(e){let{isMobile:t}=e,r=(0,l.c)("worktree");return(0,n.jsxs)("div",{"data-testid":"maximize-hint",className:"flex items-center justify-center px-4 py-1 bg-muted text-muted-foreground text-xs",children:[r("markdownPreview.exitFullscreenHint")," ",t&&r("markdownPreview.exitFullscreenHintSwipe")]})}),C=(0,i.memo)(function(e){let{onDismiss:t}=e,r=(0,l.c)("worktree");return(0,n.jsxs)("div",{"data-testid":"large-file-warning",className:"flex items-center gap-2 px-4 py-2 bg-warning-subtle border-b border-warning-border text-warning-foreground text-sm",children:[(0,n.jsx)(f.A,{className:"h-4 w-4"}),r("markdownPreview.largeFileWarning"),(0,n.jsx)("button",{onClick:t,className:"ml-auto text-warning hover:text-warning",children:(0,n.jsx)(p.A,{className:"h-4 w-4"})})]})})},50666:(e,t,r)=>{r.d(t,{Ck:()=>a});var n=r(95155),i=r(12115),l=r(53482);function a(e){let{children:t,as:r="div",className:a=""}=e,s=function e(t){return null==t||"boolean"==typeof t?"":"string"==typeof t?t:"number"==typeof t?String(t):Array.isArray(t)?t.map(e).join(""):i.isValidElement(t)?e(t.props.children):""}(t);if(!s||0===s.trim().length)return(0,n.jsx)(r,{className:a||void 0,children:t});let o="relative group ".concat("span"===r?"block ":"").concat(a).trim();return(0,n.jsxs)(r,{className:o,"data-testid":"code-block-with-copy",children:[t,(0,n.jsx)(l.i,{text:s,className:"absolute right-2 top-2 z-10 opacity-100 md:opacity-0 md:group-hover:opacity-100 md:group-focus-within:opacity-100 focus:opacity-100"})]})}},69352:(e,t,r)=>{r.d(t,{WU:()=>c,d3:()=>d,dj:()=>o,uO:()=>u});var n,i,l,a,s=r(9567);function o(e){return e.startsWith("#")?"anchor":e.startsWith("http://")||e.startsWith("https://")||e.startsWith("mailto:")||e.startsWith("tel:")?"external":"relative"}function c(e,t){if(!t)return null;let r=e.substring(0,e.lastIndexOf("/")+1);try{let e=new URL(r,"file:///"),n=new URL(t,e),i=decodeURIComponent(n.pathname);if(i.startsWith("/")){let e=i.substring(1);if(e.length>0)return e}}catch(e){}return null}function d(e){return!e||0===e.length||e.length>2048||/[\x00-\x1f\x7f]/.test(e)?null:e}let u={...s.j,attributes:{...s.j.attributes,a:[...(null!=(l=null==(n=s.j.attributes)?void 0:n.a)?l:[]).filter(e=>"href"!==e),["href",/^(?:#|mailto:|tel:|https?:\/\/|(?![a-zA-Z][a-zA-Z0-9+.-]*:))/]],img:[...(null!=(a=null==(i=s.j.attributes)?void 0:i.img)?a:[]).filter(e=>"src"!==e),["src",/^(?:https?:\/\/|(?![a-zA-Z][a-zA-Z0-9+.-]*:))/],"alt","width","height"]}}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[530],{530:(e,t,r)=>{r.r(t),r.d(t,{HtmlPreview:()=>p});var a=r(95155),s=r(12115),l=r(18955),n=r(36402),i=r(11063),o=r(69352),c=r(90487);r(1226);let d="\n<script>\ndocument.addEventListener('click', function(e) {\n var target = e.target;\n while (target && target.tagName !== 'A') {\n target = target.parentElement;\n }\n if (target && target.href) {\n e.preventDefault();\n parent.postMessage({\n type: 'commandmate:link-click',\n href: target.getAttribute('href')\n }, '*');\n }\n});\n<\/script>",h={source:"htmlPreview.modeSource",preview:"htmlPreview.modePreview",split:"htmlPreview.modeSplit"};function u(e){let{content:t}=e,r=(0,s.useMemo)(()=>{try{return c.A.highlight(t,{language:"html",ignoreIllegals:!0}).value}catch(e){return c.A.highlightAuto(t).value}},[t]),l=(0,s.useMemo)(()=>r.split("\n"),[r]),n=(0,s.useMemo)(()=>Array.from({length:t.split("\n").length},(e,t)=>t+1),[t]);return(0,a.jsx)("div",{className:"overflow-auto h-full","data-testid":"html-source-viewer",children:(0,a.jsx)("table",{className:"text-sm w-full border-collapse",children:(0,a.jsx)("tbody",{children:n.map(e=>{var t;let r=e-1;return(0,a.jsxs)("tr",{"data-line":e,children:[(0,a.jsx)("td",{className:"pl-3 pr-2 text-right select-none font-mono border-r border-border bg-muted dark:bg-muted/50 sticky left-0 align-top whitespace-nowrap text-muted-foreground",children:e}),(0,a.jsx)("td",{className:"px-4 text-foreground align-top",children:(0,a.jsx)("pre",{className:"m-0 whitespace-pre-wrap break-words font-mono",style:{lineHeight:"1.5rem"},children:(0,a.jsx)("code",{className:"hljs",style:{padding:0,background:"transparent"},dangerouslySetInnerHTML:{__html:null!=(t=l[r])?t:""}})})})]},e)})})})})}function m(e){let{htmlContent:t,sandboxLevel:r,filePath:s}=e,n=(0,l.c)("worktree");return(0,a.jsx)("iframe",{srcDoc:t,sandbox:i.Ko[r],title:n("htmlPreview.title",{path:s}),className:"w-full h-full border-0 bg-white","data-testid":"html-iframe-preview"},"".concat(s,"-").concat(r))}function p(e){let{filePath:t,htmlContent:r,onOpenFile:i}=e,[c,p]=(0,s.useState)("preview"),[f,b]=(0,s.useState)("safe"),g=(0,s.useRef)(new Set),x=(0,l.c)("worktree"),v=(0,n.SC)(),w=(0,s.useCallback)(async e=>{if("interactive"===e&&!g.current.has(t)){if(!await v({description:x("htmlPreview.interactiveModeConfirm")}))return;g.current.add(t)}b(e)},[t,v,x]),y=(0,s.useCallback)(e=>{if(!e||"string"!=typeof e)return;let r=(0,o.d3)(e);if(r)switch((0,o.dj)(r)){case"external":window.open(r,"_blank","noopener,noreferrer");break;case"relative":{let e=(0,o.WU)(t,r);e&&i&&i(e)}}},[t,i]);(0,s.useEffect)(()=>{if("interactive"!==f)return;let e=e=>{if("null"!==e.origin)return;let t=e.data;t&&"object"==typeof t&&"commandmate:link-click"===t.type&&"string"==typeof t.href&&y(t.href)};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[f,y]);let k=(0,s.useMemo)(()=>"interactive"===f?r.includes("</body>")?r.replace("</body>","".concat(d,"</body>")):r+d:r,[r,f]);return(0,a.jsxs)("div",{className:"h-full flex flex-col","data-testid":"html-preview",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between p-1 border-b border-border bg-muted flex-shrink-0",children:[(0,a.jsx)("div",{className:"flex gap-1",children:["source","preview","split"].map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>p(e),className:"px-3 py-1 text-xs font-medium rounded-md transition-colors ".concat(c===e?"bg-accent-100 dark:bg-accent-900/50 text-accent-700 dark:text-accent-300":"text-muted-foreground hover:bg-muted"),children:x(h[e])},e))}),(0,a.jsx)("div",{className:"flex gap-1",children:["safe","interactive"].map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>w(e),className:"px-3 py-1 text-xs font-medium rounded-md transition-colors ".concat(f===e?"safe"===e?"bg-success-subtle text-success-foreground":"bg-warning-subtle text-warning-foreground":"text-muted-foreground hover:bg-muted"),children:"safe"===e?x("htmlPreview.sandboxSafe"):x("htmlPreview.sandboxInteractive")},e))})]}),(0,a.jsxs)("div",{className:"flex-1 min-h-0 overflow-hidden",children:["source"===c&&(0,a.jsx)(u,{content:r}),"preview"===c&&(0,a.jsx)(m,{htmlContent:k,sandboxLevel:f,filePath:t}),"split"===c&&(0,a.jsxs)("div",{className:"flex h-full",children:[(0,a.jsx)("div",{className:"w-1/2 border-r border-border overflow-hidden",children:(0,a.jsx)(u,{content:r})}),(0,a.jsx)("div",{className:"w-1/2 overflow-hidden",children:(0,a.jsx)(m,{htmlContent:k,sandboxLevel:f,filePath:t})})]})]})]})}},9567:(e,t,r)=>{r.d(t,{j:()=>s});let a=["ariaDescribedBy","ariaLabel","ariaLabelledBy"],s={ancestors:{tbody:["table"],td:["table"],th:["table"],thead:["table"],tfoot:["table"],tr:["table"]},attributes:{a:[...a,"dataFootnoteBackref","dataFootnoteRef",["className","data-footnote-backref"],"href"],blockquote:["cite"],code:[["className",/^language-./]],del:["cite"],div:["itemScope","itemType"],dl:[...a],h2:[["className","sr-only"]],img:[...a,"longDesc","src"],input:[["disabled",!0],["type","checkbox"]],ins:["cite"],li:[["className","task-list-item"]],ol:[...a,["className","contains-task-list"]],q:["cite"],section:["dataFootnotes",["className","footnotes"]],source:["srcSet"],summary:[...a],table:[...a],ul:[...a,["className","contains-task-list"]],"*":["abbr","accept","acceptCharset","accessKey","action","align","alt","axis","border","cellPadding","cellSpacing","char","charOff","charSet","checked","clear","colSpan","color","cols","compact","coords","dateTime","dir","encType","frame","hSpace","headers","height","hrefLang","htmlFor","id","isMap","itemProp","label","lang","maxLength","media","method","multiple","name","noHref","noShade","noWrap","open","prompt","readOnly","rev","rowSpan","rows","rules","scope","selected","shape","size","span","start","summary","tabIndex","title","useMap","vAlign","value","width"]},clobber:["ariaDescribedBy","ariaLabelledBy","id","name"],clobberPrefix:"user-content-",protocols:{cite:["http","https"],href:["http","https","irc","ircs","mailto","xmpp"],longDesc:["http","https"],src:["http","https"]},required:{input:{disabled:!0,type:"checkbox"}},strip:["script"],tagNames:["a","b","blockquote","br","code","dd","del","details","div","dl","dt","em","h1","h2","h3","h4","h5","h6","hr","i","img","input","ins","kbd","li","ol","p","picture","pre","q","rp","rt","ruby","s","samp","section","source","span","strike","strong","sub","summary","sup","table","tbody","td","tfoot","th","thead","tr","tt","ul","var"]}},69352:(e,t,r)=>{r.d(t,{WU:()=>c,d3:()=>d,dj:()=>o,uO:()=>h});var a,s,l,n,i=r(9567);function o(e){return e.startsWith("#")?"anchor":e.startsWith("http://")||e.startsWith("https://")||e.startsWith("mailto:")||e.startsWith("tel:")?"external":"relative"}function c(e,t){if(!t)return null;let r=e.substring(0,e.lastIndexOf("/")+1);try{let e=new URL(r,"file:///"),a=new URL(t,e),s=decodeURIComponent(a.pathname);if(s.startsWith("/")){let e=s.substring(1);if(e.length>0)return e}}catch(e){}return null}function d(e){return!e||0===e.length||e.length>2048||/[\x00-\x1f\x7f]/.test(e)?null:e}let h={...i.j,attributes:{...i.j.attributes,a:[...(null!=(l=null==(a=i.j.attributes)?void 0:a.a)?l:[]).filter(e=>"href"!==e),["href",/^(?:#|mailto:|tel:|https?:\/\/|(?![a-zA-Z][a-zA-Z0-9+.-]*:))/]],img:[...(null!=(n=null==(s=i.j.attributes)?void 0:s.img)?n:[]).filter(e=>"src"!==e),["src",/^(?:https?:\/\/|(?![a-zA-Z][a-zA-Z0-9+.-]*:))/],"alt","width","height"]}}}}]);