@aitne/dashboard 0.1.9 → 0.1.10

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 (599) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +1 -0
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/diagnostics/route-bundle-stats.json +269 -295
  5. package/.next/fallback-build-manifest.json +3 -3
  6. package/.next/prerender-manifest.json +24 -0
  7. package/.next/routes-manifest.json +6 -0
  8. package/.next/server/app/_global-error.html +1 -1
  9. package/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  16. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/_not-found.html +1 -1
  18. package/.next/server/app/_not-found.rsc +15 -15
  19. package/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  20. package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  21. package/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  22. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  23. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  24. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  25. package/.next/server/app/activity/page.js.nft.json +1 -1
  26. package/.next/server/app/activity/page_client-reference-manifest.js +1 -1
  27. package/.next/server/app/activity.html +1 -1
  28. package/.next/server/app/activity.rsc +28 -27
  29. package/.next/server/app/activity.segments/_full.segment.rsc +28 -27
  30. package/.next/server/app/activity.segments/_head.segment.rsc +4 -4
  31. package/.next/server/app/activity.segments/_index.segment.rsc +10 -10
  32. package/.next/server/app/activity.segments/_tree.segment.rsc +2 -2
  33. package/.next/server/app/activity.segments/activity/__PAGE__.segment.rsc +4 -4
  34. package/.next/server/app/activity.segments/activity.segment.rsc +4 -4
  35. package/.next/server/app/agents/[slug]/executions/page.js.nft.json +1 -1
  36. package/.next/server/app/agents/[slug]/executions/page_client-reference-manifest.js +1 -1
  37. package/.next/server/app/agents/[slug]/page.js.nft.json +1 -1
  38. package/.next/server/app/agents/[slug]/page_client-reference-manifest.js +1 -1
  39. package/.next/server/app/agents/page.js.nft.json +1 -1
  40. package/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  41. package/.next/server/app/agents.html +1 -1
  42. package/.next/server/app/agents.rsc +17 -17
  43. package/.next/server/app/agents.segments/_full.segment.rsc +17 -17
  44. package/.next/server/app/agents.segments/_head.segment.rsc +4 -4
  45. package/.next/server/app/agents.segments/_index.segment.rsc +10 -10
  46. package/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  47. package/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +4 -4
  48. package/.next/server/app/agents.segments/agents.segment.rsc +3 -3
  49. package/.next/server/app/analytics/page.js.nft.json +1 -1
  50. package/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
  51. package/.next/server/app/analytics.html +1 -1
  52. package/.next/server/app/analytics.rsc +23 -24
  53. package/.next/server/app/analytics.segments/_full.segment.rsc +23 -24
  54. package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
  55. package/.next/server/app/analytics.segments/_index.segment.rsc +10 -10
  56. package/.next/server/app/analytics.segments/_tree.segment.rsc +2 -2
  57. package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +4 -4
  58. package/.next/server/app/analytics.segments/analytics.segment.rsc +4 -4
  59. package/.next/server/app/browser-tasks/[id]/page.js.nft.json +1 -1
  60. package/.next/server/app/browser-tasks/[id]/page_client-reference-manifest.js +1 -1
  61. package/.next/server/app/browser-tasks/page.js.nft.json +1 -1
  62. package/.next/server/app/browser-tasks/page_client-reference-manifest.js +1 -1
  63. package/.next/server/app/browser-tasks.html +1 -1
  64. package/.next/server/app/browser-tasks.rsc +17 -17
  65. package/.next/server/app/browser-tasks.segments/_full.segment.rsc +17 -17
  66. package/.next/server/app/browser-tasks.segments/_head.segment.rsc +4 -4
  67. package/.next/server/app/browser-tasks.segments/_index.segment.rsc +10 -10
  68. package/.next/server/app/browser-tasks.segments/_tree.segment.rsc +2 -2
  69. package/.next/server/app/browser-tasks.segments/browser-tasks/__PAGE__.segment.rsc +4 -4
  70. package/.next/server/app/browser-tasks.segments/browser-tasks.segment.rsc +3 -3
  71. package/.next/server/app/chat/page.js.nft.json +1 -1
  72. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  73. package/.next/server/app/chat.html +1 -1
  74. package/.next/server/app/chat.rsc +17 -17
  75. package/.next/server/app/chat.segments/_full.segment.rsc +17 -17
  76. package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
  77. package/.next/server/app/chat.segments/_index.segment.rsc +10 -10
  78. package/.next/server/app/chat.segments/_tree.segment.rsc +2 -2
  79. package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +4 -4
  80. package/.next/server/app/chat.segments/chat.segment.rsc +3 -3
  81. package/.next/server/app/connections/calendar/page.js.nft.json +1 -1
  82. package/.next/server/app/connections/calendar/page_client-reference-manifest.js +1 -1
  83. package/.next/server/app/connections/calendar.html +1 -1
  84. package/.next/server/app/connections/calendar.rsc +18 -18
  85. package/.next/server/app/connections/calendar.segments/_full.segment.rsc +18 -18
  86. package/.next/server/app/connections/calendar.segments/_head.segment.rsc +4 -4
  87. package/.next/server/app/connections/calendar.segments/_index.segment.rsc +10 -10
  88. package/.next/server/app/connections/calendar.segments/_tree.segment.rsc +2 -2
  89. package/.next/server/app/connections/calendar.segments/connections/calendar/__PAGE__.segment.rsc +4 -4
  90. package/.next/server/app/connections/calendar.segments/connections/calendar.segment.rsc +3 -3
  91. package/.next/server/app/connections/calendar.segments/connections.segment.rsc +4 -4
  92. package/.next/server/app/connections/journal/page.js.nft.json +1 -1
  93. package/.next/server/app/connections/journal/page_client-reference-manifest.js +1 -1
  94. package/.next/server/app/connections/journal.html +1 -1
  95. package/.next/server/app/connections/journal.rsc +16 -16
  96. package/.next/server/app/connections/journal.segments/_full.segment.rsc +16 -16
  97. package/.next/server/app/connections/journal.segments/_head.segment.rsc +4 -4
  98. package/.next/server/app/connections/journal.segments/_index.segment.rsc +10 -10
  99. package/.next/server/app/connections/journal.segments/_tree.segment.rsc +2 -2
  100. package/.next/server/app/connections/journal.segments/connections/journal/__PAGE__.segment.rsc +2 -2
  101. package/.next/server/app/connections/journal.segments/connections/journal.segment.rsc +3 -3
  102. package/.next/server/app/connections/journal.segments/connections.segment.rsc +4 -4
  103. package/.next/server/app/connections/knowledge/page.js.nft.json +1 -1
  104. package/.next/server/app/connections/knowledge/page_client-reference-manifest.js +1 -1
  105. package/.next/server/app/connections/knowledge.html +1 -1
  106. package/.next/server/app/connections/knowledge.rsc +18 -18
  107. package/.next/server/app/connections/knowledge.segments/_full.segment.rsc +18 -18
  108. package/.next/server/app/connections/knowledge.segments/_head.segment.rsc +4 -4
  109. package/.next/server/app/connections/knowledge.segments/_index.segment.rsc +10 -10
  110. package/.next/server/app/connections/knowledge.segments/_tree.segment.rsc +2 -2
  111. package/.next/server/app/connections/knowledge.segments/connections/knowledge/__PAGE__.segment.rsc +4 -4
  112. package/.next/server/app/connections/knowledge.segments/connections/knowledge.segment.rsc +3 -3
  113. package/.next/server/app/connections/knowledge.segments/connections.segment.rsc +4 -4
  114. package/.next/server/app/connections/mail/page.js.nft.json +1 -1
  115. package/.next/server/app/connections/mail/page_client-reference-manifest.js +1 -1
  116. package/.next/server/app/connections/mail.html +1 -1
  117. package/.next/server/app/connections/mail.rsc +18 -18
  118. package/.next/server/app/connections/mail.segments/_full.segment.rsc +18 -18
  119. package/.next/server/app/connections/mail.segments/_head.segment.rsc +4 -4
  120. package/.next/server/app/connections/mail.segments/_index.segment.rsc +10 -10
  121. package/.next/server/app/connections/mail.segments/_tree.segment.rsc +2 -2
  122. package/.next/server/app/connections/mail.segments/connections/mail/__PAGE__.segment.rsc +4 -4
  123. package/.next/server/app/connections/mail.segments/connections/mail.segment.rsc +3 -3
  124. package/.next/server/app/connections/mail.segments/connections.segment.rsc +4 -4
  125. package/.next/server/app/connections/mcp/page.js.nft.json +1 -1
  126. package/.next/server/app/connections/mcp/page_client-reference-manifest.js +1 -1
  127. package/.next/server/app/connections/mcp.html +1 -1
  128. package/.next/server/app/connections/mcp.rsc +18 -18
  129. package/.next/server/app/connections/mcp.segments/_full.segment.rsc +18 -18
  130. package/.next/server/app/connections/mcp.segments/_head.segment.rsc +4 -4
  131. package/.next/server/app/connections/mcp.segments/_index.segment.rsc +10 -10
  132. package/.next/server/app/connections/mcp.segments/_tree.segment.rsc +2 -2
  133. package/.next/server/app/connections/mcp.segments/connections/mcp/__PAGE__.segment.rsc +4 -4
  134. package/.next/server/app/connections/mcp.segments/connections/mcp.segment.rsc +3 -3
  135. package/.next/server/app/connections/mcp.segments/connections.segment.rsc +4 -4
  136. package/.next/server/app/connections/messaging/page.js.nft.json +1 -1
  137. package/.next/server/app/connections/messaging/page_client-reference-manifest.js +1 -1
  138. package/.next/server/app/connections/messaging.html +1 -1
  139. package/.next/server/app/connections/messaging.rsc +18 -18
  140. package/.next/server/app/connections/messaging.segments/_full.segment.rsc +18 -18
  141. package/.next/server/app/connections/messaging.segments/_head.segment.rsc +4 -4
  142. package/.next/server/app/connections/messaging.segments/_index.segment.rsc +10 -10
  143. package/.next/server/app/connections/messaging.segments/_tree.segment.rsc +2 -2
  144. package/.next/server/app/connections/messaging.segments/connections/messaging/__PAGE__.segment.rsc +4 -4
  145. package/.next/server/app/connections/messaging.segments/connections/messaging.segment.rsc +3 -3
  146. package/.next/server/app/connections/messaging.segments/connections.segment.rsc +4 -4
  147. package/.next/server/app/connections/page.js.nft.json +1 -1
  148. package/.next/server/app/connections/page_client-reference-manifest.js +1 -1
  149. package/.next/server/app/connections/repositories/page.js.nft.json +1 -1
  150. package/.next/server/app/connections/repositories/page_client-reference-manifest.js +1 -1
  151. package/.next/server/app/connections/repositories.html +1 -1
  152. package/.next/server/app/connections/repositories.rsc +18 -18
  153. package/.next/server/app/connections/repositories.segments/_full.segment.rsc +18 -18
  154. package/.next/server/app/connections/repositories.segments/_head.segment.rsc +4 -4
  155. package/.next/server/app/connections/repositories.segments/_index.segment.rsc +10 -10
  156. package/.next/server/app/connections/repositories.segments/_tree.segment.rsc +2 -2
  157. package/.next/server/app/connections/repositories.segments/connections/repositories/__PAGE__.segment.rsc +4 -4
  158. package/.next/server/app/connections/repositories.segments/connections/repositories.segment.rsc +3 -3
  159. package/.next/server/app/connections/repositories.segments/connections.segment.rsc +4 -4
  160. package/.next/server/app/connections/routines/page.js.nft.json +1 -1
  161. package/.next/server/app/connections/routines/page_client-reference-manifest.js +1 -1
  162. package/.next/server/app/connections/routines.html +1 -1
  163. package/.next/server/app/connections/routines.rsc +16 -16
  164. package/.next/server/app/connections/routines.segments/_full.segment.rsc +16 -16
  165. package/.next/server/app/connections/routines.segments/_head.segment.rsc +4 -4
  166. package/.next/server/app/connections/routines.segments/_index.segment.rsc +10 -10
  167. package/.next/server/app/connections/routines.segments/_tree.segment.rsc +2 -2
  168. package/.next/server/app/connections/routines.segments/connections/routines/__PAGE__.segment.rsc +2 -2
  169. package/.next/server/app/connections/routines.segments/connections/routines.segment.rsc +3 -3
  170. package/.next/server/app/connections/routines.segments/connections.segment.rsc +4 -4
  171. package/.next/server/app/connections.html +1 -1
  172. package/.next/server/app/connections.rsc +16 -16
  173. package/.next/server/app/connections.segments/_full.segment.rsc +16 -16
  174. package/.next/server/app/connections.segments/_head.segment.rsc +4 -4
  175. package/.next/server/app/connections.segments/_index.segment.rsc +10 -10
  176. package/.next/server/app/connections.segments/_tree.segment.rsc +2 -2
  177. package/.next/server/app/connections.segments/connections/__PAGE__.segment.rsc +2 -2
  178. package/.next/server/app/connections.segments/connections.segment.rsc +4 -4
  179. package/.next/server/app/conversations/[id]/page.js.nft.json +1 -1
  180. package/.next/server/app/conversations/[id]/page_client-reference-manifest.js +1 -1
  181. package/.next/server/app/conversations/page.js.nft.json +1 -1
  182. package/.next/server/app/conversations/page_client-reference-manifest.js +1 -1
  183. package/.next/server/app/conversations.html +1 -1
  184. package/.next/server/app/conversations.rsc +15 -15
  185. package/.next/server/app/conversations.segments/_full.segment.rsc +15 -15
  186. package/.next/server/app/conversations.segments/_head.segment.rsc +4 -4
  187. package/.next/server/app/conversations.segments/_index.segment.rsc +10 -10
  188. package/.next/server/app/conversations.segments/_tree.segment.rsc +2 -2
  189. package/.next/server/app/conversations.segments/conversations/__PAGE__.segment.rsc +2 -2
  190. package/.next/server/app/conversations.segments/conversations.segment.rsc +3 -3
  191. package/.next/server/app/docs/[[...slug]]/page.js.nft.json +1 -1
  192. package/.next/server/app/docs/[[...slug]]/page_client-reference-manifest.js +1 -1
  193. package/.next/server/app/finance/page.js.nft.json +1 -1
  194. package/.next/server/app/finance/page_client-reference-manifest.js +1 -1
  195. package/.next/server/app/finance.html +1 -1
  196. package/.next/server/app/finance.rsc +17 -17
  197. package/.next/server/app/finance.segments/_full.segment.rsc +17 -17
  198. package/.next/server/app/finance.segments/_head.segment.rsc +4 -4
  199. package/.next/server/app/finance.segments/_index.segment.rsc +10 -10
  200. package/.next/server/app/finance.segments/_tree.segment.rsc +2 -2
  201. package/.next/server/app/finance.segments/finance/__PAGE__.segment.rsc +4 -4
  202. package/.next/server/app/finance.segments/finance.segment.rsc +3 -3
  203. package/.next/server/app/git/page.js.nft.json +1 -1
  204. package/.next/server/app/git/page_client-reference-manifest.js +1 -1
  205. package/.next/server/app/git.html +1 -1
  206. package/.next/server/app/git.rsc +17 -17
  207. package/.next/server/app/git.segments/_full.segment.rsc +17 -17
  208. package/.next/server/app/git.segments/_head.segment.rsc +4 -4
  209. package/.next/server/app/git.segments/_index.segment.rsc +10 -10
  210. package/.next/server/app/git.segments/_tree.segment.rsc +2 -2
  211. package/.next/server/app/git.segments/git/__PAGE__.segment.rsc +4 -4
  212. package/.next/server/app/git.segments/git.segment.rsc +3 -3
  213. package/.next/server/app/health/page.js.nft.json +1 -1
  214. package/.next/server/app/health/page_client-reference-manifest.js +1 -1
  215. package/.next/server/app/health.html +1 -1
  216. package/.next/server/app/health.rsc +17 -17
  217. package/.next/server/app/health.segments/_full.segment.rsc +17 -17
  218. package/.next/server/app/health.segments/_head.segment.rsc +4 -4
  219. package/.next/server/app/health.segments/_index.segment.rsc +10 -10
  220. package/.next/server/app/health.segments/_tree.segment.rsc +2 -2
  221. package/.next/server/app/health.segments/health/__PAGE__.segment.rsc +4 -4
  222. package/.next/server/app/health.segments/health.segment.rsc +3 -3
  223. package/.next/server/app/index.html +1 -1
  224. package/.next/server/app/index.rsc +17 -17
  225. package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  226. package/.next/server/app/index.segments/_full.segment.rsc +17 -17
  227. package/.next/server/app/index.segments/_head.segment.rsc +4 -4
  228. package/.next/server/app/index.segments/_index.segment.rsc +10 -10
  229. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  230. package/.next/server/app/knowledge/page.js.nft.json +1 -1
  231. package/.next/server/app/knowledge/page_client-reference-manifest.js +1 -1
  232. package/.next/server/app/knowledge.html +1 -1
  233. package/.next/server/app/knowledge.rsc +18 -18
  234. package/.next/server/app/knowledge.segments/_full.segment.rsc +18 -18
  235. package/.next/server/app/knowledge.segments/_head.segment.rsc +4 -4
  236. package/.next/server/app/knowledge.segments/_index.segment.rsc +10 -10
  237. package/.next/server/app/knowledge.segments/_tree.segment.rsc +2 -2
  238. package/.next/server/app/knowledge.segments/knowledge/__PAGE__.segment.rsc +4 -4
  239. package/.next/server/app/knowledge.segments/knowledge.segment.rsc +4 -4
  240. package/.next/server/app/page.js.nft.json +1 -1
  241. package/.next/server/app/page_client-reference-manifest.js +1 -1
  242. package/.next/server/app/reading/page.js.nft.json +1 -1
  243. package/.next/server/app/reading/page_client-reference-manifest.js +1 -1
  244. package/.next/server/app/reading.html +1 -1
  245. package/.next/server/app/reading.rsc +17 -17
  246. package/.next/server/app/reading.segments/_full.segment.rsc +17 -17
  247. package/.next/server/app/reading.segments/_head.segment.rsc +4 -4
  248. package/.next/server/app/reading.segments/_index.segment.rsc +10 -10
  249. package/.next/server/app/reading.segments/_tree.segment.rsc +2 -2
  250. package/.next/server/app/reading.segments/reading/__PAGE__.segment.rsc +4 -4
  251. package/.next/server/app/reading.segments/reading.segment.rsc +3 -3
  252. package/.next/server/app/schedule/page.js.nft.json +1 -1
  253. package/.next/server/app/schedule/page_client-reference-manifest.js +1 -1
  254. package/.next/server/app/schedule.html +1 -1
  255. package/.next/server/app/schedule.rsc +17 -17
  256. package/.next/server/app/schedule.segments/_full.segment.rsc +17 -17
  257. package/.next/server/app/schedule.segments/_head.segment.rsc +4 -4
  258. package/.next/server/app/schedule.segments/_index.segment.rsc +10 -10
  259. package/.next/server/app/schedule.segments/_tree.segment.rsc +2 -2
  260. package/.next/server/app/schedule.segments/schedule/__PAGE__.segment.rsc +4 -4
  261. package/.next/server/app/schedule.segments/schedule.segment.rsc +3 -3
  262. package/.next/server/app/settings/advanced/page.js.nft.json +1 -1
  263. package/.next/server/app/settings/advanced/page_client-reference-manifest.js +1 -1
  264. package/.next/server/app/settings/advanced.html +1 -1
  265. package/.next/server/app/settings/advanced.rsc +18 -18
  266. package/.next/server/app/settings/advanced.segments/_full.segment.rsc +18 -18
  267. package/.next/server/app/settings/advanced.segments/_head.segment.rsc +4 -4
  268. package/.next/server/app/settings/advanced.segments/_index.segment.rsc +10 -10
  269. package/.next/server/app/settings/advanced.segments/_tree.segment.rsc +2 -2
  270. package/.next/server/app/settings/advanced.segments/settings/advanced/__PAGE__.segment.rsc +4 -4
  271. package/.next/server/app/settings/advanced.segments/settings/advanced.segment.rsc +3 -3
  272. package/.next/server/app/settings/advanced.segments/settings.segment.rsc +4 -4
  273. package/.next/server/app/settings/backends/page.js.nft.json +1 -1
  274. package/.next/server/app/settings/backends/page_client-reference-manifest.js +1 -1
  275. package/.next/server/app/settings/backends.html +1 -1
  276. package/.next/server/app/settings/backends.rsc +16 -16
  277. package/.next/server/app/settings/backends.segments/_full.segment.rsc +16 -16
  278. package/.next/server/app/settings/backends.segments/_head.segment.rsc +4 -4
  279. package/.next/server/app/settings/backends.segments/_index.segment.rsc +10 -10
  280. package/.next/server/app/settings/backends.segments/_tree.segment.rsc +2 -2
  281. package/.next/server/app/settings/backends.segments/settings/backends/__PAGE__.segment.rsc +2 -2
  282. package/.next/server/app/settings/backends.segments/settings/backends.segment.rsc +3 -3
  283. package/.next/server/app/settings/backends.segments/settings.segment.rsc +4 -4
  284. package/.next/server/app/settings/commands/page.js.nft.json +1 -1
  285. package/.next/server/app/settings/commands/page_client-reference-manifest.js +1 -1
  286. package/.next/server/app/settings/commands.html +1 -1
  287. package/.next/server/app/settings/commands.rsc +18 -18
  288. package/.next/server/app/settings/commands.segments/_full.segment.rsc +18 -18
  289. package/.next/server/app/settings/commands.segments/_head.segment.rsc +4 -4
  290. package/.next/server/app/settings/commands.segments/_index.segment.rsc +10 -10
  291. package/.next/server/app/settings/commands.segments/_tree.segment.rsc +2 -2
  292. package/.next/server/app/settings/commands.segments/settings/commands/__PAGE__.segment.rsc +4 -4
  293. package/.next/server/app/settings/commands.segments/settings/commands.segment.rsc +3 -3
  294. package/.next/server/app/settings/commands.segments/settings.segment.rsc +4 -4
  295. package/.next/server/app/settings/connections/page.js.nft.json +1 -1
  296. package/.next/server/app/settings/connections/page_client-reference-manifest.js +1 -1
  297. package/.next/server/app/settings/connections.html +1 -1
  298. package/.next/server/app/settings/connections.rsc +16 -16
  299. package/.next/server/app/settings/connections.segments/_full.segment.rsc +16 -16
  300. package/.next/server/app/settings/connections.segments/_head.segment.rsc +4 -4
  301. package/.next/server/app/settings/connections.segments/_index.segment.rsc +10 -10
  302. package/.next/server/app/settings/connections.segments/_tree.segment.rsc +2 -2
  303. package/.next/server/app/settings/connections.segments/settings/connections/__PAGE__.segment.rsc +2 -2
  304. package/.next/server/app/settings/connections.segments/settings/connections.segment.rsc +3 -3
  305. package/.next/server/app/settings/connections.segments/settings.segment.rsc +4 -4
  306. package/.next/server/app/settings/integrations/browser-history/page.js.nft.json +1 -1
  307. package/.next/server/app/settings/integrations/browser-history/page_client-reference-manifest.js +1 -1
  308. package/.next/server/app/settings/integrations/browser-history-managed/b4/page.js.nft.json +1 -1
  309. package/.next/server/app/settings/integrations/browser-history-managed/b4/page_client-reference-manifest.js +1 -1
  310. package/.next/server/app/settings/integrations/browser-history-managed/b4.html +1 -1
  311. package/.next/server/app/settings/integrations/browser-history-managed/b4.rsc +18 -18
  312. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_full.segment.rsc +18 -18
  313. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_head.segment.rsc +4 -4
  314. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_index.segment.rsc +10 -10
  315. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_tree.segment.rsc +2 -2
  316. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations/browser-history-managed/b4/__PAGE__.segment.rsc +4 -4
  317. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations/browser-history-managed/b4.segment.rsc +3 -3
  318. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations/browser-history-managed.segment.rsc +3 -3
  319. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations.segment.rsc +3 -3
  320. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings.segment.rsc +4 -4
  321. package/.next/server/app/settings/integrations/browser-history-managed/page.js.nft.json +1 -1
  322. package/.next/server/app/settings/integrations/browser-history-managed/page_client-reference-manifest.js +1 -1
  323. package/.next/server/app/settings/integrations/browser-history-managed.html +1 -1
  324. package/.next/server/app/settings/integrations/browser-history-managed.rsc +18 -18
  325. package/.next/server/app/settings/integrations/browser-history-managed.segments/_full.segment.rsc +18 -18
  326. package/.next/server/app/settings/integrations/browser-history-managed.segments/_head.segment.rsc +4 -4
  327. package/.next/server/app/settings/integrations/browser-history-managed.segments/_index.segment.rsc +10 -10
  328. package/.next/server/app/settings/integrations/browser-history-managed.segments/_tree.segment.rsc +2 -2
  329. package/.next/server/app/settings/integrations/browser-history-managed.segments/settings/integrations/browser-history-managed/__PAGE__.segment.rsc +4 -4
  330. package/.next/server/app/settings/integrations/browser-history-managed.segments/settings/integrations/browser-history-managed.segment.rsc +3 -3
  331. package/.next/server/app/settings/integrations/browser-history-managed.segments/settings/integrations.segment.rsc +3 -3
  332. package/.next/server/app/settings/integrations/browser-history-managed.segments/settings.segment.rsc +4 -4
  333. package/.next/server/app/settings/integrations/browser-history.html +1 -1
  334. package/.next/server/app/settings/integrations/browser-history.rsc +18 -18
  335. package/.next/server/app/settings/integrations/browser-history.segments/_full.segment.rsc +18 -18
  336. package/.next/server/app/settings/integrations/browser-history.segments/_head.segment.rsc +4 -4
  337. package/.next/server/app/settings/integrations/browser-history.segments/_index.segment.rsc +10 -10
  338. package/.next/server/app/settings/integrations/browser-history.segments/_tree.segment.rsc +2 -2
  339. package/.next/server/app/settings/integrations/browser-history.segments/settings/integrations/browser-history/__PAGE__.segment.rsc +4 -4
  340. package/.next/server/app/settings/integrations/browser-history.segments/settings/integrations/browser-history.segment.rsc +3 -3
  341. package/.next/server/app/settings/integrations/browser-history.segments/settings/integrations.segment.rsc +3 -3
  342. package/.next/server/app/settings/integrations/browser-history.segments/settings.segment.rsc +4 -4
  343. package/.next/server/app/settings/journal/page.js.nft.json +1 -1
  344. package/.next/server/app/settings/journal/page_client-reference-manifest.js +1 -1
  345. package/.next/server/app/settings/journal.html +1 -1
  346. package/.next/server/app/settings/journal.rsc +18 -18
  347. package/.next/server/app/settings/journal.segments/_full.segment.rsc +18 -18
  348. package/.next/server/app/settings/journal.segments/_head.segment.rsc +4 -4
  349. package/.next/server/app/settings/journal.segments/_index.segment.rsc +10 -10
  350. package/.next/server/app/settings/journal.segments/_tree.segment.rsc +2 -2
  351. package/.next/server/app/settings/journal.segments/settings/journal/__PAGE__.segment.rsc +4 -4
  352. package/.next/server/app/settings/journal.segments/settings/journal.segment.rsc +3 -3
  353. package/.next/server/app/settings/journal.segments/settings.segment.rsc +4 -4
  354. package/.next/server/app/settings/lessons/page/app-paths-manifest.json +3 -0
  355. package/.next/server/app/settings/lessons/page/build-manifest.json +18 -0
  356. package/.next/server/app/settings/lessons/page/next-font-manifest.json +6 -0
  357. package/.next/server/app/settings/lessons/page/react-loadable-manifest.json +8 -0
  358. package/.next/server/app/settings/lessons/page/server-reference-manifest.json +4 -0
  359. package/.next/server/app/settings/lessons/page.js +16 -0
  360. package/.next/server/app/settings/lessons/page.js.nft.json +1 -0
  361. package/.next/server/app/settings/lessons/page_client-reference-manifest.js +3 -0
  362. package/.next/server/app/settings/lessons.html +1 -0
  363. package/.next/server/app/settings/lessons.meta +16 -0
  364. package/.next/server/app/settings/lessons.rsc +27 -0
  365. package/.next/server/app/settings/lessons.segments/_full.segment.rsc +27 -0
  366. package/.next/server/app/settings/lessons.segments/_head.segment.rsc +6 -0
  367. package/.next/server/app/settings/lessons.segments/_index.segment.rsc +11 -0
  368. package/.next/server/app/settings/lessons.segments/_tree.segment.rsc +2 -0
  369. package/.next/server/app/settings/lessons.segments/settings/lessons/__PAGE__.segment.rsc +9 -0
  370. package/.next/server/app/settings/lessons.segments/settings/lessons.segment.rsc +5 -0
  371. package/.next/server/app/settings/lessons.segments/settings.segment.rsc +5 -0
  372. package/.next/server/app/settings/management/page.js.nft.json +1 -1
  373. package/.next/server/app/settings/management/page_client-reference-manifest.js +1 -1
  374. package/.next/server/app/settings/management.html +1 -1
  375. package/.next/server/app/settings/management.rsc +18 -18
  376. package/.next/server/app/settings/management.segments/_full.segment.rsc +18 -18
  377. package/.next/server/app/settings/management.segments/_head.segment.rsc +4 -4
  378. package/.next/server/app/settings/management.segments/_index.segment.rsc +10 -10
  379. package/.next/server/app/settings/management.segments/_tree.segment.rsc +2 -2
  380. package/.next/server/app/settings/management.segments/settings/management/__PAGE__.segment.rsc +4 -4
  381. package/.next/server/app/settings/management.segments/settings/management.segment.rsc +3 -3
  382. package/.next/server/app/settings/management.segments/settings.segment.rsc +4 -4
  383. package/.next/server/app/settings/messaging/page.js.nft.json +1 -1
  384. package/.next/server/app/settings/messaging/page_client-reference-manifest.js +1 -1
  385. package/.next/server/app/settings/messaging.html +1 -1
  386. package/.next/server/app/settings/messaging.rsc +16 -16
  387. package/.next/server/app/settings/messaging.segments/_full.segment.rsc +16 -16
  388. package/.next/server/app/settings/messaging.segments/_head.segment.rsc +4 -4
  389. package/.next/server/app/settings/messaging.segments/_index.segment.rsc +10 -10
  390. package/.next/server/app/settings/messaging.segments/_tree.segment.rsc +2 -2
  391. package/.next/server/app/settings/messaging.segments/settings/messaging/__PAGE__.segment.rsc +2 -2
  392. package/.next/server/app/settings/messaging.segments/settings/messaging.segment.rsc +3 -3
  393. package/.next/server/app/settings/messaging.segments/settings.segment.rsc +4 -4
  394. package/.next/server/app/settings/models/page.js.nft.json +1 -1
  395. package/.next/server/app/settings/models/page_client-reference-manifest.js +1 -1
  396. package/.next/server/app/settings/models.html +1 -1
  397. package/.next/server/app/settings/models.rsc +18 -18
  398. package/.next/server/app/settings/models.segments/_full.segment.rsc +18 -18
  399. package/.next/server/app/settings/models.segments/_head.segment.rsc +4 -4
  400. package/.next/server/app/settings/models.segments/_index.segment.rsc +10 -10
  401. package/.next/server/app/settings/models.segments/_tree.segment.rsc +2 -2
  402. package/.next/server/app/settings/models.segments/settings/models/__PAGE__.segment.rsc +4 -4
  403. package/.next/server/app/settings/models.segments/settings/models.segment.rsc +3 -3
  404. package/.next/server/app/settings/models.segments/settings.segment.rsc +4 -4
  405. package/.next/server/app/settings/page.js.nft.json +1 -1
  406. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  407. package/.next/server/app/settings/processes/page.js.nft.json +1 -1
  408. package/.next/server/app/settings/processes/page_client-reference-manifest.js +1 -1
  409. package/.next/server/app/settings/processes.html +1 -1
  410. package/.next/server/app/settings/processes.rsc +16 -16
  411. package/.next/server/app/settings/processes.segments/_full.segment.rsc +16 -16
  412. package/.next/server/app/settings/processes.segments/_head.segment.rsc +4 -4
  413. package/.next/server/app/settings/processes.segments/_index.segment.rsc +10 -10
  414. package/.next/server/app/settings/processes.segments/_tree.segment.rsc +2 -2
  415. package/.next/server/app/settings/processes.segments/settings/processes/__PAGE__.segment.rsc +2 -2
  416. package/.next/server/app/settings/processes.segments/settings/processes.segment.rsc +3 -3
  417. package/.next/server/app/settings/processes.segments/settings.segment.rsc +4 -4
  418. package/.next/server/app/settings/routines/page.js.nft.json +1 -1
  419. package/.next/server/app/settings/routines/page_client-reference-manifest.js +1 -1
  420. package/.next/server/app/settings/routines.html +1 -1
  421. package/.next/server/app/settings/routines.rsc +18 -18
  422. package/.next/server/app/settings/routines.segments/_full.segment.rsc +18 -18
  423. package/.next/server/app/settings/routines.segments/_head.segment.rsc +4 -4
  424. package/.next/server/app/settings/routines.segments/_index.segment.rsc +10 -10
  425. package/.next/server/app/settings/routines.segments/_tree.segment.rsc +2 -2
  426. package/.next/server/app/settings/routines.segments/settings/routines/__PAGE__.segment.rsc +4 -4
  427. package/.next/server/app/settings/routines.segments/settings/routines.segment.rsc +3 -3
  428. package/.next/server/app/settings/routines.segments/settings.segment.rsc +4 -4
  429. package/.next/server/app/settings/schedule/page.js.nft.json +1 -1
  430. package/.next/server/app/settings/schedule/page_client-reference-manifest.js +1 -1
  431. package/.next/server/app/settings/schedule.html +1 -1
  432. package/.next/server/app/settings/schedule.rsc +18 -18
  433. package/.next/server/app/settings/schedule.segments/_full.segment.rsc +18 -18
  434. package/.next/server/app/settings/schedule.segments/_head.segment.rsc +4 -4
  435. package/.next/server/app/settings/schedule.segments/_index.segment.rsc +10 -10
  436. package/.next/server/app/settings/schedule.segments/_tree.segment.rsc +2 -2
  437. package/.next/server/app/settings/schedule.segments/settings/schedule/__PAGE__.segment.rsc +4 -4
  438. package/.next/server/app/settings/schedule.segments/settings/schedule.segment.rsc +3 -3
  439. package/.next/server/app/settings/schedule.segments/settings.segment.rsc +4 -4
  440. package/.next/server/app/settings/self-learning/page.js.nft.json +1 -1
  441. package/.next/server/app/settings/self-learning/page_client-reference-manifest.js +1 -1
  442. package/.next/server/app/settings/self-learning.html +1 -1
  443. package/.next/server/app/settings/self-learning.rsc +18 -18
  444. package/.next/server/app/settings/self-learning.segments/_full.segment.rsc +18 -18
  445. package/.next/server/app/settings/self-learning.segments/_head.segment.rsc +4 -4
  446. package/.next/server/app/settings/self-learning.segments/_index.segment.rsc +10 -10
  447. package/.next/server/app/settings/self-learning.segments/_tree.segment.rsc +2 -2
  448. package/.next/server/app/settings/self-learning.segments/settings/self-learning/__PAGE__.segment.rsc +4 -4
  449. package/.next/server/app/settings/self-learning.segments/settings/self-learning.segment.rsc +3 -3
  450. package/.next/server/app/settings/self-learning.segments/settings.segment.rsc +4 -4
  451. package/.next/server/app/settings/wiki/page.js.nft.json +1 -1
  452. package/.next/server/app/settings/wiki/page_client-reference-manifest.js +1 -1
  453. package/.next/server/app/settings/wiki/timeline/page.js.nft.json +1 -1
  454. package/.next/server/app/settings/wiki/timeline/page_client-reference-manifest.js +1 -1
  455. package/.next/server/app/settings/wiki/timeline.html +1 -1
  456. package/.next/server/app/settings/wiki/timeline.rsc +16 -16
  457. package/.next/server/app/settings/wiki/timeline.segments/_full.segment.rsc +16 -16
  458. package/.next/server/app/settings/wiki/timeline.segments/_head.segment.rsc +4 -4
  459. package/.next/server/app/settings/wiki/timeline.segments/_index.segment.rsc +10 -10
  460. package/.next/server/app/settings/wiki/timeline.segments/_tree.segment.rsc +2 -2
  461. package/.next/server/app/settings/wiki/timeline.segments/settings/wiki/timeline/__PAGE__.segment.rsc +2 -2
  462. package/.next/server/app/settings/wiki/timeline.segments/settings/wiki/timeline.segment.rsc +3 -3
  463. package/.next/server/app/settings/wiki/timeline.segments/settings/wiki.segment.rsc +3 -3
  464. package/.next/server/app/settings/wiki/timeline.segments/settings.segment.rsc +4 -4
  465. package/.next/server/app/settings/wiki.html +1 -1
  466. package/.next/server/app/settings/wiki.rsc +18 -18
  467. package/.next/server/app/settings/wiki.segments/_full.segment.rsc +18 -18
  468. package/.next/server/app/settings/wiki.segments/_head.segment.rsc +4 -4
  469. package/.next/server/app/settings/wiki.segments/_index.segment.rsc +10 -10
  470. package/.next/server/app/settings/wiki.segments/_tree.segment.rsc +2 -2
  471. package/.next/server/app/settings/wiki.segments/settings/wiki/__PAGE__.segment.rsc +4 -4
  472. package/.next/server/app/settings/wiki.segments/settings/wiki.segment.rsc +3 -3
  473. package/.next/server/app/settings/wiki.segments/settings.segment.rsc +4 -4
  474. package/.next/server/app/settings.html +1 -1
  475. package/.next/server/app/settings.rsc +18 -18
  476. package/.next/server/app/settings.segments/_full.segment.rsc +18 -18
  477. package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  478. package/.next/server/app/settings.segments/_index.segment.rsc +10 -10
  479. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  480. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  481. package/.next/server/app/settings.segments/settings.segment.rsc +4 -4
  482. package/.next/server/app/setup/page.js.nft.json +1 -1
  483. package/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  484. package/.next/server/app/setup.html +1 -1
  485. package/.next/server/app/setup.rsc +17 -17
  486. package/.next/server/app/setup.segments/_full.segment.rsc +17 -17
  487. package/.next/server/app/setup.segments/_head.segment.rsc +4 -4
  488. package/.next/server/app/setup.segments/_index.segment.rsc +10 -10
  489. package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  490. package/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +4 -4
  491. package/.next/server/app/setup.segments/setup.segment.rsc +3 -3
  492. package/.next/server/app/trip/page.js.nft.json +1 -1
  493. package/.next/server/app/trip/page_client-reference-manifest.js +1 -1
  494. package/.next/server/app/trip.html +1 -1
  495. package/.next/server/app/trip.rsc +17 -17
  496. package/.next/server/app/trip.segments/_full.segment.rsc +17 -17
  497. package/.next/server/app/trip.segments/_head.segment.rsc +4 -4
  498. package/.next/server/app/trip.segments/_index.segment.rsc +10 -10
  499. package/.next/server/app/trip.segments/_tree.segment.rsc +2 -2
  500. package/.next/server/app/trip.segments/trip/__PAGE__.segment.rsc +4 -4
  501. package/.next/server/app/trip.segments/trip.segment.rsc +3 -3
  502. package/.next/server/app/wiki/page.js.nft.json +1 -1
  503. package/.next/server/app/wiki/page_client-reference-manifest.js +1 -1
  504. package/.next/server/app/wiki/timeline/page.js.nft.json +1 -1
  505. package/.next/server/app/wiki/timeline/page_client-reference-manifest.js +1 -1
  506. package/.next/server/app/wiki/timeline.html +1 -1
  507. package/.next/server/app/wiki/timeline.rsc +17 -17
  508. package/.next/server/app/wiki/timeline.segments/_full.segment.rsc +17 -17
  509. package/.next/server/app/wiki/timeline.segments/_head.segment.rsc +4 -4
  510. package/.next/server/app/wiki/timeline.segments/_index.segment.rsc +10 -10
  511. package/.next/server/app/wiki/timeline.segments/_tree.segment.rsc +2 -2
  512. package/.next/server/app/wiki/timeline.segments/wiki/timeline/__PAGE__.segment.rsc +4 -4
  513. package/.next/server/app/wiki/timeline.segments/wiki/timeline.segment.rsc +3 -3
  514. package/.next/server/app/wiki/timeline.segments/wiki.segment.rsc +3 -3
  515. package/.next/server/app/wiki.html +1 -1
  516. package/.next/server/app/wiki.rsc +17 -17
  517. package/.next/server/app/wiki.segments/_full.segment.rsc +17 -17
  518. package/.next/server/app/wiki.segments/_head.segment.rsc +4 -4
  519. package/.next/server/app/wiki.segments/_index.segment.rsc +10 -10
  520. package/.next/server/app/wiki.segments/_tree.segment.rsc +2 -2
  521. package/.next/server/app/wiki.segments/wiki/__PAGE__.segment.rsc +4 -4
  522. package/.next/server/app/wiki.segments/wiki.segment.rsc +3 -3
  523. package/.next/server/app-paths-manifest.json +1 -0
  524. package/.next/server/chunks/0z~i_next_dist_esm_build_templates_app-route_0o_o_hp.js +1 -1
  525. package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_lessons_page_actions_0_yqadq.js +3 -0
  526. package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0h7ji04.js +4 -0
  527. package/.next/server/chunks/ssr/[root-of-the-server]__03yuq_v._.js +7 -0
  528. package/.next/server/chunks/ssr/[root-of-the-server]__0kvyeu1._.js +3 -0
  529. package/.next/server/chunks/ssr/[root-of-the-server]__0znkqrs._.js +3 -0
  530. package/.next/server/chunks/ssr/{_0cvy_5o._.js → _00_--i0._.js} +2 -2
  531. package/.next/server/chunks/ssr/_00ej8j9._.js +3 -0
  532. package/.next/server/chunks/ssr/{_0n.cr_p._.js → _04jkn8c._.js} +2 -2
  533. package/.next/server/chunks/ssr/_09-o1vq._.js +3 -0
  534. package/.next/server/chunks/ssr/_0cccma-._.js +3 -0
  535. package/.next/server/chunks/ssr/{_0pigg8p._.js → _0evcd7w._.js} +2 -2
  536. package/.next/server/chunks/ssr/{_0klzava._.js → _0jrxrig._.js} +2 -2
  537. package/.next/server/chunks/ssr/_0nvpv18._.js +3 -0
  538. package/.next/server/chunks/ssr/{_0s4udmt._.js → _0o~hk.m._.js} +2 -2
  539. package/.next/server/chunks/ssr/_0pdbiu.._.js +9 -0
  540. package/.next/server/chunks/ssr/_0r25vcp._.js +3 -0
  541. package/.next/server/chunks/ssr/_0tf7hjz._.js +3 -0
  542. package/.next/server/chunks/ssr/_0xmdrbq._.js +3 -0
  543. package/.next/server/chunks/ssr/_0y-w3is._.js +3 -0
  544. package/.next/server/chunks/ssr/_0zz58.-._.js +1 -1
  545. package/.next/server/chunks/ssr/{_03qiunv._.js → _0~fi8o-._.js} +2 -2
  546. package/.next/server/chunks/ssr/_10s6iy.._.js +3 -0
  547. package/.next/server/chunks/ssr/{_03~tfh5._.js → _11pdc0s._.js} +2 -2
  548. package/.next/server/chunks/ssr/packages_dashboard_src_0uxs9-.._.js +1 -1
  549. package/.next/server/chunks/ssr/packages_dashboard_src_0z~3g5n._.js +3 -0
  550. package/.next/server/chunks/ssr/packages_shared_dist_index_0kuvow-.js +1 -1
  551. package/.next/server/middleware/middleware-manifest.json +1 -1
  552. package/.next/server/middleware-build-manifest.js +3 -3
  553. package/.next/server/middleware-manifest.json +1 -1
  554. package/.next/server/pages/404.html +1 -1
  555. package/.next/server/pages/500.html +1 -1
  556. package/.next/static/chunks/0-dw-4a8vg9m8.js +1 -0
  557. package/.next/static/chunks/0.za~0o8~5n1~.css +1 -0
  558. package/.next/static/chunks/0.~7m9beb0bmp.js +11 -0
  559. package/.next/static/chunks/{0ndazhatbfzo7.js → 02k085x_j4_bz.js} +1 -1
  560. package/.next/static/chunks/05xugzf8sfrxt.js +1 -0
  561. package/.next/static/chunks/073hnld9_qq5g.js +1 -0
  562. package/.next/static/chunks/{0ym9.va55pvtp.js → 0e3ds9mkx7.~v.js} +1 -1
  563. package/.next/static/chunks/{0m04i2v9cb~qe.js → 0fri59ogcsfbl.js} +1 -1
  564. package/.next/static/chunks/{0ytubabo8p3y0.js → 0j15hn~z~i56..js} +1 -1
  565. package/.next/static/chunks/{0z8eq-9fm5tni.js → 0mfem_s.3s4r-.js} +1 -1
  566. package/.next/static/chunks/{159r5abwjgz~a.js → 0t.xvj-t_vtrp.js} +1 -1
  567. package/.next/static/chunks/0vivqt8njmkpv.js +1 -0
  568. package/.next/static/chunks/{15pljj6~je.kw.js → 0v~gg~hn-8_k2.js} +1 -1
  569. package/.next/static/chunks/{0n6_wx41s~.c6.js → 0~7d6m~du_b.d.js} +1 -1
  570. package/.next/static/chunks/{17ncd9sikwfzz.js → 0~nct--xt2~bi.js} +1 -1
  571. package/.next/static/chunks/17b2~cmid8qeu.js +3 -0
  572. package/.next/static/chunks/{0105cq0xp5_hx.js → 17rcecfesskxn.js} +1 -1
  573. package/.next/types/routes.d.ts +2 -1
  574. package/.next/types/validator.ts +9 -0
  575. package/package.json +2 -2
  576. package/.next/server/chunks/ssr/[root-of-the-server]__0.tf.7i._.js +0 -7
  577. package/.next/server/chunks/ssr/[root-of-the-server]__0j8z8rh._.js +0 -3
  578. package/.next/server/chunks/ssr/_06pec-y._.js +0 -9
  579. package/.next/server/chunks/ssr/_07fm8yg._.js +0 -3
  580. package/.next/server/chunks/ssr/_0b--0p5._.js +0 -3
  581. package/.next/server/chunks/ssr/_0bz7.8y._.js +0 -3
  582. package/.next/server/chunks/ssr/_0erbggi._.js +0 -3
  583. package/.next/server/chunks/ssr/_0gp2p2l._.js +0 -3
  584. package/.next/server/chunks/ssr/_0jbimd_._.js +0 -3
  585. package/.next/server/chunks/ssr/_0nnu1fp._.js +0 -3
  586. package/.next/server/chunks/ssr/_0qu5la9._.js +0 -3
  587. package/.next/server/chunks/ssr/_0vn~fot._.js +0 -3
  588. package/.next/server/chunks/ssr/_0x._qd7._.js +0 -3
  589. package/.next/server/chunks/ssr/_0yh7rb_._.js +0 -3
  590. package/.next/static/chunks/01eo9jrlkjy03.js +0 -3
  591. package/.next/static/chunks/0_31fedlksujg.js +0 -1
  592. package/.next/static/chunks/0flms4gevti3_.js +0 -1
  593. package/.next/static/chunks/0mjh8s01-3c7z.css +0 -1
  594. package/.next/static/chunks/0obgpq3wenu4s.js +0 -11
  595. package/.next/static/chunks/0yh77irip2zjn.js +0 -1
  596. package/.next/static/chunks/1763zl5q3pn~0.js +0 -1
  597. /package/.next/static/{buq5uD5wcoRL2KUVTM1i7 → i_QR0WWkZFeICcOMbfuUs}/_buildManifest.js +0 -0
  598. /package/.next/static/{buq5uD5wcoRL2KUVTM1i7 → i_QR0WWkZFeICcOMbfuUs}/_clientMiddlewareManifest.js +0 -0
  599. /package/.next/static/{buq5uD5wcoRL2KUVTM1i7 → i_QR0WWkZFeICcOMbfuUs}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,74490,e=>{"use strict";var t=e.i(54710),a=e.i(81471);let n=(0,e.i(94237).cva)("rounded-xl border p-5 shadow-[0_1px_3px_rgb(0_0_0/0.04)]",{variants:{tone:{default:"border-border bg-card",warning:"border-amber-200 bg-amber-50/50 dark:border-amber-900 dark:bg-amber-950/30",success:"border-emerald-200 bg-emerald-50/50 dark:border-emerald-900 dark:bg-emerald-950/30",error:"border-red-200 bg-red-50/50 dark:border-red-900 dark:bg-red-950/30"},interactive:{true:"transition-shadow duration-150 hover:shadow-[0_4px_6px_rgb(0_0_0/0.06)]",false:""}},defaultVariants:{tone:"default",interactive:!1}});e.s(["Card",0,function({className:e,tone:s,interactive:r,...l}){return(0,t.jsx)("div",{className:(0,a.cn)(n({tone:s,interactive:r}),e),...l})},"CardHeader",0,function({className:e,...n}){return(0,t.jsx)("div",{className:(0,a.cn)("mb-3 flex items-center justify-between",e),...n})},"CardStatLabel",0,function({className:e,...n}){return(0,t.jsx)("h3",{className:(0,a.cn)("text-sm font-medium text-muted-foreground",e),...n})},"CardTitle",0,function({className:e,...n}){return(0,t.jsx)("h3",{className:(0,a.cn)("text-lg font-semibold text-foreground",e),...n})},"CardValue",0,function({className:e,...n}){return(0,t.jsx)("div",{className:(0,a.cn)("text-3xl font-bold text-foreground",e),...n})}])},39982,e=>{"use strict";var t=e.i(54710),a=e.i(81471);e.s(["PageHeader",0,function({title:e,description:n,icon:s,badge:r,actions:l,children:i,className:o}){return(0,t.jsxs)("header",{className:(0,a.cn)("flex flex-col gap-1",o),children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between gap-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[s&&(0,t.jsx)(s,{className:"h-5 w-5 text-muted-foreground"}),(0,t.jsx)("h1",{className:"text-2xl font-semibold text-foreground",children:e}),r]}),l&&(0,t.jsx)("div",{className:"flex items-center gap-2",children:l})]}),n&&(0,t.jsx)("p",{className:"max-w-3xl text-sm text-muted-foreground",children:n}),i]})}])},52387,e=>{"use strict";let t=(0,e.i(77379).default)("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",0,t],52387)},75750,e=>{"use strict";let t=(0,e.i(77379).default)("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",0,t],75750)},2745,e=>{"use strict";let t=(0,e.i(77379).default)("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["ShieldCheck",0,t],2745)},76176,e=>{"use strict";e.i(18446);var t=e.i(38082);let a={claude:"Claude Code",codex:"OpenAI Codex",gemini:"Gemini CLI",opencode:"OpenCode"},n=new Set(["opencode"]);function s(e){return n.has(e)}let r={gemini:{badgeLabel:"Vendor deprecation",shortSuffix:" (deprecated)",reason:"Google announced Gemini CLI will stop serving free, Pro, and Ultra requests on 2026-06-18 in favor of Antigravity CLI. Standard / Enterprise licenses keep access. Avoid binding new processes to Gemini if you rely on consumer-tier auth."}},l={claude:"Claude",codex:"Codex",gemini:"Gemini",opencode:"OpenCode"},i={claude:["#7C2D12","#B54B2D","#E15B40","#F97316","#FDBA74"],codex:["#86198F","#A21CAF","#D946EF","#E879F9","#F5D0FE"],gemini:["#1E3A8A","#1D4ED8","#1C69FF","#60A5FA","#93C5FD"],opencode:["#7C2D12","#C2410C","#FF7300","#F59E0B","#FCD34D"]},o=["#6b7280","#9ca3af","#4b5563","#374151"],d={claude:"orange",codex:"pink",gemini:"blue",opencode:"orange"},c={"routine.morning_routine":"Morning Routine","routine.evening_review":"Evening Review","routine.weekly_review":"Weekly Review","routine.monthly_review":"Monthly Review","routine.hourly_check":"Hourly Check","routine.roadmap_refresh":"Roadmap Refresh","message.dm":"Direct Messages","message.mention":"Mentions","dashboard.chat":"Dashboard Chat","agent.task":"Scheduled Tasks","calendar.change":"Calendar Events",gmail_classify:"Gmail Classification","github.pull_request.review_requested":"GitHub Review Requests","github.assigned":"GitHub Assignments","github.security_alert":"GitHub Security Alerts","github.workflow_run.failed":"GitHub CI Failures","wiki.ingest_url":"Wiki URL Ingest","wiki.compile":"Wiki Compile","wiki.ask":"Wiki Ask"};function u(e){let t;if(!e)return[];try{t=JSON.parse(e)}catch{return[]}if(!t||"object"!=typeof t)return[];let a=[];for(let[e,n]of Object.entries(t))n&&"object"==typeof n&&a.push({modelId:e,inputTokens:"number"==typeof n.inputTokens?n.inputTokens:0,outputTokens:"number"==typeof n.outputTokens?n.outputTokens:0,costUsd:"number"==typeof n.costUsd?n.costUsd:0});return a.sort((e,t)=>t.costUsd-e.costUsd)}function m(e){if(!e)return null;let t=e.toLowerCase();return/^[a-z0-9_.-]+\/[a-z0-9_.-]+/.test(t)?"opencode":t.includes("claude")||t.includes("sonnet")||t.includes("opus")||t.includes("haiku")?"claude":t.includes("gemini")?"gemini":t.includes("gpt")||t.includes("codex")||t.includes("o3")||t.includes("o4")?"codex":null}e.s(["BACKEND_BADGE_VARIANTS",0,d,"BACKEND_COLORS",0,{claude:"#E15B40",codex:"#D946EF",gemini:"#1C69FF",opencode:"#FF7300"},"BACKEND_LABELS",0,a,"BACKEND_PROVIDER_LABELS",0,{claude:"Claude (Anthropic)",codex:"ChatGPT (OpenAI)",gemini:"Gemini (Google)",opencode:"OpenCode (sst/opencode)"},"BACKEND_PROVIDER_SHORT",0,{claude:"Claude",codex:"ChatGPT",gemini:"Gemini",opencode:"OpenCode"},"BACKEND_WEB_SEARCH_DESCRIPTIONS",0,{claude:"Lets the agent call Anthropic's built-in WebSearch tool.",codex:"Lets the agent call OpenAI's web_search tool. Works in safe (sandbox) mode — the tool runs at OpenAI, not as a local shell command.",gemini:"Lets the agent call Gemini's google_web_search tool.",opencode:"Lets the agent call the configured OpenCode provider's web-search tool when the OpenCode runtime is enabled."},"CHART_CATEGORY_PALETTE",0,["#3b82f6","#10b981","#f59e0b","#8b5cf6","#ec4899","#14b8a6","#f97316","#6366f1","#ef4444","#22c55e"],"UI_PREVIEW_ONLY_BADGE_SUFFIX",0," (coming soon)","UI_PREVIEW_ONLY_REASON",0,"Coming soon — OpenCode is wired internally but not yet ready for selection in this release. The card stays visible so you can see what is on the roadmap.","assignModelColors",0,function(e){let t=new Map;for(let a of e){if(!a)continue;let e=m(a)??"other",n=t.get(e)??[];n.push(a),t.set(e,n)}let a={};for(let[e,n]of t){n.sort((e,t)=>e.localeCompare(t));let t="other"===e?o:i[e],s=n.length;n.forEach((e,n)=>{let r;r=s>=t.length?n%t.length:1===s?Math.floor(t.length/2):Math.floor((n+.5)*t.length/s),a[e]=t[r]})}return a},"detectBackendFromModel",0,m,"formatModelName",0,function(e){return e?e.replace(/^[a-z0-9_.-]+\//i,"").replace(/^claude-/,"Claude ").replace(/^gpt-/,"GPT-").replace(/^gemini-/,"Gemini ").replace(/-/g," ").replace(/\bpreview\b/gi,"(preview)").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\bcodex\b/gi,"Codex").replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\s+/g," ").trim():"Not set"},"formatShortModelName",0,function(e){if(!e)return"unknown";if("opus"===e)return"Opus";if("sonnet"===e)return"Sonnet";let t=e.replace(/^[a-z0-9_.-]+\//i,""),a=t.replace(/-\d{8,}$/,"").replace(/^claude-/,"").replace(/(\d+)-(\d+)(?![-\d])/g,"$1.$2").replace(/-/g," ");return t.startsWith("gpt-")&&(a=`GPT-${a.replace(/^gpt\s*/i,"")}`),t.startsWith("gemini-")&&(a=a.replace(/^gemini\s*/i,"Gemini ")),a.replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\s+/g," ").trim()},"getBackendDeprecation",0,function(e){return r[e]??null},"getBackendLabel",0,function(e){return a[e]},"getBackendShortLabel",0,function(e){return l[e]},"getProcessGroup",0,function(e){return e.startsWith("wiki.")?"Wiki":e.startsWith("message.")||e.startsWith("dashboard.")?"Conversation":e.startsWith("routine.")?"Routines":e.startsWith("git.")||e.startsWith("github.")?"Git & GitHub":e.startsWith("calendar.")||"gmail_classify"===e?"Integrations":"Tasks"},"getProcessLabel",0,function(e){return c[e]??e},"isBackendSelectionDisabled",0,function(e){return!(0,t.isRuntimeAvailableBackendId)(e)||s(e)},"isUiPreviewOnlyBackend",0,s,"modelBadgeVariant",0,function(e){if(!e)return"gray";let t=m(e);return t?d[t]:"gray"},"parseModelUsage",0,u,"pickDisplayModel",0,function(e,t){let a=u(t);return a.length>0&&a[0]?a[0].modelId:e??null}])},59134,e=>{"use strict";let t=(0,e.i(77379).default)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",0,t],59134)},24756,e=>{"use strict";var t=e.i(14260),a=e.i(65268);e.s(["useBackends",0,function(e){return(0,t.useQuery)({queryKey:["backends"],queryFn:()=>a.api.get("/backends"),enabled:e?.enabled??!0,staleTime:6e4})}])},21682,e=>{"use strict";let t=(0,e.i(77379).default)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",0,t],21682)},70986,e=>{"use strict";var t=e.i(34416),a=e.i(91967),n=e.i(9413),s=e.i(36567),r=e.i(18731),l=e.i(22353),i=e.i(85565),o=e.i(90816),d=e.i(11207),c=e.i(54710),u="Collapsible",[m,p]=(0,n.createContextScope)(u),[h,x]=m(u),f=t.forwardRef((e,a)=>{let{__scopeCollapsible:n,open:r,defaultOpen:l,disabled:o,onOpenChange:m,...p}=e,[x,f]=(0,s.useControllableState)({prop:r,defaultProp:l??!1,onChange:m,caller:u});return(0,c.jsx)(h,{scope:n,disabled:o,contentId:(0,d.useId)(),open:x,onOpenToggle:t.useCallback(()=>f(e=>!e),[f]),children:(0,c.jsx)(i.Primitive.div,{"data-state":j(x),"data-disabled":o?"":void 0,...p,ref:a})})});f.displayName=u;var b="CollapsibleTrigger",g=t.forwardRef((e,t)=>{let{__scopeCollapsible:n,...s}=e,r=x(b,n);return(0,c.jsx)(i.Primitive.button,{type:"button","aria-controls":r.contentId,"aria-expanded":r.open||!1,"data-state":j(r.open),"data-disabled":r.disabled?"":void 0,disabled:r.disabled,...s,ref:t,onClick:(0,a.composeEventHandlers)(e.onClick,r.onOpenToggle)})});g.displayName=b;var v="CollapsibleContent",y=t.forwardRef((e,t)=>{let{forceMount:a,...n}=e,s=x(v,e.__scopeCollapsible);return(0,c.jsx)(o.Presence,{present:a||s.open,children:({present:e})=>(0,c.jsx)(k,{...n,ref:t,present:e})})});y.displayName=v;var k=t.forwardRef((e,a)=>{let{__scopeCollapsible:n,present:s,children:o,...d}=e,u=x(v,n),[m,p]=t.useState(s),h=t.useRef(null),f=(0,l.useComposedRefs)(a,h),b=t.useRef(0),g=b.current,y=t.useRef(0),k=y.current,w=u.open||m,C=t.useRef(w),S=t.useRef(void 0);return t.useEffect(()=>{let e=requestAnimationFrame(()=>C.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,r.useLayoutEffect)(()=>{let e=h.current;if(e){S.current=S.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let t=e.getBoundingClientRect();b.current=t.height,y.current=t.width,C.current||(e.style.transitionDuration=S.current.transitionDuration,e.style.animationName=S.current.animationName),p(s)}},[u.open,s]),(0,c.jsx)(i.Primitive.div,{"data-state":j(u.open),"data-disabled":u.disabled?"":void 0,id:u.contentId,hidden:!w,...d,ref:f,style:{"--radix-collapsible-content-height":g?`${g}px`:void 0,"--radix-collapsible-content-width":k?`${k}px`:void 0,...e.style},children:w&&o})});function j(e){return e?"open":"closed"}e.s(["Collapsible",0,f,"CollapsibleContent",0,y,"CollapsibleTrigger",0,g],70986)},13707,e=>{"use strict";var t=e.i(54710),a=e.i(34416),n=e.i(85565),s=e.i(90816),r=e.i(9413),l=e.i(22353),i=e.i(88248),o=e.i(75649),d=e.i(18731),c=e.i(27069),u=e.i(91967),m="ScrollArea",[p,h]=(0,r.createContextScope)(m),[x,f]=p(m),b=a.forwardRef((e,s)=>{let{__scopeScrollArea:r,type:i="hover",dir:d,scrollHideDelay:c=600,...u}=e,[m,p]=a.useState(null),[h,f]=a.useState(null),[b,g]=a.useState(null),[v,y]=a.useState(null),[k,j]=a.useState(null),[w,C]=a.useState(0),[S,N]=a.useState(0),[E,T]=a.useState(!1),[R,_]=a.useState(!1),D=(0,l.useComposedRefs)(s,e=>p(e)),M=(0,o.useDirection)(d);return(0,t.jsx)(x,{scope:r,type:i,dir:M,scrollHideDelay:c,scrollArea:m,viewport:h,onViewportChange:f,content:b,onContentChange:g,scrollbarX:v,onScrollbarXChange:y,scrollbarXEnabled:E,onScrollbarXEnabledChange:T,scrollbarY:k,onScrollbarYChange:j,scrollbarYEnabled:R,onScrollbarYEnabledChange:_,onCornerWidthChange:C,onCornerHeightChange:N,children:(0,t.jsx)(n.Primitive.div,{dir:M,...u,ref:D,style:{position:"relative","--radix-scroll-area-corner-width":w+"px","--radix-scroll-area-corner-height":S+"px",...e.style}})})});b.displayName=m;var g="ScrollAreaViewport",v=a.forwardRef((e,s)=>{let{__scopeScrollArea:r,children:i,nonce:o,...d}=e,c=f(g,r),u=a.useRef(null),m=(0,l.useComposedRefs)(s,u,c.onViewportChange);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),(0,t.jsx)(n.Primitive.div,{"data-radix-scroll-area-viewport":"",...d,ref:m,style:{overflowX:c.scrollbarXEnabled?"scroll":"hidden",overflowY:c.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,t.jsx)("div",{ref:c.onContentChange,style:{minWidth:"100%",display:"table"},children:i})})]})});v.displayName=g;var y="ScrollAreaScrollbar",k=a.forwardRef((e,n)=>{let{forceMount:s,...r}=e,l=f(y,e.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:o}=l,d="horizontal"===e.orientation;return a.useEffect(()=>(d?i(!0):o(!0),()=>{d?i(!1):o(!1)}),[d,i,o]),"hover"===l.type?(0,t.jsx)(j,{...r,ref:n,forceMount:s}):"scroll"===l.type?(0,t.jsx)(w,{...r,ref:n,forceMount:s}):"auto"===l.type?(0,t.jsx)(C,{...r,ref:n,forceMount:s}):"always"===l.type?(0,t.jsx)(S,{...r,ref:n}):null});k.displayName=y;var j=a.forwardRef((e,n)=>{let{forceMount:r,...l}=e,i=f(y,e.__scopeScrollArea),[o,d]=a.useState(!1);return a.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let a=()=>{window.clearTimeout(t),d(!0)},n=()=>{t=window.setTimeout(()=>d(!1),i.scrollHideDelay)};return e.addEventListener("pointerenter",a),e.addEventListener("pointerleave",n),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",a),e.removeEventListener("pointerleave",n)}}},[i.scrollArea,i.scrollHideDelay]),(0,t.jsx)(s.Presence,{present:r||o,children:(0,t.jsx)(C,{"data-state":o?"visible":"hidden",...l,ref:n})})}),w=a.forwardRef((e,n)=>{var r;let{forceMount:l,...i}=e,o=f(y,e.__scopeScrollArea),d="horizontal"===e.orientation,c=V(()=>p("SCROLL_END"),100),[m,p]=(r={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},a.useReducer((e,t)=>r[e][t]??e,"hidden"));return a.useEffect(()=>{if("idle"===m){let e=window.setTimeout(()=>p("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(e)}},[m,o.scrollHideDelay,p]),a.useEffect(()=>{let e=o.viewport,t=d?"scrollLeft":"scrollTop";if(e){let a=e[t],n=()=>{let n=e[t];a!==n&&(p("SCROLL"),c()),a=n};return e.addEventListener("scroll",n),()=>e.removeEventListener("scroll",n)}},[o.viewport,d,p,c]),(0,t.jsx)(s.Presence,{present:l||"hidden"!==m,children:(0,t.jsx)(S,{"data-state":"hidden"===m?"hidden":"visible",...i,ref:n,onPointerEnter:(0,u.composeEventHandlers)(e.onPointerEnter,()=>p("POINTER_ENTER")),onPointerLeave:(0,u.composeEventHandlers)(e.onPointerLeave,()=>p("POINTER_LEAVE"))})})}),C=a.forwardRef((e,n)=>{let r=f(y,e.__scopeScrollArea),{forceMount:l,...i}=e,[o,d]=a.useState(!1),c="horizontal"===e.orientation,u=V(()=>{if(r.viewport){let e=r.viewport.offsetWidth<r.viewport.scrollWidth,t=r.viewport.offsetHeight<r.viewport.scrollHeight;d(c?e:t)}},10);return q(r.viewport,u),q(r.content,u),(0,t.jsx)(s.Presence,{present:l||o,children:(0,t.jsx)(S,{"data-state":o?"visible":"hidden",...i,ref:n})})}),S=a.forwardRef((e,n)=>{let{orientation:s="vertical",...r}=e,l=f(y,e.__scopeScrollArea),i=a.useRef(null),o=a.useRef(0),[d,c]=a.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=F(d.viewport,d.content),m={...r,sizes:d,onSizesChange:c,hasThumb:!!(u>0&&u<1),onThumbChange:e=>i.current=e,onThumbPointerUp:()=>o.current=0,onThumbPointerDown:e=>o.current=e};function p(e,t){return function(e,t,a,n="ltr"){let s=O(a),r=t||s/2,l=a.scrollbar.paddingStart+r,i=a.scrollbar.size-a.scrollbar.paddingEnd-(s-r),o=a.content-a.viewport;return U([l,i],"ltr"===n?[0,o]:[-1*o,0])(e)}(e,o.current,d,t)}return"horizontal"===s?(0,t.jsx)(N,{...m,ref:n,onThumbPositionChange:()=>{if(l.viewport&&i.current){let e=H(l.viewport.scrollLeft,d,l.dir);i.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{l.viewport&&(l.viewport.scrollLeft=e)},onDragScroll:e=>{l.viewport&&(l.viewport.scrollLeft=p(e,l.dir))}}):"vertical"===s?(0,t.jsx)(E,{...m,ref:n,onThumbPositionChange:()=>{if(l.viewport&&i.current){let e=H(l.viewport.scrollTop,d);i.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{l.viewport&&(l.viewport.scrollTop=e)},onDragScroll:e=>{l.viewport&&(l.viewport.scrollTop=p(e))}}):null}),N=a.forwardRef((e,n)=>{let{sizes:s,onSizesChange:r,...i}=e,o=f(y,e.__scopeScrollArea),[d,c]=a.useState(),u=a.useRef(null),m=(0,l.useComposedRefs)(n,u,o.onScrollbarXChange);return a.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),(0,t.jsx)(_,{"data-orientation":"horizontal",...i,ref:m,sizes:s,style:{bottom:0,left:"rtl"===o.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===o.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":O(s)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,a)=>{if(o.viewport){var n,s;let r=o.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),n=r,s=a,n>0&&n<s&&t.preventDefault()}},onResize:()=>{u.current&&o.viewport&&d&&r({content:o.viewport.scrollWidth,viewport:o.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:I(d.paddingLeft),paddingEnd:I(d.paddingRight)}})}})}),E=a.forwardRef((e,n)=>{let{sizes:s,onSizesChange:r,...i}=e,o=f(y,e.__scopeScrollArea),[d,c]=a.useState(),u=a.useRef(null),m=(0,l.useComposedRefs)(n,u,o.onScrollbarYChange);return a.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),(0,t.jsx)(_,{"data-orientation":"vertical",...i,ref:m,sizes:s,style:{top:0,right:"ltr"===o.dir?0:void 0,left:"rtl"===o.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":O(s)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,a)=>{if(o.viewport){var n,s;let r=o.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),n=r,s=a,n>0&&n<s&&t.preventDefault()}},onResize:()=>{u.current&&o.viewport&&d&&r({content:o.viewport.scrollHeight,viewport:o.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:I(d.paddingTop),paddingEnd:I(d.paddingBottom)}})}})}),[T,R]=p(y),_=a.forwardRef((e,s)=>{let{__scopeScrollArea:r,sizes:o,hasThumb:d,onThumbChange:c,onThumbPointerUp:m,onThumbPointerDown:p,onThumbPositionChange:h,onDragScroll:x,onWheelScroll:b,onResize:g,...v}=e,k=f(y,r),[j,w]=a.useState(null),C=(0,l.useComposedRefs)(s,e=>w(e)),S=a.useRef(null),N=a.useRef(""),E=k.viewport,R=o.content-o.viewport,_=(0,i.useCallbackRef)(b),D=(0,i.useCallbackRef)(h),M=V(g,10);function A(e){S.current&&x({x:e.clientX-S.current.left,y:e.clientY-S.current.top})}return a.useEffect(()=>{let e=e=>{let t=e.target;j?.contains(t)&&_(e,R)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[E,j,R,_]),a.useEffect(D,[o,D]),q(j,M),q(k.content,M),(0,t.jsx)(T,{scope:r,scrollbar:j,hasThumb:d,onThumbChange:(0,i.useCallbackRef)(c),onThumbPointerUp:(0,i.useCallbackRef)(m),onThumbPositionChange:D,onThumbPointerDown:(0,i.useCallbackRef)(p),children:(0,t.jsx)(n.Primitive.div,{...v,ref:C,style:{position:"absolute",...v.style},onPointerDown:(0,u.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),S.current=j.getBoundingClientRect(),N.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",k.viewport&&(k.viewport.style.scrollBehavior="auto"),A(e))}),onPointerMove:(0,u.composeEventHandlers)(e.onPointerMove,A),onPointerUp:(0,u.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=N.current,k.viewport&&(k.viewport.style.scrollBehavior=""),S.current=null})})})}),D="ScrollAreaThumb",M=a.forwardRef((e,a)=>{let{forceMount:n,...r}=e,l=R(D,e.__scopeScrollArea);return(0,t.jsx)(s.Presence,{present:n||l.hasThumb,children:(0,t.jsx)(A,{ref:a,...r})})}),A=a.forwardRef((e,s)=>{let{__scopeScrollArea:r,style:i,...o}=e,d=f(D,r),c=R(D,r),{onThumbPositionChange:m}=c,p=(0,l.useComposedRefs)(s,e=>c.onThumbChange(e)),h=a.useRef(void 0),x=V(()=>{h.current&&(h.current(),h.current=void 0)},100);return a.useEffect(()=>{let e=d.viewport;if(e){let t=()=>{x(),h.current||(h.current=K(e,m),m())};return m(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[d.viewport,x,m]),(0,t.jsx)(n.Primitive.div,{"data-state":c.hasThumb?"visible":"hidden",...o,ref:p,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...i},onPointerDownCapture:(0,u.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),a=e.clientX-t.left,n=e.clientY-t.top;c.onThumbPointerDown({x:a,y:n})}),onPointerUp:(0,u.composeEventHandlers)(e.onPointerUp,c.onThumbPointerUp)})});M.displayName=D;var L="ScrollAreaCorner",P=a.forwardRef((e,a)=>{let n=f(L,e.__scopeScrollArea),s=!!(n.scrollbarX&&n.scrollbarY);return"scroll"!==n.type&&s?(0,t.jsx)(B,{...e,ref:a}):null});P.displayName=L;var B=a.forwardRef((e,s)=>{let{__scopeScrollArea:r,...l}=e,i=f(L,r),[o,d]=a.useState(0),[c,u]=a.useState(0),m=!!(o&&c);return q(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),u(e)}),q(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),d(e)}),m?(0,t.jsx)(n.Primitive.div,{...l,ref:s,style:{width:o,height:c,position:"absolute",right:"ltr"===i.dir?0:void 0,left:"rtl"===i.dir?0:void 0,bottom:0,...e.style}}):null});function I(e){return e?parseInt(e,10):0}function F(e,t){let a=e/t;return isNaN(a)?0:a}function O(e){let t=F(e.viewport,e.content),a=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-a)*t,18)}function H(e,t,a="ltr"){let n=O(t),s=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,r=t.scrollbar.size-s,l=t.content-t.viewport,i=(0,c.clamp)(e,"ltr"===a?[0,l]:[-1*l,0]);return U([0,l],[0,r-n])(i)}function U(e,t){return a=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(a-e[0])}}var K=(e,t=()=>{})=>{let a={left:e.scrollLeft,top:e.scrollTop},n=0;return!function s(){let r={left:e.scrollLeft,top:e.scrollTop},l=a.left!==r.left,i=a.top!==r.top;(l||i)&&t(),a=r,n=window.requestAnimationFrame(s)}(),()=>window.cancelAnimationFrame(n)};function V(e,t){let n=(0,i.useCallbackRef)(e),s=a.useRef(0);return a.useEffect(()=>()=>window.clearTimeout(s.current),[]),a.useCallback(()=>{window.clearTimeout(s.current),s.current=window.setTimeout(n,t)},[n,t])}function q(e,t){let a=(0,i.useCallbackRef)(t);(0,d.useLayoutEffect)(()=>{let t=0;if(e){let n=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(a)});return n.observe(e),()=>{window.cancelAnimationFrame(t),n.unobserve(e)}}},[e,a])}var $=e.i(81471);let W=(0,a.forwardRef)(({className:e,children:a,...n},s)=>(0,t.jsxs)(b,{className:(0,$.cn)("relative overflow-hidden",e),...n,children:[(0,t.jsx)(v,{ref:s,className:"h-full w-full rounded-[inherit]",children:a}),(0,t.jsx)(k,{orientation:"vertical",className:"flex h-full w-2.5 touch-none select-none border-l border-l-transparent p-[1px] transition-colors",children:(0,t.jsx)(M,{className:"relative flex-1 rounded-full bg-border"})}),(0,t.jsx)(k,{orientation:"horizontal",className:"flex h-2.5 w-full flex-col touch-none select-none border-t border-t-transparent p-[1px] transition-colors",children:(0,t.jsx)(M,{className:"relative flex-1 rounded-full bg-border"})}),(0,t.jsx)(P,{})]}));W.displayName="ScrollArea",e.s(["ScrollArea",0,W],13707)},90925,e=>{"use strict";let t=(0,e.i(77379).default)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);e.s(["Trash2",0,t],90925)},60168,e=>{"use strict";let t=(0,e.i(77379).default)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],60168)},99758,e=>{"use strict";let t=(0,e.i(77379).default)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,t],99758)},55575,e=>{"use strict";let t=(0,e.i(77379).default)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);e.s(["FolderOpen",0,t],55575)},66127,e=>{"use strict";var t=e.i(65268);async function a({title:e,defaultPath:n}){let s=await t.api.post("/system/pick-directory",{title:e,...n?{defaultPath:n}:{}});if("selected"===s.status&&s.path)return s.path;if("cancelled"===s.status)return null;throw Error(s.message??"Folder picker is unavailable.")}e.s(["pickDirectoryFromDesktop",0,a])},25795,e=>{"use strict";let t=(0,e.i(77379).default)("RotateCcw",[["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"}]]);e.s(["RotateCcw",0,t],25795)},49681,e=>{"use strict";var t=e.i(54710),a=e.i(7771),n=e.i(95486),s=e.i(8011),r=e.i(10628),l=e.i(81471);e.s(["DocsHelpInline",0,function({docId:e,anchor:i=null,label:o,className:d}){let c=(0,n.useQueryClient)(),u=o??"Help";return(0,t.jsx)(r.TooltipProvider,{delayDuration:300,children:(0,t.jsxs)(r.Tooltip,{children:[(0,t.jsx)(r.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",onClick:t=>{t.preventDefault(),t.stopPropagation(),(0,s.openDocsHelpSlideover)(c,{docId:e,anchor:i,autoFocusComposer:!1})},className:(0,l.cn)("inline-flex h-5 w-5 items-center justify-center rounded-full text-muted-foreground/70 transition hover:bg-accent hover:text-foreground",d),"aria-label":`Open help — ${u}`,"data-testid":"docs-help-inline",children:(0,t.jsx)(a.HelpCircle,{className:"h-3.5 w-3.5","aria-hidden":"true"})})}),(0,t.jsx)(r.TooltipContent,{side:"top",children:(0,t.jsx)("span",{children:u})})]})})}])},82239,e=>{"use strict";var t=e.i(54710),a=e.i(25795),n=e.i(10628);e.s(["RestartRequiredBadge",0,function(){return(0,t.jsxs)(n.Tooltip,{children:[(0,t.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded-sm bg-amber-100 px-1 py-0.5 text-[10px] font-medium text-amber-700 dark:bg-amber-900/40 dark:text-amber-300",children:[(0,t.jsx)(a.RotateCcw,{className:"h-2.5 w-2.5"}),"restart"]})}),(0,t.jsx)(n.TooltipContent,{side:"top",className:"max-w-[220px] text-xs",children:"Changing this value requires a daemon restart to take effect."})]})}])},88,e=>{"use strict";var t=e.i(54710),a=e.i(34416),n=e.i(99758),s=e.i(55575),r=e.i(21682),l=e.i(60168),i=e.i(25795),o=e.i(90925),d=e.i(36451);e.i(18446);var c=e.i(28444),u=e.i(48467),m=e.i(20014),p=e.i(74490),h=e.i(8652),x=e.i(82239),f=e.i(49681),b=e.i(66127),g=e.i(36413);let v=new Set(c.RESTART_REQUIRED_KEY_TUPLE);function y(e){return null===e?"":String(e)}e.s(["ConfigSection",0,function({title:e,children:a,helpDocId:n,helpAnchor:s}){return(0,t.jsxs)(p.Card,{children:[(0,t.jsx)(p.CardHeader,{children:(0,t.jsxs)(p.CardTitle,{className:"flex items-center gap-1.5",children:[(0,t.jsx)("span",{children:e}),n&&(0,t.jsx)(f.DocsHelpInline,{docId:n,anchor:s??null,label:e})]})}),(0,t.jsx)("div",{className:"space-y-0.5 [&>p]:max-w-prose",children:a})]})},"EditableArrayField",0,function({label:e,values:n,configKey:r,variant:i="gray",placeholder:o="Add item...",directoryPicker:c,modified:p,onSave:f}){let g=v.has(r),[y,k]=(0,a.useState)(""),[j,w]=(0,a.useState)(!1),[C,S]=(0,a.useState)(null),N=async()=>{let e=y.trim();if(!(!e||n.includes(e))){w(!0),S(null);try{await f(r,[...n,e]),k("")}catch{}finally{w(!1)}}},E=async e=>{w(!0);try{await f(r,n.filter(t=>t!==e))}finally{w(!1)}},T=async()=>{if(c){w(!0),S(null);try{let e=await (0,b.pickDirectoryFromDesktop)({title:c.title,defaultPath:y.trim()||c.defaultPath});if(!e)return;if(n.includes(e)){k(e),S("That directory is already in the list.");return}await f(r,[...n,e]),k("")}catch(e){S(e instanceof Error?e.message:"Folder picker is unavailable.")}finally{w(!1)}}};return(0,t.jsxs)("div",{className:`py-2${p?" border-l-2 border-blue-500 pl-2 -ml-1 rounded":""}`,"data-config-key":r,children:[(0,t.jsxs)("p",{className:"text-sm text-muted-foreground mb-2 inline-flex items-center gap-1.5",children:[e,g&&(0,t.jsx)(x.RestartRequiredBadge,{}),p&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-blue-600 dark:text-blue-400",children:"modified"})]}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-1.5 mb-2",children:[n.map(e=>(0,t.jsxs)(u.Badge,{variant:i,className:"gap-1 pr-1",children:[e,(0,t.jsx)("button",{onClick:()=>E(e),disabled:j,className:"ml-0.5 rounded-sm hover:bg-black/10 dark:hover:bg-white/10 p-0.5 transition-colors",children:(0,t.jsx)(d.X,{className:"h-3 w-3"})})]},e)),0===n.length&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground italic",children:"No items"})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(h.Input,{value:y,onChange:e=>k(e.target.value),onKeyDown:e=>{"Enter"===e.key&&N()},placeholder:o,className:"max-w-[320px]",disabled:j}),c&&(0,t.jsxs)(m.Button,{size:"sm",variant:"outline",onClick:T,disabled:j,children:[(0,t.jsx)(s.FolderOpen,{className:"h-3.5 w-3.5 mr-1"}),c.buttonLabel??"Choose"]}),(0,t.jsxs)(m.Button,{size:"sm",variant:"outline",onClick:N,disabled:!y.trim()||j,children:[(0,t.jsx)(l.Plus,{className:"h-3.5 w-3.5 mr-1"}),"Add"]})]}),C&&(0,t.jsx)("p",{className:"mt-1 text-xs text-destructive",children:C})]})},"EditableBooleanField",0,function({label:e,value:n,configKey:s,description:r,modified:l,defaultValue:o,onSave:d}){let[c,u]=(0,a.useState)(!1),p=v.has(s),h=void 0!==o&&n===o,f=async()=>{u(!0);try{await d(s,!n)}finally{u(!1)}},b=async()=>{if(void 0!==o){u(!0);try{await d(s,o)}finally{u(!1)}}};return(0,t.jsx)("div",{className:`py-1.5 group${l?" border-l-2 border-blue-500 pl-2 -ml-1 rounded":""}`,"data-config-key":s,children:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("p",{className:"text-sm text-muted-foreground inline-flex items-center gap-1.5",children:[e,p&&(0,t.jsx)(x.RestartRequiredBadge,{}),l&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-blue-600 dark:text-blue-400",children:"modified"}),void 0!==o&&!h&&!l&&(0,t.jsxs)("button",{type:"button",onClick:b,className:"text-[10px] text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-0.5 opacity-0 group-hover:opacity-100",children:[(0,t.jsx)(i.RotateCcw,{className:"h-2.5 w-2.5"}),"reset"]})]}),r&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:r})]}),(0,t.jsx)(m.Button,{variant:n?"default":"outline",size:"sm",onClick:f,disabled:c,children:n?"Enabled":"Disabled"})]})})},"EditableField",0,function({label:e,value:s,configKey:l,type:c="text",suffix:u,description:p,min:f,max:b,nullable:k=!1,emptyLabel:j="Not set",modified:w,defaultValue:C,onSave:S}){let N=v.has(l),[E,T]=(0,a.useState)(!1),[R,_]=(0,a.useState)(y(s)),[D,M]=(0,a.useState)(!1),[A,L]=(0,a.useState)(null),P=(0,a.useRef)(null),B=(0,g.useDiscardGeneration)(),I=(0,a.useRef)(B);(0,a.useEffect)(()=>{B!==I.current&&(I.current=B,T(!1),L(null))},[B]),(0,a.useEffect)(()=>{E&&P.current?.focus()},[E]),(0,a.useEffect)(()=>{E||_(y(s))},[s,E]);let F=void 0!==C&&s===C,O=async e=>{if(e.stopPropagation(),void 0!==C){M(!0);try{await S(l,C)}finally{M(!1)}}},H=async e=>{e.stopPropagation(),M(!0);try{await S(l,null)}finally{M(!1)}},U=async()=>{let e=R.trim(),t=k&&""===e?null:"number"===c?Number(R):R;if(t===s)return void T(!1);if(null!==t&&"number"===c&&(void 0!==f||void 0!==b)&&(void 0!==f&&t<f||void 0!==b&&t>b))return void L(`Must be ${f??""}–${b??""}`);L(null),M(!0);try{await S(l,t),T(!1)}catch{}finally{M(!1)}};return E?(0,t.jsxs)("div",{className:"py-1.5","data-config-key":l,children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("span",{className:"text-sm text-muted-foreground shrink-0 min-w-[140px] inline-flex items-center gap-1.5",children:[e,N&&(0,t.jsx)(x.RestartRequiredBadge,{})]}),(0,t.jsx)(h.Input,{ref:P,type:c,value:R,onChange:e=>{_(e.target.value),L(null)},onKeyDown:e=>{"Enter"===e.key&&U(),"Escape"===e.key&&(_(y(s)),T(!1))},className:"max-w-[240px]",disabled:D,min:f,max:b}),u&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:u}),(0,t.jsx)(m.Button,{size:"sm",variant:"ghost",onClick:U,disabled:D,className:"h-7 w-7 p-0",children:(0,t.jsx)(n.Check,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(m.Button,{size:"sm",variant:"ghost",onClick:()=>{_(y(s)),L(null),T(!1)},className:"h-7 w-7 p-0",children:(0,t.jsx)(d.X,{className:"h-3.5 w-3.5"})})]}),A&&(0,t.jsx)("p",{className:"text-xs text-destructive mt-1 ml-[148px]",children:A}),p&&!A&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-1 ml-[148px]",children:p})]}):(0,t.jsxs)("div",{className:`py-1.5 group cursor-pointer rounded px-1 -mx-1 hover:bg-muted/50 transition-colors${w?" border-l-2 border-blue-500 pl-2":""}`,"data-config-key":l,onClick:()=>T(!0),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("span",{className:"text-sm text-muted-foreground inline-flex items-center gap-1.5",children:[e,N&&(0,t.jsx)(x.RestartRequiredBadge,{})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[w&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-blue-600 dark:text-blue-400",children:"modified"}),void 0!==C&&!F&&!w&&(0,t.jsxs)("button",{type:"button",onClick:O,className:"text-[10px] text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-0.5 opacity-0 group-hover:opacity-100",children:[(0,t.jsx)(i.RotateCcw,{className:"h-2.5 w-2.5"}),"reset"]}),k&&null!==s&&!w&&(0,t.jsxs)("button",{type:"button",onClick:H,title:`Clear — sets ${e} to ${j}`,className:"text-[10px] text-muted-foreground hover:text-destructive transition-colors inline-flex items-center gap-0.5 opacity-0 group-hover:opacity-100",children:[(0,t.jsx)(o.Trash2,{className:"h-2.5 w-2.5"}),"clear"]}),(0,t.jsx)("span",{className:"text-sm font-medium text-foreground",children:null===s?j:"$"===u?`$${s}`:u?`${s} ${u}`:String(s)}),(0,t.jsx)(r.Pencil,{className:"h-3 w-3 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity"})]})]}),p&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:p})]})}])},88175,e=>{"use strict";let t=(0,e.i(77379).default)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);e.s(["Download",0,t],88175)},76610,e=>{"use strict";let t=(0,e.i(77379).default)("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);e.s(["KeyRound",0,t],76610)},18518,e=>{"use strict";let t=(0,e.i(77379).default)("ClipboardCopy",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]);e.s(["ClipboardCopy",0,t],18518)},86923,e=>{"use strict";var t=e.i(54710),a=e.i(34416),n=e.i(95486),s=e.i(72740),r=e.i(21682),l=e.i(7663),i=e.i(75750),o=e.i(74490),d=e.i(79634),c=e.i(48467),u=e.i(20014),m=e.i(8652),p=e.i(10427),h=e.i(65268),x=e.i(24756),f=e.i(87040),b=e.i(76176),g=e.i(81471),v=e.i(99758),y=e.i(59134),k=e.i(1718),j=e.i(27102),w=e.i(13707),C=e.i(57415),S=e.i(14260);function N({value:e,onChange:s,disabled:r,preferredTier:l,placeholder:i="Select model"}){let o,[p,x]=(0,a.useState)(!1),[f,b]=(0,a.useState)(""),[v,R]=(0,a.useState)(l??"all"),[_,D]=(0,a.useState)(!1),[M,A]=(0,a.useState)(!0),{data:L,isLoading:P,error:B}=(0,S.useQuery)({queryKey:["opencode-live-models"],queryFn:()=>h.api.get("/backends/opencode/live-models"),enabled:p,staleTime:3e5}),I=(o=(0,n.useQueryClient)(),(0,C.useMutation)({mutationFn:()=>h.api.get("/backends/opencode/live-models?refresh=1"),onSuccess:e=>{o.setQueryData(["opencode-live-models"],e)}})),F=(0,a.useMemo)(()=>{if(!L)return[];let e=f.trim().toLowerCase();return L.providers.map(t=>({...t,models:t.models.filter(t=>(!_||!!t.isFree)&&(!M||!!t.supportsToolUse)&&("all"===v||t.tier===v)&&(!e||t.modelId.toLowerCase().includes(e)||t.shortId.toLowerCase().includes(e)||t.name.toLowerCase().includes(e)||t.family.toLowerCase().includes(e)))})).filter(e=>e.models.length>0)},[L,f,v,_,M]),O=F.reduce((e,t)=>e+t.models.length,0),H=L?.providers.reduce((e,t)=>e+t.models.length,0)??0;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.Button,{type:"button",variant:"outline",disabled:r,onClick:()=>x(!0),className:"w-full justify-start truncate font-mono text-xs",children:e||(0,t.jsx)("span",{className:"text-muted-foreground italic",children:i})}),(0,t.jsx)(j.Dialog,{open:p,onOpenChange:x,children:(0,t.jsxs)(j.DialogContent,{className:"max-w-3xl",children:[(0,t.jsx)(j.DialogTitle,{children:"OpenCode model"}),(0,t.jsxs)(j.DialogDescription,{children:["Live catalogue from ",(0,t.jsx)("code",{children:"client.config.providers()"})," — every model your opencode server can route to. Selecting writes the full ",(0,t.jsx)("code",{children:"provider/model"})," composite."]}),(0,t.jsxs)("div",{className:"mt-3 flex items-center gap-2",children:[(0,t.jsxs)("div",{className:"relative flex-1",children:[(0,t.jsx)(k.Search,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),(0,t.jsx)(m.Input,{autoFocus:!0,placeholder:"Search by id, name, or family (e.g. gpt-oss, haiku, qwen)",value:f,onChange:e=>b(e.target.value),className:"pl-8"})]}),(0,t.jsx)(u.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>I.mutate(),disabled:I.isPending,title:"Re-enumerate after opencode auth changes",children:(0,t.jsx)(y.RefreshCw,{className:(0,g.cn)("h-3.5 w-3.5",I.isPending&&"animate-spin")})})]}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-2 text-xs",children:[(0,t.jsx)(E,{active:"all"===v,onClick:()=>R("all"),label:"All tiers"}),["lite","medium","high"].map(e=>(0,t.jsx)(E,{active:v===e,onClick:()=>R(e),label:e},e)),(0,t.jsx)("div",{className:"mx-1 h-4 w-px bg-border"}),(0,t.jsx)(E,{active:M,onClick:()=>A(e=>!e),label:"tool-use only"}),(0,t.jsx)(E,{active:_,onClick:()=>D(e=>!e),label:"free only"}),(0,t.jsxs)("span",{className:"ml-auto text-muted-foreground",children:[O,"/",H," models"]})]}),P&&(0,t.jsx)("p",{className:"mt-4 text-sm text-muted-foreground",children:"Loading…"}),B&&(0,t.jsxs)(d.Alert,{variant:"warning",className:"mt-3 text-xs",children:["Failed to enumerate models: ",B instanceof Error?B.message:"unknown error",". Confirm the daemon is running and the opencode server has at least one provider configured."]}),L&&(0,t.jsxs)(w.ScrollArea,{className:"mt-3 h-[420px] rounded-md border border-border",children:[0===F.length&&(0,t.jsx)("div",{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:"No models match these filters."}),F.map(a=>(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"sticky top-0 z-10 flex items-center gap-2 border-b border-border bg-muted/95 px-3 py-1.5 backdrop-blur",children:[(0,t.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider text-foreground",children:a.name}),(0,t.jsx)(c.Badge,{variant:"gray",className:"text-[10px]",children:a.source}),(0,t.jsx)("span",{className:"ml-auto text-xs text-muted-foreground",children:a.models.length})]}),a.models.map(a=>(0,t.jsx)(T,{model:a,selected:a.modelId===e,onSelect:()=>{s(a.modelId),x(!1)}},a.modelId))]},a.id))]}),L&&(0,t.jsxs)("p",{className:"mt-2 text-[11px] text-muted-foreground",children:[L.cached?"Cached":"Fresh"," as of ",new Date(L.fetchedAt).toLocaleTimeString(),". Add providers via ",(0,t.jsx)("code",{children:"opencode auth login"}),", then click Refresh."]})]})})]})}function E({active:e,onClick:a,label:n}){return(0,t.jsx)("button",{type:"button",onClick:a,className:(0,g.cn)("rounded-full border px-2 py-0.5 transition-colors",e?"border-foreground bg-foreground text-background":"border-border bg-background text-muted-foreground hover:bg-muted"),children:n})}function T({model:e,selected:a,onSelect:n}){return(0,t.jsxs)("button",{type:"button",onClick:n,className:(0,g.cn)("flex w-full items-center gap-3 border-b border-border/40 px-3 py-2 text-left transition-colors hover:bg-muted/50",a&&"bg-accent/40"),children:[(0,t.jsx)(v.Check,{className:(0,g.cn)("h-3.5 w-3.5 shrink-0",a?"text-foreground":"text-transparent")}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-sm font-medium text-foreground",children:e.name}),(0,t.jsx)("div",{className:"truncate font-mono text-[11px] text-muted-foreground",children:e.modelId})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-1.5",children:[e.isFree&&(0,t.jsx)(c.Badge,{variant:"green",className:"text-[10px]",children:"free"}),!e.supportsToolUse&&(0,t.jsx)(c.Badge,{variant:"gray",className:"text-[10px] text-muted-foreground",children:"no tools"}),(0,t.jsx)(c.Badge,{variant:"gray",className:"text-[10px]",children:e.tier}),!e.isFree&&null!==e.usdPer1kIn&&(0,t.jsxs)("span",{className:"font-mono text-[10px] tabular-nums text-muted-foreground",children:["$",e.usdPer1kIn.toFixed(4),"/$",e.usdPer1kOut?.toFixed(4)??"?"]})]})]})}let R={"message.dm":"DM response quality may degrade. Sonnet is recommended for important conversations.","message.mention":"Mention response quality may degrade. Sonnet is recommended.","dashboard.chat":"Dashboard chat response quality may degrade. Sonnet is recommended.","routine.morning_routine":"Long-form generation may produce shorter/rougher output with Haiku. Sonnet is recommended.","routine.evening_review":"Long-form generation may produce shorter/rougher output with Haiku. Sonnet is recommended.","routine.weekly_review":"Weekly reviews require reasoning depth. Haiku may produce less coherent output.","routine.monthly_review":"Monthly reviews require reasoning depth. Haiku may produce less coherent output.","agent.task":"Sonnet is recommended for complex task execution. Haiku may make rougher tool-use decisions."};function _(e){return!(e&&e.mainModel.trim()&&(!e.fallbackBackend||e.fallbackModel?.trim()))}function D(e,t,a){let n,s=(n=e.filter(e=>e.tier===t)).length>0?n:e;return a&&s.some(e=>e.modelId===a)?a:s[0]?.modelId??e[0]?.modelId??""}function M(e,t){return t?e.find(e=>e.modelId===t)?.label??(0,b.formatModelName)(t):"Disabled"}e.s(["BackendSettingsSection",0,function({onToast:e,sections:v=["processes"],processKeys:y,title:k="Process Routing",description:j}){let w=v.includes("processes"),C=(0,n.useQueryClient)(),{data:S,error:E,isLoading:T}=(0,x.useBackends)({enabled:w}),{data:A,error:L,isLoading:P}=(0,f.useProcessConfig)({enabled:w}),[B,I]=(0,a.useState)(null),[F,O]=(0,a.useState)(null),[H,U]=(0,a.useState)(!1),K=(0,a.useCallback)(async()=>{await Promise.all([C.invalidateQueries({queryKey:["backends"]}),C.invalidateQueries({queryKey:["process-config"]}),C.invalidateQueries({queryKey:["cost"]}),C.invalidateQueries({queryKey:["metrics"]})])},[C]),V=w?E??L:null;if(V){let e=V instanceof h.ApiError&&503===V.status;return(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{children:(0,t.jsx)(o.CardTitle,{children:"Process Routing"})}),(0,t.jsx)("p",{className:"max-w-prose text-sm text-muted-foreground",children:e?"Multi-backend tables are not available yet. Run migrations first.":V instanceof Error?V.message:"Failed to load process routing."})]})}if(!w)return null;if(T||!S||P||!A)return(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{children:(0,t.jsx)(o.CardTitle,{children:"Process Routing"})}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading process routing…"})]});let q=new Map(S.backends.map(e=>[e.id,e])),$=S.backends.filter(e=>e.enabled),W=(y?A.configs.filter(e=>y.includes(e.processKey)):A.configs).reduce((e,t)=>{let a=(0,b.getProcessGroup)(t.processKey),n=e.find(e=>e.group===a);return n?n.configs.push(t):e.push({group:a,configs:[t]}),e},[]);async function z(){if(F){U(!0);try{let t=await h.api.put(`/process-config/${F.processKey}`,{mainBackend:F.mainBackend,mainModel:F.mainModel,fallbackBackend:F.fallbackBackend,fallbackModel:F.fallbackModel,maxTurns:F.maxTurns,maxBudgetUsd:F.maxBudgetUsd});await K(),t.warnings?.length?e("warning",`Saved — ${t.warnings.map(e=>e.message).join("; ")}`):e("success",`${(0,b.getProcessLabel)(F.processKey)} updated`),I(null),O(null)}catch(t){e("error",function(e){if(!(e instanceof h.ApiError))return e instanceof Error?e.message:"Request failed";let t=e.body,a="string"==typeof t?.error?t.error:null,n=Array.isArray(t?.processKeys)?t.processKeys.filter(e=>"string"==typeof e):[];switch(a){case"backend_in_use":return`This backend is still used by: ${n.join(", ")}. Reassign those processes first.`;case"default_backend":return"Reassign the default backend before disabling it.";case"main_backend_disabled":return"The selected main backend is disabled. Enable it first.";case"fallback_backend_disabled":return"The selected fallback backend is disabled. Enable it first.";case"fallback_same_as_main":return"Fallback backend must differ from the main backend.";case"fallback_incomplete":return"Fallback backend and fallback model must either both be set or both be disabled.";case"invalid_main_model":return"The selected main model does not belong to the chosen backend.";case"invalid_fallback_model":return"The selected fallback model does not belong to the chosen fallback backend.";case"multi_backend_unavailable":return"Multi-backend tables are not available yet. Run migrations first.";default:return e.message}}(t))}finally{U(!1)}}}return(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{className:"items-start",children:(0,t.jsxs)("div",{children:[(0,t.jsx)(o.CardTitle,{children:k}),(0,t.jsx)("p",{className:"mt-1 max-w-3xl text-sm text-muted-foreground",children:j??(0,t.jsxs)(t.Fragment,{children:["One row per process (event-handling pipeline). Each row shows the resolved main backend and model, an optional fallback, and the per-run limits. Click ",(0,t.jsx)("em",{children:"Edit"})," to override any of them. Fallback kicks in only on ",(0,t.jsx)("em",{children:"decisive"})," main-backend failures (quota exhausted, auth broken, model unavailable, timeout — not ordinary rate limiting)."," ","“Default” badges mean the value is inherited from the main backend’s preset defaults above."]})})]})}),(0,t.jsx)("div",{className:"space-y-3",children:W.map(e=>(0,t.jsxs)("div",{className:"space-y-3",children:[!y&&(0,t.jsx)("h3",{className:"px-1 text-xs font-semibold uppercase text-muted-foreground",children:e.group}),e.configs.map(e=>{var a;let n,o=q.get(e.mainBackend),h=e.fallbackBackend?q.get(e.fallbackBackend):null,x=B===e.processKey&&F,f=x?q.get(F.mainBackend)?.models??[]:[],v=x&&F.fallbackBackend?q.get(F.fallbackBackend)?.models??[]:[];return(0,t.jsxs)("div",{className:"rounded-xl border border-border p-4",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",children:[(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsx)("p",{className:"text-base font-medium text-foreground",children:(0,b.getProcessLabel)(e.processKey)}),(0,t.jsxs)(c.Badge,{variant:"high"===e.defaultTier?"purple":"medium"===e.defaultTier?"blue":"default",children:["Default ",e.defaultTier]})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:e.processKey}),(n=function(e,t,a){if("routine.morning_routine"===e&&"claude"===t){let e=a.find(e=>"high"===e.tier&&e.available&&!e.deprecated);return e?`Defaults to Sonnet to preserve Claude quota — ${e.label} depletes the 5h window much faster. If you want better instruction-following or more thorough day-plan output, switch Main Model to ${e.label}.`:null}return null}(e.processKey,e.mainBackend,o?.models??[]))?(0,t.jsx)(d.Alert,{variant:"info",className:"mt-2 text-xs",children:n}):null]}),(0,t.jsxs)("div",{className:"grid gap-3 text-sm text-muted-foreground md:grid-cols-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"Main"}),(0,t.jsx)("p",{children:o?(0,b.getBackendLabel)(o.id):e.mainBackend}),(0,t.jsx)("p",{children:o?M(o.models,e.mainModel):e.mainModel})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"Fallback"}),h&&e.fallbackModel?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{children:(0,b.getBackendLabel)(h.id)}),(0,t.jsx)("p",{children:M(h.models,e.fallbackModel)})]}):(0,t.jsx)("p",{children:"Disabled"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"Limits"}),(0,t.jsxs)("p",{children:[e.maxTurns," turns"]}),(0,t.jsxs)("p",{children:[(0,g.formatCurrency)(e.maxBudgetUsd)," soft budget"]})]})]})]}),(0,t.jsxs)(u.Button,{variant:"outline",onClick:()=>{I(e.processKey),O({processKey:e.processKey,defaultTier:e.defaultTier,mainBackend:e.mainBackend,mainModel:e.mainModel,fallbackBackend:e.fallbackBackend,fallbackModel:e.fallbackModel,maxTurns:e.maxTurns,maxBudgetUsd:e.maxBudgetUsd})},children:[(0,t.jsx)(r.Pencil,{className:"h-3.5 w-3.5"}),"Edit"]})]}),x&&F&&(0,t.jsxs)("div",{className:"mt-4 grid gap-4 rounded-xl border border-border/80 bg-muted/30 p-4 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Main backend"}),(0,t.jsxs)(p.Select,{value:F.mainBackend,onValueChange:e=>(function(e){let t=q.get(e);if(!t||!F)return;let a=F.fallbackBackend===e,n="opencode"===e?t.models.some(e=>e.modelId===F.mainModel)?F.mainModel:"":D(t.models,F.defaultTier,F.mainModel);O({...F,mainBackend:e,mainModel:n,fallbackBackend:a?null:F.fallbackBackend,fallbackModel:a?null:F.fallbackModel})})(e),children:[(0,t.jsx)(p.SelectTrigger,{children:(0,t.jsx)(p.SelectValue,{placeholder:"Select backend"})}),(0,t.jsx)(p.SelectContent,{children:S.backends.map(e=>{let a=(0,b.isUiPreviewOnlyBackend)(e.id);return(0,t.jsxs)(p.SelectItem,{value:e.id,disabled:!e.enabled||a,children:[(0,b.getBackendLabel)(e.id),a?b.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},e.id)})})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Main model"}),"opencode"===F.mainBackend?(0,t.jsx)(N,{value:F.mainModel,onChange:e=>O(t=>t?{...t,mainModel:e}:t),preferredTier:F.defaultTier}):(0,t.jsxs)(p.Select,{value:F.mainModel,onValueChange:e=>O(t=>t?{...t,mainModel:e}:t),children:[(0,t.jsx)(p.SelectTrigger,{children:(0,t.jsx)(p.SelectValue,{placeholder:"Select model"})}),(0,t.jsx)(p.SelectContent,{children:f.map(e=>(0,t.jsx)(p.SelectItem,{value:e.modelId,children:e.label},e.modelId))})]}),!!(a=F.mainModel)&&a.toLowerCase().includes("haiku")&&R[F.processKey]&&(0,t.jsx)(d.Alert,{variant:"warning",className:"mt-2 text-xs",children:R[F.processKey]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Fallback backend"}),(0,t.jsxs)(p.Select,{value:F.fallbackBackend??"__none__",onValueChange:e=>(function(e){if(!F)return;if(!e)return void O({...F,fallbackBackend:null,fallbackModel:null});let t=q.get(e);if(!t)return;let a="opencode"===e?F.fallbackModel&&t.models.some(e=>e.modelId===F.fallbackModel)?F.fallbackModel:"":D(t.models,F.defaultTier,F.fallbackModel);O({...F,fallbackBackend:e,fallbackModel:a})})("__none__"===e?null:e),children:[(0,t.jsx)(p.SelectTrigger,{children:(0,t.jsx)(p.SelectValue,{placeholder:"Select backend"})}),(0,t.jsxs)(p.SelectContent,{children:[(0,t.jsx)(p.SelectItem,{value:"__none__",children:"Disabled"}),S.backends.map(e=>{let a=(0,b.isUiPreviewOnlyBackend)(e.id);return(0,t.jsxs)(p.SelectItem,{value:e.id,disabled:!e.enabled||e.id===F.mainBackend||a,children:[(0,b.getBackendLabel)(e.id),a?b.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},e.id)})]})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Fallback model"}),"opencode"===F.fallbackBackend?(0,t.jsx)(N,{value:F.fallbackModel??"",onChange:e=>O(t=>t?{...t,fallbackModel:e}:t),preferredTier:F.defaultTier,placeholder:"Select fallback model"}):(0,t.jsxs)(p.Select,{disabled:!F.fallbackBackend,value:F.fallbackModel??"__none__",onValueChange:e=>O(t=>t?{...t,fallbackModel:"__none__"===e?null:e}:t),children:[(0,t.jsx)(p.SelectTrigger,{children:(0,t.jsx)(p.SelectValue,{placeholder:"Select model"})}),(0,t.jsxs)(p.SelectContent,{children:[(0,t.jsx)(p.SelectItem,{value:"__none__",children:"Disabled"}),v.map(e=>(0,t.jsx)(p.SelectItem,{value:e.modelId,children:e.label},e.modelId))]})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Max turns"}),(0,t.jsx)(m.Input,{type:"number",min:1,max:1e3,value:F.maxTurns,onChange:e=>O(t=>t?{...t,maxTurns:Number(e.target.value)||1}:t)}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Hard cap on agent turns per run for this process. One turn = one model response (possibly with tool calls). When reached, the run stops mid-task — raise this if you see ",(0,t.jsx)("code",{children:"max_turns_reached"})," in the audit log."]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Soft budget (USD)"}),(0,t.jsx)(m.Input,{type:"number",min:0,max:1e4,step:"0.01",value:F.maxBudgetUsd,onChange:e=>O(t=>t?{...t,maxBudgetUsd:Number(e.target.value)||0}:t)}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Per-run spend cap in USD. “Soft” because the check happens between turns, so a single long turn can overshoot slightly. Runs that exceed the cap are aborted. Set to 0 to disable and rely only on the turn cap."})]}),(0,t.jsxs)("div",{className:"md:col-span-2 flex items-center justify-between gap-3",children:[(0,t.jsxs)("p",{className:"max-w-xl text-xs text-muted-foreground",children:[(0,t.jsx)("strong",{children:"Fallback backend/model"})," is consulted only on decisive failures: quota exhaustion, auth breakage, model refusal, timeout, or unrecoverable provider errors. Transient 5xx and ordinary rate limits are retried on the main backend first."]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsxs)(u.Button,{variant:"outline",onClick:()=>{I(null),O(null)},children:[(0,t.jsx)(i.XCircle,{className:"h-4 w-4"}),"Cancel"]}),(0,t.jsxs)(u.Button,{onClick:z,disabled:H||_(F),title:_(F)?"Pick a main model first — opencode requires an explicit selection from the live catalogue.":void 0,children:[H?(0,t.jsx)(s.Loader2,{className:"h-4 w-4 animate-spin"}):(0,t.jsx)(l.Save,{className:"h-4 w-4"}),"Save Process"]})]})]})]})]},e.processKey)})]},e.group))}),$.length<2&&(0,t.jsx)(d.Alert,{variant:"warning",className:"mt-4 rounded-xl px-4 py-3 text-sm",children:"Enable another backend if you want fallback routing to be available for any process."})]})}],86923)},93772,e=>{"use strict";var t=e.i(54710),a=e.i(34416),n=e.i(96263),s=e.i(88423),r=e.i(13451),l=e.i(36413),i=e.i(86923),o=e.i(72740),d=e.i(95486);e.i(18446);var c=e.i(38082),u=e.i(9897),m=e.i(20014),p=e.i(10427),h=e.i(65268),x=e.i(76176),f=e.i(24756),b=e.i(17975),g=e.i(16995),v=e.i(85462);let y=(0,c.getBackendIds)();function k({onToast:e}){let{data:n,refetch:r}=(0,f.useBackends)(),{data:l}=(0,s.useConfig)(),i=(0,d.useQueryClient)(),[c,j]=(0,a.useState)(null),[w,C]=(0,a.useState)({claude:{status:"idle"},codex:{status:"idle"},gemini:{status:"idle"},opencode:{status:"idle"}}),[S,N]=(0,a.useState)(null),[E,T]=(0,a.useState)(!1);(0,a.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await h.api.get("/backends/advisor");if(e)return;N({enabled:t.enabled,model:t.model})}catch{e||N({enabled:!1,model:null})}})(),()=>{e=!0}},[]);let R=(0,a.useCallback)(async e=>{C(t=>({...t,[e]:{status:"checking"}}));try{let t=await h.api.post(`/backends/${e}/verify-install`);if(await r(),t.ok)C(a=>({...a,[e]:{status:"ok",version:t.version}}));else{let a=t.cliInstalled?t.timedOut?`${t.cliCommand} --version timed out`:t.stderr.trim()||t.stdout.trim()||"CLI failed to run":`${t.cliCommand} not found on PATH`;C(t=>({...t,[e]:{status:"error",error:a}}))}}catch(t){C(a=>({...a,[e]:{status:"error",error:t instanceof Error?t.message:"Verify install failed"}}))}},[r]),_=(0,a.useCallback)(async t=>{j(t);try{let a=await h.api.put("/backends/main",{backendId:t});await r(),await i.invalidateQueries({queryKey:["backends"]}),await i.invalidateQueries({queryKey:["integrations"]}),await i.invalidateQueries({queryKey:["health"]}),await i.invalidateQueries({queryKey:["agent-actions","native_unbound"]});let n=a?.nativeUnbound??[];if(n.length>0){let a=n.map(e=>e.key).join(", ");e("warning",`Main backend set to ${x.BACKEND_PROVIDER_LABELS[t]}. ${n.length} native integration${1===n.length?"":"s"} disabled (${a}). Re-configure on /connections.`)}else e("success",`Main backend set to ${x.BACKEND_PROVIDER_LABELS[t]}.`)}catch(t){e("error",t instanceof h.ApiError||t instanceof Error?t.message:"Failed to set main backend")}finally{j(null)}},[r,i,e]),D=(0,a.useCallback)(async t=>{let a=n?.backends.find(e=>e.id===t);if(!a)return;let s=!a.enabled;j(t);try{await h.api.post(`/backends/${t}/${s?"enable":"disable"}`),await r(),e("success",`${x.BACKEND_PROVIDER_LABELS[t]} ${s?"enabled":"disabled"}.`)}catch(t){e("error",t instanceof Error?t.message:"Failed to update backend")}finally{j(null)}},[n,r,e]),M=(0,a.useCallback)(async t=>{let a=n?.backends.find(e=>e.id===t);if(!a)return;let s=!a.webSearchEnabled;j(t);try{await h.api.post(`/backends/${t}/web-search`,{enabled:s}),await r()}catch(t){e("error",t instanceof Error?t.message:"Failed to update web search")}finally{j(null)}},[n,r,e]),A=(0,a.useCallback)(async t=>{T(!0);try{await h.api.put("/backends/advisor",{enabled:t.enabled,model:t.model}),N(t),e("success",`Advisor ${t.enabled?"enabled":"disabled"}.`)}catch(t){e("error",t instanceof Error?t.message:"Failed to save advisor")}finally{T(!1)}},[e]),L=n?.defaultBackend??null;return(0,t.jsxs)("section",{className:"space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"Backends"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:"Install each backend’s CLI, verify authentication, and pick the main backend. The main backend runs every configurable process by default; per-process overrides live in the Process Routing card below."})]}),(0,t.jsx)(v.SubscriptionAuthWarning,{}),(0,t.jsx)("div",{className:"space-y-3",children:y.map(a=>{let s=n?.backends.find(e=>e.id===a),i=L===a,o=(0,x.isBackendSelectionDisabled)(a),d=l?l[`${a}ExecutionPermissionMode`]:null;return(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(b.BackendCard,{backendId:a,mode:"settings",isMain:i,authStatus:s?.authStatus??"unknown",authStatusDetail:s?.authDetail??null,authFirstExpiredAt:s?.authFirstExpiredAt??null,authLastSuccessAt:s?.authLastSuccessAt??null,authNotificationCount:s?.authNotificationCount??0,cliInstalled:s?.cliInstalled??!0,enabled:s?.enabled??!1,webSearchEnabled:s?.webSearchEnabled??!1,webSearchSupported:s?.webSearchSupported??!1,permissionMode:d,busy:c===a,controlsDisabled:o,disabledReason:o?x.UI_PREVIEW_ONLY_REASON:void 0,installCheck:w[a],onCliInstalled:()=>{r()},onVerifyInstall:()=>{R(a)},onToggleEnable:()=>{D(a)},onToggleWebSearch:()=>{M(a)}}),!o&&(0,t.jsx)(g.BackendApiKeyPanel,{backendId:a,onToast:e}),!i&&(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsxs)(m.Button,{size:"sm",variant:"outline",disabled:o||null!==c||!s?.cliInstalled,onClick:()=>{_(a)},children:["Set ",x.BACKEND_PROVIDER_SHORT[a]," as main"]})})]},a)})}),S&&(0,t.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4 shadow-sm",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:"Advisor (Claude Agent SDK)"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"When enabled, the Claude Agent SDK’s server-side advisor tool can offer a second-opinion model on long turns. Off by default; turn it on only when the extra cost is worth it."})]}),(0,t.jsxs)(m.Button,{size:"sm",variant:S.enabled?"outline":"default",disabled:E,onClick:()=>{A(S.enabled?{enabled:!1,model:null}:{enabled:!0,model:S.model??u.ADVISOR_ALLOWED_MODELS[0]})},children:[E&&(0,t.jsx)(o.Loader2,{className:"mr-2 h-3.5 w-3.5 animate-spin"}),S.enabled?"Disable advisor":"Enable advisor"]})]}),S.enabled&&(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:"Model:"}),(0,t.jsxs)(p.Select,{value:S.model??u.ADVISOR_ALLOWED_MODELS[0],onValueChange:e=>{(0,u.isAdvisorModel)(e)&&A({enabled:!0,model:e})},disabled:E,children:[(0,t.jsx)(p.SelectTrigger,{className:"h-8 w-auto min-w-[12rem] text-xs",children:(0,t.jsx)(p.SelectValue,{})}),(0,t.jsx)(p.SelectContent,{children:u.ADVISOR_ALLOWED_MODELS.map(e=>(0,t.jsx)(p.SelectItem,{value:e,children:e},e))})]})]})]})]})}var j=e.i(81187),w=e.i(16047),C=e.i(2745),S=e.i(78406),N=e.i(74490),E=e.i(49681),T=e.i(70986),R=e.i(81471),_=e.i(36598);function D(e){let t=(0,c.getBackendIds)().map(t=>(0,_.internalToUi)(e[`${t}ExecutionPermissionMode`])),a=t[0]??"safe";return t.every(e=>e===a)?a:null}let M=(0,c.getBackendIds)();function A({onToast:e}){let{data:n}=(0,s.useConfig)(),[r,l]=(0,a.useState)(0);return n?(0,t.jsx)(L,{config:n,onToast:e,onApplied:()=>l(e=>e+1)},r):(0,t.jsx)(N.Card,{children:(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,t.jsx)(o.Loader2,{className:"h-4 w-4 animate-spin"})," Loading…"]})})}function L({config:e,onToast:n,onApplied:s}){let r=(0,d.useQueryClient)(),l=(0,a.useState)(()=>{let t;return{topLevel:t=D(e),overrides:null!==D(e)?{..._.EMPTY_OVERRIDES}:Object.fromEntries((0,c.getBackendIds)().map(t=>[t,(0,_.internalToUi)(e[`${t}ExecutionPermissionMode`])])),forceAccordionOpen:null===t}})[0],[i,u]=(0,a.useState)(l.topLevel),[p,f]=(0,a.useState)(l.overrides),[b,g]=(0,a.useState)(l.forceAccordionOpen),[v,y]=(0,a.useState)(!1),k=null===i||(0,_.hasDivergentOverride)(i,p);async function j(){let e=(0,_.buildSetupModePayload)(i,p);if(null!==e){y(!0);try{await h.api.post("/setup/mode",e),await r.invalidateQueries({queryKey:["config"]}),n("success","Execution mode updated"),s()}catch(e){e instanceof h.ApiError||e instanceof Error?n("error",e.message):n("error","Failed to update execution mode")}finally{y(!1)}}}return(0,t.jsxs)(N.Card,{id:"execution-mode",children:[(0,t.jsx)(N.CardHeader,{className:"px-0 pt-0",children:(0,t.jsxs)(N.CardTitle,{className:"flex items-center gap-1.5 text-base",children:[(0,t.jsx)("span",{children:"Execution Mode"}),(0,t.jsx)(E.DocsHelpInline,{docId:"concepts/safety-and-execution",label:"Execution Mode"})]})}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Pick how freely the agent may run shell, file, and tool commands on your machine. Dangerous operations — recursive deletes, privilege escalation, and secret-file reads — remain blocked in both modes."}),(0,t.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,t.jsx)(P,{icon:(0,t.jsx)(C.ShieldCheck,{className:"h-5 w-5"}),title:"Safe",badge:"Recommended",selected:"safe"===i,onSelect:()=>u("safe"),children:"Agent runs with strict permission checks and confirms before any side-effectful action. Pick this when you want the agent to stay narrow."}),(0,t.jsxs)(P,{icon:(0,t.jsx)(S.Unlock,{className:"h-5 w-5"}),title:"Allow",selected:"allow"===i,onSelect:()=>u("allow"),children:["Agent runs without the daemon’s per-call permission prompts, using the skills, plugins, and MCP servers installed in your CLI harness. Faster and more capable, but the harness — not the daemon — decides which tools are reachable.",(0,t.jsx)(I,{})]}),(0,t.jsxs)(T.Collapsible,{open:b,onOpenChange:g,children:[(0,t.jsx)(T.CollapsibleTrigger,{asChild:!0,children:(0,t.jsxs)("button",{type:"button",className:"flex w-full items-center justify-between rounded-md border border-border bg-muted/20 px-3 py-2 text-left text-xs text-muted-foreground hover:bg-muted/40",children:[(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)(w.ChevronDown,{className:(0,R.cn)("h-3.5 w-3.5 transition-transform",b&&"rotate-180")}),"Advanced — per-backend overrides",k&&(0,t.jsx)("span",{className:"rounded bg-amber-500/15 px-1.5 py-0.5 text-[10px] font-medium text-amber-700 dark:text-amber-300",children:"mixed"})]}),(0,t.jsx)("span",{className:"text-[11px]",children:b?"Hide":"Show"})]})}),(0,t.jsx)(T.CollapsibleContent,{className:"mt-2 space-y-2 rounded-md border border-border bg-background p-3",children:M.map(e=>(0,t.jsx)(B,{backend:e,topLevel:i,override:p[e]??null,disabled:(0,x.isUiPreviewOnlyBackend)(e),onChange:t=>f(a=>({...a,[e]:t}))},e))})]}),(0,t.jsx)("div",{className:"flex justify-end pt-2",children:(0,t.jsx)(m.Button,{onClick:j,disabled:!(0,_.canApply)(i,p)||v,children:v?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),"Saving…"]}):"Apply"})})]})]})}function P({icon:e,title:a,badge:n,selected:s,onSelect:r,children:l}){return(0,t.jsxs)("button",{type:"button",onClick:r,className:(0,R.cn)("block w-full rounded-lg border p-3 text-left transition-colors",s?"border-primary bg-primary/5 shadow-sm":"border-border hover:border-foreground/30"),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 font-semibold text-foreground",children:[e,a,n&&(0,t.jsx)("span",{className:"rounded bg-primary/15 px-1.5 py-0.5 text-[10px] font-medium text-primary",children:n})]}),(0,t.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:l})]})}function B({backend:e,topLevel:a,override:n,disabled:s=!1,onChange:r}){let l=n??a,i=null===l?"pick a top-level mode first":`runs as: ${l}`;return(0,t.jsxs)("div",{className:(0,R.cn)("rounded-md border border-border/60 px-3 py-2",s&&"opacity-60"),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsxs)("div",{className:"text-sm",children:[(0,t.jsxs)("div",{className:"font-medium text-foreground",children:[x.BACKEND_PROVIDER_LABELS[e],(0,t.jsxs)("span",{className:"ml-1 text-xs text-muted-foreground",children:["(",x.BACKEND_PROVIDER_SHORT[e],")"]}),s&&(0,t.jsx)("span",{className:"ml-2 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground",children:"Coming soon"})]}),(0,t.jsx)("div",{className:"text-[11px] text-muted-foreground",children:i})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1 text-xs",children:[(0,t.jsx)(F,{active:null===n,label:"Follow",disabled:s,onClick:()=>r(null)}),(0,t.jsx)(F,{active:"safe"===n,label:"Safe",disabled:s,onClick:()=>r("safe")}),(0,t.jsx)(F,{active:"allow"===n,label:"Allow",disabled:s,onClick:()=>r("allow")})]})]}),"codex"===e&&"allow"===l&&(0,t.jsxs)("p",{className:"mt-2 flex items-start gap-1.5 text-[11px] text-amber-700 dark:text-amber-300",children:[(0,t.jsx)(j.AlertTriangle,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,t.jsx)("span",{children:"Codex Allow disables the daemon's absolute-block layer (sandbox-off). See the Allow card above."})]})]})}function I(){return(0,t.jsxs)("span",{className:"mt-3 flex items-start gap-2 rounded-md border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs text-amber-900 dark:text-amber-200",children:[(0,t.jsx)(j.AlertTriangle,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),(0,t.jsxs)("span",{className:"space-y-1",children:[(0,t.jsxs)("span",{className:"block",children:[(0,t.jsx)("span",{className:"font-semibold",children:"Codex caveat."})," Codex CLI runs Allow mode under"," ",(0,t.jsx)("code",{className:"rounded bg-black/10 px-1 font-mono text-[11px] dark:bg-white/10",children:"--dangerously-bypass-approvals-and-sandbox"}),", a binary sandbox-off switch. Codex has no per-command hook layer for the daemon to attach the absolute-block patterns to, so destructive shell commands (",(0,t.jsx)("code",{className:"rounded bg-black/10 px-1 font-mono text-[11px] dark:bg-white/10",children:"rm -rf"}),","," ",(0,t.jsx)("code",{className:"rounded bg-black/10 px-1 font-mono text-[11px] dark:bg-white/10",children:"eval $(curl …)"}),", secret-file reads) are ",(0,t.jsx)("span",{className:"font-semibold",children:"not"})," ","pre-blocked for Codex in Allow mode the way they are for Claude Code and Gemini CLI."]}),(0,t.jsx)("span",{className:"block",children:"Use the Advanced section below to keep Codex on Safe (its workspace-write sandbox still applies) unless you accept this gap."})]})]})}function F({active:e,label:a,disabled:n=!1,onClick:s}){return(0,t.jsx)("button",{type:"button",onClick:s,disabled:n,className:(0,R.cn)("rounded-md border px-2 py-1 transition-colors",e?"border-primary bg-primary/10 text-foreground":"border-border text-muted-foreground hover:border-foreground/30",n&&"cursor-not-allowed opacity-60 hover:border-border"),children:a})}var O=e.i(39982),H=e.i(88),U=e.i(94328);function K({title:e,defaultOpen:s=!1,children:r}){let[l,i]=(0,a.useState)(s);return(0,t.jsxs)(T.Collapsible,{open:l,onOpenChange:i,children:[(0,t.jsx)(T.CollapsibleTrigger,{asChild:!0,children:(0,t.jsxs)("button",{className:"flex w-full items-center gap-2 rounded-lg px-1 py-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground hover:bg-muted/50 hover:text-foreground transition-colors",children:[(0,t.jsx)(n.ChevronRight,{className:(0,R.cn)("h-3.5 w-3.5 shrink-0 transition-transform duration-200",l&&"rotate-90")}),e]})}),(0,t.jsx)(T.CollapsibleContent,{className:"space-y-3 pt-1",children:r})]})}e.s(["default",0,function(){let{data:e}=(0,s.useConfig)(),{df:a}=(0,s.useConfigDefaults)(),{toast:n,showToast:o}=(0,r.useSaveConfig)(),{deferSaveFor:d,dv:c,dirtyFields:u}=(0,l.useDirtyFields)();if(!e)return(0,t.jsx)("div",{className:"text-muted-foreground",children:"Loading..."});let m=d(e);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(O.PageHeader,{title:"Models & Cost",description:"AI backends, per-task routing, and execution limits. The backend and process cards are always visible; expand the sections below to tune concurrency, session timeouts, or cost guardrails."}),(0,t.jsx)(U.SettingsToast,{toast:n}),(0,t.jsx)(k,{onToast:o}),(0,t.jsx)(A,{onToast:o}),(0,t.jsx)(i.BackendSettingsSection,{onToast:o,sections:["processes"]}),(0,t.jsx)(K,{title:"Execution limits",children:(0,t.jsxs)(H.ConfigSection,{title:"Execution limits",children:[(0,t.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"Concurrency and wall-clock limits that apply across every agent run, regardless of backend or tier."}),(0,t.jsx)(H.EditableField,{label:"Max Concurrent Sessions",value:c("maxConcurrentSessions",e.maxConcurrentSessions),configKey:"maxConcurrentSessions",type:"number",modified:u.has("maxConcurrentSessions"),defaultValue:a("maxConcurrentSessions"),description:"Total number of agent sessions allowed to run in parallel across all sources (DMs, routines, schedules). Additional requests are queued until a slot opens.",onSave:m}),(0,t.jsx)(H.EditableField,{label:"Max Reactive Sessions",value:c("maxReactiveSessions",e.maxReactiveSessions),configKey:"maxReactiveSessions",type:"number",modified:u.has("maxReactiveSessions"),defaultValue:a("maxReactiveSessions"),description:"Subset of the concurrent slots reserved for reactive work (incoming DMs, mentions, and dashboard chat). This guarantees routines never starve out messages you send right now — and the remaining slots guarantee the reverse.",onSave:m}),(0,t.jsx)(H.EditableField,{label:"Execute Timeout",value:c("executeTimeoutMinutes",e.executeTimeoutMinutes),configKey:"executeTimeoutMinutes",type:"number",suffix:"min",min:1,max:1440,modified:u.has("executeTimeoutMinutes"),defaultValue:a("executeTimeoutMinutes"),description:"Maximum wall-clock time for a single agent execution. When exceeded the run is cancelled so retries don’t double-bill quota. Applies per attempt, not per retry chain.",onSave:m}),(0,t.jsx)(H.EditableField,{label:"Delegated Proxy Concurrency",value:c("delegatedProxyMaxConcurrent",e.delegatedProxyMaxConcurrent),configKey:"delegatedProxyMaxConcurrent",type:"number",min:1,max:64,modified:u.has("delegatedProxyMaxConcurrent"),defaultValue:a("delegatedProxyMaxConcurrent"),description:"Maximum simultaneous delegated-proxy invocations. Integrations in delegated mode (Gmail, Calendar, Notion) spawn a one-shot subprocess on the configured backend; excess requests FIFO-queue for up to 60 seconds, then fail. Raise this if you see queue timeouts; lower it to cap parallel backend cost.",onSave:m})]})}),(0,t.jsx)(K,{title:"Session timeouts",children:(0,t.jsxs)(H.ConfigSection,{title:"Session timeouts",children:[(0,t.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"How long an idle conversation keeps its context before the next message starts fresh. Lower values save tokens on long-lived chats; higher values preserve continuity."}),(0,t.jsx)(H.EditableField,{label:"DM Timeout",value:c("sessionTimeoutDmMinutes",e.sessionTimeoutDmMinutes),configKey:"sessionTimeoutDmMinutes",type:"number",suffix:"min",modified:u.has("sessionTimeoutDmMinutes"),defaultValue:a("sessionTimeoutDmMinutes"),description:"Idle minutes before a direct-message session expires. Once expired, the next DM opens a new session without prior conversation history.",onSave:m}),(0,t.jsx)(H.EditableField,{label:"Channel Timeout",value:c("sessionTimeoutChannelMinutes",e.sessionTimeoutChannelMinutes),configKey:"sessionTimeoutChannelMinutes",type:"number",suffix:"min",modified:u.has("sessionTimeoutChannelMinutes"),defaultValue:a("sessionTimeoutChannelMinutes"),description:"Idle minutes before an @mention thread in a public channel expires. Usually shorter than DM timeout since channel context rotates faster.",onSave:m}),(0,t.jsx)(H.EditableField,{label:"Dashboard Timeout",value:c("sessionTimeoutDashboardMinutes",e.sessionTimeoutDashboardMinutes),configKey:"sessionTimeoutDashboardMinutes",type:"number",suffix:"min",modified:u.has("sessionTimeoutDashboardMinutes"),defaultValue:a("sessionTimeoutDashboardMinutes"),description:"Idle minutes before a dashboard Chat session expires. The session sidebar will still show it as a past conversation you can reopen.",onSave:m})]})}),(0,t.jsx)(K,{title:"Cost guardrails",children:(0,t.jsxs)(H.ConfigSection,{title:"Cost guardrails",children:[(0,t.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"Guardrails and alert thresholds for autonomous routine spend. The daily cap can skip lower-priority routines; the monthly cap only notifies. Reactive work such as DMs and mentions still runs."}),(0,t.jsx)(H.EditableField,{label:"Autonomous Daily Cost Cap",value:c("autonomousDailyCostCapUsd",e.autonomousDailyCostCapUsd),configKey:"autonomousDailyCostCapUsd",type:"number",suffix:"$",nullable:!0,emptyLabel:"Disabled",min:.01,modified:u.has("autonomousDailyCostCapUsd"),defaultValue:a("autonomousDailyCostCapUsd"),description:"Maximum daily USD spend for autonomous sessions before lower-priority routines are skipped. Leave blank to disable the cap.",onSave:m}),(0,t.jsx)(H.EditableField,{label:"Autonomous Monthly Cost Cap (alert only)",value:c("autonomousMonthlyCostCapUsd",e.autonomousMonthlyCostCapUsd),configKey:"autonomousMonthlyCostCapUsd",type:"number",suffix:"$",nullable:!0,emptyLabel:"Disabled",min:.01,modified:u.has("autonomousMonthlyCostCapUsd"),defaultValue:a("autonomousMonthlyCostCapUsd"),description:"Notification threshold for the rolling 30-day spend. Surfaces a warning at 80% and an error at 100% in the Notifications panel. No dispatcher enforcement — pair with the daily cap for hard guardrails.",onSave:m})]})})]})}],93772)}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,74490,e=>{"use strict";var t=e.i(54710),a=e.i(81471);let n=(0,e.i(94237).cva)("rounded-xl border p-5 shadow-[0_1px_3px_rgb(0_0_0/0.04)]",{variants:{tone:{default:"border-border bg-card",warning:"border-amber-200 bg-amber-50/50 dark:border-amber-900 dark:bg-amber-950/30",success:"border-emerald-200 bg-emerald-50/50 dark:border-emerald-900 dark:bg-emerald-950/30",error:"border-red-200 bg-red-50/50 dark:border-red-900 dark:bg-red-950/30"},interactive:{true:"transition-shadow duration-150 hover:shadow-[0_4px_6px_rgb(0_0_0/0.06)]",false:""}},defaultVariants:{tone:"default",interactive:!1}});e.s(["Card",0,function({className:e,tone:s,interactive:r,...l}){return(0,t.jsx)("div",{className:(0,a.cn)(n({tone:s,interactive:r}),e),...l})},"CardHeader",0,function({className:e,...n}){return(0,t.jsx)("div",{className:(0,a.cn)("mb-3 flex items-center justify-between",e),...n})},"CardStatLabel",0,function({className:e,...n}){return(0,t.jsx)("h3",{className:(0,a.cn)("text-sm font-medium text-muted-foreground",e),...n})},"CardTitle",0,function({className:e,...n}){return(0,t.jsx)("h3",{className:(0,a.cn)("text-lg font-semibold text-foreground",e),...n})},"CardValue",0,function({className:e,...n}){return(0,t.jsx)("div",{className:(0,a.cn)("text-3xl font-bold text-foreground",e),...n})}])},39982,e=>{"use strict";var t=e.i(54710),a=e.i(81471);e.s(["PageHeader",0,function({title:e,description:n,icon:s,badge:r,actions:l,children:i,className:o}){return(0,t.jsxs)("header",{className:(0,a.cn)("flex flex-col gap-1",o),children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between gap-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[s&&(0,t.jsx)(s,{className:"h-5 w-5 text-muted-foreground"}),(0,t.jsx)("h1",{className:"text-2xl font-semibold text-foreground",children:e}),r]}),l&&(0,t.jsx)("div",{className:"flex items-center gap-2",children:l})]}),n&&(0,t.jsx)("p",{className:"max-w-3xl text-sm text-muted-foreground",children:n}),i]})}])},52387,e=>{"use strict";let t=(0,e.i(77379).default)("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",0,t],52387)},76176,e=>{"use strict";e.i(18446);var t=e.i(38082);let a={claude:"Claude Code",codex:"OpenAI Codex",gemini:"Gemini CLI",opencode:"OpenCode"},n=new Set(["opencode"]);function s(e){return n.has(e)}let r={gemini:{badgeLabel:"Vendor deprecation",shortSuffix:" (deprecated)",reason:"Google announced Gemini CLI will stop serving free, Pro, and Ultra requests on 2026-06-18 in favor of Antigravity CLI. Standard / Enterprise licenses keep access. Avoid binding new processes to Gemini if you rely on consumer-tier auth."}},l={claude:"Claude",codex:"Codex",gemini:"Gemini",opencode:"OpenCode"},i={claude:["#7C2D12","#B54B2D","#E15B40","#F97316","#FDBA74"],codex:["#86198F","#A21CAF","#D946EF","#E879F9","#F5D0FE"],gemini:["#1E3A8A","#1D4ED8","#1C69FF","#60A5FA","#93C5FD"],opencode:["#7C2D12","#C2410C","#FF7300","#F59E0B","#FCD34D"]},o=["#6b7280","#9ca3af","#4b5563","#374151"],d={claude:"orange",codex:"pink",gemini:"blue",opencode:"orange"},c={"routine.morning_routine":"Morning Routine","routine.evening_review":"Evening Review","routine.weekly_review":"Weekly Review","routine.monthly_review":"Monthly Review","routine.hourly_check":"Hourly Check","routine.roadmap_refresh":"Roadmap Refresh","message.dm":"Direct Messages","message.mention":"Mentions","dashboard.chat":"Dashboard Chat","agent.task":"Scheduled Tasks","calendar.change":"Calendar Events",gmail_classify:"Gmail Classification","github.pull_request.review_requested":"GitHub Review Requests","github.assigned":"GitHub Assignments","github.security_alert":"GitHub Security Alerts","github.workflow_run.failed":"GitHub CI Failures","wiki.ingest_url":"Wiki URL Ingest","wiki.compile":"Wiki Compile","wiki.ask":"Wiki Ask"};function u(e){let t;if(!e)return[];try{t=JSON.parse(e)}catch{return[]}if(!t||"object"!=typeof t)return[];let a=[];for(let[e,n]of Object.entries(t))n&&"object"==typeof n&&a.push({modelId:e,inputTokens:"number"==typeof n.inputTokens?n.inputTokens:0,outputTokens:"number"==typeof n.outputTokens?n.outputTokens:0,costUsd:"number"==typeof n.costUsd?n.costUsd:0});return a.sort((e,t)=>t.costUsd-e.costUsd)}function m(e){if(!e)return null;let t=e.toLowerCase();return/^[a-z0-9_.-]+\/[a-z0-9_.-]+/.test(t)?"opencode":t.includes("claude")||t.includes("sonnet")||t.includes("opus")||t.includes("haiku")?"claude":t.includes("gemini")?"gemini":t.includes("gpt")||t.includes("codex")||t.includes("o3")||t.includes("o4")?"codex":null}e.s(["BACKEND_BADGE_VARIANTS",0,d,"BACKEND_COLORS",0,{claude:"#E15B40",codex:"#D946EF",gemini:"#1C69FF",opencode:"#FF7300"},"BACKEND_LABELS",0,a,"BACKEND_PROVIDER_LABELS",0,{claude:"Claude (Anthropic)",codex:"ChatGPT (OpenAI)",gemini:"Gemini (Google)",opencode:"OpenCode (sst/opencode)"},"BACKEND_PROVIDER_SHORT",0,{claude:"Claude",codex:"ChatGPT",gemini:"Gemini",opencode:"OpenCode"},"BACKEND_WEB_SEARCH_DESCRIPTIONS",0,{claude:"Lets the agent call Anthropic's built-in WebSearch tool.",codex:"Lets the agent call OpenAI's web_search tool. Works in safe (sandbox) mode — the tool runs at OpenAI, not as a local shell command.",gemini:"Lets the agent call Gemini's google_web_search tool.",opencode:"Lets the agent call the configured OpenCode provider's web-search tool when the OpenCode runtime is enabled."},"CHART_CATEGORY_PALETTE",0,["#3b82f6","#10b981","#f59e0b","#8b5cf6","#ec4899","#14b8a6","#f97316","#6366f1","#ef4444","#22c55e"],"UI_PREVIEW_ONLY_BADGE_SUFFIX",0," (coming soon)","UI_PREVIEW_ONLY_REASON",0,"Coming soon — OpenCode is wired internally but not yet ready for selection in this release. The card stays visible so you can see what is on the roadmap.","assignModelColors",0,function(e){let t=new Map;for(let a of e){if(!a)continue;let e=m(a)??"other",n=t.get(e)??[];n.push(a),t.set(e,n)}let a={};for(let[e,n]of t){n.sort((e,t)=>e.localeCompare(t));let t="other"===e?o:i[e],s=n.length;n.forEach((e,n)=>{let r;r=s>=t.length?n%t.length:1===s?Math.floor(t.length/2):Math.floor((n+.5)*t.length/s),a[e]=t[r]})}return a},"detectBackendFromModel",0,m,"formatModelName",0,function(e){return e?e.replace(/^[a-z0-9_.-]+\//i,"").replace(/^claude-/,"Claude ").replace(/^gpt-/,"GPT-").replace(/^gemini-/,"Gemini ").replace(/-/g," ").replace(/\bpreview\b/gi,"(preview)").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\bcodex\b/gi,"Codex").replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\s+/g," ").trim():"Not set"},"formatShortModelName",0,function(e){if(!e)return"unknown";if("opus"===e)return"Opus";if("sonnet"===e)return"Sonnet";let t=e.replace(/^[a-z0-9_.-]+\//i,""),a=t.replace(/-\d{8,}$/,"").replace(/^claude-/,"").replace(/(\d+)-(\d+)(?![-\d])/g,"$1.$2").replace(/-/g," ");return t.startsWith("gpt-")&&(a=`GPT-${a.replace(/^gpt\s*/i,"")}`),t.startsWith("gemini-")&&(a=a.replace(/^gemini\s*/i,"Gemini ")),a.replace(/\bopus\b/gi,"Opus").replace(/\bsonnet\b/gi,"Sonnet").replace(/\bhaiku\b/gi,"Haiku").replace(/\bpro\b/gi,"Pro").replace(/\bflash\b/gi,"Flash").replace(/\blite\b/gi,"Lite").replace(/\bmini\b/gi,"Mini").replace(/\s+/g," ").trim()},"getBackendDeprecation",0,function(e){return r[e]??null},"getBackendLabel",0,function(e){return a[e]},"getBackendShortLabel",0,function(e){return l[e]},"getProcessGroup",0,function(e){return e.startsWith("wiki.")?"Wiki":e.startsWith("message.")||e.startsWith("dashboard.")?"Conversation":e.startsWith("routine.")?"Routines":e.startsWith("git.")||e.startsWith("github.")?"Git & GitHub":e.startsWith("calendar.")||"gmail_classify"===e?"Integrations":"Tasks"},"getProcessLabel",0,function(e){return c[e]??e},"isBackendSelectionDisabled",0,function(e){return!(0,t.isRuntimeAvailableBackendId)(e)||s(e)},"isUiPreviewOnlyBackend",0,s,"modelBadgeVariant",0,function(e){if(!e)return"gray";let t=m(e);return t?d[t]:"gray"},"parseModelUsage",0,u,"pickDisplayModel",0,function(e,t){let a=u(t);return a.length>0&&a[0]?a[0].modelId:e??null}])},59134,e=>{"use strict";let t=(0,e.i(77379).default)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",0,t],59134)},70986,e=>{"use strict";var t=e.i(34416),a=e.i(91967),n=e.i(9413),s=e.i(36567),r=e.i(18731),l=e.i(22353),i=e.i(85565),o=e.i(90816),d=e.i(11207),c=e.i(54710),u="Collapsible",[m,p]=(0,n.createContextScope)(u),[h,x]=m(u),f=t.forwardRef((e,a)=>{let{__scopeCollapsible:n,open:r,defaultOpen:l,disabled:o,onOpenChange:m,...p}=e,[x,f]=(0,s.useControllableState)({prop:r,defaultProp:l??!1,onChange:m,caller:u});return(0,c.jsx)(h,{scope:n,disabled:o,contentId:(0,d.useId)(),open:x,onOpenToggle:t.useCallback(()=>f(e=>!e),[f]),children:(0,c.jsx)(i.Primitive.div,{"data-state":j(x),"data-disabled":o?"":void 0,...p,ref:a})})});f.displayName=u;var b="CollapsibleTrigger",g=t.forwardRef((e,t)=>{let{__scopeCollapsible:n,...s}=e,r=x(b,n);return(0,c.jsx)(i.Primitive.button,{type:"button","aria-controls":r.contentId,"aria-expanded":r.open||!1,"data-state":j(r.open),"data-disabled":r.disabled?"":void 0,disabled:r.disabled,...s,ref:t,onClick:(0,a.composeEventHandlers)(e.onClick,r.onOpenToggle)})});g.displayName=b;var v="CollapsibleContent",y=t.forwardRef((e,t)=>{let{forceMount:a,...n}=e,s=x(v,e.__scopeCollapsible);return(0,c.jsx)(o.Presence,{present:a||s.open,children:({present:e})=>(0,c.jsx)(k,{...n,ref:t,present:e})})});y.displayName=v;var k=t.forwardRef((e,a)=>{let{__scopeCollapsible:n,present:s,children:o,...d}=e,u=x(v,n),[m,p]=t.useState(s),h=t.useRef(null),f=(0,l.useComposedRefs)(a,h),b=t.useRef(0),g=b.current,y=t.useRef(0),k=y.current,w=u.open||m,C=t.useRef(w),S=t.useRef(void 0);return t.useEffect(()=>{let e=requestAnimationFrame(()=>C.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,r.useLayoutEffect)(()=>{let e=h.current;if(e){S.current=S.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let t=e.getBoundingClientRect();b.current=t.height,y.current=t.width,C.current||(e.style.transitionDuration=S.current.transitionDuration,e.style.animationName=S.current.animationName),p(s)}},[u.open,s]),(0,c.jsx)(i.Primitive.div,{"data-state":j(u.open),"data-disabled":u.disabled?"":void 0,id:u.contentId,hidden:!w,...d,ref:f,style:{"--radix-collapsible-content-height":g?`${g}px`:void 0,"--radix-collapsible-content-width":k?`${k}px`:void 0,...e.style},children:w&&o})});function j(e){return e?"open":"closed"}e.s(["Collapsible",0,f,"CollapsibleContent",0,y,"CollapsibleTrigger",0,g],70986)},24756,e=>{"use strict";var t=e.i(14260),a=e.i(65268);e.s(["useBackends",0,function(e){return(0,t.useQuery)({queryKey:["backends"],queryFn:()=>a.api.get("/backends"),enabled:e?.enabled??!0,staleTime:6e4})}])},75750,e=>{"use strict";let t=(0,e.i(77379).default)("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",0,t],75750)},2745,e=>{"use strict";let t=(0,e.i(77379).default)("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["ShieldCheck",0,t],2745)},21682,e=>{"use strict";let t=(0,e.i(77379).default)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",0,t],21682)},90925,e=>{"use strict";let t=(0,e.i(77379).default)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);e.s(["Trash2",0,t],90925)},60168,e=>{"use strict";let t=(0,e.i(77379).default)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],60168)},99758,e=>{"use strict";let t=(0,e.i(77379).default)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,t],99758)},55575,e=>{"use strict";let t=(0,e.i(77379).default)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);e.s(["FolderOpen",0,t],55575)},66127,e=>{"use strict";var t=e.i(65268);async function a({title:e,defaultPath:n}){let s=await t.api.post("/system/pick-directory",{title:e,...n?{defaultPath:n}:{}});if("selected"===s.status&&s.path)return s.path;if("cancelled"===s.status)return null;throw Error(s.message??"Folder picker is unavailable.")}e.s(["pickDirectoryFromDesktop",0,a])},25795,e=>{"use strict";let t=(0,e.i(77379).default)("RotateCcw",[["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"}]]);e.s(["RotateCcw",0,t],25795)},49681,e=>{"use strict";var t=e.i(54710),a=e.i(7771),n=e.i(95486),s=e.i(8011),r=e.i(10628),l=e.i(81471);e.s(["DocsHelpInline",0,function({docId:e,anchor:i=null,label:o,className:d}){let c=(0,n.useQueryClient)(),u=o??"Help";return(0,t.jsx)(r.TooltipProvider,{delayDuration:300,children:(0,t.jsxs)(r.Tooltip,{children:[(0,t.jsx)(r.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",onClick:t=>{t.preventDefault(),t.stopPropagation(),(0,s.openDocsHelpSlideover)(c,{docId:e,anchor:i,autoFocusComposer:!1})},className:(0,l.cn)("inline-flex h-5 w-5 items-center justify-center rounded-full text-muted-foreground/70 transition hover:bg-accent hover:text-foreground",d),"aria-label":`Open help — ${u}`,"data-testid":"docs-help-inline",children:(0,t.jsx)(a.HelpCircle,{className:"h-3.5 w-3.5","aria-hidden":"true"})})}),(0,t.jsx)(r.TooltipContent,{side:"top",children:(0,t.jsx)("span",{children:u})})]})})}])},82239,e=>{"use strict";var t=e.i(54710),a=e.i(25795),n=e.i(10628);e.s(["RestartRequiredBadge",0,function(){return(0,t.jsxs)(n.Tooltip,{children:[(0,t.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded-sm bg-amber-100 px-1 py-0.5 text-[10px] font-medium text-amber-700 dark:bg-amber-900/40 dark:text-amber-300",children:[(0,t.jsx)(a.RotateCcw,{className:"h-2.5 w-2.5"}),"restart"]})}),(0,t.jsx)(n.TooltipContent,{side:"top",className:"max-w-[220px] text-xs",children:"Changing this value requires a daemon restart to take effect."})]})}])},88,e=>{"use strict";var t=e.i(54710),a=e.i(34416),n=e.i(99758),s=e.i(55575),r=e.i(21682),l=e.i(60168),i=e.i(25795),o=e.i(90925),d=e.i(36451);e.i(18446);var c=e.i(28444),u=e.i(48467),m=e.i(20014),p=e.i(74490),h=e.i(8652),x=e.i(82239),f=e.i(49681),b=e.i(66127),g=e.i(36413);let v=new Set(c.RESTART_REQUIRED_KEY_TUPLE);function y(e){return null===e?"":String(e)}e.s(["ConfigSection",0,function({title:e,children:a,helpDocId:n,helpAnchor:s}){return(0,t.jsxs)(p.Card,{children:[(0,t.jsx)(p.CardHeader,{children:(0,t.jsxs)(p.CardTitle,{className:"flex items-center gap-1.5",children:[(0,t.jsx)("span",{children:e}),n&&(0,t.jsx)(f.DocsHelpInline,{docId:n,anchor:s??null,label:e})]})}),(0,t.jsx)("div",{className:"space-y-0.5 [&>p]:max-w-prose",children:a})]})},"EditableArrayField",0,function({label:e,values:n,configKey:r,variant:i="gray",placeholder:o="Add item...",directoryPicker:c,modified:p,onSave:f}){let g=v.has(r),[y,k]=(0,a.useState)(""),[j,w]=(0,a.useState)(!1),[C,S]=(0,a.useState)(null),N=async()=>{let e=y.trim();if(!(!e||n.includes(e))){w(!0),S(null);try{await f(r,[...n,e]),k("")}catch{}finally{w(!1)}}},E=async e=>{w(!0);try{await f(r,n.filter(t=>t!==e))}finally{w(!1)}},T=async()=>{if(c){w(!0),S(null);try{let e=await (0,b.pickDirectoryFromDesktop)({title:c.title,defaultPath:y.trim()||c.defaultPath});if(!e)return;if(n.includes(e)){k(e),S("That directory is already in the list.");return}await f(r,[...n,e]),k("")}catch(e){S(e instanceof Error?e.message:"Folder picker is unavailable.")}finally{w(!1)}}};return(0,t.jsxs)("div",{className:`py-2${p?" border-l-2 border-blue-500 pl-2 -ml-1 rounded":""}`,"data-config-key":r,children:[(0,t.jsxs)("p",{className:"text-sm text-muted-foreground mb-2 inline-flex items-center gap-1.5",children:[e,g&&(0,t.jsx)(x.RestartRequiredBadge,{}),p&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-blue-600 dark:text-blue-400",children:"modified"})]}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-1.5 mb-2",children:[n.map(e=>(0,t.jsxs)(u.Badge,{variant:i,className:"gap-1 pr-1",children:[e,(0,t.jsx)("button",{onClick:()=>E(e),disabled:j,className:"ml-0.5 rounded-sm hover:bg-black/10 dark:hover:bg-white/10 p-0.5 transition-colors",children:(0,t.jsx)(d.X,{className:"h-3 w-3"})})]},e)),0===n.length&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground italic",children:"No items"})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(h.Input,{value:y,onChange:e=>k(e.target.value),onKeyDown:e=>{"Enter"===e.key&&N()},placeholder:o,className:"max-w-[320px]",disabled:j}),c&&(0,t.jsxs)(m.Button,{size:"sm",variant:"outline",onClick:T,disabled:j,children:[(0,t.jsx)(s.FolderOpen,{className:"h-3.5 w-3.5 mr-1"}),c.buttonLabel??"Choose"]}),(0,t.jsxs)(m.Button,{size:"sm",variant:"outline",onClick:N,disabled:!y.trim()||j,children:[(0,t.jsx)(l.Plus,{className:"h-3.5 w-3.5 mr-1"}),"Add"]})]}),C&&(0,t.jsx)("p",{className:"mt-1 text-xs text-destructive",children:C})]})},"EditableBooleanField",0,function({label:e,value:n,configKey:s,description:r,modified:l,defaultValue:o,onSave:d}){let[c,u]=(0,a.useState)(!1),p=v.has(s),h=void 0!==o&&n===o,f=async()=>{u(!0);try{await d(s,!n)}finally{u(!1)}},b=async()=>{if(void 0!==o){u(!0);try{await d(s,o)}finally{u(!1)}}};return(0,t.jsx)("div",{className:`py-1.5 group${l?" border-l-2 border-blue-500 pl-2 -ml-1 rounded":""}`,"data-config-key":s,children:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("p",{className:"text-sm text-muted-foreground inline-flex items-center gap-1.5",children:[e,p&&(0,t.jsx)(x.RestartRequiredBadge,{}),l&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-blue-600 dark:text-blue-400",children:"modified"}),void 0!==o&&!h&&!l&&(0,t.jsxs)("button",{type:"button",onClick:b,className:"text-[10px] text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-0.5 opacity-0 group-hover:opacity-100",children:[(0,t.jsx)(i.RotateCcw,{className:"h-2.5 w-2.5"}),"reset"]})]}),r&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:r})]}),(0,t.jsx)(m.Button,{variant:n?"default":"outline",size:"sm",onClick:f,disabled:c,children:n?"Enabled":"Disabled"})]})})},"EditableField",0,function({label:e,value:s,configKey:l,type:c="text",suffix:u,description:p,min:f,max:b,nullable:k=!1,emptyLabel:j="Not set",modified:w,defaultValue:C,onSave:S}){let N=v.has(l),[E,T]=(0,a.useState)(!1),[R,_]=(0,a.useState)(y(s)),[D,M]=(0,a.useState)(!1),[A,L]=(0,a.useState)(null),P=(0,a.useRef)(null),B=(0,g.useDiscardGeneration)(),I=(0,a.useRef)(B);(0,a.useEffect)(()=>{B!==I.current&&(I.current=B,T(!1),L(null))},[B]),(0,a.useEffect)(()=>{E&&P.current?.focus()},[E]),(0,a.useEffect)(()=>{E||_(y(s))},[s,E]);let F=void 0!==C&&s===C,O=async e=>{if(e.stopPropagation(),void 0!==C){M(!0);try{await S(l,C)}finally{M(!1)}}},H=async e=>{e.stopPropagation(),M(!0);try{await S(l,null)}finally{M(!1)}},U=async()=>{let e=R.trim(),t=k&&""===e?null:"number"===c?Number(R):R;if(t===s)return void T(!1);if(null!==t&&"number"===c&&(void 0!==f||void 0!==b)&&(void 0!==f&&t<f||void 0!==b&&t>b))return void L(`Must be ${f??""}–${b??""}`);L(null),M(!0);try{await S(l,t),T(!1)}catch{}finally{M(!1)}};return E?(0,t.jsxs)("div",{className:"py-1.5","data-config-key":l,children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("span",{className:"text-sm text-muted-foreground shrink-0 min-w-[140px] inline-flex items-center gap-1.5",children:[e,N&&(0,t.jsx)(x.RestartRequiredBadge,{})]}),(0,t.jsx)(h.Input,{ref:P,type:c,value:R,onChange:e=>{_(e.target.value),L(null)},onKeyDown:e=>{"Enter"===e.key&&U(),"Escape"===e.key&&(_(y(s)),T(!1))},className:"max-w-[240px]",disabled:D,min:f,max:b}),u&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:u}),(0,t.jsx)(m.Button,{size:"sm",variant:"ghost",onClick:U,disabled:D,className:"h-7 w-7 p-0",children:(0,t.jsx)(n.Check,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(m.Button,{size:"sm",variant:"ghost",onClick:()=>{_(y(s)),L(null),T(!1)},className:"h-7 w-7 p-0",children:(0,t.jsx)(d.X,{className:"h-3.5 w-3.5"})})]}),A&&(0,t.jsx)("p",{className:"text-xs text-destructive mt-1 ml-[148px]",children:A}),p&&!A&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-1 ml-[148px]",children:p})]}):(0,t.jsxs)("div",{className:`py-1.5 group cursor-pointer rounded px-1 -mx-1 hover:bg-muted/50 transition-colors${w?" border-l-2 border-blue-500 pl-2":""}`,"data-config-key":l,onClick:()=>T(!0),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("span",{className:"text-sm text-muted-foreground inline-flex items-center gap-1.5",children:[e,N&&(0,t.jsx)(x.RestartRequiredBadge,{})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[w&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-blue-600 dark:text-blue-400",children:"modified"}),void 0!==C&&!F&&!w&&(0,t.jsxs)("button",{type:"button",onClick:O,className:"text-[10px] text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-0.5 opacity-0 group-hover:opacity-100",children:[(0,t.jsx)(i.RotateCcw,{className:"h-2.5 w-2.5"}),"reset"]}),k&&null!==s&&!w&&(0,t.jsxs)("button",{type:"button",onClick:H,title:`Clear — sets ${e} to ${j}`,className:"text-[10px] text-muted-foreground hover:text-destructive transition-colors inline-flex items-center gap-0.5 opacity-0 group-hover:opacity-100",children:[(0,t.jsx)(o.Trash2,{className:"h-2.5 w-2.5"}),"clear"]}),(0,t.jsx)("span",{className:"text-sm font-medium text-foreground",children:null===s?j:"$"===u?`$${s}`:u?`${s} ${u}`:String(s)}),(0,t.jsx)(r.Pencil,{className:"h-3 w-3 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity"})]})]}),p&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:p})]})}])},13707,e=>{"use strict";var t=e.i(54710),a=e.i(34416),n=e.i(85565),s=e.i(90816),r=e.i(9413),l=e.i(22353),i=e.i(88248),o=e.i(75649),d=e.i(18731),c=e.i(27069),u=e.i(91967),m="ScrollArea",[p,h]=(0,r.createContextScope)(m),[x,f]=p(m),b=a.forwardRef((e,s)=>{let{__scopeScrollArea:r,type:i="hover",dir:d,scrollHideDelay:c=600,...u}=e,[m,p]=a.useState(null),[h,f]=a.useState(null),[b,g]=a.useState(null),[v,y]=a.useState(null),[k,j]=a.useState(null),[w,C]=a.useState(0),[S,N]=a.useState(0),[E,T]=a.useState(!1),[R,_]=a.useState(!1),D=(0,l.useComposedRefs)(s,e=>p(e)),M=(0,o.useDirection)(d);return(0,t.jsx)(x,{scope:r,type:i,dir:M,scrollHideDelay:c,scrollArea:m,viewport:h,onViewportChange:f,content:b,onContentChange:g,scrollbarX:v,onScrollbarXChange:y,scrollbarXEnabled:E,onScrollbarXEnabledChange:T,scrollbarY:k,onScrollbarYChange:j,scrollbarYEnabled:R,onScrollbarYEnabledChange:_,onCornerWidthChange:C,onCornerHeightChange:N,children:(0,t.jsx)(n.Primitive.div,{dir:M,...u,ref:D,style:{position:"relative","--radix-scroll-area-corner-width":w+"px","--radix-scroll-area-corner-height":S+"px",...e.style}})})});b.displayName=m;var g="ScrollAreaViewport",v=a.forwardRef((e,s)=>{let{__scopeScrollArea:r,children:i,nonce:o,...d}=e,c=f(g,r),u=a.useRef(null),m=(0,l.useComposedRefs)(s,u,c.onViewportChange);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),(0,t.jsx)(n.Primitive.div,{"data-radix-scroll-area-viewport":"",...d,ref:m,style:{overflowX:c.scrollbarXEnabled?"scroll":"hidden",overflowY:c.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,t.jsx)("div",{ref:c.onContentChange,style:{minWidth:"100%",display:"table"},children:i})})]})});v.displayName=g;var y="ScrollAreaScrollbar",k=a.forwardRef((e,n)=>{let{forceMount:s,...r}=e,l=f(y,e.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:o}=l,d="horizontal"===e.orientation;return a.useEffect(()=>(d?i(!0):o(!0),()=>{d?i(!1):o(!1)}),[d,i,o]),"hover"===l.type?(0,t.jsx)(j,{...r,ref:n,forceMount:s}):"scroll"===l.type?(0,t.jsx)(w,{...r,ref:n,forceMount:s}):"auto"===l.type?(0,t.jsx)(C,{...r,ref:n,forceMount:s}):"always"===l.type?(0,t.jsx)(S,{...r,ref:n}):null});k.displayName=y;var j=a.forwardRef((e,n)=>{let{forceMount:r,...l}=e,i=f(y,e.__scopeScrollArea),[o,d]=a.useState(!1);return a.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let a=()=>{window.clearTimeout(t),d(!0)},n=()=>{t=window.setTimeout(()=>d(!1),i.scrollHideDelay)};return e.addEventListener("pointerenter",a),e.addEventListener("pointerleave",n),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",a),e.removeEventListener("pointerleave",n)}}},[i.scrollArea,i.scrollHideDelay]),(0,t.jsx)(s.Presence,{present:r||o,children:(0,t.jsx)(C,{"data-state":o?"visible":"hidden",...l,ref:n})})}),w=a.forwardRef((e,n)=>{var r;let{forceMount:l,...i}=e,o=f(y,e.__scopeScrollArea),d="horizontal"===e.orientation,c=V(()=>p("SCROLL_END"),100),[m,p]=(r={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},a.useReducer((e,t)=>r[e][t]??e,"hidden"));return a.useEffect(()=>{if("idle"===m){let e=window.setTimeout(()=>p("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(e)}},[m,o.scrollHideDelay,p]),a.useEffect(()=>{let e=o.viewport,t=d?"scrollLeft":"scrollTop";if(e){let a=e[t],n=()=>{let n=e[t];a!==n&&(p("SCROLL"),c()),a=n};return e.addEventListener("scroll",n),()=>e.removeEventListener("scroll",n)}},[o.viewport,d,p,c]),(0,t.jsx)(s.Presence,{present:l||"hidden"!==m,children:(0,t.jsx)(S,{"data-state":"hidden"===m?"hidden":"visible",...i,ref:n,onPointerEnter:(0,u.composeEventHandlers)(e.onPointerEnter,()=>p("POINTER_ENTER")),onPointerLeave:(0,u.composeEventHandlers)(e.onPointerLeave,()=>p("POINTER_LEAVE"))})})}),C=a.forwardRef((e,n)=>{let r=f(y,e.__scopeScrollArea),{forceMount:l,...i}=e,[o,d]=a.useState(!1),c="horizontal"===e.orientation,u=V(()=>{if(r.viewport){let e=r.viewport.offsetWidth<r.viewport.scrollWidth,t=r.viewport.offsetHeight<r.viewport.scrollHeight;d(c?e:t)}},10);return q(r.viewport,u),q(r.content,u),(0,t.jsx)(s.Presence,{present:l||o,children:(0,t.jsx)(S,{"data-state":o?"visible":"hidden",...i,ref:n})})}),S=a.forwardRef((e,n)=>{let{orientation:s="vertical",...r}=e,l=f(y,e.__scopeScrollArea),i=a.useRef(null),o=a.useRef(0),[d,c]=a.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=F(d.viewport,d.content),m={...r,sizes:d,onSizesChange:c,hasThumb:!!(u>0&&u<1),onThumbChange:e=>i.current=e,onThumbPointerUp:()=>o.current=0,onThumbPointerDown:e=>o.current=e};function p(e,t){return function(e,t,a,n="ltr"){let s=O(a),r=t||s/2,l=a.scrollbar.paddingStart+r,i=a.scrollbar.size-a.scrollbar.paddingEnd-(s-r),o=a.content-a.viewport;return U([l,i],"ltr"===n?[0,o]:[-1*o,0])(e)}(e,o.current,d,t)}return"horizontal"===s?(0,t.jsx)(N,{...m,ref:n,onThumbPositionChange:()=>{if(l.viewport&&i.current){let e=H(l.viewport.scrollLeft,d,l.dir);i.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{l.viewport&&(l.viewport.scrollLeft=e)},onDragScroll:e=>{l.viewport&&(l.viewport.scrollLeft=p(e,l.dir))}}):"vertical"===s?(0,t.jsx)(E,{...m,ref:n,onThumbPositionChange:()=>{if(l.viewport&&i.current){let e=H(l.viewport.scrollTop,d);i.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{l.viewport&&(l.viewport.scrollTop=e)},onDragScroll:e=>{l.viewport&&(l.viewport.scrollTop=p(e))}}):null}),N=a.forwardRef((e,n)=>{let{sizes:s,onSizesChange:r,...i}=e,o=f(y,e.__scopeScrollArea),[d,c]=a.useState(),u=a.useRef(null),m=(0,l.useComposedRefs)(n,u,o.onScrollbarXChange);return a.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),(0,t.jsx)(_,{"data-orientation":"horizontal",...i,ref:m,sizes:s,style:{bottom:0,left:"rtl"===o.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===o.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":O(s)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,a)=>{if(o.viewport){var n,s;let r=o.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),n=r,s=a,n>0&&n<s&&t.preventDefault()}},onResize:()=>{u.current&&o.viewport&&d&&r({content:o.viewport.scrollWidth,viewport:o.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:I(d.paddingLeft),paddingEnd:I(d.paddingRight)}})}})}),E=a.forwardRef((e,n)=>{let{sizes:s,onSizesChange:r,...i}=e,o=f(y,e.__scopeScrollArea),[d,c]=a.useState(),u=a.useRef(null),m=(0,l.useComposedRefs)(n,u,o.onScrollbarYChange);return a.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),(0,t.jsx)(_,{"data-orientation":"vertical",...i,ref:m,sizes:s,style:{top:0,right:"ltr"===o.dir?0:void 0,left:"rtl"===o.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":O(s)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,a)=>{if(o.viewport){var n,s;let r=o.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),n=r,s=a,n>0&&n<s&&t.preventDefault()}},onResize:()=>{u.current&&o.viewport&&d&&r({content:o.viewport.scrollHeight,viewport:o.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:I(d.paddingTop),paddingEnd:I(d.paddingBottom)}})}})}),[T,R]=p(y),_=a.forwardRef((e,s)=>{let{__scopeScrollArea:r,sizes:o,hasThumb:d,onThumbChange:c,onThumbPointerUp:m,onThumbPointerDown:p,onThumbPositionChange:h,onDragScroll:x,onWheelScroll:b,onResize:g,...v}=e,k=f(y,r),[j,w]=a.useState(null),C=(0,l.useComposedRefs)(s,e=>w(e)),S=a.useRef(null),N=a.useRef(""),E=k.viewport,R=o.content-o.viewport,_=(0,i.useCallbackRef)(b),D=(0,i.useCallbackRef)(h),M=V(g,10);function A(e){S.current&&x({x:e.clientX-S.current.left,y:e.clientY-S.current.top})}return a.useEffect(()=>{let e=e=>{let t=e.target;j?.contains(t)&&_(e,R)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[E,j,R,_]),a.useEffect(D,[o,D]),q(j,M),q(k.content,M),(0,t.jsx)(T,{scope:r,scrollbar:j,hasThumb:d,onThumbChange:(0,i.useCallbackRef)(c),onThumbPointerUp:(0,i.useCallbackRef)(m),onThumbPositionChange:D,onThumbPointerDown:(0,i.useCallbackRef)(p),children:(0,t.jsx)(n.Primitive.div,{...v,ref:C,style:{position:"absolute",...v.style},onPointerDown:(0,u.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),S.current=j.getBoundingClientRect(),N.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",k.viewport&&(k.viewport.style.scrollBehavior="auto"),A(e))}),onPointerMove:(0,u.composeEventHandlers)(e.onPointerMove,A),onPointerUp:(0,u.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=N.current,k.viewport&&(k.viewport.style.scrollBehavior=""),S.current=null})})})}),D="ScrollAreaThumb",M=a.forwardRef((e,a)=>{let{forceMount:n,...r}=e,l=R(D,e.__scopeScrollArea);return(0,t.jsx)(s.Presence,{present:n||l.hasThumb,children:(0,t.jsx)(A,{ref:a,...r})})}),A=a.forwardRef((e,s)=>{let{__scopeScrollArea:r,style:i,...o}=e,d=f(D,r),c=R(D,r),{onThumbPositionChange:m}=c,p=(0,l.useComposedRefs)(s,e=>c.onThumbChange(e)),h=a.useRef(void 0),x=V(()=>{h.current&&(h.current(),h.current=void 0)},100);return a.useEffect(()=>{let e=d.viewport;if(e){let t=()=>{x(),h.current||(h.current=K(e,m),m())};return m(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[d.viewport,x,m]),(0,t.jsx)(n.Primitive.div,{"data-state":c.hasThumb?"visible":"hidden",...o,ref:p,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...i},onPointerDownCapture:(0,u.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),a=e.clientX-t.left,n=e.clientY-t.top;c.onThumbPointerDown({x:a,y:n})}),onPointerUp:(0,u.composeEventHandlers)(e.onPointerUp,c.onThumbPointerUp)})});M.displayName=D;var L="ScrollAreaCorner",P=a.forwardRef((e,a)=>{let n=f(L,e.__scopeScrollArea),s=!!(n.scrollbarX&&n.scrollbarY);return"scroll"!==n.type&&s?(0,t.jsx)(B,{...e,ref:a}):null});P.displayName=L;var B=a.forwardRef((e,s)=>{let{__scopeScrollArea:r,...l}=e,i=f(L,r),[o,d]=a.useState(0),[c,u]=a.useState(0),m=!!(o&&c);return q(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),u(e)}),q(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),d(e)}),m?(0,t.jsx)(n.Primitive.div,{...l,ref:s,style:{width:o,height:c,position:"absolute",right:"ltr"===i.dir?0:void 0,left:"rtl"===i.dir?0:void 0,bottom:0,...e.style}}):null});function I(e){return e?parseInt(e,10):0}function F(e,t){let a=e/t;return isNaN(a)?0:a}function O(e){let t=F(e.viewport,e.content),a=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-a)*t,18)}function H(e,t,a="ltr"){let n=O(t),s=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,r=t.scrollbar.size-s,l=t.content-t.viewport,i=(0,c.clamp)(e,"ltr"===a?[0,l]:[-1*l,0]);return U([0,l],[0,r-n])(i)}function U(e,t){return a=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(a-e[0])}}var K=(e,t=()=>{})=>{let a={left:e.scrollLeft,top:e.scrollTop},n=0;return!function s(){let r={left:e.scrollLeft,top:e.scrollTop},l=a.left!==r.left,i=a.top!==r.top;(l||i)&&t(),a=r,n=window.requestAnimationFrame(s)}(),()=>window.cancelAnimationFrame(n)};function V(e,t){let n=(0,i.useCallbackRef)(e),s=a.useRef(0);return a.useEffect(()=>()=>window.clearTimeout(s.current),[]),a.useCallback(()=>{window.clearTimeout(s.current),s.current=window.setTimeout(n,t)},[n,t])}function q(e,t){let a=(0,i.useCallbackRef)(t);(0,d.useLayoutEffect)(()=>{let t=0;if(e){let n=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(a)});return n.observe(e),()=>{window.cancelAnimationFrame(t),n.unobserve(e)}}},[e,a])}var $=e.i(81471);let W=(0,a.forwardRef)(({className:e,children:a,...n},s)=>(0,t.jsxs)(b,{className:(0,$.cn)("relative overflow-hidden",e),...n,children:[(0,t.jsx)(v,{ref:s,className:"h-full w-full rounded-[inherit]",children:a}),(0,t.jsx)(k,{orientation:"vertical",className:"flex h-full w-2.5 touch-none select-none border-l border-l-transparent p-[1px] transition-colors",children:(0,t.jsx)(M,{className:"relative flex-1 rounded-full bg-border"})}),(0,t.jsx)(k,{orientation:"horizontal",className:"flex h-2.5 w-full flex-col touch-none select-none border-t border-t-transparent p-[1px] transition-colors",children:(0,t.jsx)(M,{className:"relative flex-1 rounded-full bg-border"})}),(0,t.jsx)(P,{})]}));W.displayName="ScrollArea",e.s(["ScrollArea",0,W],13707)},88175,e=>{"use strict";let t=(0,e.i(77379).default)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);e.s(["Download",0,t],88175)},76610,e=>{"use strict";let t=(0,e.i(77379).default)("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);e.s(["KeyRound",0,t],76610)},18518,e=>{"use strict";let t=(0,e.i(77379).default)("ClipboardCopy",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]);e.s(["ClipboardCopy",0,t],18518)},86923,e=>{"use strict";var t=e.i(54710),a=e.i(34416),n=e.i(95486),s=e.i(72740),r=e.i(21682),l=e.i(7663),i=e.i(75750),o=e.i(74490),d=e.i(79634),c=e.i(48467),u=e.i(20014),m=e.i(8652),p=e.i(10427),h=e.i(65268),x=e.i(24756),f=e.i(87040),b=e.i(76176),g=e.i(81471),v=e.i(99758),y=e.i(59134),k=e.i(1718),j=e.i(27102),w=e.i(13707),C=e.i(57415),S=e.i(14260);function N({value:e,onChange:s,disabled:r,preferredTier:l,placeholder:i="Select model"}){let o,[p,x]=(0,a.useState)(!1),[f,b]=(0,a.useState)(""),[v,R]=(0,a.useState)(l??"all"),[_,D]=(0,a.useState)(!1),[M,A]=(0,a.useState)(!0),{data:L,isLoading:P,error:B}=(0,S.useQuery)({queryKey:["opencode-live-models"],queryFn:()=>h.api.get("/backends/opencode/live-models"),enabled:p,staleTime:3e5}),I=(o=(0,n.useQueryClient)(),(0,C.useMutation)({mutationFn:()=>h.api.get("/backends/opencode/live-models?refresh=1"),onSuccess:e=>{o.setQueryData(["opencode-live-models"],e)}})),F=(0,a.useMemo)(()=>{if(!L)return[];let e=f.trim().toLowerCase();return L.providers.map(t=>({...t,models:t.models.filter(t=>(!_||!!t.isFree)&&(!M||!!t.supportsToolUse)&&("all"===v||t.tier===v)&&(!e||t.modelId.toLowerCase().includes(e)||t.shortId.toLowerCase().includes(e)||t.name.toLowerCase().includes(e)||t.family.toLowerCase().includes(e)))})).filter(e=>e.models.length>0)},[L,f,v,_,M]),O=F.reduce((e,t)=>e+t.models.length,0),H=L?.providers.reduce((e,t)=>e+t.models.length,0)??0;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.Button,{type:"button",variant:"outline",disabled:r,onClick:()=>x(!0),className:"w-full justify-start truncate font-mono text-xs",children:e||(0,t.jsx)("span",{className:"text-muted-foreground italic",children:i})}),(0,t.jsx)(j.Dialog,{open:p,onOpenChange:x,children:(0,t.jsxs)(j.DialogContent,{className:"max-w-3xl",children:[(0,t.jsx)(j.DialogTitle,{children:"OpenCode model"}),(0,t.jsxs)(j.DialogDescription,{children:["Live catalogue from ",(0,t.jsx)("code",{children:"client.config.providers()"})," — every model your opencode server can route to. Selecting writes the full ",(0,t.jsx)("code",{children:"provider/model"})," composite."]}),(0,t.jsxs)("div",{className:"mt-3 flex items-center gap-2",children:[(0,t.jsxs)("div",{className:"relative flex-1",children:[(0,t.jsx)(k.Search,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),(0,t.jsx)(m.Input,{autoFocus:!0,placeholder:"Search by id, name, or family (e.g. gpt-oss, haiku, qwen)",value:f,onChange:e=>b(e.target.value),className:"pl-8"})]}),(0,t.jsx)(u.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>I.mutate(),disabled:I.isPending,title:"Re-enumerate after opencode auth changes",children:(0,t.jsx)(y.RefreshCw,{className:(0,g.cn)("h-3.5 w-3.5",I.isPending&&"animate-spin")})})]}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-2 text-xs",children:[(0,t.jsx)(E,{active:"all"===v,onClick:()=>R("all"),label:"All tiers"}),["lite","medium","high"].map(e=>(0,t.jsx)(E,{active:v===e,onClick:()=>R(e),label:e},e)),(0,t.jsx)("div",{className:"mx-1 h-4 w-px bg-border"}),(0,t.jsx)(E,{active:M,onClick:()=>A(e=>!e),label:"tool-use only"}),(0,t.jsx)(E,{active:_,onClick:()=>D(e=>!e),label:"free only"}),(0,t.jsxs)("span",{className:"ml-auto text-muted-foreground",children:[O,"/",H," models"]})]}),P&&(0,t.jsx)("p",{className:"mt-4 text-sm text-muted-foreground",children:"Loading…"}),B&&(0,t.jsxs)(d.Alert,{variant:"warning",className:"mt-3 text-xs",children:["Failed to enumerate models: ",B instanceof Error?B.message:"unknown error",". Confirm the daemon is running and the opencode server has at least one provider configured."]}),L&&(0,t.jsxs)(w.ScrollArea,{className:"mt-3 h-[420px] rounded-md border border-border",children:[0===F.length&&(0,t.jsx)("div",{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:"No models match these filters."}),F.map(a=>(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"sticky top-0 z-10 flex items-center gap-2 border-b border-border bg-muted/95 px-3 py-1.5 backdrop-blur",children:[(0,t.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider text-foreground",children:a.name}),(0,t.jsx)(c.Badge,{variant:"gray",className:"text-[10px]",children:a.source}),(0,t.jsx)("span",{className:"ml-auto text-xs text-muted-foreground",children:a.models.length})]}),a.models.map(a=>(0,t.jsx)(T,{model:a,selected:a.modelId===e,onSelect:()=>{s(a.modelId),x(!1)}},a.modelId))]},a.id))]}),L&&(0,t.jsxs)("p",{className:"mt-2 text-[11px] text-muted-foreground",children:[L.cached?"Cached":"Fresh"," as of ",new Date(L.fetchedAt).toLocaleTimeString(),". Add providers via ",(0,t.jsx)("code",{children:"opencode auth login"}),", then click Refresh."]})]})})]})}function E({active:e,onClick:a,label:n}){return(0,t.jsx)("button",{type:"button",onClick:a,className:(0,g.cn)("rounded-full border px-2 py-0.5 transition-colors",e?"border-foreground bg-foreground text-background":"border-border bg-background text-muted-foreground hover:bg-muted"),children:n})}function T({model:e,selected:a,onSelect:n}){return(0,t.jsxs)("button",{type:"button",onClick:n,className:(0,g.cn)("flex w-full items-center gap-3 border-b border-border/40 px-3 py-2 text-left transition-colors hover:bg-muted/50",a&&"bg-accent/40"),children:[(0,t.jsx)(v.Check,{className:(0,g.cn)("h-3.5 w-3.5 shrink-0",a?"text-foreground":"text-transparent")}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-sm font-medium text-foreground",children:e.name}),(0,t.jsx)("div",{className:"truncate font-mono text-[11px] text-muted-foreground",children:e.modelId})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-1.5",children:[e.isFree&&(0,t.jsx)(c.Badge,{variant:"green",className:"text-[10px]",children:"free"}),!e.supportsToolUse&&(0,t.jsx)(c.Badge,{variant:"gray",className:"text-[10px] text-muted-foreground",children:"no tools"}),(0,t.jsx)(c.Badge,{variant:"gray",className:"text-[10px]",children:e.tier}),!e.isFree&&null!==e.usdPer1kIn&&(0,t.jsxs)("span",{className:"font-mono text-[10px] tabular-nums text-muted-foreground",children:["$",e.usdPer1kIn.toFixed(4),"/$",e.usdPer1kOut?.toFixed(4)??"?"]})]})]})}let R={"message.dm":"DM response quality may degrade. Sonnet is recommended for important conversations.","message.mention":"Mention response quality may degrade. Sonnet is recommended.","dashboard.chat":"Dashboard chat response quality may degrade. Sonnet is recommended.","routine.morning_routine":"Long-form generation may produce shorter/rougher output with Haiku. Sonnet is recommended.","routine.evening_review":"Long-form generation may produce shorter/rougher output with Haiku. Sonnet is recommended.","routine.weekly_review":"Weekly reviews require reasoning depth. Haiku may produce less coherent output.","routine.monthly_review":"Monthly reviews require reasoning depth. Haiku may produce less coherent output.","agent.task":"Sonnet is recommended for complex task execution. Haiku may make rougher tool-use decisions."};function _(e){return!(e&&e.mainModel.trim()&&(!e.fallbackBackend||e.fallbackModel?.trim()))}function D(e,t,a){let n,s=(n=e.filter(e=>e.tier===t)).length>0?n:e;return a&&s.some(e=>e.modelId===a)?a:s[0]?.modelId??e[0]?.modelId??""}function M(e,t){return t?e.find(e=>e.modelId===t)?.label??(0,b.formatModelName)(t):"Disabled"}e.s(["BackendSettingsSection",0,function({onToast:e,sections:v=["processes"],processKeys:y,title:k="Process Routing",description:j}){let w=v.includes("processes"),C=(0,n.useQueryClient)(),{data:S,error:E,isLoading:T}=(0,x.useBackends)({enabled:w}),{data:A,error:L,isLoading:P}=(0,f.useProcessConfig)({enabled:w}),[B,I]=(0,a.useState)(null),[F,O]=(0,a.useState)(null),[H,U]=(0,a.useState)(!1),K=(0,a.useCallback)(async()=>{await Promise.all([C.invalidateQueries({queryKey:["backends"]}),C.invalidateQueries({queryKey:["process-config"]}),C.invalidateQueries({queryKey:["cost"]}),C.invalidateQueries({queryKey:["metrics"]})])},[C]),V=w?E??L:null;if(V){let e=V instanceof h.ApiError&&503===V.status;return(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{children:(0,t.jsx)(o.CardTitle,{children:"Process Routing"})}),(0,t.jsx)("p",{className:"max-w-prose text-sm text-muted-foreground",children:e?"Multi-backend tables are not available yet. Run migrations first.":V instanceof Error?V.message:"Failed to load process routing."})]})}if(!w)return null;if(T||!S||P||!A)return(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{children:(0,t.jsx)(o.CardTitle,{children:"Process Routing"})}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading process routing…"})]});let q=new Map(S.backends.map(e=>[e.id,e])),$=S.backends.filter(e=>e.enabled),W=(y?A.configs.filter(e=>y.includes(e.processKey)):A.configs).reduce((e,t)=>{let a=(0,b.getProcessGroup)(t.processKey),n=e.find(e=>e.group===a);return n?n.configs.push(t):e.push({group:a,configs:[t]}),e},[]);async function z(){if(F){U(!0);try{let t=await h.api.put(`/process-config/${F.processKey}`,{mainBackend:F.mainBackend,mainModel:F.mainModel,fallbackBackend:F.fallbackBackend,fallbackModel:F.fallbackModel,maxTurns:F.maxTurns,maxBudgetUsd:F.maxBudgetUsd});await K(),t.warnings?.length?e("warning",`Saved — ${t.warnings.map(e=>e.message).join("; ")}`):e("success",`${(0,b.getProcessLabel)(F.processKey)} updated`),I(null),O(null)}catch(t){e("error",function(e){if(!(e instanceof h.ApiError))return e instanceof Error?e.message:"Request failed";let t=e.body,a="string"==typeof t?.error?t.error:null,n=Array.isArray(t?.processKeys)?t.processKeys.filter(e=>"string"==typeof e):[];switch(a){case"backend_in_use":return`This backend is still used by: ${n.join(", ")}. Reassign those processes first.`;case"default_backend":return"Reassign the default backend before disabling it.";case"main_backend_disabled":return"The selected main backend is disabled. Enable it first.";case"fallback_backend_disabled":return"The selected fallback backend is disabled. Enable it first.";case"fallback_same_as_main":return"Fallback backend must differ from the main backend.";case"fallback_incomplete":return"Fallback backend and fallback model must either both be set or both be disabled.";case"invalid_main_model":return"The selected main model does not belong to the chosen backend.";case"invalid_fallback_model":return"The selected fallback model does not belong to the chosen fallback backend.";case"multi_backend_unavailable":return"Multi-backend tables are not available yet. Run migrations first.";default:return e.message}}(t))}finally{U(!1)}}}return(0,t.jsxs)(o.Card,{children:[(0,t.jsx)(o.CardHeader,{className:"items-start",children:(0,t.jsxs)("div",{children:[(0,t.jsx)(o.CardTitle,{children:k}),(0,t.jsx)("p",{className:"mt-1 max-w-3xl text-sm text-muted-foreground",children:j??(0,t.jsxs)(t.Fragment,{children:["One row per process (event-handling pipeline). Each row shows the resolved main backend and model, an optional fallback, and the per-run limits. Click ",(0,t.jsx)("em",{children:"Edit"})," to override any of them. Fallback kicks in only on ",(0,t.jsx)("em",{children:"decisive"})," main-backend failures (quota exhausted, auth broken, model unavailable, timeout — not ordinary rate limiting)."," ","“Default” badges mean the value is inherited from the main backend’s preset defaults above."]})})]})}),(0,t.jsx)("div",{className:"space-y-3",children:W.map(e=>(0,t.jsxs)("div",{className:"space-y-3",children:[!y&&(0,t.jsx)("h3",{className:"px-1 text-xs font-semibold uppercase text-muted-foreground",children:e.group}),e.configs.map(e=>{var a;let n,o=q.get(e.mainBackend),h=e.fallbackBackend?q.get(e.fallbackBackend):null,x=B===e.processKey&&F,f=x?q.get(F.mainBackend)?.models??[]:[],v=x&&F.fallbackBackend?q.get(F.fallbackBackend)?.models??[]:[];return(0,t.jsxs)("div",{className:"rounded-xl border border-border p-4",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",children:[(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsx)("p",{className:"text-base font-medium text-foreground",children:(0,b.getProcessLabel)(e.processKey)}),(0,t.jsxs)(c.Badge,{variant:"high"===e.defaultTier?"purple":"medium"===e.defaultTier?"blue":"default",children:["Default ",e.defaultTier]})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:e.processKey}),(n=function(e,t,a){if("routine.morning_routine"===e&&"claude"===t){let e=a.find(e=>"high"===e.tier&&e.available&&!e.deprecated);return e?`Defaults to Sonnet to preserve Claude quota — ${e.label} depletes the 5h window much faster. If you want better instruction-following or more thorough day-plan output, switch Main Model to ${e.label}.`:null}return null}(e.processKey,e.mainBackend,o?.models??[]))?(0,t.jsx)(d.Alert,{variant:"info",className:"mt-2 text-xs",children:n}):null]}),(0,t.jsxs)("div",{className:"grid gap-3 text-sm text-muted-foreground md:grid-cols-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"Main"}),(0,t.jsx)("p",{children:o?(0,b.getBackendLabel)(o.id):e.mainBackend}),(0,t.jsx)("p",{children:o?M(o.models,e.mainModel):e.mainModel})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"Fallback"}),h&&e.fallbackModel?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{children:(0,b.getBackendLabel)(h.id)}),(0,t.jsx)("p",{children:M(h.models,e.fallbackModel)})]}):(0,t.jsx)("p",{children:"Disabled"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"Limits"}),(0,t.jsxs)("p",{children:[e.maxTurns," turns"]}),(0,t.jsxs)("p",{children:[(0,g.formatCurrency)(e.maxBudgetUsd)," soft budget"]})]})]})]}),(0,t.jsxs)(u.Button,{variant:"outline",onClick:()=>{I(e.processKey),O({processKey:e.processKey,defaultTier:e.defaultTier,mainBackend:e.mainBackend,mainModel:e.mainModel,fallbackBackend:e.fallbackBackend,fallbackModel:e.fallbackModel,maxTurns:e.maxTurns,maxBudgetUsd:e.maxBudgetUsd})},children:[(0,t.jsx)(r.Pencil,{className:"h-3.5 w-3.5"}),"Edit"]})]}),x&&F&&(0,t.jsxs)("div",{className:"mt-4 grid gap-4 rounded-xl border border-border/80 bg-muted/30 p-4 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Main backend"}),(0,t.jsxs)(p.Select,{value:F.mainBackend,onValueChange:e=>(function(e){let t=q.get(e);if(!t||!F)return;let a=F.fallbackBackend===e,n="opencode"===e?t.models.some(e=>e.modelId===F.mainModel)?F.mainModel:"":D(t.models,F.defaultTier,F.mainModel);O({...F,mainBackend:e,mainModel:n,fallbackBackend:a?null:F.fallbackBackend,fallbackModel:a?null:F.fallbackModel})})(e),children:[(0,t.jsx)(p.SelectTrigger,{children:(0,t.jsx)(p.SelectValue,{placeholder:"Select backend"})}),(0,t.jsx)(p.SelectContent,{children:S.backends.map(e=>{let a=(0,b.isUiPreviewOnlyBackend)(e.id);return(0,t.jsxs)(p.SelectItem,{value:e.id,disabled:!e.enabled||a,children:[(0,b.getBackendLabel)(e.id),a?b.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},e.id)})})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Main model"}),"opencode"===F.mainBackend?(0,t.jsx)(N,{value:F.mainModel,onChange:e=>O(t=>t?{...t,mainModel:e}:t),preferredTier:F.defaultTier}):(0,t.jsxs)(p.Select,{value:F.mainModel,onValueChange:e=>O(t=>t?{...t,mainModel:e}:t),children:[(0,t.jsx)(p.SelectTrigger,{children:(0,t.jsx)(p.SelectValue,{placeholder:"Select model"})}),(0,t.jsx)(p.SelectContent,{children:f.map(e=>(0,t.jsx)(p.SelectItem,{value:e.modelId,children:e.label},e.modelId))})]}),!!(a=F.mainModel)&&a.toLowerCase().includes("haiku")&&R[F.processKey]&&(0,t.jsx)(d.Alert,{variant:"warning",className:"mt-2 text-xs",children:R[F.processKey]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Fallback backend"}),(0,t.jsxs)(p.Select,{value:F.fallbackBackend??"__none__",onValueChange:e=>(function(e){if(!F)return;if(!e)return void O({...F,fallbackBackend:null,fallbackModel:null});let t=q.get(e);if(!t)return;let a="opencode"===e?F.fallbackModel&&t.models.some(e=>e.modelId===F.fallbackModel)?F.fallbackModel:"":D(t.models,F.defaultTier,F.fallbackModel);O({...F,fallbackBackend:e,fallbackModel:a})})("__none__"===e?null:e),children:[(0,t.jsx)(p.SelectTrigger,{children:(0,t.jsx)(p.SelectValue,{placeholder:"Select backend"})}),(0,t.jsxs)(p.SelectContent,{children:[(0,t.jsx)(p.SelectItem,{value:"__none__",children:"Disabled"}),S.backends.map(e=>{let a=(0,b.isUiPreviewOnlyBackend)(e.id);return(0,t.jsxs)(p.SelectItem,{value:e.id,disabled:!e.enabled||e.id===F.mainBackend||a,children:[(0,b.getBackendLabel)(e.id),a?b.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},e.id)})]})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Fallback model"}),"opencode"===F.fallbackBackend?(0,t.jsx)(N,{value:F.fallbackModel??"",onChange:e=>O(t=>t?{...t,fallbackModel:e}:t),preferredTier:F.defaultTier,placeholder:"Select fallback model"}):(0,t.jsxs)(p.Select,{disabled:!F.fallbackBackend,value:F.fallbackModel??"__none__",onValueChange:e=>O(t=>t?{...t,fallbackModel:"__none__"===e?null:e}:t),children:[(0,t.jsx)(p.SelectTrigger,{children:(0,t.jsx)(p.SelectValue,{placeholder:"Select model"})}),(0,t.jsxs)(p.SelectContent,{children:[(0,t.jsx)(p.SelectItem,{value:"__none__",children:"Disabled"}),v.map(e=>(0,t.jsx)(p.SelectItem,{value:e.modelId,children:e.label},e.modelId))]})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Max turns"}),(0,t.jsx)(m.Input,{type:"number",min:1,max:1e3,value:F.maxTurns,onChange:e=>O(t=>t?{...t,maxTurns:Number(e.target.value)||1}:t)}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Hard cap on agent turns per run for this process. One turn = one model response (possibly with tool calls). When reached, the run stops mid-task — raise this if you see ",(0,t.jsx)("code",{children:"max_turns_reached"})," in the audit log."]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Soft budget (USD)"}),(0,t.jsx)(m.Input,{type:"number",min:0,max:1e4,step:"0.01",value:F.maxBudgetUsd,onChange:e=>O(t=>t?{...t,maxBudgetUsd:Number(e.target.value)||0}:t)}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Per-run spend cap in USD. “Soft” because the check happens between turns, so a single long turn can overshoot slightly. Runs that exceed the cap are aborted. Set to 0 to disable and rely only on the turn cap."})]}),(0,t.jsxs)("div",{className:"md:col-span-2 flex items-center justify-between gap-3",children:[(0,t.jsxs)("p",{className:"max-w-xl text-xs text-muted-foreground",children:[(0,t.jsx)("strong",{children:"Fallback backend/model"})," is consulted only on decisive failures: quota exhaustion, auth breakage, model refusal, timeout, or unrecoverable provider errors. Transient 5xx and ordinary rate limits are retried on the main backend first."]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsxs)(u.Button,{variant:"outline",onClick:()=>{I(null),O(null)},children:[(0,t.jsx)(i.XCircle,{className:"h-4 w-4"}),"Cancel"]}),(0,t.jsxs)(u.Button,{onClick:z,disabled:H||_(F),title:_(F)?"Pick a main model first — opencode requires an explicit selection from the live catalogue.":void 0,children:[H?(0,t.jsx)(s.Loader2,{className:"h-4 w-4 animate-spin"}):(0,t.jsx)(l.Save,{className:"h-4 w-4"}),"Save Process"]})]})]})]})]},e.processKey)})]},e.group))}),$.length<2&&(0,t.jsx)(d.Alert,{variant:"warning",className:"mt-4 rounded-xl px-4 py-3 text-sm",children:"Enable another backend if you want fallback routing to be available for any process."})]})}],86923)},93772,e=>{"use strict";var t=e.i(54710),a=e.i(34416),n=e.i(96263),s=e.i(88423),r=e.i(13451),l=e.i(36413),i=e.i(86923),o=e.i(72740),d=e.i(95486);e.i(18446);var c=e.i(38082),u=e.i(9897),m=e.i(20014),p=e.i(10427),h=e.i(65268),x=e.i(76176),f=e.i(24756),b=e.i(17975),g=e.i(16995),v=e.i(85462);let y=(0,c.getBackendIds)();function k({onToast:e}){let{data:n,refetch:r}=(0,f.useBackends)(),{data:l}=(0,s.useConfig)(),i=(0,d.useQueryClient)(),[c,j]=(0,a.useState)(null),[w,C]=(0,a.useState)({claude:{status:"idle"},codex:{status:"idle"},gemini:{status:"idle"},opencode:{status:"idle"}}),[S,N]=(0,a.useState)(null),[E,T]=(0,a.useState)(!1);(0,a.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await h.api.get("/backends/advisor");if(e)return;N({enabled:t.enabled,model:t.model})}catch{e||N({enabled:!1,model:null})}})(),()=>{e=!0}},[]);let R=(0,a.useCallback)(async e=>{C(t=>({...t,[e]:{status:"checking"}}));try{let t=await h.api.post(`/backends/${e}/verify-install`);if(await r(),t.ok)C(a=>({...a,[e]:{status:"ok",version:t.version}}));else{let a=t.cliInstalled?t.timedOut?`${t.cliCommand} --version timed out`:t.stderr.trim()||t.stdout.trim()||"CLI failed to run":`${t.cliCommand} not found on PATH`;C(t=>({...t,[e]:{status:"error",error:a}}))}}catch(t){C(a=>({...a,[e]:{status:"error",error:t instanceof Error?t.message:"Verify install failed"}}))}},[r]),_=(0,a.useCallback)(async t=>{j(t);try{let a=await h.api.put("/backends/main",{backendId:t});await r(),await i.invalidateQueries({queryKey:["backends"]}),await i.invalidateQueries({queryKey:["integrations"]}),await i.invalidateQueries({queryKey:["health"]}),await i.invalidateQueries({queryKey:["agent-actions","native_unbound"]});let n=a?.nativeUnbound??[];if(n.length>0){let a=n.map(e=>e.key).join(", ");e("warning",`Main backend set to ${x.BACKEND_PROVIDER_LABELS[t]}. ${n.length} native integration${1===n.length?"":"s"} disabled (${a}). Re-configure on /connections.`)}else e("success",`Main backend set to ${x.BACKEND_PROVIDER_LABELS[t]}.`)}catch(t){e("error",t instanceof h.ApiError||t instanceof Error?t.message:"Failed to set main backend")}finally{j(null)}},[r,i,e]),D=(0,a.useCallback)(async t=>{let a=n?.backends.find(e=>e.id===t);if(!a)return;let s=!a.enabled;j(t);try{await h.api.post(`/backends/${t}/${s?"enable":"disable"}`),await r(),e("success",`${x.BACKEND_PROVIDER_LABELS[t]} ${s?"enabled":"disabled"}.`)}catch(t){e("error",t instanceof Error?t.message:"Failed to update backend")}finally{j(null)}},[n,r,e]),M=(0,a.useCallback)(async t=>{let a=n?.backends.find(e=>e.id===t);if(!a)return;let s=!a.webSearchEnabled;j(t);try{await h.api.post(`/backends/${t}/web-search`,{enabled:s}),await r()}catch(t){e("error",t instanceof Error?t.message:"Failed to update web search")}finally{j(null)}},[n,r,e]),A=(0,a.useCallback)(async t=>{T(!0);try{await h.api.put("/backends/advisor",{enabled:t.enabled,model:t.model}),N(t),e("success",`Advisor ${t.enabled?"enabled":"disabled"}.`)}catch(t){e("error",t instanceof Error?t.message:"Failed to save advisor")}finally{T(!1)}},[e]),L=n?.defaultBackend??null;return(0,t.jsxs)("section",{className:"space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"Backends"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:"Install each backend’s CLI, verify authentication, and pick the main backend. The main backend runs every configurable process by default; per-process overrides live in the Process Routing card below."})]}),(0,t.jsx)(v.SubscriptionAuthWarning,{}),(0,t.jsx)("div",{className:"space-y-3",children:y.map(a=>{let s=n?.backends.find(e=>e.id===a),i=L===a,o=(0,x.isBackendSelectionDisabled)(a),d=l?l[`${a}ExecutionPermissionMode`]:null;return(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(b.BackendCard,{backendId:a,mode:"settings",isMain:i,authStatus:s?.authStatus??"unknown",authStatusDetail:s?.authDetail??null,authFirstExpiredAt:s?.authFirstExpiredAt??null,authLastSuccessAt:s?.authLastSuccessAt??null,authNotificationCount:s?.authNotificationCount??0,cliInstalled:s?.cliInstalled??!0,enabled:s?.enabled??!1,webSearchEnabled:s?.webSearchEnabled??!1,webSearchSupported:s?.webSearchSupported??!1,permissionMode:d,busy:c===a,controlsDisabled:o,disabledReason:o?x.UI_PREVIEW_ONLY_REASON:void 0,installCheck:w[a],onCliInstalled:()=>{r()},onVerifyInstall:()=>{R(a)},onToggleEnable:()=>{D(a)},onToggleWebSearch:()=>{M(a)}}),!o&&(0,t.jsx)(g.BackendApiKeyPanel,{backendId:a,onToast:e}),!i&&(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsxs)(m.Button,{size:"sm",variant:"outline",disabled:o||null!==c||!s?.cliInstalled,onClick:()=>{_(a)},children:["Set ",x.BACKEND_PROVIDER_SHORT[a]," as main"]})})]},a)})}),S&&(0,t.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4 shadow-sm",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:"Advisor (Claude Agent SDK)"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"When enabled, the Claude Agent SDK’s server-side advisor tool can offer a second-opinion model on long turns. Off by default; turn it on only when the extra cost is worth it."})]}),(0,t.jsxs)(m.Button,{size:"sm",variant:S.enabled?"outline":"default",disabled:E,onClick:()=>{A(S.enabled?{enabled:!1,model:null}:{enabled:!0,model:S.model??u.ADVISOR_ALLOWED_MODELS[0]})},children:[E&&(0,t.jsx)(o.Loader2,{className:"mr-2 h-3.5 w-3.5 animate-spin"}),S.enabled?"Disable advisor":"Enable advisor"]})]}),S.enabled&&(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:"Model:"}),(0,t.jsxs)(p.Select,{value:S.model??u.ADVISOR_ALLOWED_MODELS[0],onValueChange:e=>{(0,u.isAdvisorModel)(e)&&A({enabled:!0,model:e})},disabled:E,children:[(0,t.jsx)(p.SelectTrigger,{className:"h-8 w-auto min-w-[12rem] text-xs",children:(0,t.jsx)(p.SelectValue,{})}),(0,t.jsx)(p.SelectContent,{children:u.ADVISOR_ALLOWED_MODELS.map(e=>(0,t.jsx)(p.SelectItem,{value:e,children:e},e))})]})]})]})]})}var j=e.i(81187),w=e.i(16047),C=e.i(2745),S=e.i(78406),N=e.i(74490),E=e.i(49681),T=e.i(70986),R=e.i(81471),_=e.i(36598);function D(e){let t=(0,c.getBackendIds)().map(t=>(0,_.internalToUi)(e[`${t}ExecutionPermissionMode`])),a=t[0]??"safe";return t.every(e=>e===a)?a:null}let M=(0,c.getBackendIds)();function A({onToast:e}){let{data:n}=(0,s.useConfig)(),[r,l]=(0,a.useState)(0);return n?(0,t.jsx)(L,{config:n,onToast:e,onApplied:()=>l(e=>e+1)},r):(0,t.jsx)(N.Card,{children:(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,t.jsx)(o.Loader2,{className:"h-4 w-4 animate-spin"})," Loading…"]})})}function L({config:e,onToast:n,onApplied:s}){let r=(0,d.useQueryClient)(),l=(0,a.useState)(()=>{let t;return{topLevel:t=D(e),overrides:null!==D(e)?{..._.EMPTY_OVERRIDES}:Object.fromEntries((0,c.getBackendIds)().map(t=>[t,(0,_.internalToUi)(e[`${t}ExecutionPermissionMode`])])),forceAccordionOpen:null===t}})[0],[i,u]=(0,a.useState)(l.topLevel),[p,f]=(0,a.useState)(l.overrides),[b,g]=(0,a.useState)(l.forceAccordionOpen),[v,y]=(0,a.useState)(!1),k=null===i||(0,_.hasDivergentOverride)(i,p);async function j(){let e=(0,_.buildSetupModePayload)(i,p);if(null!==e){y(!0);try{await h.api.post("/setup/mode",e),await r.invalidateQueries({queryKey:["config"]}),n("success","Execution mode updated"),s()}catch(e){e instanceof h.ApiError||e instanceof Error?n("error",e.message):n("error","Failed to update execution mode")}finally{y(!1)}}}return(0,t.jsxs)(N.Card,{id:"execution-mode",children:[(0,t.jsx)(N.CardHeader,{className:"px-0 pt-0",children:(0,t.jsxs)(N.CardTitle,{className:"flex items-center gap-1.5 text-base",children:[(0,t.jsx)("span",{children:"Execution Mode"}),(0,t.jsx)(E.DocsHelpInline,{docId:"concepts/safety-and-execution",label:"Execution Mode"})]})}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Pick how freely the agent may run shell, file, and tool commands on your machine. Dangerous operations — recursive deletes, privilege escalation, and secret-file reads — remain blocked in both modes."}),(0,t.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,t.jsx)(P,{icon:(0,t.jsx)(C.ShieldCheck,{className:"h-5 w-5"}),title:"Safe",badge:"Recommended",selected:"safe"===i,onSelect:()=>u("safe"),children:"Agent runs with strict permission checks and confirms before any side-effectful action. Pick this when you want the agent to stay narrow."}),(0,t.jsxs)(P,{icon:(0,t.jsx)(S.Unlock,{className:"h-5 w-5"}),title:"Allow",selected:"allow"===i,onSelect:()=>u("allow"),children:["Agent runs without the daemon’s per-call permission prompts, using the skills, plugins, and MCP servers installed in your CLI harness. Faster and more capable, but the harness — not the daemon — decides which tools are reachable.",(0,t.jsx)(I,{})]}),(0,t.jsxs)(T.Collapsible,{open:b,onOpenChange:g,children:[(0,t.jsx)(T.CollapsibleTrigger,{asChild:!0,children:(0,t.jsxs)("button",{type:"button",className:"flex w-full items-center justify-between rounded-md border border-border bg-muted/20 px-3 py-2 text-left text-xs text-muted-foreground hover:bg-muted/40",children:[(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)(w.ChevronDown,{className:(0,R.cn)("h-3.5 w-3.5 transition-transform",b&&"rotate-180")}),"Advanced — per-backend overrides",k&&(0,t.jsx)("span",{className:"rounded bg-amber-500/15 px-1.5 py-0.5 text-[10px] font-medium text-amber-700 dark:text-amber-300",children:"mixed"})]}),(0,t.jsx)("span",{className:"text-[11px]",children:b?"Hide":"Show"})]})}),(0,t.jsx)(T.CollapsibleContent,{className:"mt-2 space-y-2 rounded-md border border-border bg-background p-3",children:M.map(e=>(0,t.jsx)(B,{backend:e,topLevel:i,override:p[e]??null,disabled:(0,x.isUiPreviewOnlyBackend)(e),onChange:t=>f(a=>({...a,[e]:t}))},e))})]}),(0,t.jsx)("div",{className:"flex justify-end pt-2",children:(0,t.jsx)(m.Button,{onClick:j,disabled:!(0,_.canApply)(i,p)||v,children:v?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),"Saving…"]}):"Apply"})})]})]})}function P({icon:e,title:a,badge:n,selected:s,onSelect:r,children:l}){return(0,t.jsxs)("button",{type:"button",onClick:r,className:(0,R.cn)("block w-full rounded-lg border p-3 text-left transition-colors",s?"border-primary bg-primary/5 shadow-sm":"border-border hover:border-foreground/30"),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 font-semibold text-foreground",children:[e,a,n&&(0,t.jsx)("span",{className:"rounded bg-primary/15 px-1.5 py-0.5 text-[10px] font-medium text-primary",children:n})]}),(0,t.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:l})]})}function B({backend:e,topLevel:a,override:n,disabled:s=!1,onChange:r}){let l=n??a,i=null===l?"pick a top-level mode first":`runs as: ${l}`;return(0,t.jsxs)("div",{className:(0,R.cn)("rounded-md border border-border/60 px-3 py-2",s&&"opacity-60"),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsxs)("div",{className:"text-sm",children:[(0,t.jsxs)("div",{className:"font-medium text-foreground",children:[x.BACKEND_PROVIDER_LABELS[e],(0,t.jsxs)("span",{className:"ml-1 text-xs text-muted-foreground",children:["(",x.BACKEND_PROVIDER_SHORT[e],")"]}),s&&(0,t.jsx)("span",{className:"ml-2 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground",children:"Coming soon"})]}),(0,t.jsx)("div",{className:"text-[11px] text-muted-foreground",children:i})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1 text-xs",children:[(0,t.jsx)(F,{active:null===n,label:"Follow",disabled:s,onClick:()=>r(null)}),(0,t.jsx)(F,{active:"safe"===n,label:"Safe",disabled:s,onClick:()=>r("safe")}),(0,t.jsx)(F,{active:"allow"===n,label:"Allow",disabled:s,onClick:()=>r("allow")})]})]}),"codex"===e&&"allow"===l&&(0,t.jsxs)("p",{className:"mt-2 flex items-start gap-1.5 text-[11px] text-amber-700 dark:text-amber-300",children:[(0,t.jsx)(j.AlertTriangle,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,t.jsx)("span",{children:"Codex Allow disables the daemon's absolute-block layer (sandbox-off). See the Allow card above."})]})]})}function I(){return(0,t.jsxs)("span",{className:"mt-3 flex items-start gap-2 rounded-md border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs text-amber-900 dark:text-amber-200",children:[(0,t.jsx)(j.AlertTriangle,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),(0,t.jsxs)("span",{className:"space-y-1",children:[(0,t.jsxs)("span",{className:"block",children:[(0,t.jsx)("span",{className:"font-semibold",children:"Codex caveat."})," Codex CLI runs Allow mode under"," ",(0,t.jsx)("code",{className:"rounded bg-black/10 px-1 font-mono text-[11px] dark:bg-white/10",children:"--dangerously-bypass-approvals-and-sandbox"}),", a binary sandbox-off switch. Codex has no per-command hook layer for the daemon to attach the absolute-block patterns to, so destructive shell commands (",(0,t.jsx)("code",{className:"rounded bg-black/10 px-1 font-mono text-[11px] dark:bg-white/10",children:"rm -rf"}),","," ",(0,t.jsx)("code",{className:"rounded bg-black/10 px-1 font-mono text-[11px] dark:bg-white/10",children:"eval $(curl …)"}),", secret-file reads) are ",(0,t.jsx)("span",{className:"font-semibold",children:"not"})," ","pre-blocked for Codex in Allow mode the way they are for Claude Code and Gemini CLI."]}),(0,t.jsx)("span",{className:"block",children:"Use the Advanced section below to keep Codex on Safe (its workspace-write sandbox still applies) unless you accept this gap."})]})]})}function F({active:e,label:a,disabled:n=!1,onClick:s}){return(0,t.jsx)("button",{type:"button",onClick:s,disabled:n,className:(0,R.cn)("rounded-md border px-2 py-1 transition-colors",e?"border-primary bg-primary/10 text-foreground":"border-border text-muted-foreground hover:border-foreground/30",n&&"cursor-not-allowed opacity-60 hover:border-border"),children:a})}var O=e.i(39982),H=e.i(88),U=e.i(94328);function K({title:e,defaultOpen:s=!1,children:r}){let[l,i]=(0,a.useState)(s);return(0,t.jsxs)(T.Collapsible,{open:l,onOpenChange:i,children:[(0,t.jsx)(T.CollapsibleTrigger,{asChild:!0,children:(0,t.jsxs)("button",{className:"flex w-full items-center gap-2 rounded-lg px-1 py-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground hover:bg-muted/50 hover:text-foreground transition-colors",children:[(0,t.jsx)(n.ChevronRight,{className:(0,R.cn)("h-3.5 w-3.5 shrink-0 transition-transform duration-200",l&&"rotate-90")}),e]})}),(0,t.jsx)(T.CollapsibleContent,{className:"space-y-3 pt-1",children:r})]})}e.s(["default",0,function(){let{data:e}=(0,s.useConfig)(),{df:a}=(0,s.useConfigDefaults)(),{toast:n,showToast:o}=(0,r.useSaveConfig)(),{deferSaveFor:d,dv:c,dirtyFields:u}=(0,l.useDirtyFields)();if(!e)return(0,t.jsx)("div",{className:"text-muted-foreground",children:"Loading..."});let m=d(e);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(O.PageHeader,{title:"Models & Cost",description:"AI backends, per-task routing, and execution limits. The backend and process cards are always visible; expand the sections below to tune concurrency, session timeouts, or cost guardrails."}),(0,t.jsx)(U.SettingsToast,{toast:n}),(0,t.jsx)(k,{onToast:o}),(0,t.jsx)(A,{onToast:o}),(0,t.jsx)(i.BackendSettingsSection,{onToast:o,sections:["processes"]}),(0,t.jsx)(K,{title:"Execution limits",children:(0,t.jsxs)(H.ConfigSection,{title:"Execution limits",children:[(0,t.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"Concurrency and wall-clock limits that apply across every agent run, regardless of backend or tier."}),(0,t.jsx)(H.EditableField,{label:"Max Concurrent Sessions",value:c("maxConcurrentSessions",e.maxConcurrentSessions),configKey:"maxConcurrentSessions",type:"number",modified:u.has("maxConcurrentSessions"),defaultValue:a("maxConcurrentSessions"),description:"Total number of agent sessions allowed to run in parallel across all sources (DMs, routines, schedules). Additional requests are queued until a slot opens.",onSave:m}),(0,t.jsx)(H.EditableField,{label:"Max Reactive Sessions",value:c("maxReactiveSessions",e.maxReactiveSessions),configKey:"maxReactiveSessions",type:"number",modified:u.has("maxReactiveSessions"),defaultValue:a("maxReactiveSessions"),description:"Subset of the concurrent slots reserved for reactive work (incoming DMs, mentions, and dashboard chat). This guarantees routines never starve out messages you send right now — and the remaining slots guarantee the reverse.",onSave:m}),(0,t.jsx)(H.EditableField,{label:"Execute Timeout",value:c("executeTimeoutMinutes",e.executeTimeoutMinutes),configKey:"executeTimeoutMinutes",type:"number",suffix:"min",min:1,max:1440,modified:u.has("executeTimeoutMinutes"),defaultValue:a("executeTimeoutMinutes"),description:"Maximum wall-clock time for a single agent execution. When exceeded the run is cancelled so retries don’t double-bill quota. Applies per attempt, not per retry chain.",onSave:m}),(0,t.jsx)(H.EditableField,{label:"Delegated Proxy Concurrency",value:c("delegatedProxyMaxConcurrent",e.delegatedProxyMaxConcurrent),configKey:"delegatedProxyMaxConcurrent",type:"number",min:1,max:64,modified:u.has("delegatedProxyMaxConcurrent"),defaultValue:a("delegatedProxyMaxConcurrent"),description:"Maximum simultaneous delegated-proxy invocations. Integrations in delegated mode (Gmail, Calendar, Notion) spawn a one-shot subprocess on the configured backend; excess requests FIFO-queue for up to 60 seconds, then fail. Raise this if you see queue timeouts; lower it to cap parallel backend cost.",onSave:m})]})}),(0,t.jsx)(K,{title:"Session timeouts",children:(0,t.jsxs)(H.ConfigSection,{title:"Session timeouts",children:[(0,t.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"How long an idle conversation keeps its context before the next message starts fresh. Lower values save tokens on long-lived chats; higher values preserve continuity."}),(0,t.jsx)(H.EditableField,{label:"DM Timeout",value:c("sessionTimeoutDmMinutes",e.sessionTimeoutDmMinutes),configKey:"sessionTimeoutDmMinutes",type:"number",suffix:"min",modified:u.has("sessionTimeoutDmMinutes"),defaultValue:a("sessionTimeoutDmMinutes"),description:"Idle minutes before a direct-message session expires. Once expired, the next DM opens a new session without prior conversation history.",onSave:m}),(0,t.jsx)(H.EditableField,{label:"Channel Timeout",value:c("sessionTimeoutChannelMinutes",e.sessionTimeoutChannelMinutes),configKey:"sessionTimeoutChannelMinutes",type:"number",suffix:"min",modified:u.has("sessionTimeoutChannelMinutes"),defaultValue:a("sessionTimeoutChannelMinutes"),description:"Idle minutes before an @mention thread in a public channel expires. Usually shorter than DM timeout since channel context rotates faster.",onSave:m}),(0,t.jsx)(H.EditableField,{label:"Dashboard Timeout",value:c("sessionTimeoutDashboardMinutes",e.sessionTimeoutDashboardMinutes),configKey:"sessionTimeoutDashboardMinutes",type:"number",suffix:"min",modified:u.has("sessionTimeoutDashboardMinutes"),defaultValue:a("sessionTimeoutDashboardMinutes"),description:"Idle minutes before a dashboard Chat session expires. The session sidebar will still show it as a past conversation you can reopen.",onSave:m})]})}),(0,t.jsx)(K,{title:"Cost guardrails",children:(0,t.jsxs)(H.ConfigSection,{title:"Cost guardrails",children:[(0,t.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"Guardrails and alert thresholds for autonomous routine spend. The daily cap can skip lower-priority routines; the monthly cap only notifies. Reactive work such as DMs and mentions still runs."}),(0,t.jsx)(H.EditableField,{label:"Autonomous Daily Cost Cap",value:c("autonomousDailyCostCapUsd",e.autonomousDailyCostCapUsd),configKey:"autonomousDailyCostCapUsd",type:"number",suffix:"$",nullable:!0,emptyLabel:"Disabled",min:.01,modified:u.has("autonomousDailyCostCapUsd"),defaultValue:a("autonomousDailyCostCapUsd"),description:"Maximum daily USD spend for autonomous sessions before lower-priority routines are skipped. Leave blank to disable the cap.",onSave:m}),(0,t.jsx)(H.EditableField,{label:"Autonomous Monthly Cost Cap (alert only)",value:c("autonomousMonthlyCostCapUsd",e.autonomousMonthlyCostCapUsd),configKey:"autonomousMonthlyCostCapUsd",type:"number",suffix:"$",nullable:!0,emptyLabel:"Disabled",min:.01,modified:u.has("autonomousMonthlyCostCapUsd"),defaultValue:a("autonomousMonthlyCostCapUsd"),description:"Notification threshold for the rolling 30-day spend. Surfaces a warning at 80% and an error at 100% in the Notifications panel. No dispatcher enforcement — pair with the daily cap for hard guardrails.",onSave:m})]})})]})}],93772)}]);
@@ -0,0 +1,3 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,36413,e=>{"use strict";var t=e.i(34416);let s=(0,t.createContext)(null);e.s(["DirtyFieldsProvider",0,function({children:e}){let[r,a]=(0,t.useState)(()=>new Map),[i,n]=(0,t.useState)(0),l=(0,t.useCallback)((e,t,s)=>{a(r=>{if(void 0!==s&&(t===s||Array.isArray(t)&&Array.isArray(s)&&t.length===s.length&&t.every((e,t)=>e===s[t]))){if(!r.has(e))return r;let t=new Map(r);return t.delete(e),t}let a=new Map(r);return a.set(e,t),a})},[]),o=(0,t.useCallback)(e=>{a(t=>{if(!t.has(e))return t;let s=new Map(t);return s.delete(e),s})},[]),d=(0,t.useCallback)(e=>{0!==e.length&&a(t=>{if(!e.some(e=>t.has(e)))return t;let s=new Map(t);for(let t of e)s.delete(t);return s})},[]),c=(0,t.useCallback)(()=>{a(new Map),n(e=>e+1)},[]),u=r.size>0,h=r.size,m=(0,t.useMemo)(()=>({dirtyFields:r,setDirty:l,clearDirty:o,clearDirtyKeys:d,discardAll:c,discardGeneration:i,isDirty:u,dirtyCount:h}),[r,l,o,d,c,i,u,h]);return(0,t.createElement)(s.Provider,{value:m},e)},"useDirtyFields",0,function(){let e=(0,t.useContext)(s);if(!e)throw Error("useDirtyFields must be used inside DirtyFieldsProvider");let{setDirty:r,dirtyFields:a}=e,i=(0,t.useCallback)(e=>async(t,s)=>{let a=e[t];r(t,s,a)},[r]),n=(0,t.useCallback)((e,t)=>a.has(e)?a.get(e):t,[a]);return{...e,deferSaveFor:i,dv:n}},"useDiscardGeneration",0,function(){let e=(0,t.useContext)(s);return e?.discardGeneration??0}])},28444,e=>{"use strict";e.s(["RESTART_REQUIRED_KEY_TUPLE",0,["apiPort","externalObsidianVaultName","externalObsidianVaultPath","externalObsidianWatch","primaryVaultPath","primaryVaultName","slackOwnerUserId","telegramOwnerChatId","discordOwnerUserId","whatsappEnabled","whatsappOwnerPhone","whatsappAuthDir","notionDatabaseIds","gmailPollIntervalSeconds","delegatedProbeIntervalMinutes","gitPollIntervalSeconds","githubPollIntervalSeconds","voiceTranscriptionEnabled","observationSummarizerEnabled","observationSummarizerConcurrency","observationSummarizerMaxCallsPerMinute","observationSummarizerQueueLimit","observationSummarizerTimeoutMs"]])},7663,e=>{"use strict";let t=(0,e.i(77379).default)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",0,t],7663)},87040,e=>{"use strict";var t=e.i(14260),s=e.i(65268);e.s(["useProcessConfig",0,function(e){return(0,t.useQuery)({queryKey:["process-config"],queryFn:()=>s.api.get("/process-config"),enabled:e?.enabled??!0,staleTime:6e4})}])},13451,e=>{"use strict";var t=e.i(34416),s=e.i(95486),r=e.i(65268);e.s(["useSaveConfig",0,function(){let e=(0,s.useQueryClient)(),[a,i]=(0,t.useState)(null),n=(0,t.useCallback)((e,t)=>{i({type:e,message:t}),setTimeout(()=>i(null),4e3)},[]),l=(0,t.useCallback)((e,t)=>{let s=Object.values(e.errors??{});s.length>0?n("warning",s.join(" ")):e.requiresRestart?.length>0?n("warning",`Updated. Restart daemon for: ${e.requiresRestart.join(", ")}`):n("success",t)},[n]),o=(0,t.useCallback)(async(t,s)=>{try{let a=await r.api.patch("/config",{[t]:s});e.invalidateQueries({queryKey:["config"]}),l(a,"Setting updated")}catch(e){throw n("error",`Failed to save: ${e instanceof Error?e.message:"Unknown error"}`),e}},[e,l,n]),d=(0,t.useCallback)(async t=>{try{let s=await r.api.patch("/config",t);e.invalidateQueries({queryKey:["config"]}),l(s,"Settings updated")}catch(e){throw n("error",`Failed to save: ${e instanceof Error?e.message:"Unknown error"}`),e}},[e,l,n]);return{toast:a,showToast:n,saveField:o,saveMultipleFields:d,patchConfig:(0,t.useCallback)(async t=>{let s=await r.api.patch("/config",t);return e.invalidateQueries({queryKey:["config"]}),s},[e])}}])},12077,e=>{"use strict";let t=(0,e.i(77379).default)("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);e.s(["Terminal",0,t],12077)},69426,e=>{"use strict";let t=(0,e.i(77379).default)("Repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);e.s(["Repeat",0,t],69426)},48780,7278,32459,16389,e=>{"use strict";var t=e.i(77379);let s=(0,t.default)("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);e.s(["User",0,s],48780);let r=(0,t.default)("Cpu",[["rect",{width:"16",height:"16",x:"4",y:"4",rx:"2",key:"14l7u7"}],["rect",{width:"6",height:"6",x:"9",y:"9",rx:"1",key:"5aljv4"}],["path",{d:"M15 2v2",key:"13l42r"}],["path",{d:"M15 20v2",key:"15mkzm"}],["path",{d:"M2 15h2",key:"1gxd5l"}],["path",{d:"M2 9h2",key:"1bbxkp"}],["path",{d:"M20 15h2",key:"19e6y8"}],["path",{d:"M20 9h2",key:"19tzq7"}],["path",{d:"M9 2v2",key:"165o2o"}],["path",{d:"M9 20v2",key:"i2bqo8"}]]);e.s(["Cpu",0,r],7278);let a=(0,t.default)("BookOpenText",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M16 12h2",key:"7q9ll5"}],["path",{d:"M16 8h2",key:"msurwy"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}],["path",{d:"M6 12h2",key:"32wvfc"}],["path",{d:"M6 8h2",key:"30oboj"}]]);e.s(["BookOpenText",0,a],32459);let i=(0,t.default)("MonitorCog",[["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"m15.2 4.9-.9-.4",key:"12wd2u"}],["path",{d:"m15.2 7.1-.9.4",key:"1r2vl7"}],["path",{d:"m16.9 3.2-.4-.9",key:"3zbo91"}],["path",{d:"m16.9 8.8-.4.9",key:"1qr2dn"}],["path",{d:"m19.5 2.3-.4.9",key:"1rjrkq"}],["path",{d:"m19.5 9.7-.4-.9",key:"heryx5"}],["path",{d:"m21.7 4.5-.9.4",key:"17fqt1"}],["path",{d:"m21.7 7.5-.9-.4",key:"14zyni"}],["path",{d:"M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7",key:"1tnzv8"}],["path",{d:"M8 21h8",key:"1ev6f3"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}]]);e.s(["MonitorCog",0,i],16389)},58154,e=>{"use strict";let t=(0,e.i(77379).default)("SlidersHorizontal",[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]]);e.s(["SlidersHorizontal",0,t],58154)},94328,e=>{"use strict";var t=e.i(54710),s=e.i(34416),r=e.i(45958),a=e.i(71060),i=e.i(48780),n=e.i(31501),l=e.i(7278),o=e.i(12077),d=e.i(32459),c=e.i(42071),u=e.i(84972),h=e.i(16389),m=e.i(58154),y=e.i(69426),p=e.i(77379);let g=(0,p.default)("ClipboardList",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]]);var f=e.i(20668);let x=(0,p.default)("GraduationCap",[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]]);var b=e.i(79634),k=e.i(81471),v=e.i(36413);let w=[{href:"/settings",label:"Profile",icon:i.User,description:"Identity and time axis"},{href:"/settings/schedule",label:"Schedule",icon:n.Clock,description:"Hourly check, quiet hours, notifications"},{href:"/settings/routines",label:"Routines",icon:y.Repeat,description:"Per-cadence check rulebooks and custom cron routines"},{href:"/settings/self-learning",label:"Self-learning",icon:f.Sparkles,description:"Knowledge-map skill curation (Preview)"},{href:"/settings/lessons",label:"Lessons",icon:x,description:"Feedback learning — view/edit lessons, tune caps (Preview)"},{href:"/settings/management",label:"Management",icon:g,description:"Source-of-truth bindings and managed tasks"},{href:"/settings/journal",label:"Journal",icon:c.BookText,description:"Daily journal format template and export redaction rules"},{href:"/settings/models",label:"Models",icon:l.Cpu,description:"Backends, routing, execution limits"},{href:"/settings/wiki",label:"Wiki",icon:d.BookOpenText,description:"Workspace, commands, wiki budgets"},{href:"/settings/integrations/browser-history",label:"Browser History",icon:u.History,description:"Read from your existing Chrome"},{href:"/settings/integrations/browser-history-managed",label:"Browser Automation",icon:h.MonitorCog,description:"Dedicated Chromium (OAuth + tasks)"},{href:"/settings/commands",label:"Commands",icon:o.Terminal,description:"Messaging shortcuts and custom prompts"},{href:"/settings/advanced",label:"Advanced",icon:m.SlidersHorizontal,description:"Safety, infrastructure, danger zone"}],j={"/settings":["agentDisplayName","character","primaryLanguage"],"/settings/schedule":["timezone","dayBoundaryHour","hourlyCheckEnabled","hourlyCheckIntervalMinutes","hourlyCheckActiveStartHour","hourlyCheckActiveEndHour","hourlyCheckMinObservations","monthlyReviewEnabled","maxNotificationsPerHour","maxNotificationsPerDay","quietHoursStart","quietHoursEnd","batchIntervalMinutes","defaultNotificationPlatforms","primaryPlatform"],"/settings/models":["maxConcurrentSessions","maxReactiveSessions","delegatedProxyMaxConcurrent","executeTimeoutMinutes","sessionTimeoutDmMinutes","sessionTimeoutChannelMinutes","sessionTimeoutDashboardMinutes","autonomousDailyCostCapUsd","autonomousMonthlyCostCapUsd"],"/settings/lessons":["feedbackLearningEnabled","feedbackPromotionThreshold","feedbackLessonMaxBytesGlobal","feedbackLessonMaxBytesPerAgent","feedbackLessonStaleDays","feedbackSignalRetentionDays"],"/settings/advanced":["disallowedTools","allowedToolsOverride","obsidianDebounceSeconds","schedulePollIntervalSeconds","gitPollIntervalSeconds","notionPollIntervalSeconds","calendarPollIntervalSeconds","gmailPollIntervalSeconds","historyInjectionMaxMessages","historyInjectionMaxTokens","dmStalenessStrict","apiPort","authProbeDisabled","authPreflightFreshnessMs"],"/settings/integrations/browser-history":["browserHistoryConsentAccepted","browserHistoryBrowserOverrides","browserHistoryCategories","browserHistoryRetentionDays","browserHistorySearchQueryRetentionDays","browserHistoryLifecycle"],"/settings/integrations/browser-history-managed":["browserTaskMaxConcurrent","browserTaskPendingQueueTimeoutMinutes","browserTaskRespectQuietHours","browserTaskHostnameDenylist"]};e.s(["SettingsNavigation",0,function(){let e=(0,a.usePathname)(),{dirtyFields:i}=(0,v.useDirtyFields)(),n=(0,s.useCallback)(e=>{let t=j[e];return t?t.filter(e=>i.has(e)).length:0},[i]);return(0,t.jsxs)("nav",{"aria-label":"Settings sections",className:"w-full md:w-60 md:shrink-0",children:[(0,t.jsx)("ul",{className:"flex flex-row gap-1 overflow-x-auto md:flex-col md:gap-0.5",children:w.map(s=>{let a=e===s.href||"/settings"!==s.href&&e.startsWith(s.href+"/"),i=s.icon,l=n(s.href);return(0,t.jsx)("li",{children:(0,t.jsxs)(r.default,{href:s.href,"aria-current":a?"page":void 0,className:(0,k.cn)("group flex items-center gap-3 whitespace-nowrap rounded-lg px-3 py-2 text-sm transition-colors md:whitespace-normal",a?"bg-primary/10 text-primary font-medium":"text-muted-foreground hover:bg-accent hover:text-foreground"),children:[(0,t.jsx)(i,{className:"h-4 w-4 shrink-0"}),(0,t.jsxs)("span",{className:"flex-1",children:[(0,t.jsxs)("span",{className:"block",children:[s.label,l>0&&(0,t.jsx)("span",{className:"ml-1.5 inline-block h-2 w-2 rounded-full bg-blue-500",title:`${l} unsaved change${1!==l?"s":""}`})]}),(0,t.jsx)("span",{className:(0,k.cn)("hidden text-[11px] font-normal md:block",a?"text-primary/70":"text-muted-foreground/70 group-hover:text-muted-foreground"),children:s.description})]})]})},s.href)})}),(0,t.jsxs)("div",{className:"hidden md:block mt-4 px-3",children:[(0,t.jsx)("kbd",{className:"text-[10px] text-muted-foreground/60 font-mono",children:"⌘K"}),(0,t.jsx)("span",{className:"text-[10px] text-muted-foreground/60 ml-1.5",children:"Search settings"})]})]})},"SettingsToast",0,function({toast:e}){return e?(0,t.jsx)(b.Alert,{variant:e.type,className:"rounded-lg px-4 py-2.5 text-sm",children:e.message}):null}],94328)},49058,e=>{"use strict";let t=(0,e.i(77379).default)("Undo2",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]]);e.s(["Undo2",0,t],49058)},9897,e=>{"use strict";let t=["claude-sonnet-4-6","claude-opus-4-6"];t[0],e.s(["ADVISOR_ALLOWED_MODELS",0,t,"isAdvisorModel",0,function(e){return"string"==typeof e&&t.includes(e)}])},83451,e=>{"use strict";var t=e.i(54710),s=e.i(36413),r=e.i(94328),a=e.i(81187),i=e.i(30040);e.i(18446);var n=e.i(9897),l=e.i(65268),o=e.i(14260),d=e.i(87040);let c=n.ADVISOR_ALLOWED_MODELS.map(e=>e.replace(/^claude-/,"").toLowerCase()),u=new Set(["message.dm","message.mention","dashboard.chat","agent.task","routine.morning_routine","routine.evening_review","routine.weekly_review","routine.monthly_review","routine.hourly_check"]);function h(){let e=(0,o.useQuery)({queryKey:["backends","advisor"],queryFn:()=>l.api.get("/backends/advisor"),enabled:(void 0)??!0,staleTime:6e4,retry:!1}),s=(0,d.useProcessConfig)();if(e.error instanceof l.ApiError&&503===e.error.status||s.error instanceof l.ApiError&&503===s.error.status||e.isLoading||s.isLoading)return null;if(e.error||s.error)return(0,t.jsxs)("div",{role:"status",className:"flex items-start gap-3 rounded-lg border border-border bg-muted/30 p-3 text-xs text-muted-foreground",children:[(0,t.jsx)(i.Info,{className:"mt-0.5 h-4 w-4 flex-shrink-0","aria-hidden":"true"}),(0,t.jsx)("span",{children:"Advisor compatibility check unavailable. Refresh the page or check the daemon logs if you rely on the advisor tool."})]});let r=e.data,n=s.data?.configs??[];if(!r?.enabled)return null;let h=n.filter(e=>{let t;return t=e.mainModel.toLowerCase(),!c.some(e=>t.includes(e))});if(0===h.length)return null;let m=h.filter(e=>u.has(e.processKey)),y=h.filter(e=>!u.has(e.processKey));return m.length>0?(0,t.jsxs)("div",{role:"alert",className:"flex items-start gap-3 rounded-lg border border-yellow-500/40 bg-yellow-500/10 p-4 text-sm",children:[(0,t.jsx)(a.AlertTriangle,{className:"mt-0.5 h-5 w-5 flex-shrink-0 text-yellow-600","aria-hidden":"true"}),(0,t.jsxs)("div",{className:"space-y-1 [&>p]:max-w-prose",children:[(0,t.jsx)("p",{className:"font-medium text-yellow-900 dark:text-yellow-100",children:"Advisor-incompatible models on high-stakes processes"}),(0,t.jsxs)("p",{className:"text-yellow-900/80 dark:text-yellow-100/80",children:["Advisor is enabled on"," ",(0,t.jsx)("code",{className:"rounded bg-yellow-500/20 px-1 py-0.5",children:r.model??"(unset)"}),", but the Claude Agent SDK only registers the"," ",(0,t.jsx)("code",{children:"advisor_20260301"})," tool on base models whose id contains"," ",c.map((e,s)=>(0,t.jsxs)("span",{children:[s>0&&(s===c.length-1?" or ":", "),(0,t.jsx)("code",{children:e})]},e)),". The following processes are pinned to incompatible models and will silently skip advisor calls:"]}),(0,t.jsx)("p",{className:"text-yellow-900/80 dark:text-yellow-100/80",children:m.map((e,s)=>(0,t.jsxs)("span",{children:[s>0&&", ",(0,t.jsx)("code",{className:"rounded bg-yellow-500/20 px-1 py-0.5",children:e.processKey})," → ",(0,t.jsx)("code",{className:"rounded bg-yellow-500/20 px-1 py-0.5",children:e.mainModel})]},e.processKey))}),(0,t.jsxs)("p",{className:"text-yellow-900/70 dark:text-yellow-100/70",children:["Either switch these processes to a Sonnet/Opus model above, or disable advisor on"," ",(0,t.jsx)("a",{className:"underline",href:"/settings/models",children:"/settings/models"}),"."]}),y.length>0&&(0,t.jsxs)("p",{className:"text-yellow-900/60 dark:text-yellow-100/60",children:["(",y.length," additional low-stakes process",1===y.length?"":"es"," also incompatible.)"]})]})]}):(0,t.jsxs)("div",{role:"status",className:"flex items-start gap-3 rounded-lg border border-border bg-muted/30 p-3 text-xs text-muted-foreground",children:[(0,t.jsx)(i.Info,{className:"mt-0.5 h-4 w-4 flex-shrink-0","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[y.length," low-stakes process",1===y.length?"":"es"," pinned to an advisor-incompatible model. Advisor is skipped there — usually harmless. (",y.map(e=>e.processKey).join(", "),")"]})]})}var m=e.i(34416),y=e.i(7663),p=e.i(49058),g=e.i(28444),f=e.i(20014),x=e.i(79634),b=e.i(90826),k=e.i(13451);let v=new Set(g.RESTART_REQUIRED_KEY_TUPLE);function w(e){return v.has(e)}function j(){let{dirtyFields:e,dirtyCount:r,isDirty:a,discardAll:i,clearDirtyKeys:n}=(0,s.useDirtyFields)(),{patchConfig:l}=(0,k.useSaveConfig)(),o=(0,b.useConfirm)();(0,m.useEffect)(()=>{if(!a)return;let e=e=>{e.preventDefault()};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[a]),(0,m.useEffect)(()=>{if(!a)return;let e=e=>{let t=e.target.closest?.("a");if(!t)return;let s=t.getAttribute("href");!s||s.startsWith("/settings")||s.startsWith("http")||window.confirm("You have unsaved settings changes. Leave without saving?")||(e.preventDefault(),e.stopPropagation())};return document.addEventListener("click",e,!0),()=>document.removeEventListener("click",e,!0)},[a]);let[d,c]=(0,m.useState)(!1),[u,h]=(0,m.useState)(null);if(!a&&!u)return null;let g=[...e.keys()].filter(w),v=async()=>{if(!(g.length>0)||await o({title:"Daemon restart required",description:`This change requires a daemon restart to take effect. The agent will be unavailable for ~5 seconds.
2
+
3
+ Affected: ${g.join(", ")}`,confirmLabel:"Save & restart",variant:"destructive"})){c(!0),h(null);try{let t=Object.fromEntries(e),s=await l(t),r=Object.values(s.errors??{});if(r.length>0){let e=s.updated??[];e.length>0&&n(e),h({type:"error",message:r.join(" ")})}else s.requiresRestart?.length>0?(h({type:"warning",message:`Saved. Restart daemon for: ${s.requiresRestart.join(", ")}`}),i()):(h({type:"success",message:"All settings saved"}),i(),setTimeout(()=>h(null),3e3))}catch(e){h({type:"error",message:`Save failed: ${e instanceof Error?e.message:"Unknown error"}`})}finally{c(!1)}}};return(0,t.jsxs)("div",{className:"sticky bottom-0 z-30 -mx-6 mt-6 border-t border-border bg-background/95 backdrop-blur-sm px-6 py-3",children:[u&&(0,t.jsx)(x.Alert,{variant:u.type,className:"mb-3",children:u.message}),a&&(0,t.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,t.jsxs)("p",{className:"text-sm text-muted-foreground",children:[r," unsaved change",1!==r?"s":"",g.length>0&&(0,t.jsx)("span",{className:"ml-1 text-amber-600 dark:text-amber-400",children:"(restart required)"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)(f.Button,{variant:"outline",size:"sm",onClick:()=>{i(),h(null)},disabled:d,children:[(0,t.jsx)(p.Undo2,{className:"h-3.5 w-3.5 mr-1"}),"Discard"]}),(0,t.jsxs)(f.Button,{size:"sm",onClick:v,disabled:d,children:[(0,t.jsx)(y.Save,{className:"h-3.5 w-3.5 mr-1"}),d?"Saving...":"Save"]})]})]})]})}function M({children:e}){return(0,t.jsxs)("div",{className:"min-w-0 flex-1 space-y-6",children:[(0,t.jsx)(h,{}),e,(0,t.jsx)(j,{})]})}e.s(["SettingsShell",0,function({children:e}){return(0,t.jsx)(s.DirtyFieldsProvider,{children:(0,t.jsxs)("div",{className:"mx-auto flex max-w-7xl flex-col gap-6 p-6 md:flex-row md:items-start md:gap-8",children:[(0,t.jsx)("aside",{className:"md:sticky md:top-6",children:(0,t.jsx)(r.SettingsNavigation,{})}),(0,t.jsx)(M,{children:e})]})})}],83451)}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,75750,e=>{"use strict";let t=(0,e.i(77379).default)("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",0,t],75750)},12077,e=>{"use strict";let t=(0,e.i(77379).default)("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);e.s(["Terminal",0,t],12077)},74490,e=>{"use strict";var t=e.i(54710),r=e.i(81471);let a=(0,e.i(94237).cva)("rounded-xl border p-5 shadow-[0_1px_3px_rgb(0_0_0/0.04)]",{variants:{tone:{default:"border-border bg-card",warning:"border-amber-200 bg-amber-50/50 dark:border-amber-900 dark:bg-amber-950/30",success:"border-emerald-200 bg-emerald-50/50 dark:border-emerald-900 dark:bg-emerald-950/30",error:"border-red-200 bg-red-50/50 dark:border-red-900 dark:bg-red-950/30"},interactive:{true:"transition-shadow duration-150 hover:shadow-[0_4px_6px_rgb(0_0_0/0.06)]",false:""}},defaultVariants:{tone:"default",interactive:!1}});e.s(["Card",0,function({className:e,tone:n,interactive:i,...s}){return(0,t.jsx)("div",{className:(0,r.cn)(a({tone:n,interactive:i}),e),...s})},"CardHeader",0,function({className:e,...a}){return(0,t.jsx)("div",{className:(0,r.cn)("mb-3 flex items-center justify-between",e),...a})},"CardStatLabel",0,function({className:e,...a}){return(0,t.jsx)("h3",{className:(0,r.cn)("text-sm font-medium text-muted-foreground",e),...a})},"CardTitle",0,function({className:e,...a}){return(0,t.jsx)("h3",{className:(0,r.cn)("text-lg font-semibold text-foreground",e),...a})},"CardValue",0,function({className:e,...a}){return(0,t.jsx)("div",{className:(0,r.cn)("text-3xl font-bold text-foreground",e),...a})}])},90925,e=>{"use strict";let t=(0,e.i(77379).default)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);e.s(["Trash2",0,t],90925)},60168,e=>{"use strict";let t=(0,e.i(77379).default)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],60168)},21682,e=>{"use strict";let t=(0,e.i(77379).default)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",0,t],21682)},70986,e=>{"use strict";var t=e.i(34416),r=e.i(91967),a=e.i(9413),n=e.i(36567),i=e.i(18731),s=e.i(22353),l=e.i(85565),o=e.i(90816),d=e.i(11207),c=e.i(54710),u="Collapsible",[m,f]=(0,a.createContextScope)(u),[x,y]=m(u),b=t.forwardRef((e,r)=>{let{__scopeCollapsible:a,open:i,defaultOpen:s,disabled:o,onOpenChange:m,...f}=e,[y,b]=(0,n.useControllableState)({prop:i,defaultProp:s??!1,onChange:m,caller:u});return(0,c.jsx)(x,{scope:a,disabled:o,contentId:(0,d.useId)(),open:y,onOpenToggle:t.useCallback(()=>b(e=>!e),[b]),children:(0,c.jsx)(l.Primitive.div,{"data-state":C(y),"data-disabled":o?"":void 0,...f,ref:r})})});b.displayName=u;var p="CollapsibleTrigger",h=t.forwardRef((e,t)=>{let{__scopeCollapsible:a,...n}=e,i=y(p,a);return(0,c.jsx)(l.Primitive.button,{type:"button","aria-controls":i.contentId,"aria-expanded":i.open||!1,"data-state":C(i.open),"data-disabled":i.disabled?"":void 0,disabled:i.disabled,...n,ref:t,onClick:(0,r.composeEventHandlers)(e.onClick,i.onOpenToggle)})});h.displayName=p;var v="CollapsibleContent",g=t.forwardRef((e,t)=>{let{forceMount:r,...a}=e,n=y(v,e.__scopeCollapsible);return(0,c.jsx)(o.Presence,{present:r||n.open,children:({present:e})=>(0,c.jsx)(k,{...a,ref:t,present:e})})});g.displayName=v;var k=t.forwardRef((e,r)=>{let{__scopeCollapsible:a,present:n,children:o,...d}=e,u=y(v,a),[m,f]=t.useState(n),x=t.useRef(null),b=(0,s.useComposedRefs)(r,x),p=t.useRef(0),h=p.current,g=t.useRef(0),k=g.current,j=u.open||m,w=t.useRef(j),N=t.useRef(void 0);return t.useEffect(()=>{let e=requestAnimationFrame(()=>w.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,i.useLayoutEffect)(()=>{let e=x.current;if(e){N.current=N.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let t=e.getBoundingClientRect();p.current=t.height,g.current=t.width,w.current||(e.style.transitionDuration=N.current.transitionDuration,e.style.animationName=N.current.animationName),f(n)}},[u.open,n]),(0,c.jsx)(l.Primitive.div,{"data-state":C(u.open),"data-disabled":u.disabled?"":void 0,id:u.contentId,hidden:!j,...d,ref:b,style:{"--radix-collapsible-content-height":h?`${h}px`:void 0,"--radix-collapsible-content-width":k?`${k}px`:void 0,...e.style},children:j&&o})});function C(e){return e?"open":"closed"}e.s(["Collapsible",0,b,"CollapsibleContent",0,g,"CollapsibleTrigger",0,h],70986)},7663,e=>{"use strict";let t=(0,e.i(77379).default)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",0,t],7663)},84603,e=>{"use strict";let t=(0,e.i(77379).default)("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);e.s(["Activity",0,t],84603)},85631,e=>{"use strict";var t=e.i(54710),r=e.i(81471);e.s(["ConnectionsSectionHeader",0,function({title:e,description:a,healthy:n,total:i,attention:s,actions:l}){let o=i>0&&n===i,d=i>0&&0===n;return(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between gap-3",children:[(0,t.jsx)("h1",{className:"text-2xl font-semibold text-foreground",children:e}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[i>0&&(0,t.jsxs)("span",{className:(0,r.cn)("text-xs font-medium tabular-nums",o?"text-emerald-600 dark:text-emerald-400":d?"text-muted-foreground":"text-amber-600 dark:text-amber-400"),children:[n,"/",i," connected"]}),l]})]}),a&&(0,t.jsx)("p",{className:"max-w-3xl text-sm text-muted-foreground",children:a}),s&&(0,t.jsx)("p",{className:"text-xs text-amber-600 dark:text-amber-400",children:s})]})}])},20870,e=>{"use strict";var t=e.i(54710),r=e.i(48467),a=e.i(74490),n=e.i(81471);let i={connected:{variant:"green",label:"Connected"},configured:{variant:"amber",label:"Configured"},connecting:{variant:"amber",label:"Connecting…"},"needs-setup":{variant:"gray",label:"Not Configured"},error:{variant:"red",label:"Error"},disabled:{variant:"gray",label:"Disabled"}};e.s(["ConnectionCard",0,function({name:e,icon:s,status:l,error:o,metadata:d,children:c,className:u}){let m=i[l];return(0,t.jsxs)(a.Card,{tone:"connected"===l?"success":"error"===l?"error":"default",className:(0,n.cn)("relative",u),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:s}),(0,t.jsx)("h3",{className:"text-sm font-medium text-foreground",children:e})]}),(0,t.jsx)(r.Badge,{variant:m.variant,children:m.label})]}),o&&"connecting"!==l&&(0,t.jsx)("p",{className:"mb-2 text-xs text-red-600 dark:text-red-400",children:o}),d&&d.length>0&&(0,t.jsx)("div",{className:"mb-3 space-y-0.5",children:d.map(e=>(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:e.label}),(0,t.jsx)("span",{className:"text-foreground",children:e.value})]},e.label))}),c]})},"deriveConfiguredStatus",0,function(e){return e?"configured":"needs-setup"},"deriveIntegrationStatus",0,function(e){return e&&e.configured?e.error?"error":e.connected?"connected":"configured":"needs-setup"},"deriveMessagingStatus",0,function(e){return e&&"not_configured"!==e.runtimeState?"connecting"===e.runtimeState?"connecting":"error"===e.runtimeState?"error":"ok"===e.runtimeState?"connected":"configured":"needs-setup"},"messagingMetadata",0,function(e){if(e)return[{label:"Owner configured",value:e.ownerConfigured?"yes":"no"},{label:"Owner channel known",value:e.ownerChannelKnown?"yes":"no"},{label:"Reminder eligible",value:e.notificationEligible?"yes":"no"},{label:"Last inbound",value:e.lastInboundAt??"—"}]}])},88175,e=>{"use strict";let t=(0,e.i(77379).default)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);e.s(["Download",0,t],88175)},20492,37720,e=>{"use strict";var t=e.i(77379);let r=(0,t.default)("Power",[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]]);e.s(["Power",0,r],20492);let a=(0,t.default)("PowerOff",[["path",{d:"M18.36 6.64A9 9 0 0 1 20.77 15",key:"dxknvb"}],["path",{d:"M6.16 6.16a9 9 0 1 0 12.68 12.68",key:"1x7qb5"}],["path",{d:"M12 2v4",key:"3427ic"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);e.s(["PowerOff",0,a],37720)},44178,e=>{"use strict";var t=e.i(57415),r=e.i(14260),a=e.i(95486),n=e.i(65268);class i extends Error{conflict;constructor(e){super("context_conflict"),this.conflict=e,this.name="ContextConflictError"}}e.s(["ContextConflictError",0,i,"useContextFile",0,function(e,t){return(0,r.useQuery)({queryKey:["context",e],queryFn:()=>n.api.get(`/context/${e}`),enabled:!!e&&t?.enabled!==!1,refetchOnWindowFocus:t?.enabled!==!1})},"useContextList",0,function(e){return(0,r.useQuery)({queryKey:["context-list",e],queryFn:()=>n.api.get(`/context/list/${e}`)})},"useDeleteContextFile",0,function(){let e=(0,a.useQueryClient)();return(0,t.useMutation)({mutationFn:async({path:e})=>n.api.delete(`/context/${e}`),onSuccess:(t,{path:r})=>{e.removeQueries({queryKey:["context",r]}),e.invalidateQueries({queryKey:["snapshots",r]});let a=r.includes("/")?r.split("/")[0]:null;a&&e.invalidateQueries({queryKey:["context-list",a]}),r.startsWith("policies/routines/custom/")&&e.invalidateQueries({queryKey:["context-list","routines"]})}})},"useUpdateContextFile",0,function(){let e=(0,a.useQueryClient)();return(0,t.useMutation)({mutationFn:async({path:e,content:t,expectedMtime:r})=>{try{return await n.api.put(`/context/${e}`,{content:t,...void 0!==r?{expectedMtime:r}:{}})}catch(e){if(e instanceof n.ApiError&&409===e.status&&e.body?.error==="conflict"){let t=e.body;throw new i({currentMtime:t.currentMtime??"",currentContent:t.currentContent??""})}throw e}},onSuccess:(t,{path:r,content:a})=>{e.setQueryData(["context",r],e=>e?{...e,content:a,lastModified:t.lastModified}:{content:a,lastModified:t.lastModified,editable:!0}),e.invalidateQueries({queryKey:["snapshots",r]});let n=r.includes("/")?r.split("/")[0]:null;n&&e.invalidateQueries({queryKey:["context-list",n]})}})}])},40893,e=>{"use strict";var t=e.i(54710),r=e.i(81187),a=e.i(20014),n=e.i(81471);e.s(["FileConflictBanner",0,function({onReload:e,onOverwrite:i,isPending:s=!1,reloadLabel:l="Reload latest",className:o}){return(0,t.jsxs)("div",{role:"alert","aria-live":"assertive",className:(0,n.cn)("rounded-md border border-amber-500/50 bg-amber-500/10 p-3 text-xs",o),children:[(0,t.jsxs)("div",{className:"mb-2 flex items-center gap-2 font-semibold text-amber-900 dark:text-amber-200",children:[(0,t.jsx)(r.AlertTriangle,{className:"h-3.5 w-3.5"}),"File was modified by another process"]}),(0,t.jsx)("p",{className:"mb-3 text-amber-900/90 dark:text-amber-100/90",children:"The agent or another tab wrote to this file after you started editing. Your unsaved draft is preserved — choose how to proceed."}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(a.Button,{size:"sm",variant:"outline",onClick:e,disabled:s,className:"h-7",children:l}),(0,t.jsx)(a.Button,{size:"sm",variant:"destructive",onClick:i,disabled:s,className:"h-7",children:s?"Overwriting…":"Overwrite with my edits"})]})]})}])},68399,e=>{"use strict";let t=(0,e.i(77379).default)("EyeOff",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);e.s(["EyeOff",0,t],68399)},68824,e=>{"use strict";let t=(0,e.i(77379).default)("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["Eye",0,t],68824)}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,74490,e=>{"use strict";var t=e.i(54710),r=e.i(81471);let a=(0,e.i(94237).cva)("rounded-xl border p-5 shadow-[0_1px_3px_rgb(0_0_0/0.04)]",{variants:{tone:{default:"border-border bg-card",warning:"border-amber-200 bg-amber-50/50 dark:border-amber-900 dark:bg-amber-950/30",success:"border-emerald-200 bg-emerald-50/50 dark:border-emerald-900 dark:bg-emerald-950/30",error:"border-red-200 bg-red-50/50 dark:border-red-900 dark:bg-red-950/30"},interactive:{true:"transition-shadow duration-150 hover:shadow-[0_4px_6px_rgb(0_0_0/0.06)]",false:""}},defaultVariants:{tone:"default",interactive:!1}});e.s(["Card",0,function({className:e,tone:n,interactive:i,...s}){return(0,t.jsx)("div",{className:(0,r.cn)(a({tone:n,interactive:i}),e),...s})},"CardHeader",0,function({className:e,...a}){return(0,t.jsx)("div",{className:(0,r.cn)("mb-3 flex items-center justify-between",e),...a})},"CardStatLabel",0,function({className:e,...a}){return(0,t.jsx)("h3",{className:(0,r.cn)("text-sm font-medium text-muted-foreground",e),...a})},"CardTitle",0,function({className:e,...a}){return(0,t.jsx)("h3",{className:(0,r.cn)("text-lg font-semibold text-foreground",e),...a})},"CardValue",0,function({className:e,...a}){return(0,t.jsx)("div",{className:(0,r.cn)("text-3xl font-bold text-foreground",e),...a})}])},90925,e=>{"use strict";let t=(0,e.i(77379).default)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);e.s(["Trash2",0,t],90925)},60168,e=>{"use strict";let t=(0,e.i(77379).default)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],60168)},21682,e=>{"use strict";let t=(0,e.i(77379).default)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",0,t],21682)},12077,e=>{"use strict";let t=(0,e.i(77379).default)("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);e.s(["Terminal",0,t],12077)},75750,e=>{"use strict";let t=(0,e.i(77379).default)("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",0,t],75750)},70986,e=>{"use strict";var t=e.i(34416),r=e.i(91967),a=e.i(9413),n=e.i(36567),i=e.i(18731),s=e.i(22353),l=e.i(85565),o=e.i(90816),d=e.i(11207),c=e.i(54710),u="Collapsible",[m,f]=(0,a.createContextScope)(u),[x,y]=m(u),b=t.forwardRef((e,r)=>{let{__scopeCollapsible:a,open:i,defaultOpen:s,disabled:o,onOpenChange:m,...f}=e,[y,b]=(0,n.useControllableState)({prop:i,defaultProp:s??!1,onChange:m,caller:u});return(0,c.jsx)(x,{scope:a,disabled:o,contentId:(0,d.useId)(),open:y,onOpenToggle:t.useCallback(()=>b(e=>!e),[b]),children:(0,c.jsx)(l.Primitive.div,{"data-state":C(y),"data-disabled":o?"":void 0,...f,ref:r})})});b.displayName=u;var p="CollapsibleTrigger",h=t.forwardRef((e,t)=>{let{__scopeCollapsible:a,...n}=e,i=y(p,a);return(0,c.jsx)(l.Primitive.button,{type:"button","aria-controls":i.contentId,"aria-expanded":i.open||!1,"data-state":C(i.open),"data-disabled":i.disabled?"":void 0,disabled:i.disabled,...n,ref:t,onClick:(0,r.composeEventHandlers)(e.onClick,i.onOpenToggle)})});h.displayName=p;var v="CollapsibleContent",g=t.forwardRef((e,t)=>{let{forceMount:r,...a}=e,n=y(v,e.__scopeCollapsible);return(0,c.jsx)(o.Presence,{present:r||n.open,children:({present:e})=>(0,c.jsx)(k,{...a,ref:t,present:e})})});g.displayName=v;var k=t.forwardRef((e,r)=>{let{__scopeCollapsible:a,present:n,children:o,...d}=e,u=y(v,a),[m,f]=t.useState(n),x=t.useRef(null),b=(0,s.useComposedRefs)(r,x),p=t.useRef(0),h=p.current,g=t.useRef(0),k=g.current,j=u.open||m,w=t.useRef(j),N=t.useRef(void 0);return t.useEffect(()=>{let e=requestAnimationFrame(()=>w.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,i.useLayoutEffect)(()=>{let e=x.current;if(e){N.current=N.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let t=e.getBoundingClientRect();p.current=t.height,g.current=t.width,w.current||(e.style.transitionDuration=N.current.transitionDuration,e.style.animationName=N.current.animationName),f(n)}},[u.open,n]),(0,c.jsx)(l.Primitive.div,{"data-state":C(u.open),"data-disabled":u.disabled?"":void 0,id:u.contentId,hidden:!j,...d,ref:b,style:{"--radix-collapsible-content-height":h?`${h}px`:void 0,"--radix-collapsible-content-width":k?`${k}px`:void 0,...e.style},children:j&&o})});function C(e){return e?"open":"closed"}e.s(["Collapsible",0,b,"CollapsibleContent",0,g,"CollapsibleTrigger",0,h],70986)},7663,e=>{"use strict";let t=(0,e.i(77379).default)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",0,t],7663)},84603,e=>{"use strict";let t=(0,e.i(77379).default)("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);e.s(["Activity",0,t],84603)},85631,e=>{"use strict";var t=e.i(54710),r=e.i(81471);e.s(["ConnectionsSectionHeader",0,function({title:e,description:a,healthy:n,total:i,attention:s,actions:l}){let o=i>0&&n===i,d=i>0&&0===n;return(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between gap-3",children:[(0,t.jsx)("h1",{className:"text-2xl font-semibold text-foreground",children:e}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[i>0&&(0,t.jsxs)("span",{className:(0,r.cn)("text-xs font-medium tabular-nums",o?"text-emerald-600 dark:text-emerald-400":d?"text-muted-foreground":"text-amber-600 dark:text-amber-400"),children:[n,"/",i," connected"]}),l]})]}),a&&(0,t.jsx)("p",{className:"max-w-3xl text-sm text-muted-foreground",children:a}),s&&(0,t.jsx)("p",{className:"text-xs text-amber-600 dark:text-amber-400",children:s})]})}])},20870,e=>{"use strict";var t=e.i(54710),r=e.i(48467),a=e.i(74490),n=e.i(81471);let i={connected:{variant:"green",label:"Connected"},configured:{variant:"amber",label:"Configured"},connecting:{variant:"amber",label:"Connecting…"},"needs-setup":{variant:"gray",label:"Not Configured"},error:{variant:"red",label:"Error"},disabled:{variant:"gray",label:"Disabled"}};e.s(["ConnectionCard",0,function({name:e,icon:s,status:l,error:o,metadata:d,children:c,className:u}){let m=i[l];return(0,t.jsxs)(a.Card,{tone:"connected"===l?"success":"error"===l?"error":"default",className:(0,n.cn)("relative",u),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:s}),(0,t.jsx)("h3",{className:"text-sm font-medium text-foreground",children:e})]}),(0,t.jsx)(r.Badge,{variant:m.variant,children:m.label})]}),o&&"connecting"!==l&&(0,t.jsx)("p",{className:"mb-2 text-xs text-red-600 dark:text-red-400",children:o}),d&&d.length>0&&(0,t.jsx)("div",{className:"mb-3 space-y-0.5",children:d.map(e=>(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:e.label}),(0,t.jsx)("span",{className:"text-foreground",children:e.value})]},e.label))}),c]})},"deriveConfiguredStatus",0,function(e){return e?"configured":"needs-setup"},"deriveIntegrationStatus",0,function(e){return e&&e.configured?e.error?"error":e.connected?"connected":"configured":"needs-setup"},"deriveMessagingStatus",0,function(e){return e&&"not_configured"!==e.runtimeState?"connecting"===e.runtimeState?"connecting":"error"===e.runtimeState?"error":"ok"===e.runtimeState?"connected":"configured":"needs-setup"},"messagingMetadata",0,function(e){if(e)return[{label:"Owner configured",value:e.ownerConfigured?"yes":"no"},{label:"Owner channel known",value:e.ownerChannelKnown?"yes":"no"},{label:"Reminder eligible",value:e.notificationEligible?"yes":"no"},{label:"Last inbound",value:e.lastInboundAt??"—"}]}])},88175,e=>{"use strict";let t=(0,e.i(77379).default)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);e.s(["Download",0,t],88175)},44178,e=>{"use strict";var t=e.i(57415),r=e.i(14260),a=e.i(95486),n=e.i(65268);class i extends Error{conflict;constructor(e){super("context_conflict"),this.conflict=e,this.name="ContextConflictError"}}e.s(["ContextConflictError",0,i,"useContextFile",0,function(e,t){return(0,r.useQuery)({queryKey:["context",e],queryFn:()=>n.api.get(`/context/${e}`),enabled:!!e&&t?.enabled!==!1,refetchOnWindowFocus:t?.enabled!==!1})},"useContextList",0,function(e){return(0,r.useQuery)({queryKey:["context-list",e],queryFn:()=>n.api.get(`/context/list/${e}`)})},"useDeleteContextFile",0,function(){let e=(0,a.useQueryClient)();return(0,t.useMutation)({mutationFn:async({path:e})=>n.api.delete(`/context/${e}`),onSuccess:(t,{path:r})=>{e.removeQueries({queryKey:["context",r]}),e.invalidateQueries({queryKey:["snapshots",r]});let a=r.includes("/")?r.split("/")[0]:null;a&&e.invalidateQueries({queryKey:["context-list",a]}),r.startsWith("policies/routines/custom/")&&e.invalidateQueries({queryKey:["context-list","routines"]})}})},"useUpdateContextFile",0,function(){let e=(0,a.useQueryClient)();return(0,t.useMutation)({mutationFn:async({path:e,content:t,expectedMtime:r})=>{try{return await n.api.put(`/context/${e}`,{content:t,...void 0!==r?{expectedMtime:r}:{}})}catch(e){if(e instanceof n.ApiError&&409===e.status&&e.body?.error==="conflict"){let t=e.body;throw new i({currentMtime:t.currentMtime??"",currentContent:t.currentContent??""})}throw e}},onSuccess:(t,{path:r,content:a})=>{e.setQueryData(["context",r],e=>e?{...e,content:a,lastModified:t.lastModified}:{content:a,lastModified:t.lastModified,editable:!0}),e.invalidateQueries({queryKey:["snapshots",r]});let n=r.includes("/")?r.split("/")[0]:null;n&&e.invalidateQueries({queryKey:["context-list",n]})}})}])},40893,e=>{"use strict";var t=e.i(54710),r=e.i(81187),a=e.i(20014),n=e.i(81471);e.s(["FileConflictBanner",0,function({onReload:e,onOverwrite:i,isPending:s=!1,reloadLabel:l="Reload latest",className:o}){return(0,t.jsxs)("div",{role:"alert","aria-live":"assertive",className:(0,n.cn)("rounded-md border border-amber-500/50 bg-amber-500/10 p-3 text-xs",o),children:[(0,t.jsxs)("div",{className:"mb-2 flex items-center gap-2 font-semibold text-amber-900 dark:text-amber-200",children:[(0,t.jsx)(r.AlertTriangle,{className:"h-3.5 w-3.5"}),"File was modified by another process"]}),(0,t.jsx)("p",{className:"mb-3 text-amber-900/90 dark:text-amber-100/90",children:"The agent or another tab wrote to this file after you started editing. Your unsaved draft is preserved — choose how to proceed."}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(a.Button,{size:"sm",variant:"outline",onClick:e,disabled:s,className:"h-7",children:l}),(0,t.jsx)(a.Button,{size:"sm",variant:"destructive",onClick:i,disabled:s,className:"h-7",children:s?"Overwriting…":"Overwrite with my edits"})]})]})}])},20492,37720,e=>{"use strict";var t=e.i(77379);let r=(0,t.default)("Power",[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]]);e.s(["Power",0,r],20492);let a=(0,t.default)("PowerOff",[["path",{d:"M18.36 6.64A9 9 0 0 1 20.77 15",key:"dxknvb"}],["path",{d:"M6.16 6.16a9 9 0 1 0 12.68 12.68",key:"1x7qb5"}],["path",{d:"M12 2v4",key:"3427ic"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);e.s(["PowerOff",0,a],37720)},68399,e=>{"use strict";let t=(0,e.i(77379).default)("EyeOff",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);e.s(["EyeOff",0,t],68399)},68824,e=>{"use strict";let t=(0,e.i(77379).default)("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["Eye",0,t],68824)}]);