commandmate 0.29.2 → 0.30.1

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 (653) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +271 -264
  3. package/.next/app-path-routes-manifest.json +35 -34
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +8 -8
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/update-check/route.js +1 -1
  13. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/assistant/conversation/route.js +1 -1
  15. package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
  16. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/assistant/current-output/route.js +1 -1
  18. package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
  19. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/assistant/messages/route.js +1 -1
  21. package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
  22. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/assistant/session/route.js +1 -1
  24. package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
  25. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/assistant/start/route.js +18 -18
  27. package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
  28. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/assistant/terminal/route.js +19 -19
  30. package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
  31. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/assistant/tools/route.js +1 -1
  33. package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
  34. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/capabilities/route.js +1 -1
  39. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/daily-summary/route.js +1 -1
  41. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  49. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  50. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  52. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  53. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  55. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  56. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/push/escalation/route.js +1 -1
  60. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/push/vapid/route.js +1 -1
  63. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  69. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  70. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/repositories/clone/route.js +1 -1
  72. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  73. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/repositories/restore/route.js +1 -1
  76. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  77. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/repositories/route.js +1 -1
  79. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  80. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/repositories/scan/route.js +1 -1
  82. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  83. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/repositories/sync/route.js +1 -1
  85. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  86. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  89. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  90. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/settings/default-surface-mode/route.js +1 -0
  92. package/.next/server/app/api/settings/default-surface-mode/route.js.nft.json +1 -0
  93. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -0
  94. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  110. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  113. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  116. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -0
  118. package/.next/server/app/api/worktrees/[id]/cli-reference/route.js.nft.json +1 -0
  119. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -0
  120. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  124. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  154. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  157. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  160. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  174. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  182. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  189. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  192. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  206. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  207. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  211. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  222. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/apply-default-agents/route.js +1 -1
  224. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/worktrees/route.js +1 -1
  226. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  227. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  229. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  230. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/more/page.js +2 -2
  232. package/.next/server/app/more/page.js.nft.json +1 -1
  233. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  234. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  235. package/.next/server/app/page_client-reference-manifest.js +1 -1
  236. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  238. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  239. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  240. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  241. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  242. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  243. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  244. package/.next/server/app/worktrees/[id]/page.js +11 -11
  245. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  246. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  247. package/.next/server/app/worktrees/[id]/terminal/page.js +3 -3
  248. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  249. package/.next/server/app-paths-manifest.json +35 -34
  250. package/.next/server/chunks/1058.js +1 -1
  251. package/.next/server/chunks/1068.js +1 -1
  252. package/.next/server/chunks/1191.js +1 -1
  253. package/.next/server/chunks/1341.js +1 -1
  254. package/.next/server/chunks/1886.js +3 -3
  255. package/.next/server/chunks/2119.js +1 -1
  256. package/.next/server/chunks/2445.js +1 -1
  257. package/.next/server/chunks/261.js +1 -0
  258. package/.next/server/chunks/2739.js +1 -0
  259. package/.next/server/chunks/2816.js +1 -1
  260. package/.next/server/chunks/3099.js +5 -0
  261. package/.next/server/chunks/3123.js +1 -0
  262. package/.next/server/chunks/3241.js +1 -1
  263. package/.next/server/chunks/3543.js +1 -1
  264. package/.next/server/chunks/3945.js +1 -1
  265. package/.next/server/chunks/4325.js +1 -0
  266. package/.next/server/chunks/4390.js +1 -1
  267. package/.next/server/chunks/4393.js +1 -1
  268. package/.next/server/chunks/4443.js +6 -0
  269. package/.next/server/chunks/5017.js +1 -1
  270. package/.next/server/chunks/5043.js +1 -0
  271. package/.next/server/chunks/5120.js +1 -0
  272. package/.next/server/chunks/552.js +25 -0
  273. package/.next/server/chunks/6130.js +1 -1
  274. package/.next/server/chunks/6337.js +1 -1
  275. package/.next/server/chunks/663.js +1 -1
  276. package/.next/server/chunks/6894.js +8 -0
  277. package/.next/server/chunks/7685.js +1 -1
  278. package/.next/server/chunks/7836.js +1 -0
  279. package/.next/server/chunks/8356.js +1 -1
  280. package/.next/server/chunks/880.js +1 -1
  281. package/.next/server/chunks/8807.js +1 -1
  282. package/.next/server/chunks/9123.js +2 -2
  283. package/.next/server/chunks/9130.js +3 -3
  284. package/.next/server/chunks/9627.js +48 -26
  285. package/.next/server/chunks/9696.js +3 -0
  286. package/.next/server/chunks/9798.js +1 -1
  287. package/.next/server/middleware-manifest.json +5 -5
  288. package/.next/server/pages/500.html +1 -1
  289. package/.next/server/server-reference-manifest.json +1 -1
  290. package/.next/server/src/middleware.js +1 -1
  291. package/.next/server/src/middleware.js.map +1 -1
  292. package/.next/static/chunks/{4882-388e94fe0a03c2ba.js → 3916-0e929d089282dc5d.js} +1 -1
  293. package/.next/static/chunks/{5229-b2a81bb8fb5c19e9.js → 5229-6c89475b61bd2c8b.js} +1 -1
  294. package/.next/static/chunks/6022-7a7d1760fc9814c7.js +1 -0
  295. package/.next/static/chunks/6381-dbf04a99647f6018.js +1 -0
  296. package/.next/static/chunks/app/api/agents/update/route-ee11f7b8a34cba8c.js +1 -0
  297. package/.next/static/chunks/app/api/agents/versions/route-ee11f7b8a34cba8c.js +1 -0
  298. package/.next/static/chunks/app/api/app/update/route-ee11f7b8a34cba8c.js +1 -0
  299. package/.next/static/chunks/app/api/app/update-check/route-ee11f7b8a34cba8c.js +1 -0
  300. package/.next/static/chunks/app/api/assistant/conversation/route-ee11f7b8a34cba8c.js +1 -0
  301. package/.next/static/chunks/app/api/assistant/current-output/route-ee11f7b8a34cba8c.js +1 -0
  302. package/.next/static/chunks/app/api/assistant/messages/route-ee11f7b8a34cba8c.js +1 -0
  303. package/.next/static/chunks/app/api/assistant/session/route-ee11f7b8a34cba8c.js +1 -0
  304. package/.next/static/chunks/app/api/assistant/start/route-ee11f7b8a34cba8c.js +1 -0
  305. package/.next/static/chunks/app/api/assistant/terminal/route-ee11f7b8a34cba8c.js +1 -0
  306. package/.next/static/chunks/app/api/assistant/tools/route-ee11f7b8a34cba8c.js +1 -0
  307. package/.next/static/chunks/app/api/auth/login/route-ee11f7b8a34cba8c.js +1 -0
  308. package/.next/static/chunks/app/api/auth/logout/route-ee11f7b8a34cba8c.js +1 -0
  309. package/.next/static/chunks/app/api/auth/status/route-ee11f7b8a34cba8c.js +1 -0
  310. package/.next/static/chunks/app/api/capabilities/route-ee11f7b8a34cba8c.js +1 -0
  311. package/.next/static/chunks/app/api/daily-summary/route-ee11f7b8a34cba8c.js +1 -0
  312. package/.next/static/chunks/app/api/daily-summary/status/route-ee11f7b8a34cba8c.js +1 -0
  313. package/.next/static/chunks/app/api/external-apps/[id]/health/route-ee11f7b8a34cba8c.js +1 -0
  314. package/.next/static/chunks/app/api/external-apps/[id]/route-ee11f7b8a34cba8c.js +1 -0
  315. package/.next/static/chunks/app/api/external-apps/route-ee11f7b8a34cba8c.js +1 -0
  316. package/.next/static/chunks/app/api/fs/browse/route-ee11f7b8a34cba8c.js +1 -0
  317. package/.next/static/chunks/app/api/fs/recent-paths/route-ee11f7b8a34cba8c.js +1 -0
  318. package/.next/static/chunks/app/api/hooks/agent-event/route-ee11f7b8a34cba8c.js +1 -0
  319. package/.next/static/chunks/app/api/hooks/claude-done/route-ee11f7b8a34cba8c.js +1 -0
  320. package/.next/static/chunks/app/api/hooks/permission-request/route-ee11f7b8a34cba8c.js +1 -0
  321. package/.next/static/chunks/app/api/metrics/vibe/route-ee11f7b8a34cba8c.js +1 -0
  322. package/.next/static/chunks/app/api/ollama/models/route-ee11f7b8a34cba8c.js +1 -0
  323. package/.next/static/chunks/app/api/push/escalation/route-ee11f7b8a34cba8c.js +1 -0
  324. package/.next/static/chunks/app/api/push/subscriptions/route-ee11f7b8a34cba8c.js +1 -0
  325. package/.next/static/chunks/app/api/push/vapid/route-ee11f7b8a34cba8c.js +1 -0
  326. package/.next/static/chunks/app/api/remote/pair/route-ee11f7b8a34cba8c.js +1 -0
  327. package/.next/static/chunks/app/api/repositories/[id]/route-ee11f7b8a34cba8c.js +1 -0
  328. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +1 -0
  329. package/.next/static/chunks/app/api/repositories/[id]/todos/route-ee11f7b8a34cba8c.js +1 -0
  330. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-ee11f7b8a34cba8c.js +1 -0
  331. package/.next/static/chunks/app/api/repositories/clone/route-ee11f7b8a34cba8c.js +1 -0
  332. package/.next/static/chunks/app/api/repositories/excluded/route-ee11f7b8a34cba8c.js +1 -0
  333. package/.next/static/chunks/app/api/repositories/restore/route-ee11f7b8a34cba8c.js +1 -0
  334. package/.next/static/chunks/app/api/repositories/route-ee11f7b8a34cba8c.js +1 -0
  335. package/.next/static/chunks/app/api/repositories/scan/route-ee11f7b8a34cba8c.js +1 -0
  336. package/.next/static/chunks/app/api/repositories/sync/route-ee11f7b8a34cba8c.js +1 -0
  337. package/.next/static/chunks/app/api/repositories/validate-path/route-ee11f7b8a34cba8c.js +1 -0
  338. package/.next/static/chunks/app/api/settings/default-agents/route-ee11f7b8a34cba8c.js +1 -0
  339. package/.next/static/chunks/app/api/settings/default-surface-mode/route-ee11f7b8a34cba8c.js +1 -0
  340. package/.next/static/chunks/app/api/sidebar/group-order/route-ee11f7b8a34cba8c.js +1 -0
  341. package/.next/static/chunks/app/api/skills/[id]/route-ee11f7b8a34cba8c.js +1 -0
  342. package/.next/static/chunks/app/api/skills/installations/route-ee11f7b8a34cba8c.js +1 -0
  343. package/.next/static/chunks/app/api/skills/operations/route-ee11f7b8a34cba8c.js +1 -0
  344. package/.next/static/chunks/app/api/skills/reindex/route-ee11f7b8a34cba8c.js +1 -0
  345. package/.next/static/chunks/app/api/skills/route-ee11f7b8a34cba8c.js +1 -0
  346. package/.next/static/chunks/app/api/slash-commands/route-ee11f7b8a34cba8c.js +1 -0
  347. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-ee11f7b8a34cba8c.js +1 -0
  348. package/.next/static/chunks/app/api/tasks/[taskId]/route-ee11f7b8a34cba8c.js +1 -0
  349. package/.next/static/chunks/app/api/templates/[id]/route-ee11f7b8a34cba8c.js +1 -0
  350. package/.next/static/chunks/app/api/templates/route-ee11f7b8a34cba8c.js +1 -0
  351. package/.next/static/chunks/app/api/todos/route-ee11f7b8a34cba8c.js +1 -0
  352. package/.next/static/chunks/app/api/verification/runs/[runId]/route-ee11f7b8a34cba8c.js +1 -0
  353. package/.next/static/chunks/app/api/verification/runs/route-ee11f7b8a34cba8c.js +1 -0
  354. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-ee11f7b8a34cba8c.js +1 -0
  355. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-ee11f7b8a34cba8c.js +1 -0
  356. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-ee11f7b8a34cba8c.js +1 -0
  357. package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-ee11f7b8a34cba8c.js +1 -0
  358. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-ee11f7b8a34cba8c.js +1 -0
  359. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-ee11f7b8a34cba8c.js +1 -0
  360. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-ee11f7b8a34cba8c.js +1 -0
  361. package/.next/static/chunks/app/api/worktrees/[id]/env/route-ee11f7b8a34cba8c.js +1 -0
  362. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-ee11f7b8a34cba8c.js +1 -0
  363. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-ee11f7b8a34cba8c.js +1 -0
  364. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-ee11f7b8a34cba8c.js +1 -0
  365. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-ee11f7b8a34cba8c.js +1 -0
  366. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-ee11f7b8a34cba8c.js +1 -0
  367. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-ee11f7b8a34cba8c.js +1 -0
  368. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-ee11f7b8a34cba8c.js +1 -0
  369. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-ee11f7b8a34cba8c.js +1 -0
  370. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-ee11f7b8a34cba8c.js +1 -0
  371. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-ee11f7b8a34cba8c.js +1 -0
  372. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-ee11f7b8a34cba8c.js +1 -0
  373. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-ee11f7b8a34cba8c.js +1 -0
  374. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-ee11f7b8a34cba8c.js +1 -0
  375. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-ee11f7b8a34cba8c.js +1 -0
  376. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-ee11f7b8a34cba8c.js +1 -0
  377. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-ee11f7b8a34cba8c.js +1 -0
  378. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-ee11f7b8a34cba8c.js +1 -0
  379. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-ee11f7b8a34cba8c.js +1 -0
  380. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-ee11f7b8a34cba8c.js +1 -0
  381. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-ee11f7b8a34cba8c.js +1 -0
  382. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-ee11f7b8a34cba8c.js +1 -0
  383. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-ee11f7b8a34cba8c.js +1 -0
  384. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-ee11f7b8a34cba8c.js +1 -0
  385. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-ee11f7b8a34cba8c.js +1 -0
  386. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-ee11f7b8a34cba8c.js +1 -0
  387. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-ee11f7b8a34cba8c.js +1 -0
  388. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-ee11f7b8a34cba8c.js +1 -0
  389. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-ee11f7b8a34cba8c.js +1 -0
  390. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-ee11f7b8a34cba8c.js +1 -0
  391. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-ee11f7b8a34cba8c.js +1 -0
  392. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-ee11f7b8a34cba8c.js +1 -0
  393. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-ee11f7b8a34cba8c.js +1 -0
  394. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-ee11f7b8a34cba8c.js +1 -0
  395. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-ee11f7b8a34cba8c.js +1 -0
  396. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-ee11f7b8a34cba8c.js +1 -0
  397. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-ee11f7b8a34cba8c.js +1 -0
  398. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-ee11f7b8a34cba8c.js +1 -0
  399. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-ee11f7b8a34cba8c.js +1 -0
  400. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-ee11f7b8a34cba8c.js +1 -0
  401. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-ee11f7b8a34cba8c.js +1 -0
  402. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-ee11f7b8a34cba8c.js +1 -0
  403. package/.next/static/chunks/app/api/worktrees/[id]/route-ee11f7b8a34cba8c.js +1 -0
  404. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-ee11f7b8a34cba8c.js +1 -0
  405. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-ee11f7b8a34cba8c.js +1 -0
  406. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-ee11f7b8a34cba8c.js +1 -0
  407. package/.next/static/chunks/app/api/worktrees/[id]/search/route-ee11f7b8a34cba8c.js +1 -0
  408. package/.next/static/chunks/app/api/worktrees/[id]/send/route-ee11f7b8a34cba8c.js +1 -0
  409. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-ee11f7b8a34cba8c.js +1 -0
  410. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-ee11f7b8a34cba8c.js +1 -0
  411. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-ee11f7b8a34cba8c.js +1 -0
  412. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-ee11f7b8a34cba8c.js +1 -0
  413. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-ee11f7b8a34cba8c.js +1 -0
  414. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-ee11f7b8a34cba8c.js +1 -0
  415. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-ee11f7b8a34cba8c.js +1 -0
  416. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-ee11f7b8a34cba8c.js +1 -0
  417. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-ee11f7b8a34cba8c.js +1 -0
  418. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-ee11f7b8a34cba8c.js +1 -0
  419. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-ee11f7b8a34cba8c.js +1 -0
  420. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-ee11f7b8a34cba8c.js +1 -0
  421. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-ee11f7b8a34cba8c.js +1 -0
  422. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-ee11f7b8a34cba8c.js +1 -0
  423. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-ee11f7b8a34cba8c.js +1 -0
  424. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-ee11f7b8a34cba8c.js +1 -0
  425. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-ee11f7b8a34cba8c.js +1 -0
  426. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-ee11f7b8a34cba8c.js +1 -0
  427. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-ee11f7b8a34cba8c.js +1 -0
  428. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-ee11f7b8a34cba8c.js +1 -0
  429. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-ee11f7b8a34cba8c.js +1 -0
  430. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-ee11f7b8a34cba8c.js +1 -0
  431. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-ee11f7b8a34cba8c.js +1 -0
  432. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-ee11f7b8a34cba8c.js +1 -0
  433. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-ee11f7b8a34cba8c.js +1 -0
  434. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-ee11f7b8a34cba8c.js +1 -0
  435. package/.next/static/chunks/app/api/worktrees/route-ee11f7b8a34cba8c.js +1 -0
  436. package/.next/static/chunks/app/manifest.webmanifest/route-ee11f7b8a34cba8c.js +1 -0
  437. package/.next/static/chunks/app/more/{page-75d3783da0d49a25.js → page-333bba1c8bbc9c11.js} +1 -1
  438. package/.next/static/chunks/app/proxy/[...path]/route-ee11f7b8a34cba8c.js +1 -0
  439. package/.next/static/chunks/app/worktrees/[id]/layout-ee11f7b8a34cba8c.js +1 -0
  440. package/.next/static/chunks/app/worktrees/[id]/page-aac399392ec8c273.js +1 -0
  441. package/.next/static/chunks/app/worktrees/[id]/terminal/page-2631bc5c4b0a9fb8.js +1 -0
  442. package/.next/static/css/23f9c40ecc458c77.css +1 -0
  443. package/.next/static/pcpB4K6KreMzu2qbhvuRY/_buildManifest.js +1 -0
  444. package/.next/trace +13 -13
  445. package/.next/types/app/api/settings/default-surface-mode/route.ts +347 -0
  446. package/.next/types/app/api/worktrees/[id]/{start-polling → cli-reference}/route.ts +3 -3
  447. package/.next/types/routes.d.ts +3 -2
  448. package/.next/types/validator.ts +18 -9
  449. package/dist/server/server.js +58 -0
  450. package/dist/server/src/lib/claude-output.js +1 -0
  451. package/dist/server/src/lib/db/app-settings-db.js +60 -0
  452. package/dist/server/src/lib/db/chat-db.js +120 -7
  453. package/dist/server/src/lib/detection/status-detector.js +3 -2
  454. package/dist/server/src/lib/env.js +122 -0
  455. package/dist/server/src/lib/git/worktrees.js +154 -0
  456. package/dist/server/src/lib/history/transcript-tail.js +80 -0
  457. package/dist/server/src/lib/history/user-turn-recorder.js +252 -0
  458. package/dist/server/src/lib/hooks/agent-event-service.js +40 -6
  459. package/dist/server/src/lib/hooks/permission-decision-service.js +85 -1
  460. package/dist/server/src/lib/hooks/sources/antigravity/history.js +607 -0
  461. package/dist/server/src/lib/hooks/sources/antigravity/source.js +7 -0
  462. package/dist/server/src/lib/hooks/sources/antigravity/transcript.js +407 -0
  463. package/dist/server/src/lib/hooks/sources/claude/history.js +797 -0
  464. package/dist/server/src/lib/hooks/sources/claude/source.js +4 -0
  465. package/dist/server/src/lib/hooks/sources/claude/transcript.js +518 -0
  466. package/dist/server/src/lib/hooks/sources/codex/history.js +663 -0
  467. package/dist/server/src/lib/hooks/sources/codex/source.js +4 -0
  468. package/dist/server/src/lib/hooks/sources/codex/transcript.js +448 -0
  469. package/dist/server/src/lib/hooks/sources/copilot/source.js +2 -0
  470. package/dist/server/src/lib/hooks/sources/gemini/source.js +2 -0
  471. package/dist/server/src/lib/hooks/sources/legacy-relay.js +3 -0
  472. package/dist/server/src/lib/hooks/sources/opencode/history.js +57 -0
  473. package/dist/server/src/lib/hooks/sources/opencode/source.js +4 -0
  474. package/dist/server/src/lib/hooks/sources/opencode/transcript.js +10 -28
  475. package/dist/server/src/lib/hooks/sources/turn-body.js +118 -0
  476. package/dist/server/src/lib/hooks/stop-history-capture.js +161 -0
  477. package/dist/server/src/lib/polling/prompt-dedup.js +2 -4
  478. package/dist/server/src/lib/polling/response-checker.js +87 -6
  479. package/dist/server/src/lib/polling/response-dedup.js +2 -4
  480. package/dist/server/src/lib/polling/response-poller-core.js +191 -29
  481. package/dist/server/src/lib/polling/structured-history-gate.js +272 -16
  482. package/dist/server/src/lib/push/push-sender.js +21 -1
  483. package/dist/server/src/lib/push/waiting-push-notifier.js +126 -8
  484. package/dist/server/src/lib/realtime/publisher-registry.js +171 -0
  485. package/dist/server/src/lib/realtime/terminal-broadcast.js +14 -1
  486. package/dist/server/src/lib/realtime/types.js +96 -1
  487. package/dist/server/src/lib/session/current-output-builder.js +365 -4
  488. package/dist/server/src/lib/session/send-user-message.js +90 -2
  489. package/dist/server/src/lib/tui-accumulator.js +2 -8
  490. package/dist/server/src/lib/ws-server.js +143 -6
  491. package/dist/server/src/types/agent-transcript.js +241 -5
  492. package/dist/server/src/types/ui-state.js +24 -1
  493. package/package.json +1 -1
  494. package/public/sw.js +15 -1
  495. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +0 -1
  496. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +0 -1
  497. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +0 -1
  498. package/.next/server/chunks/1714.js +0 -7
  499. package/.next/server/chunks/2198.js +0 -1
  500. package/.next/server/chunks/221.js +0 -25
  501. package/.next/server/chunks/2759.js +0 -8
  502. package/.next/server/chunks/3558.js +0 -1
  503. package/.next/server/chunks/6781.js +0 -1
  504. package/.next/server/chunks/9508.js +0 -1
  505. package/.next/static/0YoRrahue4Vchxg1z83IQ/_buildManifest.js +0 -1
  506. package/.next/static/chunks/1379-af7af9e08f47c979.js +0 -1
  507. package/.next/static/chunks/6381-9ba5198c0a6ff197.js +0 -1
  508. package/.next/static/chunks/app/api/agents/update/route-1c30fb8d4d6fa6ef.js +0 -1
  509. package/.next/static/chunks/app/api/agents/versions/route-1c30fb8d4d6fa6ef.js +0 -1
  510. package/.next/static/chunks/app/api/app/update/route-1c30fb8d4d6fa6ef.js +0 -1
  511. package/.next/static/chunks/app/api/app/update-check/route-1c30fb8d4d6fa6ef.js +0 -1
  512. package/.next/static/chunks/app/api/assistant/conversation/route-1c30fb8d4d6fa6ef.js +0 -1
  513. package/.next/static/chunks/app/api/assistant/current-output/route-1c30fb8d4d6fa6ef.js +0 -1
  514. package/.next/static/chunks/app/api/assistant/messages/route-1c30fb8d4d6fa6ef.js +0 -1
  515. package/.next/static/chunks/app/api/assistant/session/route-1c30fb8d4d6fa6ef.js +0 -1
  516. package/.next/static/chunks/app/api/assistant/start/route-1c30fb8d4d6fa6ef.js +0 -1
  517. package/.next/static/chunks/app/api/assistant/terminal/route-1c30fb8d4d6fa6ef.js +0 -1
  518. package/.next/static/chunks/app/api/assistant/tools/route-1c30fb8d4d6fa6ef.js +0 -1
  519. package/.next/static/chunks/app/api/auth/login/route-1c30fb8d4d6fa6ef.js +0 -1
  520. package/.next/static/chunks/app/api/auth/logout/route-1c30fb8d4d6fa6ef.js +0 -1
  521. package/.next/static/chunks/app/api/auth/status/route-1c30fb8d4d6fa6ef.js +0 -1
  522. package/.next/static/chunks/app/api/capabilities/route-1c30fb8d4d6fa6ef.js +0 -1
  523. package/.next/static/chunks/app/api/daily-summary/route-1c30fb8d4d6fa6ef.js +0 -1
  524. package/.next/static/chunks/app/api/daily-summary/status/route-1c30fb8d4d6fa6ef.js +0 -1
  525. package/.next/static/chunks/app/api/external-apps/[id]/health/route-1c30fb8d4d6fa6ef.js +0 -1
  526. package/.next/static/chunks/app/api/external-apps/[id]/route-1c30fb8d4d6fa6ef.js +0 -1
  527. package/.next/static/chunks/app/api/external-apps/route-1c30fb8d4d6fa6ef.js +0 -1
  528. package/.next/static/chunks/app/api/fs/browse/route-1c30fb8d4d6fa6ef.js +0 -1
  529. package/.next/static/chunks/app/api/fs/recent-paths/route-1c30fb8d4d6fa6ef.js +0 -1
  530. package/.next/static/chunks/app/api/hooks/agent-event/route-1c30fb8d4d6fa6ef.js +0 -1
  531. package/.next/static/chunks/app/api/hooks/claude-done/route-1c30fb8d4d6fa6ef.js +0 -1
  532. package/.next/static/chunks/app/api/hooks/permission-request/route-1c30fb8d4d6fa6ef.js +0 -1
  533. package/.next/static/chunks/app/api/metrics/vibe/route-1c30fb8d4d6fa6ef.js +0 -1
  534. package/.next/static/chunks/app/api/ollama/models/route-1c30fb8d4d6fa6ef.js +0 -1
  535. package/.next/static/chunks/app/api/push/escalation/route-1c30fb8d4d6fa6ef.js +0 -1
  536. package/.next/static/chunks/app/api/push/subscriptions/route-1c30fb8d4d6fa6ef.js +0 -1
  537. package/.next/static/chunks/app/api/push/vapid/route-1c30fb8d4d6fa6ef.js +0 -1
  538. package/.next/static/chunks/app/api/remote/pair/route-1c30fb8d4d6fa6ef.js +0 -1
  539. package/.next/static/chunks/app/api/repositories/[id]/route-1c30fb8d4d6fa6ef.js +0 -1
  540. package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-1c30fb8d4d6fa6ef.js +0 -1
  541. package/.next/static/chunks/app/api/repositories/[id]/todos/route-1c30fb8d4d6fa6ef.js +0 -1
  542. package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-1c30fb8d4d6fa6ef.js +0 -1
  543. package/.next/static/chunks/app/api/repositories/clone/route-1c30fb8d4d6fa6ef.js +0 -1
  544. package/.next/static/chunks/app/api/repositories/excluded/route-1c30fb8d4d6fa6ef.js +0 -1
  545. package/.next/static/chunks/app/api/repositories/restore/route-1c30fb8d4d6fa6ef.js +0 -1
  546. package/.next/static/chunks/app/api/repositories/route-1c30fb8d4d6fa6ef.js +0 -1
  547. package/.next/static/chunks/app/api/repositories/scan/route-1c30fb8d4d6fa6ef.js +0 -1
  548. package/.next/static/chunks/app/api/repositories/sync/route-1c30fb8d4d6fa6ef.js +0 -1
  549. package/.next/static/chunks/app/api/repositories/validate-path/route-1c30fb8d4d6fa6ef.js +0 -1
  550. package/.next/static/chunks/app/api/settings/default-agents/route-1c30fb8d4d6fa6ef.js +0 -1
  551. package/.next/static/chunks/app/api/sidebar/group-order/route-1c30fb8d4d6fa6ef.js +0 -1
  552. package/.next/static/chunks/app/api/skills/[id]/route-1c30fb8d4d6fa6ef.js +0 -1
  553. package/.next/static/chunks/app/api/skills/installations/route-1c30fb8d4d6fa6ef.js +0 -1
  554. package/.next/static/chunks/app/api/skills/operations/route-1c30fb8d4d6fa6ef.js +0 -1
  555. package/.next/static/chunks/app/api/skills/reindex/route-1c30fb8d4d6fa6ef.js +0 -1
  556. package/.next/static/chunks/app/api/skills/route-1c30fb8d4d6fa6ef.js +0 -1
  557. package/.next/static/chunks/app/api/slash-commands/route-1c30fb8d4d6fa6ef.js +0 -1
  558. package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-1c30fb8d4d6fa6ef.js +0 -1
  559. package/.next/static/chunks/app/api/tasks/[taskId]/route-1c30fb8d4d6fa6ef.js +0 -1
  560. package/.next/static/chunks/app/api/templates/[id]/route-1c30fb8d4d6fa6ef.js +0 -1
  561. package/.next/static/chunks/app/api/templates/route-1c30fb8d4d6fa6ef.js +0 -1
  562. package/.next/static/chunks/app/api/todos/route-1c30fb8d4d6fa6ef.js +0 -1
  563. package/.next/static/chunks/app/api/verification/runs/[runId]/route-1c30fb8d4d6fa6ef.js +0 -1
  564. package/.next/static/chunks/app/api/verification/runs/route-1c30fb8d4d6fa6ef.js +0 -1
  565. package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-1c30fb8d4d6fa6ef.js +0 -1
  566. package/.next/static/chunks/app/api/worktrees/[id]/capture/route-1c30fb8d4d6fa6ef.js +0 -1
  567. package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-1c30fb8d4d6fa6ef.js +0 -1
  568. package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-1c30fb8d4d6fa6ef.js +0 -1
  569. package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-1c30fb8d4d6fa6ef.js +0 -1
  570. package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-1c30fb8d4d6fa6ef.js +0 -1
  571. package/.next/static/chunks/app/api/worktrees/[id]/env/route-1c30fb8d4d6fa6ef.js +0 -1
  572. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-1c30fb8d4d6fa6ef.js +0 -1
  573. package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-1c30fb8d4d6fa6ef.js +0 -1
  574. package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-1c30fb8d4d6fa6ef.js +0 -1
  575. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-1c30fb8d4d6fa6ef.js +0 -1
  576. package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-1c30fb8d4d6fa6ef.js +0 -1
  577. package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-1c30fb8d4d6fa6ef.js +0 -1
  578. package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-1c30fb8d4d6fa6ef.js +0 -1
  579. package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-1c30fb8d4d6fa6ef.js +0 -1
  580. package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-1c30fb8d4d6fa6ef.js +0 -1
  581. package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-1c30fb8d4d6fa6ef.js +0 -1
  582. package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-1c30fb8d4d6fa6ef.js +0 -1
  583. package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-1c30fb8d4d6fa6ef.js +0 -1
  584. package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-1c30fb8d4d6fa6ef.js +0 -1
  585. package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-1c30fb8d4d6fa6ef.js +0 -1
  586. package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-1c30fb8d4d6fa6ef.js +0 -1
  587. package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-1c30fb8d4d6fa6ef.js +0 -1
  588. package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-1c30fb8d4d6fa6ef.js +0 -1
  589. package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-1c30fb8d4d6fa6ef.js +0 -1
  590. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-1c30fb8d4d6fa6ef.js +0 -1
  591. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-1c30fb8d4d6fa6ef.js +0 -1
  592. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-1c30fb8d4d6fa6ef.js +0 -1
  593. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-1c30fb8d4d6fa6ef.js +0 -1
  594. package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-1c30fb8d4d6fa6ef.js +0 -1
  595. package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-1c30fb8d4d6fa6ef.js +0 -1
  596. package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-1c30fb8d4d6fa6ef.js +0 -1
  597. package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-1c30fb8d4d6fa6ef.js +0 -1
  598. package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-1c30fb8d4d6fa6ef.js +0 -1
  599. package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-1c30fb8d4d6fa6ef.js +0 -1
  600. package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-1c30fb8d4d6fa6ef.js +0 -1
  601. package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-1c30fb8d4d6fa6ef.js +0 -1
  602. package/.next/static/chunks/app/api/worktrees/[id]/logs/route-1c30fb8d4d6fa6ef.js +0 -1
  603. package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-1c30fb8d4d6fa6ef.js +0 -1
  604. package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-1c30fb8d4d6fa6ef.js +0 -1
  605. package/.next/static/chunks/app/api/worktrees/[id]/memos/route-1c30fb8d4d6fa6ef.js +0 -1
  606. package/.next/static/chunks/app/api/worktrees/[id]/messages/route-1c30fb8d4d6fa6ef.js +0 -1
  607. package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-1c30fb8d4d6fa6ef.js +0 -1
  608. package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-1c30fb8d4d6fa6ef.js +0 -1
  609. package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-1c30fb8d4d6fa6ef.js +0 -1
  610. package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-1c30fb8d4d6fa6ef.js +0 -1
  611. package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-1c30fb8d4d6fa6ef.js +0 -1
  612. package/.next/static/chunks/app/api/worktrees/[id]/respond/route-1c30fb8d4d6fa6ef.js +0 -1
  613. package/.next/static/chunks/app/api/worktrees/[id]/route-1c30fb8d4d6fa6ef.js +0 -1
  614. package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-1c30fb8d4d6fa6ef.js +0 -1
  615. package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-1c30fb8d4d6fa6ef.js +0 -1
  616. package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-1c30fb8d4d6fa6ef.js +0 -1
  617. package/.next/static/chunks/app/api/worktrees/[id]/search/route-1c30fb8d4d6fa6ef.js +0 -1
  618. package/.next/static/chunks/app/api/worktrees/[id]/send/route-1c30fb8d4d6fa6ef.js +0 -1
  619. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-1c30fb8d4d6fa6ef.js +0 -1
  620. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-1c30fb8d4d6fa6ef.js +0 -1
  621. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-1c30fb8d4d6fa6ef.js +0 -1
  622. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-1c30fb8d4d6fa6ef.js +0 -1
  623. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-1c30fb8d4d6fa6ef.js +0 -1
  624. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-1c30fb8d4d6fa6ef.js +0 -1
  625. package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-1c30fb8d4d6fa6ef.js +0 -1
  626. package/.next/static/chunks/app/api/worktrees/[id]/skills/route-1c30fb8d4d6fa6ef.js +0 -1
  627. package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-1c30fb8d4d6fa6ef.js +0 -1
  628. package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-1c30fb8d4d6fa6ef.js +0 -1
  629. package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-1c30fb8d4d6fa6ef.js +0 -1
  630. package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-1c30fb8d4d6fa6ef.js +0 -1
  631. package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-1c30fb8d4d6fa6ef.js +0 -1
  632. package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-1c30fb8d4d6fa6ef.js +0 -1
  633. package/.next/static/chunks/app/api/worktrees/[id]/timers/route-1c30fb8d4d6fa6ef.js +0 -1
  634. package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-1c30fb8d4d6fa6ef.js +0 -1
  635. package/.next/static/chunks/app/api/worktrees/[id]/todos/route-1c30fb8d4d6fa6ef.js +0 -1
  636. package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-1c30fb8d4d6fa6ef.js +0 -1
  637. package/.next/static/chunks/app/api/worktrees/[id]/tree/route-1c30fb8d4d6fa6ef.js +0 -1
  638. package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-1c30fb8d4d6fa6ef.js +0 -1
  639. package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-1c30fb8d4d6fa6ef.js +0 -1
  640. package/.next/static/chunks/app/api/worktrees/[id]/verify/route-1c30fb8d4d6fa6ef.js +0 -1
  641. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-1c30fb8d4d6fa6ef.js +0 -1
  642. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-1c30fb8d4d6fa6ef.js +0 -1
  643. package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-1c30fb8d4d6fa6ef.js +0 -1
  644. package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-1c30fb8d4d6fa6ef.js +0 -1
  645. package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-1c30fb8d4d6fa6ef.js +0 -1
  646. package/.next/static/chunks/app/api/worktrees/route-1c30fb8d4d6fa6ef.js +0 -1
  647. package/.next/static/chunks/app/manifest.webmanifest/route-1c30fb8d4d6fa6ef.js +0 -1
  648. package/.next/static/chunks/app/proxy/[...path]/route-1c30fb8d4d6fa6ef.js +0 -1
  649. package/.next/static/chunks/app/worktrees/[id]/layout-1c30fb8d4d6fa6ef.js +0 -1
  650. package/.next/static/chunks/app/worktrees/[id]/page-ce6279d581d1df95.js +0 -1
  651. package/.next/static/chunks/app/worktrees/[id]/terminal/page-00ad5d9a62a71cab.js +0 -1
  652. package/.next/static/css/b326c8a734e1928e.css +0 -1
  653. /package/.next/static/{0YoRrahue4Vchxg1z83IQ → pcpB4K6KreMzu2qbhvuRY}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[11,66,74,219,263,341,532,543,640,836,865,890,960,1099,1123,1158,1164,1274,1295,1310,1317,1327,1337,1360,1363,1377,1421,1437,1490,1517,1523,1645,1652,1745,2017,2046,2117,2132,2149,2207,2260,2344,2360,2464,2548,2609,2786,2852,2893,3002,3175,3298,3350,3657,3685,3792,3797,3845,3965,3969,3990,4016,4035,4042,4199,4225,4240,4260,4275,4468,4476,4594,4614,4748,4767,4779,4907,4961,4985,5004,5286,5332,5522,5580,5657,5683,5832,6067,6140,6194,6248,6393,6451,6564,6635,6680,6734,6824,6839,7e3,7115,7238,7345,7435,7473,7509,7560,7670,7758,7760,7870,7895,7939,8043,8238,8418,8457,8460,8464,8472,8489,8509,8544,8658,8710,8914,8979,9015,9059,9114,9162,9245,9281,9282,9325,9416,9549,9602,9792,9932,9946,9968,9996],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[11,66,74,219,263,341,532,543,640,836,865,890,960,1099,1123,1158,1164,1274,1295,1310,1317,1327,1337,1360,1363,1377,1421,1437,1490,1517,1523,1645,1652,1745,2017,2046,2117,2132,2149,2207,2260,2344,2360,2464,2548,2609,2786,2852,2893,3002,3175,3298,3350,3657,3685,3792,3797,3845,3965,3969,3990,4016,4035,4042,4199,4225,4240,4260,4275,4468,4476,4594,4614,4748,4767,4779,4907,4961,4985,5004,5286,5332,5522,5580,5657,5683,5832,6067,6140,6194,6248,6393,6451,6564,6635,6680,6734,6824,6839,7e3,7115,7238,7345,7435,7473,7509,7560,7670,7758,7760,7870,7895,7939,8043,8238,8418,8457,8460,8464,8472,8489,8509,8544,8658,8710,8914,8979,9015,9059,9114,9162,9245,9281,9282,9325,9416,9549,9602,9792,9932,9946,9968,9996],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[11,66,74,219,263,341,532,543,640,836,865,890,960,1099,1123,1158,1164,1274,1295,1310,1317,1327,1337,1360,1363,1377,1421,1437,1490,1517,1523,1645,1652,1745,2017,2046,2117,2132,2149,2207,2260,2344,2360,2464,2548,2609,2786,2852,2893,3002,3175,3298,3350,3657,3685,3792,3797,3845,3965,3969,3990,4016,4035,4042,4199,4225,4240,4260,4275,4468,4476,4594,4614,4748,4767,4779,4907,4961,4985,5004,5286,5332,5522,5580,5657,5683,5832,6067,6140,6194,6248,6393,6451,6564,6635,6680,6734,6824,6839,7e3,7115,7238,7345,7435,7473,7509,7560,7670,7758,7760,7870,7895,7939,8043,8238,8418,8457,8460,8464,8472,8489,8509,8544,8658,8710,8914,8979,9015,9059,9114,9162,9245,9281,9282,9325,9416,9549,9602,9792,9932,9946,9968,9996],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[11,66,74,219,263,341,532,543,640,836,865,890,960,1099,1123,1158,1164,1274,1295,1310,1317,1327,1337,1360,1363,1377,1421,1437,1490,1517,1523,1645,1652,1745,2017,2046,2117,2132,2149,2207,2260,2344,2360,2464,2548,2609,2786,2852,2893,3002,3175,3298,3350,3657,3685,3792,3797,3845,3965,3969,3990,4016,4035,4042,4199,4225,4240,4260,4275,4468,4476,4594,4614,4748,4767,4779,4907,4961,4985,5004,5286,5332,5522,5580,5657,5683,5832,6067,6140,6194,6248,6393,6451,6564,6635,6680,6734,6824,6839,7e3,7115,7238,7345,7435,7473,7509,7560,7670,7758,7760,7870,7895,7939,8043,8238,8418,8457,8460,8464,8472,8489,8509,8544,8658,8710,8914,8979,9015,9059,9114,9162,9245,9281,9282,9325,9416,9549,9602,9792,9932,9946,9968,9996],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[11,66,74,219,263,341,532,543,640,836,865,890,960,1099,1123,1158,1164,1274,1295,1310,1317,1327,1337,1360,1363,1377,1421,1437,1490,1517,1523,1645,1652,1745,2017,2046,2117,2132,2149,2207,2260,2344,2360,2464,2548,2609,2786,2852,2893,3002,3175,3298,3350,3657,3685,3792,3797,3845,3965,3969,3990,4016,4035,4042,4199,4225,4240,4260,4275,4468,4476,4594,4614,4748,4767,4779,4907,4961,4985,5004,5286,5332,5522,5580,5657,5683,5832,6067,6140,6194,6248,6393,6451,6564,6635,6680,6734,6824,6839,7e3,7115,7238,7345,7435,7473,7509,7560,7670,7758,7760,7870,7895,7939,8043,8238,8418,8457,8460,8464,8472,8489,8509,8544,8658,8710,8914,8979,9015,9059,9114,9162,9245,9281,9282,9325,9416,9549,9602,9792,9932,9946,9968,9996],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[11,66,74,219,263,341,532,543,640,836,865,890,960,1099,1123,1158,1164,1274,1295,1310,1317,1327,1337,1360,1363,1377,1421,1437,1490,1517,1523,1645,1652,1745,2017,2046,2117,2132,2149,2207,2260,2344,2360,2464,2548,2609,2786,2852,2893,3002,3175,3298,3350,3657,3685,3792,3797,3845,3965,3969,3990,4016,4035,4042,4199,4225,4240,4260,4275,4468,4476,4594,4614,4748,4767,4779,4907,4961,4985,5004,5286,5332,5522,5580,5657,5683,5832,6067,6140,6194,6248,6393,6451,6564,6635,6680,6734,6824,6839,7e3,7115,7238,7345,7435,7473,7509,7560,7670,7758,7760,7870,7895,7939,8043,8238,8418,8457,8460,8464,8472,8489,8509,8544,8658,8710,8914,8979,9015,9059,9114,9162,9245,9281,9282,9325,9416,9549,9602,9792,9932,9946,9968,9996],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[11,66,74,219,263,341,532,543,640,836,865,890,960,1099,1123,1158,1164,1274,1295,1310,1317,1327,1337,1360,1363,1377,1421,1437,1490,1517,1523,1645,1652,1745,2017,2046,2117,2132,2149,2207,2260,2344,2360,2464,2548,2609,2786,2852,2893,3002,3175,3298,3350,3657,3685,3792,3797,3845,3965,3969,3990,4016,4035,4042,4199,4225,4240,4260,4275,4468,4476,4594,4614,4748,4767,4779,4907,4961,4985,5004,5286,5332,5522,5580,5657,5683,5832,6067,6140,6194,6248,6393,6451,6564,6635,6680,6734,6824,6839,7e3,7115,7238,7345,7435,7473,7509,7560,7670,7758,7760,7870,7895,7939,8043,8238,8418,8457,8460,8464,8472,8489,8509,8544,8658,8710,8914,8979,9015,9059,9114,9162,9245,9281,9282,9325,9416,9549,9602,9792,9932,9946,9968,9996],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3310],{6191:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(71847).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},8803:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(71847).A)("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]])},20562:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(71847).A)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]])},48314:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(71847).A)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]])},68695:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(71847).A)("circle-arrow-up",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]])},80867:(e,t,s)=>{Promise.resolve().then(s.bind(s,95775))},95775:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>T});var a=s(95155),r=s(52619),n=s.n(r),i=s(18955),l=s(15229),d=s(28019),o=s(12115);function c(e){var t;let{appId:s,pollInterval:r=3e4,showResponseTime:n=!1,compact:l=!1}=e,d=(0,i.c)("externalApps"),[c,m]=(0,o.useState)(null),[p,x]=(0,o.useState)(!0),u=(0,o.useCallback)(async()=>{try{let e=await fetch("/api/external-apps/".concat(s,"/health"));if(e.ok){let t=await e.json();m(t)}else m({id:s,healthy:!1,lastChecked:Date.now(),error:"Failed to check health"})}catch(e){m({id:s,healthy:!1,lastChecked:Date.now(),error:"Network error"})}finally{x(!1)}},[s]);if((0,o.useEffect)(()=>{u();let e=setInterval(u,r);return()=>clearInterval(e)},[u,r]),p)return(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"inline-block h-2.5 w-2.5 rounded-full bg-muted-foreground animate-pulse"}),!l&&(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:d("status.checking")})]});let h=null!=(t=null==c?void 0:c.healthy)&&t,f=h?"bg-success":"bg-muted-foreground",g=d(h?"status.running":"status.stopped");return l?(0,a.jsx)("span",{className:"inline-block h-2.5 w-2.5 rounded-full ".concat(f),title:g}):(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"inline-block h-2.5 w-2.5 rounded-full ".concat(f)}),(0,a.jsx)("span",{className:"text-xs ".concat(h?"text-success-foreground":"text-muted-foreground"),children:g}),n&&(null==c?void 0:c.responseTime)!==void 0&&(0,a.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",c.responseTime,"ms)"]})]})}function m(e){var t;let{app:s,onEdit:r,onDelete:n}=e,l=(0,i.c)("externalApps"),m=(0,i.c)("common"),[p,x]=(0,o.useState)(!1),[u,h]=(0,o.useState)(!1),f=async()=>{h(!0);try{await n(s.id)}finally{h(!1),x(!1)}},g="/proxy/".concat(s.pathPrefix,"/");return(0,a.jsxs)(d.Zp,{padding:"md",className:"relative",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between mb-3",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("h4",{className:"text-base font-semibold text-foreground truncate",children:s.displayName}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5 font-mono truncate",children:s.name})]}),(0,a.jsx)(d.Ex,{variant:{sveltekit:"warning",streamlit:"error",nextjs:"info",other:"gray"}[s.appType]||"gray",children:{sveltekit:"SvelteKit",streamlit:"Streamlit",nextjs:"Next.js",other:"Other"}[t=s.appType]||t})]}),(0,a.jsxs)("div",{className:"space-y-2 mb-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:l("card.status")}),(0,a.jsx)(c,{appId:s.id,pollInterval:3e4})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:l("card.port")}),(0,a.jsxs)("span",{className:"text-sm font-mono text-foreground",children:[":",s.targetPort]})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:l("card.path")}),(0,a.jsxs)("span",{className:"text-sm font-mono text-foreground truncate max-w-[150px]",children:["/proxy/",s.pathPrefix,"/"]})]}),s.websocketEnabled&&(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:l("card.websocket")}),(0,a.jsx)(d.Ex,{variant:"info",children:l("card.enabled")})]}),!s.enabled&&(0,a.jsx)("div",{className:"mt-2 py-1 px-2 bg-warning-subtle border border-warning-border rounded text-xs text-warning-foreground",children:l("card.disabledNotice")})]}),p?(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:l("card.deleteConfirm",{name:s.displayName})}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$n,{variant:"danger",size:"sm",onClick:f,disabled:u,loading:u,children:l("card.delete")}),(0,a.jsx)(d.$n,{variant:"ghost",size:"sm",onClick:()=>x(!1),disabled:u,children:m("cancel")})]})]}):(0,a.jsxs)("div",{className:"flex gap-2 flex-wrap",children:[(0,a.jsx)(d.$n,{variant:"primary",size:"sm",onClick:()=>window.open(g,"_blank"),disabled:!s.enabled,children:l("card.open")}),(0,a.jsx)(d.$n,{variant:"secondary",size:"sm",onClick:()=>r(s),children:l("card.settings")}),(0,a.jsx)(d.$n,{variant:"ghost",size:"sm",onClick:()=>x(!0),className:"text-danger-foreground hover:bg-danger-subtle",children:l("card.delete")})]})]})}var p=s(87531);let x={MIN:1024,MAX:65535},u=/^[a-zA-Z0-9-]+$/,h={sveltekit:"SvelteKit",streamlit:"Streamlit",nextjs:"Next.js",other:"Other"},f=["sveltekit","streamlit","nextjs","other"].map(e=>({value:e,label:h[e]}));function g(e){let{isOpen:t,onClose:s,editApp:r,onSave:n}=e,l=(0,i.c)("externalApps"),c=(0,i.c)("common"),m=!!r,[h,g]=(0,o.useState)(""),[b,j]=(0,o.useState)(""),[N,y]=(0,o.useState)(""),[v,k]=(0,o.useState)(""),[w,C]=(0,o.useState)(""),[S,P]=(0,o.useState)(!1),[A,T]=(0,o.useState)(""),[E,M]=(0,o.useState)(!0),[O,I]=(0,o.useState)({}),[F,$]=(0,o.useState)(!1),[D,z]=(0,o.useState)(null);(0,o.useEffect)(()=>{t&&(r?(g(r.displayName),j(r.name),y(r.pathPrefix),k(r.targetPort),C(r.appType),P(r.websocketEnabled),T(r.description||""),M(r.enabled)):(g(""),j(""),y(""),k(""),C(""),P(!1),T(""),M(!0)),I({}),z(null))},[t,r]);let Z=async e=>{e.preventDefault(),z(null);let t=function(e,t){var s,a,r,n;let i={};return((null==(s=e.displayName)?void 0:s.trim())||(i.displayName="Display name is required"),!t&&((null==(a=e.name)?void 0:a.trim())?u.test(e.name)||(i.name="Only alphanumeric characters and hyphens are allowed"):i.name="Identifier name is required",(null==(r=e.pathPrefix)?void 0:r.trim())?u.test(e.pathPrefix)||(i.pathPrefix="Only alphanumeric characters and hyphens are allowed"):i.pathPrefix="Path prefix is required"),e.targetPort)?"number"!=typeof e.targetPort||Number.isInteger(n=e.targetPort)&&n>=x.MIN&&n<=x.MAX||(i.targetPort="Port must be between ".concat(x.MIN," and ").concat(x.MAX)):i.targetPort="Port number is required",t||e.appType||(i.appType="App type is required"),i}({displayName:h,name:b,pathPrefix:N,targetPort:v,appType:w},m);if(Object.keys(t).length>0)return void I(t);I({}),$(!0);try{if(m&&r){let e=await fetch("/api/external-apps/".concat(r.id),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayName:h,description:A||void 0,targetPort:v||void 0,websocketEnabled:S,enabled:E})});if(!e.ok){let t=await e.json();throw Error(t.error||l("form.updateFailed"))}}else{let e=await fetch("/api/external-apps",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayName:h,name:b,pathPrefix:N,targetPort:v,appType:w,websocketEnabled:S,description:A||void 0})});if(!e.ok){let t=await e.json();throw Error(t.error||l("form.createFailed"))}}n(),s()}catch(e){z(e instanceof Error?e.message:l("form.genericError"))}finally{$(!1)}};return(0,a.jsx)(d.Jh,{isOpen:t,onClose:s,title:m?l("form.editTitle"):l("form.addTitle"),size:"md",children:(0,a.jsxs)("form",{onSubmit:Z,className:"space-y-4",children:[(0,a.jsx)("div",{className:"rounded-md bg-warning-subtle p-3 mb-4 border border-warning-border",children:(0,a.jsx)("p",{className:"text-sm text-warning-foreground",children:l("form.securityWarning")})}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{htmlFor:"displayName",className:"block text-sm font-medium text-foreground mb-1",children:[l("form.displayName")," ",(0,a.jsx)("span",{className:"text-danger",children:"*"})]}),(0,a.jsx)(d.pd,{id:"displayName",type:"text",value:h,onChange:e=>g(e.target.value),className:O.displayName?"border-danger":"",placeholder:l("form.displayNamePlaceholder"),disabled:F}),O.displayName&&(0,a.jsx)("p",{className:"mt-1 text-xs text-danger",children:O.displayName})]}),!m&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{htmlFor:"name",className:"block text-sm font-medium text-foreground mb-1",children:[l("form.identifierName")," ",(0,a.jsx)("span",{className:"text-danger",children:"*"})]}),(0,a.jsx)(d.pd,{id:"name",type:"text",value:b,onChange:e=>j(e.target.value),className:"font-mono ".concat(O.name?"border-danger":""),placeholder:l("form.identifierNamePlaceholder"),disabled:F}),(0,a.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:l("form.identifierNameHelp")}),O.name&&(0,a.jsx)("p",{className:"mt-1 text-xs text-danger",children:O.name})]}),!m&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{htmlFor:"pathPrefix",className:"block text-sm font-medium text-foreground mb-1",children:[l("form.pathPrefix")," ",(0,a.jsx)("span",{className:"text-danger",children:"*"})]}),(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)("span",{className:"text-sm text-muted-foreground mr-1",children:"/proxy/"}),(0,a.jsx)(d.pd,{id:"pathPrefix",type:"text",value:N,onChange:e=>y(e.target.value),className:"w-auto flex-1 font-mono ".concat(O.pathPrefix?"border-danger":""),placeholder:l("form.pathPrefixPlaceholder"),disabled:F}),(0,a.jsx)("span",{className:"text-sm text-muted-foreground ml-1",children:"/"})]}),(0,a.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:l("form.pathPrefixHelp")}),O.pathPrefix&&(0,a.jsx)("p",{className:"mt-1 text-xs text-danger",children:O.pathPrefix})]}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{htmlFor:"targetPort",className:"block text-sm font-medium text-foreground mb-1",children:[l("form.portNumber")," ",(0,a.jsx)("span",{className:"text-danger",children:"*"})]}),(0,a.jsx)(d.pd,{id:"targetPort",type:"number",value:v,onChange:e=>k(e.target.value?parseInt(e.target.value,10):""),className:"font-mono ".concat(O.targetPort?"border-danger":""),placeholder:l("form.portNumberPlaceholder"),min:x.MIN,max:x.MAX,disabled:F}),(0,a.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:l("form.portNumberHelp",{min:x.MIN,max:x.MAX})}),O.targetPort&&(0,a.jsx)("p",{className:"mt-1 text-xs text-danger",children:O.targetPort})]}),!m&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{htmlFor:"appType",className:"block text-sm font-medium text-foreground mb-1",children:[l("form.appType")," ",(0,a.jsx)("span",{className:"text-danger",children:"*"})]}),(0,a.jsxs)("select",{id:"appType",value:w,onChange:e=>C(e.target.value),className:(0,p.cn)((0,d.j1)(),O.appType&&"border-danger"),disabled:F,children:[(0,a.jsx)("option",{value:"",children:l("form.appTypePlaceholder")}),f.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))]}),O.appType&&(0,a.jsx)("p",{className:"mt-1 text-xs text-danger",children:O.appType})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{htmlFor:"description",className:"block text-sm font-medium text-foreground mb-1",children:l("form.description")}),(0,a.jsx)(d.k_,{id:"description",value:A,onChange:e=>T(e.target.value),placeholder:l("form.descriptionPlaceholder"),rows:2,disabled:F})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(d.dO,{id:"websocketEnabled",checked:S,onCheckedChange:P,disabled:F}),(0,a.jsx)("label",{htmlFor:"websocketEnabled",className:"text-sm text-foreground",children:l("form.websocketLabel")})]}),m&&(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(d.dO,{id:"enabled",checked:E,onCheckedChange:M,disabled:F}),(0,a.jsx)("label",{htmlFor:"enabled",className:"text-sm text-foreground",children:l("form.enabledLabel")})]}),D&&(0,a.jsx)("div",{className:"p-3 bg-danger-subtle border border-danger-border rounded text-sm text-danger-foreground",children:D}),(0,a.jsxs)("div",{className:"flex justify-end gap-2 pt-4 border-t border-border",children:[(0,a.jsx)(d.$n,{type:"button",variant:"ghost",onClick:s,disabled:F,children:c("cancel")}),(0,a.jsx)(d.$n,{type:"submit",variant:"primary",loading:F,children:m?l("form.save"):l("form.add")})]})]})})}function b(){let e=(0,i.c)("externalApps"),t=(0,i.c)("common"),[s,r]=(0,o.useState)([]),[n,l]=(0,o.useState)(!0),[c,p]=(0,o.useState)(null),[x,u]=(0,o.useState)(!1),[h,f]=(0,o.useState)(null),b=(0,o.useCallback)(async()=>{try{p(null);let e=await fetch("/api/external-apps");if(!e.ok)throw Error("Failed to fetch external apps");let t=await e.json();r(t.apps||[])}catch(e){p(e instanceof Error?e.message:"An error occurred")}finally{l(!1)}},[]);(0,o.useEffect)(()=>{b();let e=setInterval(b,6e4);return()=>clearInterval(e)},[b]);let j=(0,o.useCallback)(e=>{f(e),u(!0)},[]),N=(0,o.useCallback)(()=>{f(null),u(!0)},[]),y=(0,o.useCallback)(async e=>{try{let t=await fetch("/api/external-apps/".concat(e),{method:"DELETE"});if(!t.ok){let e=await t.json();throw Error(e.error||"Failed to delete app")}b()}catch(e){console.error("Failed to delete app:",e)}},[b]),v=(0,o.useCallback)(()=>{b()},[b]),k=(0,o.useCallback)(()=>{u(!1),f(null)},[]);return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"flex items-center justify-end",children:(0,a.jsx)(d.$n,{variant:"primary",size:"sm",onClick:N,children:e("manager.addApp")})}),n?(0,a.jsx)(d.Zp,{padding:"lg",children:(0,a.jsxs)("div",{className:"flex items-center justify-center py-8",children:[(0,a.jsx)(d.y$,{size:"xl",variant:"accent"}),(0,a.jsx)("span",{className:"ml-3 text-muted-foreground",children:e("manager.loading")})]})}):c?(0,a.jsx)(d.Zp,{padding:"lg",children:(0,a.jsxs)("div",{className:"text-center py-8",children:[(0,a.jsx)("p",{className:"text-danger-foreground mb-4",children:e("manager.loadError")}),(0,a.jsx)(d.$n,{variant:"secondary",size:"sm",onClick:b,children:t("retry")})]})}):0===s.length?(0,a.jsx)(d.Zp,{padding:"lg",children:(0,a.jsxs)("div",{className:"text-center py-8",children:[(0,a.jsx)("p",{className:"text-muted-foreground mb-4",children:e("manager.empty")}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground mb-4",children:e("manager.emptyHelp")}),(0,a.jsx)(d.$n,{variant:"primary",size:"sm",onClick:N,children:e("manager.addFirst")})]})}):(0,a.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:s.map(e=>(0,a.jsx)(m,{app:e,onEdit:j,onDelete:y},e.id))}),(0,a.jsx)(g,{isOpen:x,onClose:k,editApp:h,onSave:v})]})}let j=(0,s(71847).A)("bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]);var N=s(94442),y=s(81978);function v(){return"undefined"!=typeof navigator&&"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window}let k={enabled:!0,thresholdMinutes:10},w=[5,10,30,60];function C(){let e=(0,i.c)("notifications"),{showToast:t}=(0,N.dj)(),[s,r]=(0,o.useState)(!0),[n,l]=(0,o.useState)(!1),[c,m]=(0,o.useState)(!0),[p,x]=(0,o.useState)(!1),[u,h]=(0,o.useState)(null),[f,g]=(0,o.useState)(null),[b,y]=(0,o.useState)(!1),[k,w]=(0,o.useState)(null),[C,A]=(0,o.useState)({prompt:!0,completion:!1}),[T,E]=(0,o.useState)(!1),[M,O]=(0,o.useState)(null),[I,F]=(0,o.useState)(null),$=null!==k&&!1!==I;(0,o.useEffect)(()=>{let e=!1;return(async()=>{let t=function(){var e,t;let s=v(),a="undefined"!=typeof navigator&&(!!/iPad|iPhone|iPod/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1)&&!(null!=(e=(t=window).matchMedia)&&e.call(t,"(display-mode: standalone)").matches||!0===navigator.standalone);return{supported:s&&!a,iosNeedsInstall:a}}();e||(m(v()),x(t.iosNeedsInstall),"undefined"!=typeof Notification&&"denied"===Notification.permission&&y(!0));try{let t=await fetch("/api/push/vapid"),s=await t.json();e||(h(s.configured),g(s.publicKey))}catch(t){e||h(!1)}if(v())try{let t=await navigator.serviceWorker.getRegistration(),a=t?await t.pushManager.getSubscription():null;if(a&&!e){w(a.endpoint);let t=await fetch("/api/push/subscriptions?endpoint=".concat(encodeURIComponent(a.endpoint))),r=await t.json();if(!e){var s;F(!0===r.subscribed),O(null!=(s=r.delivery)?s:null)}r.subscribed&&r.subscription&&!e&&(A(r.subscription.preferences),E(!0===r.subscription.defaultsNoticePending))}}catch(e){}e||r(!1)})(),()=>{e=!0}},[]);let D=(0,o.useCallback)(async()=>{if(f){l(!0);try{var s,a;let r=await Notification.requestPermission();if("granted"!==r){y("denied"===r),t(e("toast.error"),"error");return}if(!await navigator.serviceWorker.getRegistration())return void t(e("toast.error"),"error");let n=await navigator.serviceWorker.ready,i=await n.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(e){let t="=".repeat((4-e.length%4)%4),s=atob((e+t).replace(/-/g,"+").replace(/_/g,"/")),a=new Uint8Array(new ArrayBuffer(s.length));for(let e=0;e<s.length;e++)a[e]=s.charCodeAt(e);return a}(f)}),l=await fetch("/api/push/subscriptions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({subscription:i.toJSON(),deviceLabel:navigator.userAgent.slice(0,120)})});if(!l.ok)throw Error("subscribe request failed");let d=await l.json();w(i.endpoint),F(!0),O(null),(null==(s=d.subscription)?void 0:s.preferences)&&A(d.subscription.preferences),E((null==(a=d.subscription)?void 0:a.defaultsNoticePending)===!0),y(!1),t(e("toast.enabled"),"success")}catch(s){t(e("toast.error"),"error")}finally{l(!1)}}},[f,t,e]),z=(0,o.useCallback)(async()=>{l(!0);try{var s;let a=await navigator.serviceWorker.getRegistration(),r=a?await a.pushManager.getSubscription():null,n=null!=(s=null==r?void 0:r.endpoint)?s:k;r&&await r.unsubscribe(),n&&await fetch("/api/push/subscriptions",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:n})}),w(null),F(null),O(null),t(e("toast.disabled"),"info")}catch(s){t(e("toast.error"),"error")}finally{l(!1)}},[k,t,e]),Z=(0,o.useCallback)(async(s,a)=>{if(!k)return;let r={...C,[s]:a};A(r);try{if(!(await fetch("/api/push/subscriptions",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:k,preferences:r})})).ok)throw Error("update failed");t(e("toast.updated"),"success")}catch(s){A(C),t(e("toast.error"),"error")}},[k,C,t,e]),q=(0,o.useCallback)(async s=>{if(!k)return;let a=s?{...C,completion:!1}:C;E(!1),s&&A(a),l(!0);try{if(!(await fetch("/api/push/subscriptions",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:k,...s?{preferences:a}:{},acknowledgeDefaultsNotice:!0})})).ok)throw Error("acknowledge failed");t(e(s?"defaultsNotice.adopted":"defaultsNotice.kept"),"success")}catch(s){A(C),E(!0),t(e("toast.error"),"error")}finally{l(!1)}},[k,C,t,e]);return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(d.Zp,{children:(0,a.jsx)(P,{})}),(0,a.jsx)(d.Zp,{children:s?(0,a.jsx)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:(0,a.jsx)(d.y$,{size:"sm"})}):c?p?(0,a.jsx)("p",{className:"text-sm text-muted-foreground","data-testid":"notifications-ios-guidance",children:e("ios.guidance")}):!1===u?(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:e("notConfigured")}):(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:e("description")}),b&&(0,a.jsx)("p",{className:"text-sm text-danger-foreground","data-testid":"notifications-permission-denied",children:e("permission.denied")}),(()=>{if(null===M)return null;let t="removed"===M.state,s=M.statusCode,r=t?null===s?e("delivery.removedUnknownStatus"):e("delivery.removed",{status:String(s)}):null===s?e("delivery.failingUnknownStatus",{count:M.failureCount}):e("delivery.failing",{count:M.failureCount,status:String(s)});return(0,a.jsxs)("div",{className:t?"space-y-2 rounded-lg border border-danger-border bg-danger-subtle p-3":"space-y-2 rounded-lg border border-warning-border bg-warning-subtle p-3","data-testid":"notifications-delivery-health","data-delivery-state":M.state,children:[(0,a.jsx)("p",{className:t?"text-sm font-semibold text-danger-foreground":"text-sm font-semibold text-warning-foreground",children:e(t?"delivery.headingRemoved":"delivery.headingFailing")}),(0,a.jsx)("p",{className:"text-xs text-foreground",children:r}),403===s&&(0,a.jsx)("p",{className:"text-xs text-muted-foreground","data-testid":"notifications-delivery-apns-hint",children:e("delivery.apnsHint")}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:e("delivery.since",{timestamp:new Date(M.firstFailureAt).toLocaleString()})})]})})(),$?(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-foreground",children:e("enabledOnThisDevice")}),T&&(0,a.jsxs)("div",{className:"space-y-3 rounded-lg border border-info-border bg-info-subtle p-3","data-testid":"notifications-defaults-notice",children:[(0,a.jsx)("p",{className:"text-sm font-semibold text-info-foreground",children:e("defaultsNotice.heading")}),(0,a.jsx)("p",{className:"text-xs text-foreground",children:e("defaultsNotice.completionChanged")}),(0,a.jsx)("p",{className:"text-xs text-foreground",children:e("defaultsNotice.failuresAdded")}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,a.jsx)(d.$n,{variant:"primary",onClick:()=>q(!0),disabled:n,"data-testid":"notifications-defaults-notice-adopt",children:e("defaultsNotice.adopt")}),(0,a.jsx)(d.$n,{variant:"secondary",onClick:()=>q(!1),disabled:n,"data-testid":"notifications-defaults-notice-keep",children:e("defaultsNotice.keep")})]})]}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:e("types.heading")}),(0,a.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"block text-sm font-medium text-foreground",children:e("types.promptWaiting")}),(0,a.jsx)("span",{className:"block text-xs text-muted-foreground",children:e("types.promptWaitingDesc")})]}),(0,a.jsx)(d.dO,{checked:C.prompt,onCheckedChange:e=>Z("prompt",e),disabled:n,"aria-label":e("types.promptWaiting"),"data-testid":"notifications-toggle-prompt"})]}),(0,a.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"block text-sm font-medium text-foreground",children:e("types.completion")}),(0,a.jsx)("span",{className:"block text-xs text-muted-foreground",children:e("types.completionDesc")})]}),(0,a.jsx)(d.dO,{checked:C.completion,onCheckedChange:e=>Z("completion",e),disabled:n,"aria-label":e("types.completion"),"data-testid":"notifications-toggle-completion"})]})]}),(0,a.jsx)(d.$n,{variant:"secondary",onClick:z,disabled:n,"data-testid":"notifications-unsubscribe",children:e("unsubscribe")})]}):(0,a.jsxs)(d.$n,{variant:"primary",onClick:D,disabled:n||b||!f,"data-testid":"notifications-enable",children:[(0,a.jsx)(j,{className:"h-4 w-4"}),n?e("enabling"):e("enable")]})]}):(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:e("unsupported")})}),(0,a.jsx)(d.Zp,{children:(0,a.jsx)(S,{})})]})}function S(){let e=(0,i.c)("notifications"),{showToast:t}=(0,N.dj)(),[s,r]=(0,o.useState)(!0),[n,l]=(0,o.useState)(!1),[c,m]=(0,o.useState)(k),[p,x]=(0,o.useState)([...w]);(0,o.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await fetch("/api/push/escalation"),s=await t.json();!e&&(s.settings&&m(s.settings),Array.isArray(s.choices)&&s.choices.length>0&&x(s.choices))}catch(e){}finally{e||r(!1)}})(),()=>{e=!0}},[]);let u=(0,o.useCallback)(async s=>{m(s),l(!0);try{if(!(await fetch("/api/push/escalation",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:s})})).ok)throw Error("update failed");t(e("toast.updated"),"success")}catch(s){m(c),t(e("toast.error"),"error")}finally{l(!1)}},[c,t,e]);return(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:e("escalation.heading")}),(0,a.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"block text-sm font-medium text-foreground",children:e("escalation.toggle")}),(0,a.jsx)("span",{className:"block text-xs text-muted-foreground",children:e("escalation.toggleDesc")})]}),(0,a.jsx)(d.dO,{checked:c.enabled,onCheckedChange:e=>u({...c,enabled:e}),disabled:s||n,"aria-label":e("escalation.toggle"),"data-testid":"notifications-toggle-escalation"})]}),(0,a.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,a.jsx)("span",{className:"text-sm text-foreground",children:e("escalation.threshold")}),(0,a.jsx)("select",{className:"rounded-md border border-border bg-background px-2 py-1 text-sm text-foreground",value:String(c.thresholdMinutes),disabled:s||n||!c.enabled,"aria-label":e("escalation.threshold"),"data-testid":"notifications-escalation-threshold",onChange:e=>u({...c,thresholdMinutes:Number(e.target.value)}),children:p.map(t=>(0,a.jsx)("option",{value:String(t),children:e("escalation.minutes",{count:t})},t))})]})]})}function P(){let e=(0,i.c)("notifications"),{enabled:t,setEnabled:s}=(0,y.qG)(),{enabled:r,setEnabled:n}=(0,y.Ql)();return(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:e("inApp.heading")}),(0,a.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"block text-sm font-medium text-foreground",children:e("inApp.waitingToggle")}),(0,a.jsx)("span",{className:"block text-xs text-muted-foreground",children:e("inApp.waitingToggleDesc")})]}),(0,a.jsx)(d.dO,{checked:t,onCheckedChange:s,"aria-label":e("inApp.waitingToggle"),"data-testid":"notifications-toggle-inapp-waiting"})]}),(0,a.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"block text-sm font-medium text-foreground",children:e("inApp.soundToggle")}),(0,a.jsx)("span",{className:"block text-xs text-muted-foreground",children:e("inApp.soundToggleDesc")})]}),(0,a.jsx)(d.dO,{checked:r,onCheckedChange:n,"aria-label":e("inApp.soundToggle"),"data-testid":"notifications-toggle-inapp-sound"})]})]})}s(72604),s(95275),s(79832);var A=s(91379);function T(){let e=(0,i.c)("notifications"),t=(0,i.c)("common"),s=(0,i.c)("skills");return(0,a.jsx)(l.GV,{children:(0,a.jsxs)("div",{className:"container-custom py-8 overflow-auto h-full",children:[(0,a.jsxs)("div",{className:"mb-6",children:[(0,a.jsx)("h1",{className:"text-2xl font-bold text-foreground mb-2",children:"More"}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Settings, external apps, and more."})]}),(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-4 text-foreground",children:"Quick Links"}),(0,a.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[(0,a.jsx)(n(),{href:"/repositories",className:"block","data-testid":"more-link-repositories",children:(0,a.jsxs)(d.Zp,{hover:!0,className:"transition-colors hover:border-accent-300 dark:hover:border-accent-700",children:[(0,a.jsx)("div",{className:"text-sm font-medium text-foreground",children:"Repositories"}),(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:"Manage repositories and worktrees"})]})}),(0,a.jsx)(n(),{href:"/skills",className:"block","data-testid":"more-link-skills",children:(0,a.jsxs)(d.Zp,{hover:!0,className:"transition-colors hover:border-accent-300 dark:hover:border-accent-700",children:[(0,a.jsx)("div",{className:"text-sm font-medium text-foreground",children:t("nav.skills")}),(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:s("page.description")})]})}),(0,a.jsx)(n(),{href:"/skills/installed",className:"block","data-testid":"more-link-skills-installed",children:(0,a.jsxs)(d.Zp,{hover:!0,className:"transition-colors hover:border-accent-300 dark:hover:border-accent-700",children:[(0,a.jsx)("div",{className:"text-sm font-medium text-foreground",children:s("dashboard.title")}),(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:s("dashboard.description")})]})})]})]}),(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-4 text-foreground",children:t("settings.title")}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(A.h,{}),(0,a.jsx)(A.u,{})]})]}),(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-4 text-foreground",children:e("title")}),(0,a.jsx)(C,{})]}),(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-4 text-foreground",children:"External Apps"}),(0,a.jsx)(b,{})]}),(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-4 text-foreground",children:"About"}),(0,a.jsx)(d.Zp,{children:(0,a.jsx)("div",{className:"text-sm text-muted-foreground",children:"CommandMate - A local control plane for agent CLIs."})})]})]})})}}},e=>{e.O(0,[6809,4909,2770,790,4974,6402,8019,6381,5229,1379,4322,8441,1255,7358],()=>e(e.s=80867)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3310],{6191:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(71847).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},8803:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(71847).A)("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]])},20562:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(71847).A)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]])},48314:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(71847).A)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]])},68695:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(71847).A)("circle-arrow-up",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]])},80867:(e,t,s)=>{Promise.resolve().then(s.bind(s,95775))},95775:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>T});var a=s(95155),r=s(52619),n=s.n(r),i=s(18955),l=s(15229),d=s(28019),o=s(12115);function c(e){var t;let{appId:s,pollInterval:r=3e4,showResponseTime:n=!1,compact:l=!1}=e,d=(0,i.c)("externalApps"),[c,m]=(0,o.useState)(null),[p,x]=(0,o.useState)(!0),u=(0,o.useCallback)(async()=>{try{let e=await fetch("/api/external-apps/".concat(s,"/health"));if(e.ok){let t=await e.json();m(t)}else m({id:s,healthy:!1,lastChecked:Date.now(),error:"Failed to check health"})}catch(e){m({id:s,healthy:!1,lastChecked:Date.now(),error:"Network error"})}finally{x(!1)}},[s]);if((0,o.useEffect)(()=>{u();let e=setInterval(u,r);return()=>clearInterval(e)},[u,r]),p)return(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"inline-block h-2.5 w-2.5 rounded-full bg-muted-foreground animate-pulse"}),!l&&(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:d("status.checking")})]});let h=null!=(t=null==c?void 0:c.healthy)&&t,f=h?"bg-success":"bg-muted-foreground",g=d(h?"status.running":"status.stopped");return l?(0,a.jsx)("span",{className:"inline-block h-2.5 w-2.5 rounded-full ".concat(f),title:g}):(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"inline-block h-2.5 w-2.5 rounded-full ".concat(f)}),(0,a.jsx)("span",{className:"text-xs ".concat(h?"text-success-foreground":"text-muted-foreground"),children:g}),n&&(null==c?void 0:c.responseTime)!==void 0&&(0,a.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",c.responseTime,"ms)"]})]})}function m(e){var t;let{app:s,onEdit:r,onDelete:n}=e,l=(0,i.c)("externalApps"),m=(0,i.c)("common"),[p,x]=(0,o.useState)(!1),[u,h]=(0,o.useState)(!1),f=async()=>{h(!0);try{await n(s.id)}finally{h(!1),x(!1)}},g="/proxy/".concat(s.pathPrefix,"/");return(0,a.jsxs)(d.Zp,{padding:"md",className:"relative",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between mb-3",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("h4",{className:"text-base font-semibold text-foreground truncate",children:s.displayName}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5 font-mono truncate",children:s.name})]}),(0,a.jsx)(d.Ex,{variant:{sveltekit:"warning",streamlit:"error",nextjs:"info",other:"gray"}[s.appType]||"gray",children:{sveltekit:"SvelteKit",streamlit:"Streamlit",nextjs:"Next.js",other:"Other"}[t=s.appType]||t})]}),(0,a.jsxs)("div",{className:"space-y-2 mb-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:l("card.status")}),(0,a.jsx)(c,{appId:s.id,pollInterval:3e4})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:l("card.port")}),(0,a.jsxs)("span",{className:"text-sm font-mono text-foreground",children:[":",s.targetPort]})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:l("card.path")}),(0,a.jsxs)("span",{className:"text-sm font-mono text-foreground truncate max-w-[150px]",children:["/proxy/",s.pathPrefix,"/"]})]}),s.websocketEnabled&&(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:l("card.websocket")}),(0,a.jsx)(d.Ex,{variant:"info",children:l("card.enabled")})]}),!s.enabled&&(0,a.jsx)("div",{className:"mt-2 py-1 px-2 bg-warning-subtle border border-warning-border rounded text-xs text-warning-foreground",children:l("card.disabledNotice")})]}),p?(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:l("card.deleteConfirm",{name:s.displayName})}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$n,{variant:"danger",size:"sm",onClick:f,disabled:u,loading:u,children:l("card.delete")}),(0,a.jsx)(d.$n,{variant:"ghost",size:"sm",onClick:()=>x(!1),disabled:u,children:m("cancel")})]})]}):(0,a.jsxs)("div",{className:"flex gap-2 flex-wrap",children:[(0,a.jsx)(d.$n,{variant:"primary",size:"sm",onClick:()=>window.open(g,"_blank"),disabled:!s.enabled,children:l("card.open")}),(0,a.jsx)(d.$n,{variant:"secondary",size:"sm",onClick:()=>r(s),children:l("card.settings")}),(0,a.jsx)(d.$n,{variant:"ghost",size:"sm",onClick:()=>x(!0),className:"text-danger-foreground hover:bg-danger-subtle",children:l("card.delete")})]})]})}var p=s(87531);let x={MIN:1024,MAX:65535},u=/^[a-zA-Z0-9-]+$/,h={sveltekit:"SvelteKit",streamlit:"Streamlit",nextjs:"Next.js",other:"Other"},f=["sveltekit","streamlit","nextjs","other"].map(e=>({value:e,label:h[e]}));function g(e){let{isOpen:t,onClose:s,editApp:r,onSave:n}=e,l=(0,i.c)("externalApps"),c=(0,i.c)("common"),m=!!r,[h,g]=(0,o.useState)(""),[b,j]=(0,o.useState)(""),[N,y]=(0,o.useState)(""),[v,k]=(0,o.useState)(""),[w,C]=(0,o.useState)(""),[S,P]=(0,o.useState)(!1),[A,T]=(0,o.useState)(""),[E,M]=(0,o.useState)(!0),[O,I]=(0,o.useState)({}),[$,F]=(0,o.useState)(!1),[D,z]=(0,o.useState)(null);(0,o.useEffect)(()=>{t&&(r?(g(r.displayName),j(r.name),y(r.pathPrefix),k(r.targetPort),C(r.appType),P(r.websocketEnabled),T(r.description||""),M(r.enabled)):(g(""),j(""),y(""),k(""),C(""),P(!1),T(""),M(!0)),I({}),z(null))},[t,r]);let Z=async e=>{e.preventDefault(),z(null);let t=function(e,t){var s,a,r,n;let i={};return((null==(s=e.displayName)?void 0:s.trim())||(i.displayName="Display name is required"),!t&&((null==(a=e.name)?void 0:a.trim())?u.test(e.name)||(i.name="Only alphanumeric characters and hyphens are allowed"):i.name="Identifier name is required",(null==(r=e.pathPrefix)?void 0:r.trim())?u.test(e.pathPrefix)||(i.pathPrefix="Only alphanumeric characters and hyphens are allowed"):i.pathPrefix="Path prefix is required"),e.targetPort)?"number"!=typeof e.targetPort||Number.isInteger(n=e.targetPort)&&n>=x.MIN&&n<=x.MAX||(i.targetPort="Port must be between ".concat(x.MIN," and ").concat(x.MAX)):i.targetPort="Port number is required",t||e.appType||(i.appType="App type is required"),i}({displayName:h,name:b,pathPrefix:N,targetPort:v,appType:w},m);if(Object.keys(t).length>0)return void I(t);I({}),F(!0);try{if(m&&r){let e=await fetch("/api/external-apps/".concat(r.id),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayName:h,description:A||void 0,targetPort:v||void 0,websocketEnabled:S,enabled:E})});if(!e.ok){let t=await e.json();throw Error(t.error||l("form.updateFailed"))}}else{let e=await fetch("/api/external-apps",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayName:h,name:b,pathPrefix:N,targetPort:v,appType:w,websocketEnabled:S,description:A||void 0})});if(!e.ok){let t=await e.json();throw Error(t.error||l("form.createFailed"))}}n(),s()}catch(e){z(e instanceof Error?e.message:l("form.genericError"))}finally{F(!1)}};return(0,a.jsx)(d.Jh,{isOpen:t,onClose:s,title:m?l("form.editTitle"):l("form.addTitle"),size:"md",children:(0,a.jsxs)("form",{onSubmit:Z,className:"space-y-4",children:[(0,a.jsx)("div",{className:"rounded-md bg-warning-subtle p-3 mb-4 border border-warning-border",children:(0,a.jsx)("p",{className:"text-sm text-warning-foreground",children:l("form.securityWarning")})}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{htmlFor:"displayName",className:"block text-sm font-medium text-foreground mb-1",children:[l("form.displayName")," ",(0,a.jsx)("span",{className:"text-danger",children:"*"})]}),(0,a.jsx)(d.pd,{id:"displayName",type:"text",value:h,onChange:e=>g(e.target.value),className:O.displayName?"border-danger":"",placeholder:l("form.displayNamePlaceholder"),disabled:$}),O.displayName&&(0,a.jsx)("p",{className:"mt-1 text-xs text-danger",children:O.displayName})]}),!m&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{htmlFor:"name",className:"block text-sm font-medium text-foreground mb-1",children:[l("form.identifierName")," ",(0,a.jsx)("span",{className:"text-danger",children:"*"})]}),(0,a.jsx)(d.pd,{id:"name",type:"text",value:b,onChange:e=>j(e.target.value),className:"font-mono ".concat(O.name?"border-danger":""),placeholder:l("form.identifierNamePlaceholder"),disabled:$}),(0,a.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:l("form.identifierNameHelp")}),O.name&&(0,a.jsx)("p",{className:"mt-1 text-xs text-danger",children:O.name})]}),!m&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{htmlFor:"pathPrefix",className:"block text-sm font-medium text-foreground mb-1",children:[l("form.pathPrefix")," ",(0,a.jsx)("span",{className:"text-danger",children:"*"})]}),(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)("span",{className:"text-sm text-muted-foreground mr-1",children:"/proxy/"}),(0,a.jsx)(d.pd,{id:"pathPrefix",type:"text",value:N,onChange:e=>y(e.target.value),className:"w-auto flex-1 font-mono ".concat(O.pathPrefix?"border-danger":""),placeholder:l("form.pathPrefixPlaceholder"),disabled:$}),(0,a.jsx)("span",{className:"text-sm text-muted-foreground ml-1",children:"/"})]}),(0,a.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:l("form.pathPrefixHelp")}),O.pathPrefix&&(0,a.jsx)("p",{className:"mt-1 text-xs text-danger",children:O.pathPrefix})]}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{htmlFor:"targetPort",className:"block text-sm font-medium text-foreground mb-1",children:[l("form.portNumber")," ",(0,a.jsx)("span",{className:"text-danger",children:"*"})]}),(0,a.jsx)(d.pd,{id:"targetPort",type:"number",value:v,onChange:e=>k(e.target.value?parseInt(e.target.value,10):""),className:"font-mono ".concat(O.targetPort?"border-danger":""),placeholder:l("form.portNumberPlaceholder"),min:x.MIN,max:x.MAX,disabled:$}),(0,a.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:l("form.portNumberHelp",{min:x.MIN,max:x.MAX})}),O.targetPort&&(0,a.jsx)("p",{className:"mt-1 text-xs text-danger",children:O.targetPort})]}),!m&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{htmlFor:"appType",className:"block text-sm font-medium text-foreground mb-1",children:[l("form.appType")," ",(0,a.jsx)("span",{className:"text-danger",children:"*"})]}),(0,a.jsxs)("select",{id:"appType",value:w,onChange:e=>C(e.target.value),className:(0,p.cn)((0,d.j1)(),O.appType&&"border-danger"),disabled:$,children:[(0,a.jsx)("option",{value:"",children:l("form.appTypePlaceholder")}),f.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))]}),O.appType&&(0,a.jsx)("p",{className:"mt-1 text-xs text-danger",children:O.appType})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{htmlFor:"description",className:"block text-sm font-medium text-foreground mb-1",children:l("form.description")}),(0,a.jsx)(d.k_,{id:"description",value:A,onChange:e=>T(e.target.value),placeholder:l("form.descriptionPlaceholder"),rows:2,disabled:$})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(d.dO,{id:"websocketEnabled",checked:S,onCheckedChange:P,disabled:$}),(0,a.jsx)("label",{htmlFor:"websocketEnabled",className:"text-sm text-foreground",children:l("form.websocketLabel")})]}),m&&(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(d.dO,{id:"enabled",checked:E,onCheckedChange:M,disabled:$}),(0,a.jsx)("label",{htmlFor:"enabled",className:"text-sm text-foreground",children:l("form.enabledLabel")})]}),D&&(0,a.jsx)("div",{className:"p-3 bg-danger-subtle border border-danger-border rounded text-sm text-danger-foreground",children:D}),(0,a.jsxs)("div",{className:"flex justify-end gap-2 pt-4 border-t border-border",children:[(0,a.jsx)(d.$n,{type:"button",variant:"ghost",onClick:s,disabled:$,children:c("cancel")}),(0,a.jsx)(d.$n,{type:"submit",variant:"primary",loading:$,children:m?l("form.save"):l("form.add")})]})]})})}function b(){let e=(0,i.c)("externalApps"),t=(0,i.c)("common"),[s,r]=(0,o.useState)([]),[n,l]=(0,o.useState)(!0),[c,p]=(0,o.useState)(null),[x,u]=(0,o.useState)(!1),[h,f]=(0,o.useState)(null),b=(0,o.useCallback)(async()=>{try{p(null);let e=await fetch("/api/external-apps");if(!e.ok)throw Error("Failed to fetch external apps");let t=await e.json();r(t.apps||[])}catch(e){p(e instanceof Error?e.message:"An error occurred")}finally{l(!1)}},[]);(0,o.useEffect)(()=>{b();let e=setInterval(b,6e4);return()=>clearInterval(e)},[b]);let j=(0,o.useCallback)(e=>{f(e),u(!0)},[]),N=(0,o.useCallback)(()=>{f(null),u(!0)},[]),y=(0,o.useCallback)(async e=>{try{let t=await fetch("/api/external-apps/".concat(e),{method:"DELETE"});if(!t.ok){let e=await t.json();throw Error(e.error||"Failed to delete app")}b()}catch(e){console.error("Failed to delete app:",e)}},[b]),v=(0,o.useCallback)(()=>{b()},[b]),k=(0,o.useCallback)(()=>{u(!1),f(null)},[]);return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"flex items-center justify-end",children:(0,a.jsx)(d.$n,{variant:"primary",size:"sm",onClick:N,children:e("manager.addApp")})}),n?(0,a.jsx)(d.Zp,{padding:"lg",children:(0,a.jsxs)("div",{className:"flex items-center justify-center py-8",children:[(0,a.jsx)(d.y$,{size:"xl",variant:"accent"}),(0,a.jsx)("span",{className:"ml-3 text-muted-foreground",children:e("manager.loading")})]})}):c?(0,a.jsx)(d.Zp,{padding:"lg",children:(0,a.jsxs)("div",{className:"text-center py-8",children:[(0,a.jsx)("p",{className:"text-danger-foreground mb-4",children:e("manager.loadError")}),(0,a.jsx)(d.$n,{variant:"secondary",size:"sm",onClick:b,children:t("retry")})]})}):0===s.length?(0,a.jsx)(d.Zp,{padding:"lg",children:(0,a.jsxs)("div",{className:"text-center py-8",children:[(0,a.jsx)("p",{className:"text-muted-foreground mb-4",children:e("manager.empty")}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground mb-4",children:e("manager.emptyHelp")}),(0,a.jsx)(d.$n,{variant:"primary",size:"sm",onClick:N,children:e("manager.addFirst")})]})}):(0,a.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:s.map(e=>(0,a.jsx)(m,{app:e,onEdit:j,onDelete:y},e.id))}),(0,a.jsx)(g,{isOpen:x,onClose:k,editApp:h,onSave:v})]})}let j=(0,s(71847).A)("bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]);var N=s(94442),y=s(81978);function v(){return"undefined"!=typeof navigator&&"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window}let k={enabled:!0,thresholdMinutes:10},w=[5,10,30,60];function C(){let e=(0,i.c)("notifications"),{showToast:t}=(0,N.dj)(),[s,r]=(0,o.useState)(!0),[n,l]=(0,o.useState)(!1),[c,m]=(0,o.useState)(!0),[p,x]=(0,o.useState)(!1),[u,h]=(0,o.useState)(null),[f,g]=(0,o.useState)(null),[b,y]=(0,o.useState)(!1),[k,w]=(0,o.useState)(null),[C,A]=(0,o.useState)({prompt:!0,completion:!1}),[T,E]=(0,o.useState)(!1),[M,O]=(0,o.useState)(null),[I,$]=(0,o.useState)(null),F=null!==k&&!1!==I;(0,o.useEffect)(()=>{let e=!1;return(async()=>{let t=function(){var e,t;let s=v(),a="undefined"!=typeof navigator&&(!!/iPad|iPhone|iPod/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1)&&!(null!=(e=(t=window).matchMedia)&&e.call(t,"(display-mode: standalone)").matches||!0===navigator.standalone);return{supported:s&&!a,iosNeedsInstall:a}}();e||(m(v()),x(t.iosNeedsInstall),"undefined"!=typeof Notification&&"denied"===Notification.permission&&y(!0));try{let t=await fetch("/api/push/vapid"),s=await t.json();e||(h(s.configured),g(s.publicKey))}catch(t){e||h(!1)}if(v())try{let t=await navigator.serviceWorker.getRegistration(),a=t?await t.pushManager.getSubscription():null;if(a&&!e){w(a.endpoint);let t=await fetch("/api/push/subscriptions?endpoint=".concat(encodeURIComponent(a.endpoint))),r=await t.json();if(!e){var s;$(!0===r.subscribed),O(null!=(s=r.delivery)?s:null)}r.subscribed&&r.subscription&&!e&&(A(r.subscription.preferences),E(!0===r.subscription.defaultsNoticePending))}}catch(e){}e||r(!1)})(),()=>{e=!0}},[]);let D=(0,o.useCallback)(async()=>{if(f){l(!0);try{var s,a;let r=await Notification.requestPermission();if("granted"!==r){y("denied"===r),t(e("toast.error"),"error");return}if(!await navigator.serviceWorker.getRegistration())return void t(e("toast.error"),"error");let n=await navigator.serviceWorker.ready,i=await n.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(e){let t="=".repeat((4-e.length%4)%4),s=atob((e+t).replace(/-/g,"+").replace(/_/g,"/")),a=new Uint8Array(new ArrayBuffer(s.length));for(let e=0;e<s.length;e++)a[e]=s.charCodeAt(e);return a}(f)}),l=await fetch("/api/push/subscriptions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({subscription:i.toJSON(),deviceLabel:navigator.userAgent.slice(0,120)})});if(!l.ok)throw Error("subscribe request failed");let d=await l.json();w(i.endpoint),$(!0),O(null),(null==(s=d.subscription)?void 0:s.preferences)&&A(d.subscription.preferences),E((null==(a=d.subscription)?void 0:a.defaultsNoticePending)===!0),y(!1),t(e("toast.enabled"),"success")}catch(s){t(e("toast.error"),"error")}finally{l(!1)}}},[f,t,e]),z=(0,o.useCallback)(async()=>{l(!0);try{var s;let a=await navigator.serviceWorker.getRegistration(),r=a?await a.pushManager.getSubscription():null,n=null!=(s=null==r?void 0:r.endpoint)?s:k;r&&await r.unsubscribe(),n&&await fetch("/api/push/subscriptions",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:n})}),w(null),$(null),O(null),t(e("toast.disabled"),"info")}catch(s){t(e("toast.error"),"error")}finally{l(!1)}},[k,t,e]),Z=(0,o.useCallback)(async(s,a)=>{if(!k)return;let r={...C,[s]:a};A(r);try{if(!(await fetch("/api/push/subscriptions",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:k,preferences:r})})).ok)throw Error("update failed");t(e("toast.updated"),"success")}catch(s){A(C),t(e("toast.error"),"error")}},[k,C,t,e]),q=(0,o.useCallback)(async s=>{if(!k)return;let a=s?{...C,completion:!1}:C;E(!1),s&&A(a),l(!0);try{if(!(await fetch("/api/push/subscriptions",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:k,...s?{preferences:a}:{},acknowledgeDefaultsNotice:!0})})).ok)throw Error("acknowledge failed");t(e(s?"defaultsNotice.adopted":"defaultsNotice.kept"),"success")}catch(s){A(C),E(!0),t(e("toast.error"),"error")}finally{l(!1)}},[k,C,t,e]);return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(d.Zp,{children:(0,a.jsx)(P,{})}),(0,a.jsx)(d.Zp,{children:s?(0,a.jsx)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:(0,a.jsx)(d.y$,{size:"sm"})}):c?p?(0,a.jsx)("p",{className:"text-sm text-muted-foreground","data-testid":"notifications-ios-guidance",children:e("ios.guidance")}):!1===u?(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:e("notConfigured")}):(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:e("description")}),b&&(0,a.jsx)("p",{className:"text-sm text-danger-foreground","data-testid":"notifications-permission-denied",children:e("permission.denied")}),(()=>{if(null===M)return null;let t="removed"===M.state,s=M.statusCode,r=t?null===s?e("delivery.removedUnknownStatus"):e("delivery.removed",{status:String(s)}):null===s?e("delivery.failingUnknownStatus",{count:M.failureCount}):e("delivery.failing",{count:M.failureCount,status:String(s)});return(0,a.jsxs)("div",{className:t?"space-y-2 rounded-lg border border-danger-border bg-danger-subtle p-3":"space-y-2 rounded-lg border border-warning-border bg-warning-subtle p-3","data-testid":"notifications-delivery-health","data-delivery-state":M.state,children:[(0,a.jsx)("p",{className:t?"text-sm font-semibold text-danger-foreground":"text-sm font-semibold text-warning-foreground",children:e(t?"delivery.headingRemoved":"delivery.headingFailing")}),(0,a.jsx)("p",{className:"text-xs text-foreground",children:r}),403===s&&(0,a.jsx)("p",{className:"text-xs text-muted-foreground","data-testid":"notifications-delivery-apns-hint",children:e("delivery.apnsHint")}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:e("delivery.since",{timestamp:new Date(M.firstFailureAt).toLocaleString()})})]})})(),F?(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-foreground",children:e("enabledOnThisDevice")}),T&&(0,a.jsxs)("div",{className:"space-y-3 rounded-lg border border-info-border bg-info-subtle p-3","data-testid":"notifications-defaults-notice",children:[(0,a.jsx)("p",{className:"text-sm font-semibold text-info-foreground",children:e("defaultsNotice.heading")}),(0,a.jsx)("p",{className:"text-xs text-foreground",children:e("defaultsNotice.completionChanged")}),(0,a.jsx)("p",{className:"text-xs text-foreground",children:e("defaultsNotice.failuresAdded")}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,a.jsx)(d.$n,{variant:"primary",onClick:()=>q(!0),disabled:n,"data-testid":"notifications-defaults-notice-adopt",children:e("defaultsNotice.adopt")}),(0,a.jsx)(d.$n,{variant:"secondary",onClick:()=>q(!1),disabled:n,"data-testid":"notifications-defaults-notice-keep",children:e("defaultsNotice.keep")})]})]}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:e("types.heading")}),(0,a.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"block text-sm font-medium text-foreground",children:e("types.promptWaiting")}),(0,a.jsx)("span",{className:"block text-xs text-muted-foreground",children:e("types.promptWaitingDesc")})]}),(0,a.jsx)(d.dO,{checked:C.prompt,onCheckedChange:e=>Z("prompt",e),disabled:n,"aria-label":e("types.promptWaiting"),"data-testid":"notifications-toggle-prompt"})]}),(0,a.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"block text-sm font-medium text-foreground",children:e("types.completion")}),(0,a.jsx)("span",{className:"block text-xs text-muted-foreground",children:e("types.completionDesc")})]}),(0,a.jsx)(d.dO,{checked:C.completion,onCheckedChange:e=>Z("completion",e),disabled:n,"aria-label":e("types.completion"),"data-testid":"notifications-toggle-completion"})]})]}),(0,a.jsx)(d.$n,{variant:"secondary",onClick:z,disabled:n,"data-testid":"notifications-unsubscribe",children:e("unsubscribe")})]}):(0,a.jsxs)(d.$n,{variant:"primary",onClick:D,disabled:n||b||!f,"data-testid":"notifications-enable",children:[(0,a.jsx)(j,{className:"h-4 w-4"}),n?e("enabling"):e("enable")]})]}):(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:e("unsupported")})}),(0,a.jsx)(d.Zp,{children:(0,a.jsx)(S,{})})]})}function S(){let e=(0,i.c)("notifications"),{showToast:t}=(0,N.dj)(),[s,r]=(0,o.useState)(!0),[n,l]=(0,o.useState)(!1),[c,m]=(0,o.useState)(k),[p,x]=(0,o.useState)([...w]);(0,o.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await fetch("/api/push/escalation"),s=await t.json();!e&&(s.settings&&m(s.settings),Array.isArray(s.choices)&&s.choices.length>0&&x(s.choices))}catch(e){}finally{e||r(!1)}})(),()=>{e=!0}},[]);let u=(0,o.useCallback)(async s=>{m(s),l(!0);try{if(!(await fetch("/api/push/escalation",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:s})})).ok)throw Error("update failed");t(e("toast.updated"),"success")}catch(s){m(c),t(e("toast.error"),"error")}finally{l(!1)}},[c,t,e]);return(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:e("escalation.heading")}),(0,a.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"block text-sm font-medium text-foreground",children:e("escalation.toggle")}),(0,a.jsx)("span",{className:"block text-xs text-muted-foreground",children:e("escalation.toggleDesc")})]}),(0,a.jsx)(d.dO,{checked:c.enabled,onCheckedChange:e=>u({...c,enabled:e}),disabled:s||n,"aria-label":e("escalation.toggle"),"data-testid":"notifications-toggle-escalation"})]}),(0,a.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,a.jsx)("span",{className:"text-sm text-foreground",children:e("escalation.threshold")}),(0,a.jsx)("select",{className:"rounded-md border border-border bg-background px-2 py-1 text-sm text-foreground",value:String(c.thresholdMinutes),disabled:s||n||!c.enabled,"aria-label":e("escalation.threshold"),"data-testid":"notifications-escalation-threshold",onChange:e=>u({...c,thresholdMinutes:Number(e.target.value)}),children:p.map(t=>(0,a.jsx)("option",{value:String(t),children:e("escalation.minutes",{count:t})},t))})]})]})}function P(){let e=(0,i.c)("notifications"),{enabled:t,setEnabled:s}=(0,y.qG)(),{enabled:r,setEnabled:n}=(0,y.Ql)();return(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:e("inApp.heading")}),(0,a.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"block text-sm font-medium text-foreground",children:e("inApp.waitingToggle")}),(0,a.jsx)("span",{className:"block text-xs text-muted-foreground",children:e("inApp.waitingToggleDesc")})]}),(0,a.jsx)(d.dO,{checked:t,onCheckedChange:s,"aria-label":e("inApp.waitingToggle"),"data-testid":"notifications-toggle-inapp-waiting"})]}),(0,a.jsxs)("label",{className:"flex items-center justify-between gap-4",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"block text-sm font-medium text-foreground",children:e("inApp.soundToggle")}),(0,a.jsx)("span",{className:"block text-xs text-muted-foreground",children:e("inApp.soundToggleDesc")})]}),(0,a.jsx)(d.dO,{checked:r,onCheckedChange:n,"aria-label":e("inApp.soundToggle"),"data-testid":"notifications-toggle-inapp-sound"})]})]})}s(72604),s(95275),s(79832);var A=s(46022);function T(){let e=(0,i.c)("notifications"),t=(0,i.c)("common"),s=(0,i.c)("skills");return(0,a.jsx)(l.GV,{children:(0,a.jsxs)("div",{className:"container-custom py-8 overflow-auto h-full",children:[(0,a.jsxs)("div",{className:"mb-6",children:[(0,a.jsx)("h1",{className:"text-2xl font-bold text-foreground mb-2",children:"More"}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Settings, external apps, and more."})]}),(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-4 text-foreground",children:"Quick Links"}),(0,a.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[(0,a.jsx)(n(),{href:"/repositories",className:"block","data-testid":"more-link-repositories",children:(0,a.jsxs)(d.Zp,{hover:!0,className:"transition-colors hover:border-accent-300 dark:hover:border-accent-700",children:[(0,a.jsx)("div",{className:"text-sm font-medium text-foreground",children:"Repositories"}),(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:"Manage repositories and worktrees"})]})}),(0,a.jsx)(n(),{href:"/skills",className:"block","data-testid":"more-link-skills",children:(0,a.jsxs)(d.Zp,{hover:!0,className:"transition-colors hover:border-accent-300 dark:hover:border-accent-700",children:[(0,a.jsx)("div",{className:"text-sm font-medium text-foreground",children:t("nav.skills")}),(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:s("page.description")})]})}),(0,a.jsx)(n(),{href:"/skills/installed",className:"block","data-testid":"more-link-skills-installed",children:(0,a.jsxs)(d.Zp,{hover:!0,className:"transition-colors hover:border-accent-300 dark:hover:border-accent-700",children:[(0,a.jsx)("div",{className:"text-sm font-medium text-foreground",children:s("dashboard.title")}),(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:s("dashboard.description")})]})})]})]}),(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-4 text-foreground",children:t("settings.title")}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(A.he,{}),(0,a.jsx)(A.$8,{}),(0,a.jsx)(A.uN,{})]})]}),(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-4 text-foreground",children:e("title")}),(0,a.jsx)(C,{})]}),(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-4 text-foreground",children:"External Apps"}),(0,a.jsx)(b,{})]}),(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold mb-4 text-foreground",children:"About"}),(0,a.jsx)(d.Zp,{children:(0,a.jsx)("div",{className:"text-sm text-muted-foreground",children:"CommandMate - A local control plane for agent CLIs."})})]})]})})}}},e=>{e.O(0,[6809,4909,2770,790,4974,6402,8019,6381,5229,6022,4322,8441,1255,7358],()=>e(e.s=80867)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[11,66,74,219,263,341,532,543,640,836,865,890,960,1099,1123,1158,1164,1274,1295,1310,1317,1327,1337,1360,1363,1377,1421,1437,1490,1517,1523,1645,1652,1745,2017,2046,2117,2132,2149,2207,2260,2344,2360,2464,2548,2609,2786,2852,2893,3002,3175,3298,3350,3657,3685,3792,3797,3845,3965,3969,3990,4016,4035,4042,4199,4225,4240,4260,4275,4468,4476,4594,4614,4748,4767,4779,4907,4961,4985,5004,5286,5332,5522,5580,5657,5683,5832,6067,6140,6194,6248,6393,6451,6564,6635,6680,6734,6824,6839,7e3,7115,7238,7345,7435,7473,7509,7560,7670,7758,7760,7870,7895,7939,8043,8238,8418,8457,8460,8464,8472,8489,8509,8544,8658,8710,8914,8979,9015,9059,9114,9162,9245,9281,9282,9325,9416,9549,9602,9792,9932,9946,9968,9996],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[11,66,74,219,263,341,532,543,640,836,865,890,960,1099,1123,1158,1164,1274,1295,1310,1317,1327,1337,1360,1363,1377,1421,1437,1490,1517,1523,1645,1652,1745,2017,2046,2117,2132,2149,2207,2260,2344,2360,2464,2548,2609,2786,2852,2893,3002,3175,3298,3350,3657,3685,3792,3797,3845,3965,3969,3990,4016,4035,4042,4199,4225,4240,4260,4275,4468,4476,4594,4614,4748,4767,4779,4907,4961,4985,5004,5286,5332,5522,5580,5657,5683,5832,6067,6140,6194,6248,6393,6451,6564,6635,6680,6734,6824,6839,7e3,7115,7238,7345,7435,7473,7509,7560,7670,7758,7760,7870,7895,7939,8043,8238,8418,8457,8460,8464,8472,8489,8509,8544,8658,8710,8914,8979,9015,9059,9114,9162,9245,9281,9282,9325,9416,9549,9602,9792,9932,9946,9968,9996],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);