@aitne/dashboard 0.1.10 → 0.1.11

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 (1076) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +6 -9
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/diagnostics/route-bundle-stats.json +592 -614
  5. package/.next/fallback-build-manifest.json +3 -3
  6. package/.next/prerender-manifest.json +54 -126
  7. package/.next/routes-manifest.json +27 -45
  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/next-font-manifest.json +4 -2
  16. package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -1
  17. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  18. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/server/app/_not-found.html +1 -1
  20. package/.next/server/app/_not-found.rsc +15 -15
  21. package/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  22. package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  23. package/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  24. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  25. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  26. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  27. package/.next/server/app/activity/page/next-font-manifest.json +4 -2
  28. package/.next/server/app/activity/page/react-loadable-manifest.json +1 -1
  29. package/.next/server/app/activity/page.js.nft.json +1 -1
  30. package/.next/server/app/activity/page_client-reference-manifest.js +1 -1
  31. package/.next/server/app/activity.html +1 -1
  32. package/.next/server/app/activity.rsc +27 -25
  33. package/.next/server/app/activity.segments/_full.segment.rsc +27 -25
  34. package/.next/server/app/activity.segments/_head.segment.rsc +4 -4
  35. package/.next/server/app/activity.segments/_index.segment.rsc +10 -10
  36. package/.next/server/app/activity.segments/_tree.segment.rsc +3 -2
  37. package/.next/server/app/activity.segments/activity/__PAGE__.segment.rsc +4 -4
  38. package/.next/server/app/activity.segments/activity.segment.rsc +4 -4
  39. package/.next/server/app/agents/[slug]/executions/page/next-font-manifest.json +4 -2
  40. package/.next/server/app/agents/[slug]/executions/page/react-loadable-manifest.json +1 -1
  41. package/.next/server/app/agents/[slug]/executions/page.js.nft.json +1 -1
  42. package/.next/server/app/agents/[slug]/executions/page_client-reference-manifest.js +1 -1
  43. package/.next/server/app/agents/[slug]/page/next-font-manifest.json +4 -2
  44. package/.next/server/app/agents/[slug]/page/react-loadable-manifest.json +1 -1
  45. package/.next/server/app/agents/[slug]/page.js.nft.json +1 -1
  46. package/.next/server/app/agents/[slug]/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/agents/page/next-font-manifest.json +4 -2
  48. package/.next/server/app/agents/page/react-loadable-manifest.json +1 -1
  49. package/.next/server/app/agents/page.js.nft.json +1 -1
  50. package/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  51. package/.next/server/app/agents.html +1 -1
  52. package/.next/server/app/agents.rsc +18 -17
  53. package/.next/server/app/agents.segments/_full.segment.rsc +18 -17
  54. package/.next/server/app/agents.segments/_head.segment.rsc +4 -4
  55. package/.next/server/app/agents.segments/_index.segment.rsc +10 -10
  56. package/.next/server/app/agents.segments/_tree.segment.rsc +3 -2
  57. package/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +4 -4
  58. package/.next/server/app/agents.segments/agents.segment.rsc +3 -3
  59. package/.next/server/app/analytics/page/next-font-manifest.json +4 -2
  60. package/.next/server/app/analytics/page/react-loadable-manifest.json +1 -1
  61. package/.next/server/app/analytics/page.js.nft.json +1 -1
  62. package/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
  63. package/.next/server/app/analytics.html +1 -1
  64. package/.next/server/app/analytics.rsc +25 -23
  65. package/.next/server/app/analytics.segments/_full.segment.rsc +25 -23
  66. package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
  67. package/.next/server/app/analytics.segments/_index.segment.rsc +10 -10
  68. package/.next/server/app/analytics.segments/_tree.segment.rsc +3 -2
  69. package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +4 -4
  70. package/.next/server/app/analytics.segments/analytics.segment.rsc +4 -4
  71. package/.next/server/app/browser/page/app-paths-manifest.json +3 -0
  72. package/.next/server/app/browser/page/next-font-manifest.json +8 -0
  73. package/.next/server/app/{settings/advanced → browser}/page/react-loadable-manifest.json +1 -1
  74. package/.next/server/app/browser/page.js +15 -0
  75. package/.next/server/app/browser/page.js.nft.json +1 -0
  76. package/.next/server/app/browser/page_client-reference-manifest.js +3 -0
  77. package/.next/server/app/browser-tasks/[id]/page/next-font-manifest.json +4 -2
  78. package/.next/server/app/browser-tasks/[id]/page/react-loadable-manifest.json +1 -1
  79. package/.next/server/app/browser-tasks/[id]/page.js.nft.json +1 -1
  80. package/.next/server/app/browser-tasks/[id]/page_client-reference-manifest.js +1 -1
  81. package/.next/server/app/browser-tasks/page/next-font-manifest.json +4 -2
  82. package/.next/server/app/browser-tasks/page/react-loadable-manifest.json +1 -1
  83. package/.next/server/app/browser-tasks/page.js.nft.json +1 -1
  84. package/.next/server/app/browser-tasks/page_client-reference-manifest.js +1 -1
  85. package/.next/server/app/browser-tasks.html +1 -1
  86. package/.next/server/app/browser-tasks.rsc +18 -17
  87. package/.next/server/app/browser-tasks.segments/_full.segment.rsc +18 -17
  88. package/.next/server/app/browser-tasks.segments/_head.segment.rsc +4 -4
  89. package/.next/server/app/browser-tasks.segments/_index.segment.rsc +10 -10
  90. package/.next/server/app/browser-tasks.segments/_tree.segment.rsc +3 -2
  91. package/.next/server/app/browser-tasks.segments/browser-tasks/__PAGE__.segment.rsc +4 -4
  92. package/.next/server/app/browser-tasks.segments/browser-tasks.segment.rsc +3 -3
  93. package/.next/server/app/browser.html +1 -0
  94. package/.next/server/app/browser.meta +15 -0
  95. package/.next/server/app/browser.rsc +27 -0
  96. package/.next/server/app/browser.segments/_full.segment.rsc +27 -0
  97. package/.next/server/app/browser.segments/_head.segment.rsc +6 -0
  98. package/.next/server/app/browser.segments/_index.segment.rsc +11 -0
  99. package/.next/server/app/browser.segments/_tree.segment.rsc +3 -0
  100. package/.next/server/app/browser.segments/browser/__PAGE__.segment.rsc +9 -0
  101. package/.next/server/app/browser.segments/browser.segment.rsc +5 -0
  102. package/.next/server/app/chat/page/next-font-manifest.json +4 -2
  103. package/.next/server/app/chat/page/react-loadable-manifest.json +1 -1
  104. package/.next/server/app/chat/page.js.nft.json +1 -1
  105. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  106. package/.next/server/app/chat.html +1 -1
  107. package/.next/server/app/chat.rsc +18 -17
  108. package/.next/server/app/chat.segments/_full.segment.rsc +18 -17
  109. package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
  110. package/.next/server/app/chat.segments/_index.segment.rsc +10 -10
  111. package/.next/server/app/chat.segments/_tree.segment.rsc +3 -2
  112. package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +4 -4
  113. package/.next/server/app/chat.segments/chat.segment.rsc +3 -3
  114. package/.next/server/app/connections/calendar/page/next-font-manifest.json +4 -2
  115. package/.next/server/app/connections/calendar/page/react-loadable-manifest.json +1 -1
  116. package/.next/server/app/connections/calendar/page.js.nft.json +1 -1
  117. package/.next/server/app/connections/calendar/page_client-reference-manifest.js +1 -1
  118. package/.next/server/app/connections/calendar.html +1 -1
  119. package/.next/server/app/connections/calendar.rsc +19 -18
  120. package/.next/server/app/connections/calendar.segments/_full.segment.rsc +19 -18
  121. package/.next/server/app/connections/calendar.segments/_head.segment.rsc +4 -4
  122. package/.next/server/app/connections/calendar.segments/_index.segment.rsc +10 -10
  123. package/.next/server/app/connections/calendar.segments/_tree.segment.rsc +3 -2
  124. package/.next/server/app/connections/calendar.segments/connections/calendar/__PAGE__.segment.rsc +4 -4
  125. package/.next/server/app/connections/calendar.segments/connections/calendar.segment.rsc +3 -3
  126. package/.next/server/app/connections/calendar.segments/connections.segment.rsc +4 -4
  127. package/.next/server/app/connections/journal/page/next-font-manifest.json +4 -2
  128. package/.next/server/app/connections/journal/page/react-loadable-manifest.json +1 -1
  129. package/.next/server/app/connections/journal/page.js.nft.json +1 -1
  130. package/.next/server/app/connections/journal/page_client-reference-manifest.js +1 -1
  131. package/.next/server/app/connections/journal.html +1 -1
  132. package/.next/server/app/connections/journal.rsc +18 -17
  133. package/.next/server/app/connections/journal.segments/_full.segment.rsc +18 -17
  134. package/.next/server/app/connections/journal.segments/_head.segment.rsc +4 -4
  135. package/.next/server/app/connections/journal.segments/_index.segment.rsc +10 -10
  136. package/.next/server/app/connections/journal.segments/_tree.segment.rsc +3 -2
  137. package/.next/server/app/connections/journal.segments/connections/journal/__PAGE__.segment.rsc +3 -3
  138. package/.next/server/app/connections/journal.segments/connections/journal.segment.rsc +3 -3
  139. package/.next/server/app/connections/journal.segments/connections.segment.rsc +4 -4
  140. package/.next/server/app/connections/mail/page/next-font-manifest.json +4 -2
  141. package/.next/server/app/connections/mail/page/react-loadable-manifest.json +1 -1
  142. package/.next/server/app/connections/mail/page.js.nft.json +1 -1
  143. package/.next/server/app/connections/mail/page_client-reference-manifest.js +1 -1
  144. package/.next/server/app/connections/mail.html +1 -1
  145. package/.next/server/app/connections/mail.rsc +19 -18
  146. package/.next/server/app/connections/mail.segments/_full.segment.rsc +19 -18
  147. package/.next/server/app/connections/mail.segments/_head.segment.rsc +4 -4
  148. package/.next/server/app/connections/mail.segments/_index.segment.rsc +10 -10
  149. package/.next/server/app/connections/mail.segments/_tree.segment.rsc +3 -2
  150. package/.next/server/app/connections/mail.segments/connections/mail/__PAGE__.segment.rsc +4 -4
  151. package/.next/server/app/connections/mail.segments/connections/mail.segment.rsc +3 -3
  152. package/.next/server/app/connections/mail.segments/connections.segment.rsc +4 -4
  153. package/.next/server/app/connections/mcp/page/next-font-manifest.json +4 -2
  154. package/.next/server/app/connections/mcp/page/react-loadable-manifest.json +1 -1
  155. package/.next/server/app/connections/mcp/page.js.nft.json +1 -1
  156. package/.next/server/app/connections/mcp/page_client-reference-manifest.js +1 -1
  157. package/.next/server/app/connections/mcp.html +1 -1
  158. package/.next/server/app/connections/mcp.rsc +19 -18
  159. package/.next/server/app/connections/mcp.segments/_full.segment.rsc +19 -18
  160. package/.next/server/app/connections/mcp.segments/_head.segment.rsc +4 -4
  161. package/.next/server/app/connections/mcp.segments/_index.segment.rsc +10 -10
  162. package/.next/server/app/connections/mcp.segments/_tree.segment.rsc +3 -2
  163. package/.next/server/app/connections/mcp.segments/connections/mcp/__PAGE__.segment.rsc +4 -4
  164. package/.next/server/app/connections/mcp.segments/connections/mcp.segment.rsc +3 -3
  165. package/.next/server/app/connections/mcp.segments/connections.segment.rsc +4 -4
  166. package/.next/server/app/connections/messaging/page/next-font-manifest.json +4 -2
  167. package/.next/server/app/connections/messaging/page/react-loadable-manifest.json +1 -1
  168. package/.next/server/app/connections/messaging/page.js.nft.json +1 -1
  169. package/.next/server/app/connections/messaging/page_client-reference-manifest.js +1 -1
  170. package/.next/server/app/connections/messaging.html +1 -1
  171. package/.next/server/app/connections/messaging.rsc +19 -18
  172. package/.next/server/app/connections/messaging.segments/_full.segment.rsc +19 -18
  173. package/.next/server/app/connections/messaging.segments/_head.segment.rsc +4 -4
  174. package/.next/server/app/connections/messaging.segments/_index.segment.rsc +10 -10
  175. package/.next/server/app/connections/messaging.segments/_tree.segment.rsc +3 -2
  176. package/.next/server/app/connections/messaging.segments/connections/messaging/__PAGE__.segment.rsc +4 -4
  177. package/.next/server/app/connections/messaging.segments/connections/messaging.segment.rsc +3 -3
  178. package/.next/server/app/connections/messaging.segments/connections.segment.rsc +4 -4
  179. package/.next/server/app/connections/notes/page/app-paths-manifest.json +3 -0
  180. package/.next/server/app/connections/notes/page/next-font-manifest.json +8 -0
  181. package/.next/server/app/{settings/backends → connections/notes}/page/react-loadable-manifest.json +1 -1
  182. package/.next/server/app/connections/{knowledge → notes}/page.js +6 -6
  183. package/.next/server/app/{settings/schedule → connections/notes}/page.js.nft.json +1 -1
  184. package/.next/server/app/connections/notes/page_client-reference-manifest.js +3 -0
  185. package/.next/server/app/connections/notes.html +1 -0
  186. package/.next/server/app/connections/{knowledge.meta → notes.meta} +3 -3
  187. package/.next/server/app/connections/notes.rsc +28 -0
  188. package/.next/server/app/connections/notes.segments/_full.segment.rsc +28 -0
  189. package/.next/server/app/connections/notes.segments/_head.segment.rsc +6 -0
  190. package/.next/server/app/connections/notes.segments/_index.segment.rsc +11 -0
  191. package/.next/server/app/connections/notes.segments/_tree.segment.rsc +3 -0
  192. package/.next/server/app/connections/notes.segments/connections/notes/__PAGE__.segment.rsc +9 -0
  193. package/.next/server/app/connections/notes.segments/connections/notes.segment.rsc +5 -0
  194. package/.next/server/app/connections/notes.segments/connections.segment.rsc +5 -0
  195. package/.next/server/app/connections/page/next-font-manifest.json +4 -2
  196. package/.next/server/app/connections/page/react-loadable-manifest.json +1 -1
  197. package/.next/server/app/connections/page.js.nft.json +1 -1
  198. package/.next/server/app/connections/page_client-reference-manifest.js +1 -1
  199. package/.next/server/app/connections/repositories/page/next-font-manifest.json +4 -2
  200. package/.next/server/app/connections/repositories/page/react-loadable-manifest.json +1 -1
  201. package/.next/server/app/connections/repositories/page.js.nft.json +1 -1
  202. package/.next/server/app/connections/repositories/page_client-reference-manifest.js +1 -1
  203. package/.next/server/app/connections/repositories.html +1 -1
  204. package/.next/server/app/connections/repositories.rsc +23 -21
  205. package/.next/server/app/connections/repositories.segments/_full.segment.rsc +23 -21
  206. package/.next/server/app/connections/repositories.segments/_head.segment.rsc +4 -4
  207. package/.next/server/app/connections/repositories.segments/_index.segment.rsc +10 -10
  208. package/.next/server/app/connections/repositories.segments/_tree.segment.rsc +3 -2
  209. package/.next/server/app/connections/repositories.segments/connections/repositories/__PAGE__.segment.rsc +4 -4
  210. package/.next/server/app/connections/repositories.segments/connections/repositories.segment.rsc +3 -3
  211. package/.next/server/app/connections/repositories.segments/connections.segment.rsc +4 -4
  212. package/.next/server/app/connections/routines/page/next-font-manifest.json +4 -2
  213. package/.next/server/app/connections/routines/page/react-loadable-manifest.json +1 -1
  214. package/.next/server/app/connections/routines/page.js.nft.json +1 -1
  215. package/.next/server/app/connections/routines/page_client-reference-manifest.js +1 -1
  216. package/.next/server/app/connections/routines.html +1 -1
  217. package/.next/server/app/connections/routines.rsc +18 -17
  218. package/.next/server/app/connections/routines.segments/_full.segment.rsc +18 -17
  219. package/.next/server/app/connections/routines.segments/_head.segment.rsc +4 -4
  220. package/.next/server/app/connections/routines.segments/_index.segment.rsc +10 -10
  221. package/.next/server/app/connections/routines.segments/_tree.segment.rsc +3 -2
  222. package/.next/server/app/connections/routines.segments/connections/routines/__PAGE__.segment.rsc +3 -3
  223. package/.next/server/app/connections/routines.segments/connections/routines.segment.rsc +3 -3
  224. package/.next/server/app/connections/routines.segments/connections.segment.rsc +4 -4
  225. package/.next/server/app/connections.html +1 -1
  226. package/.next/server/app/connections.rsc +17 -16
  227. package/.next/server/app/connections.segments/_full.segment.rsc +17 -16
  228. package/.next/server/app/connections.segments/_head.segment.rsc +4 -4
  229. package/.next/server/app/connections.segments/_index.segment.rsc +10 -10
  230. package/.next/server/app/connections.segments/_tree.segment.rsc +3 -2
  231. package/.next/server/app/connections.segments/connections/__PAGE__.segment.rsc +2 -2
  232. package/.next/server/app/connections.segments/connections.segment.rsc +4 -4
  233. package/.next/server/app/conversations/[id]/page/next-font-manifest.json +4 -2
  234. package/.next/server/app/conversations/[id]/page/react-loadable-manifest.json +1 -1
  235. package/.next/server/app/conversations/[id]/page.js.nft.json +1 -1
  236. package/.next/server/app/conversations/[id]/page_client-reference-manifest.js +1 -1
  237. package/.next/server/app/conversations/page/next-font-manifest.json +4 -2
  238. package/.next/server/app/conversations/page/react-loadable-manifest.json +1 -1
  239. package/.next/server/app/conversations/page.js.nft.json +1 -1
  240. package/.next/server/app/conversations/page_client-reference-manifest.js +1 -1
  241. package/.next/server/app/conversations.html +1 -1
  242. package/.next/server/app/conversations.rsc +16 -15
  243. package/.next/server/app/conversations.segments/_full.segment.rsc +16 -15
  244. package/.next/server/app/conversations.segments/_head.segment.rsc +4 -4
  245. package/.next/server/app/conversations.segments/_index.segment.rsc +10 -10
  246. package/.next/server/app/conversations.segments/_tree.segment.rsc +3 -2
  247. package/.next/server/app/conversations.segments/conversations/__PAGE__.segment.rsc +2 -2
  248. package/.next/server/app/conversations.segments/conversations.segment.rsc +3 -3
  249. package/.next/server/app/docs/[[...slug]]/page/next-font-manifest.json +4 -2
  250. package/.next/server/app/docs/[[...slug]]/page/react-loadable-manifest.json +1 -1
  251. package/.next/server/app/docs/[[...slug]]/page.js.nft.json +1 -1
  252. package/.next/server/app/docs/[[...slug]]/page_client-reference-manifest.js +1 -1
  253. package/.next/server/app/finance/page/next-font-manifest.json +4 -2
  254. package/.next/server/app/finance/page/react-loadable-manifest.json +1 -1
  255. package/.next/server/app/finance/page.js.nft.json +1 -1
  256. package/.next/server/app/finance/page_client-reference-manifest.js +1 -1
  257. package/.next/server/app/finance.html +1 -1
  258. package/.next/server/app/finance.rsc +18 -17
  259. package/.next/server/app/finance.segments/_full.segment.rsc +18 -17
  260. package/.next/server/app/finance.segments/_head.segment.rsc +4 -4
  261. package/.next/server/app/finance.segments/_index.segment.rsc +10 -10
  262. package/.next/server/app/finance.segments/_tree.segment.rsc +3 -2
  263. package/.next/server/app/finance.segments/finance/__PAGE__.segment.rsc +4 -4
  264. package/.next/server/app/finance.segments/finance.segment.rsc +3 -3
  265. package/.next/server/app/git/page/next-font-manifest.json +4 -2
  266. package/.next/server/app/git/page/react-loadable-manifest.json +1 -1
  267. package/.next/server/app/git/page.js.nft.json +1 -1
  268. package/.next/server/app/git/page_client-reference-manifest.js +1 -1
  269. package/.next/server/app/git.html +1 -1
  270. package/.next/server/app/git.rsc +18 -17
  271. package/.next/server/app/git.segments/_full.segment.rsc +18 -17
  272. package/.next/server/app/git.segments/_head.segment.rsc +4 -4
  273. package/.next/server/app/git.segments/_index.segment.rsc +10 -10
  274. package/.next/server/app/git.segments/_tree.segment.rsc +3 -2
  275. package/.next/server/app/git.segments/git/__PAGE__.segment.rsc +4 -4
  276. package/.next/server/app/git.segments/git.segment.rsc +3 -3
  277. package/.next/server/app/health/page/next-font-manifest.json +4 -2
  278. package/.next/server/app/health/page/react-loadable-manifest.json +1 -1
  279. package/.next/server/app/health/page.js.nft.json +1 -1
  280. package/.next/server/app/health/page_client-reference-manifest.js +1 -1
  281. package/.next/server/app/health.html +1 -1
  282. package/.next/server/app/health.rsc +18 -17
  283. package/.next/server/app/health.segments/_full.segment.rsc +18 -17
  284. package/.next/server/app/health.segments/_head.segment.rsc +4 -4
  285. package/.next/server/app/health.segments/_index.segment.rsc +10 -10
  286. package/.next/server/app/health.segments/_tree.segment.rsc +3 -2
  287. package/.next/server/app/health.segments/health/__PAGE__.segment.rsc +4 -4
  288. package/.next/server/app/health.segments/health.segment.rsc +3 -3
  289. package/.next/server/app/index.html +1 -1
  290. package/.next/server/app/index.rsc +18 -17
  291. package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  292. package/.next/server/app/index.segments/_full.segment.rsc +18 -17
  293. package/.next/server/app/index.segments/_head.segment.rsc +4 -4
  294. package/.next/server/app/index.segments/_index.segment.rsc +10 -10
  295. package/.next/server/app/index.segments/_tree.segment.rsc +3 -2
  296. package/.next/server/app/knowledge/page/next-font-manifest.json +4 -2
  297. package/.next/server/app/knowledge/page/react-loadable-manifest.json +1 -1
  298. package/.next/server/app/knowledge/page.js.nft.json +1 -1
  299. package/.next/server/app/knowledge/page_client-reference-manifest.js +1 -1
  300. package/.next/server/app/knowledge.html +1 -1
  301. package/.next/server/app/knowledge.rsc +19 -18
  302. package/.next/server/app/knowledge.segments/_full.segment.rsc +19 -18
  303. package/.next/server/app/knowledge.segments/_head.segment.rsc +4 -4
  304. package/.next/server/app/knowledge.segments/_index.segment.rsc +10 -10
  305. package/.next/server/app/knowledge.segments/_tree.segment.rsc +3 -2
  306. package/.next/server/app/knowledge.segments/knowledge/__PAGE__.segment.rsc +4 -4
  307. package/.next/server/app/knowledge.segments/knowledge.segment.rsc +4 -4
  308. package/.next/server/app/page/next-font-manifest.json +4 -2
  309. package/.next/server/app/page/react-loadable-manifest.json +1 -1
  310. package/.next/server/app/page.js.nft.json +1 -1
  311. package/.next/server/app/page_client-reference-manifest.js +1 -1
  312. package/.next/server/app/reading/page/next-font-manifest.json +4 -2
  313. package/.next/server/app/reading/page/react-loadable-manifest.json +1 -1
  314. package/.next/server/app/reading/page.js.nft.json +1 -1
  315. package/.next/server/app/reading/page_client-reference-manifest.js +1 -1
  316. package/.next/server/app/reading.html +1 -1
  317. package/.next/server/app/reading.rsc +18 -17
  318. package/.next/server/app/reading.segments/_full.segment.rsc +18 -17
  319. package/.next/server/app/reading.segments/_head.segment.rsc +4 -4
  320. package/.next/server/app/reading.segments/_index.segment.rsc +10 -10
  321. package/.next/server/app/reading.segments/_tree.segment.rsc +3 -2
  322. package/.next/server/app/reading.segments/reading/__PAGE__.segment.rsc +4 -4
  323. package/.next/server/app/reading.segments/reading.segment.rsc +3 -3
  324. package/.next/server/app/schedule/page/next-font-manifest.json +4 -2
  325. package/.next/server/app/schedule/page/react-loadable-manifest.json +1 -1
  326. package/.next/server/app/schedule/page.js.nft.json +1 -1
  327. package/.next/server/app/schedule/page_client-reference-manifest.js +1 -1
  328. package/.next/server/app/schedule.html +1 -1
  329. package/.next/server/app/schedule.rsc +18 -17
  330. package/.next/server/app/schedule.segments/_full.segment.rsc +18 -17
  331. package/.next/server/app/schedule.segments/_head.segment.rsc +4 -4
  332. package/.next/server/app/schedule.segments/_index.segment.rsc +10 -10
  333. package/.next/server/app/schedule.segments/_tree.segment.rsc +3 -2
  334. package/.next/server/app/schedule.segments/schedule/__PAGE__.segment.rsc +4 -4
  335. package/.next/server/app/schedule.segments/schedule.segment.rsc +3 -3
  336. package/.next/server/app/settings/commands/page/next-font-manifest.json +4 -2
  337. package/.next/server/app/settings/commands/page/react-loadable-manifest.json +1 -1
  338. package/.next/server/app/settings/commands/page.js.nft.json +1 -1
  339. package/.next/server/app/settings/commands/page_client-reference-manifest.js +1 -1
  340. package/.next/server/app/settings/commands.html +1 -1
  341. package/.next/server/app/settings/commands.rsc +19 -18
  342. package/.next/server/app/settings/commands.segments/_full.segment.rsc +19 -18
  343. package/.next/server/app/settings/commands.segments/_head.segment.rsc +4 -4
  344. package/.next/server/app/settings/commands.segments/_index.segment.rsc +10 -10
  345. package/.next/server/app/settings/commands.segments/_tree.segment.rsc +3 -2
  346. package/.next/server/app/settings/commands.segments/settings/commands/__PAGE__.segment.rsc +4 -4
  347. package/.next/server/app/settings/commands.segments/settings/commands.segment.rsc +3 -3
  348. package/.next/server/app/settings/commands.segments/settings.segment.rsc +4 -4
  349. package/.next/server/app/settings/danger-zone/page/app-paths-manifest.json +3 -0
  350. package/.next/server/app/settings/danger-zone/page/next-font-manifest.json +8 -0
  351. package/.next/server/app/{connections/knowledge → settings/danger-zone}/page/react-loadable-manifest.json +1 -1
  352. package/.next/server/app/settings/{advanced → danger-zone}/page.js +6 -6
  353. package/.next/server/app/settings/{connections → danger-zone}/page.js.nft.json +1 -1
  354. package/.next/server/app/settings/danger-zone/page_client-reference-manifest.js +3 -0
  355. package/.next/server/app/settings/danger-zone.html +1 -0
  356. package/.next/server/app/settings/{advanced.meta → danger-zone.meta} +3 -3
  357. package/.next/server/app/settings/danger-zone.rsc +28 -0
  358. package/.next/server/app/settings/danger-zone.segments/_full.segment.rsc +28 -0
  359. package/.next/server/app/settings/danger-zone.segments/_head.segment.rsc +6 -0
  360. package/.next/server/app/settings/danger-zone.segments/_index.segment.rsc +11 -0
  361. package/.next/server/app/settings/danger-zone.segments/_tree.segment.rsc +3 -0
  362. package/.next/server/app/settings/danger-zone.segments/settings/danger-zone/__PAGE__.segment.rsc +9 -0
  363. package/.next/server/app/settings/danger-zone.segments/settings/danger-zone.segment.rsc +5 -0
  364. package/.next/server/app/settings/danger-zone.segments/settings.segment.rsc +5 -0
  365. package/.next/server/app/settings/hours/page/app-paths-manifest.json +3 -0
  366. package/.next/server/app/settings/hours/page/next-font-manifest.json +8 -0
  367. package/.next/server/app/settings/{connections → hours}/page/react-loadable-manifest.json +1 -1
  368. package/.next/server/app/settings/{routines → hours}/page.js +6 -6
  369. package/.next/server/app/settings/{journal → hours}/page.js.nft.json +1 -1
  370. package/.next/server/app/settings/hours/page_client-reference-manifest.js +3 -0
  371. package/.next/server/app/settings/hours.html +1 -0
  372. package/.next/server/app/settings/{journal.meta → hours.meta} +3 -3
  373. package/.next/server/app/settings/hours.rsc +28 -0
  374. package/.next/server/app/settings/hours.segments/_full.segment.rsc +28 -0
  375. package/.next/server/app/settings/hours.segments/_head.segment.rsc +6 -0
  376. package/.next/server/app/settings/hours.segments/_index.segment.rsc +11 -0
  377. package/.next/server/app/settings/hours.segments/_tree.segment.rsc +3 -0
  378. package/.next/server/app/settings/hours.segments/settings/hours/__PAGE__.segment.rsc +9 -0
  379. package/.next/server/app/settings/hours.segments/settings/hours.segment.rsc +5 -0
  380. package/.next/server/app/settings/hours.segments/settings.segment.rsc +5 -0
  381. package/.next/server/app/settings/infrastructure/page/app-paths-manifest.json +3 -0
  382. package/.next/server/app/settings/infrastructure/page/next-font-manifest.json +8 -0
  383. package/.next/server/app/settings/infrastructure/page/react-loadable-manifest.json +8 -0
  384. package/.next/server/app/settings/{schedule → infrastructure}/page.js +6 -6
  385. package/.next/server/app/settings/{backends → infrastructure}/page.js.nft.json +1 -1
  386. package/.next/server/app/settings/infrastructure/page_client-reference-manifest.js +3 -0
  387. package/.next/server/app/settings/infrastructure.html +1 -0
  388. package/.next/server/app/settings/{connections.meta → infrastructure.meta} +3 -3
  389. package/.next/server/app/settings/infrastructure.rsc +28 -0
  390. package/.next/server/app/settings/infrastructure.segments/_full.segment.rsc +28 -0
  391. package/.next/server/app/settings/infrastructure.segments/_head.segment.rsc +6 -0
  392. package/.next/server/app/settings/infrastructure.segments/_index.segment.rsc +11 -0
  393. package/.next/server/app/settings/infrastructure.segments/_tree.segment.rsc +3 -0
  394. package/.next/server/app/settings/infrastructure.segments/settings/infrastructure/__PAGE__.segment.rsc +9 -0
  395. package/.next/server/app/settings/infrastructure.segments/settings/infrastructure.segment.rsc +5 -0
  396. package/.next/server/app/settings/infrastructure.segments/settings.segment.rsc +5 -0
  397. package/.next/server/app/settings/integrations/browser-history/page/next-font-manifest.json +4 -2
  398. package/.next/server/app/settings/integrations/browser-history/page/react-loadable-manifest.json +1 -1
  399. package/.next/server/app/settings/integrations/browser-history/page.js.nft.json +1 -1
  400. package/.next/server/app/settings/integrations/browser-history/page_client-reference-manifest.js +1 -1
  401. package/.next/server/app/settings/integrations/browser-history-managed/b4/page/next-font-manifest.json +4 -2
  402. package/.next/server/app/settings/integrations/browser-history-managed/b4/page/react-loadable-manifest.json +1 -1
  403. package/.next/server/app/settings/integrations/browser-history-managed/b4/page.js.nft.json +1 -1
  404. package/.next/server/app/settings/integrations/browser-history-managed/b4/page_client-reference-manifest.js +1 -1
  405. package/.next/server/app/settings/integrations/browser-history-managed/b4.html +1 -1
  406. package/.next/server/app/settings/integrations/browser-history-managed/b4.rsc +19 -18
  407. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_full.segment.rsc +19 -18
  408. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_head.segment.rsc +4 -4
  409. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_index.segment.rsc +10 -10
  410. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/_tree.segment.rsc +3 -2
  411. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations/browser-history-managed/b4/__PAGE__.segment.rsc +4 -4
  412. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations/browser-history-managed/b4.segment.rsc +3 -3
  413. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations/browser-history-managed.segment.rsc +3 -3
  414. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings/integrations.segment.rsc +3 -3
  415. package/.next/server/app/settings/integrations/browser-history-managed/b4.segments/settings.segment.rsc +4 -4
  416. package/.next/server/app/settings/integrations/browser-history-managed/page/next-font-manifest.json +4 -2
  417. package/.next/server/app/settings/integrations/browser-history-managed/page/react-loadable-manifest.json +1 -1
  418. package/.next/server/app/settings/integrations/browser-history-managed/page.js.nft.json +1 -1
  419. package/.next/server/app/settings/integrations/browser-history-managed/page_client-reference-manifest.js +1 -1
  420. package/.next/server/app/settings/integrations/browser-history-managed.html +1 -1
  421. package/.next/server/app/settings/integrations/browser-history-managed.rsc +19 -18
  422. package/.next/server/app/settings/integrations/browser-history-managed.segments/_full.segment.rsc +19 -18
  423. package/.next/server/app/settings/integrations/browser-history-managed.segments/_head.segment.rsc +4 -4
  424. package/.next/server/app/settings/integrations/browser-history-managed.segments/_index.segment.rsc +10 -10
  425. package/.next/server/app/settings/integrations/browser-history-managed.segments/_tree.segment.rsc +3 -2
  426. package/.next/server/app/settings/integrations/browser-history-managed.segments/settings/integrations/browser-history-managed/__PAGE__.segment.rsc +4 -4
  427. package/.next/server/app/settings/integrations/browser-history-managed.segments/settings/integrations/browser-history-managed.segment.rsc +3 -3
  428. package/.next/server/app/settings/integrations/browser-history-managed.segments/settings/integrations.segment.rsc +3 -3
  429. package/.next/server/app/settings/integrations/browser-history-managed.segments/settings.segment.rsc +4 -4
  430. package/.next/server/app/settings/integrations/browser-history.html +1 -1
  431. package/.next/server/app/settings/integrations/browser-history.rsc +19 -18
  432. package/.next/server/app/settings/integrations/browser-history.segments/_full.segment.rsc +19 -18
  433. package/.next/server/app/settings/integrations/browser-history.segments/_head.segment.rsc +4 -4
  434. package/.next/server/app/settings/integrations/browser-history.segments/_index.segment.rsc +10 -10
  435. package/.next/server/app/settings/integrations/browser-history.segments/_tree.segment.rsc +3 -2
  436. package/.next/server/app/settings/integrations/browser-history.segments/settings/integrations/browser-history/__PAGE__.segment.rsc +4 -4
  437. package/.next/server/app/settings/integrations/browser-history.segments/settings/integrations/browser-history.segment.rsc +3 -3
  438. package/.next/server/app/settings/integrations/browser-history.segments/settings/integrations.segment.rsc +3 -3
  439. package/.next/server/app/settings/integrations/browser-history.segments/settings.segment.rsc +4 -4
  440. package/.next/server/app/settings/lessons/page/next-font-manifest.json +4 -2
  441. package/.next/server/app/settings/lessons/page/react-loadable-manifest.json +1 -1
  442. package/.next/server/app/settings/lessons/page.js.nft.json +1 -1
  443. package/.next/server/app/settings/lessons/page_client-reference-manifest.js +1 -1
  444. package/.next/server/app/settings/lessons.html +1 -1
  445. package/.next/server/app/settings/lessons.rsc +19 -18
  446. package/.next/server/app/settings/lessons.segments/_full.segment.rsc +19 -18
  447. package/.next/server/app/settings/lessons.segments/_head.segment.rsc +4 -4
  448. package/.next/server/app/settings/lessons.segments/_index.segment.rsc +10 -10
  449. package/.next/server/app/settings/lessons.segments/_tree.segment.rsc +3 -2
  450. package/.next/server/app/settings/lessons.segments/settings/lessons/__PAGE__.segment.rsc +4 -4
  451. package/.next/server/app/settings/lessons.segments/settings/lessons.segment.rsc +3 -3
  452. package/.next/server/app/settings/lessons.segments/settings.segment.rsc +4 -4
  453. package/.next/server/app/settings/management/page/next-font-manifest.json +4 -2
  454. package/.next/server/app/settings/management/page/react-loadable-manifest.json +1 -1
  455. package/.next/server/app/settings/management/page.js.nft.json +1 -1
  456. package/.next/server/app/settings/management/page_client-reference-manifest.js +1 -1
  457. package/.next/server/app/settings/management.html +1 -1
  458. package/.next/server/app/settings/management.rsc +19 -18
  459. package/.next/server/app/settings/management.segments/_full.segment.rsc +19 -18
  460. package/.next/server/app/settings/management.segments/_head.segment.rsc +4 -4
  461. package/.next/server/app/settings/management.segments/_index.segment.rsc +10 -10
  462. package/.next/server/app/settings/management.segments/_tree.segment.rsc +3 -2
  463. package/.next/server/app/settings/management.segments/settings/management/__PAGE__.segment.rsc +4 -4
  464. package/.next/server/app/settings/management.segments/settings/management.segment.rsc +3 -3
  465. package/.next/server/app/settings/management.segments/settings.segment.rsc +4 -4
  466. package/.next/server/app/settings/models/page/next-font-manifest.json +4 -2
  467. package/.next/server/app/settings/models/page/react-loadable-manifest.json +1 -1
  468. package/.next/server/app/settings/models/page.js.nft.json +1 -1
  469. package/.next/server/app/settings/models/page_client-reference-manifest.js +1 -1
  470. package/.next/server/app/settings/models.html +1 -1
  471. package/.next/server/app/settings/models.rsc +19 -18
  472. package/.next/server/app/settings/models.segments/_full.segment.rsc +19 -18
  473. package/.next/server/app/settings/models.segments/_head.segment.rsc +4 -4
  474. package/.next/server/app/settings/models.segments/_index.segment.rsc +10 -10
  475. package/.next/server/app/settings/models.segments/_tree.segment.rsc +3 -2
  476. package/.next/server/app/settings/models.segments/settings/models/__PAGE__.segment.rsc +4 -4
  477. package/.next/server/app/settings/models.segments/settings/models.segment.rsc +3 -3
  478. package/.next/server/app/settings/models.segments/settings.segment.rsc +4 -4
  479. package/.next/server/app/settings/page/next-font-manifest.json +4 -2
  480. package/.next/server/app/settings/page/react-loadable-manifest.json +1 -1
  481. package/.next/server/app/settings/page.js.nft.json +1 -1
  482. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  483. package/.next/server/app/settings/safety/page/app-paths-manifest.json +3 -0
  484. package/.next/server/app/settings/safety/page/next-font-manifest.json +8 -0
  485. package/.next/server/app/settings/safety/page/react-loadable-manifest.json +8 -0
  486. package/.next/server/app/settings/{journal → safety}/page.js +6 -6
  487. package/.next/server/app/settings/{processes → safety}/page.js.nft.json +1 -1
  488. package/.next/server/app/settings/safety/page_client-reference-manifest.js +3 -0
  489. package/.next/server/app/settings/safety.html +1 -0
  490. package/.next/server/app/settings/{backends.meta → safety.meta} +3 -3
  491. package/.next/server/app/settings/safety.rsc +28 -0
  492. package/.next/server/app/settings/safety.segments/_full.segment.rsc +28 -0
  493. package/.next/server/app/settings/safety.segments/_head.segment.rsc +6 -0
  494. package/.next/server/app/settings/safety.segments/_index.segment.rsc +11 -0
  495. package/.next/server/app/settings/safety.segments/_tree.segment.rsc +3 -0
  496. package/.next/server/app/settings/safety.segments/settings/safety/__PAGE__.segment.rsc +9 -0
  497. package/.next/server/app/settings/safety.segments/settings/safety.segment.rsc +5 -0
  498. package/.next/server/app/settings/safety.segments/settings.segment.rsc +5 -0
  499. package/.next/server/app/settings/self-learning/page/next-font-manifest.json +4 -2
  500. package/.next/server/app/settings/self-learning/page/react-loadable-manifest.json +1 -1
  501. package/.next/server/app/settings/self-learning/page.js.nft.json +1 -1
  502. package/.next/server/app/settings/self-learning/page_client-reference-manifest.js +1 -1
  503. package/.next/server/app/settings/self-learning.html +1 -1
  504. package/.next/server/app/settings/self-learning.rsc +19 -18
  505. package/.next/server/app/settings/self-learning.segments/_full.segment.rsc +19 -18
  506. package/.next/server/app/settings/self-learning.segments/_head.segment.rsc +4 -4
  507. package/.next/server/app/settings/self-learning.segments/_index.segment.rsc +10 -10
  508. package/.next/server/app/settings/self-learning.segments/_tree.segment.rsc +3 -2
  509. package/.next/server/app/settings/self-learning.segments/settings/self-learning/__PAGE__.segment.rsc +4 -4
  510. package/.next/server/app/settings/self-learning.segments/settings/self-learning.segment.rsc +3 -3
  511. package/.next/server/app/settings/self-learning.segments/settings.segment.rsc +4 -4
  512. package/.next/server/app/settings/wiki/page/next-font-manifest.json +4 -2
  513. package/.next/server/app/settings/wiki/page/react-loadable-manifest.json +1 -1
  514. package/.next/server/app/settings/wiki/page.js.nft.json +1 -1
  515. package/.next/server/app/settings/wiki/page_client-reference-manifest.js +1 -1
  516. package/.next/server/app/settings/wiki/timeline/page/next-font-manifest.json +4 -2
  517. package/.next/server/app/settings/wiki/timeline/page/react-loadable-manifest.json +1 -1
  518. package/.next/server/app/settings/wiki/timeline/page.js.nft.json +1 -1
  519. package/.next/server/app/settings/wiki/timeline/page_client-reference-manifest.js +1 -1
  520. package/.next/server/app/settings/wiki/timeline.html +1 -1
  521. package/.next/server/app/settings/wiki/timeline.rsc +17 -16
  522. package/.next/server/app/settings/wiki/timeline.segments/_full.segment.rsc +17 -16
  523. package/.next/server/app/settings/wiki/timeline.segments/_head.segment.rsc +4 -4
  524. package/.next/server/app/settings/wiki/timeline.segments/_index.segment.rsc +10 -10
  525. package/.next/server/app/settings/wiki/timeline.segments/_tree.segment.rsc +3 -2
  526. package/.next/server/app/settings/wiki/timeline.segments/settings/wiki/timeline/__PAGE__.segment.rsc +2 -2
  527. package/.next/server/app/settings/wiki/timeline.segments/settings/wiki/timeline.segment.rsc +3 -3
  528. package/.next/server/app/settings/wiki/timeline.segments/settings/wiki.segment.rsc +3 -3
  529. package/.next/server/app/settings/wiki/timeline.segments/settings.segment.rsc +4 -4
  530. package/.next/server/app/settings/wiki.html +1 -1
  531. package/.next/server/app/settings/wiki.rsc +19 -18
  532. package/.next/server/app/settings/wiki.segments/_full.segment.rsc +19 -18
  533. package/.next/server/app/settings/wiki.segments/_head.segment.rsc +4 -4
  534. package/.next/server/app/settings/wiki.segments/_index.segment.rsc +10 -10
  535. package/.next/server/app/settings/wiki.segments/_tree.segment.rsc +3 -2
  536. package/.next/server/app/settings/wiki.segments/settings/wiki/__PAGE__.segment.rsc +4 -4
  537. package/.next/server/app/settings/wiki.segments/settings/wiki.segment.rsc +3 -3
  538. package/.next/server/app/settings/wiki.segments/settings.segment.rsc +4 -4
  539. package/.next/server/app/settings.html +1 -1
  540. package/.next/server/app/settings.rsc +19 -18
  541. package/.next/server/app/settings.segments/_full.segment.rsc +19 -18
  542. package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  543. package/.next/server/app/settings.segments/_index.segment.rsc +10 -10
  544. package/.next/server/app/settings.segments/_tree.segment.rsc +3 -2
  545. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  546. package/.next/server/app/settings.segments/settings.segment.rsc +4 -4
  547. package/.next/server/app/setup/page/next-font-manifest.json +4 -2
  548. package/.next/server/app/setup/page/react-loadable-manifest.json +1 -1
  549. package/.next/server/app/setup/page.js.nft.json +1 -1
  550. package/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  551. package/.next/server/app/setup.html +1 -1
  552. package/.next/server/app/setup.rsc +18 -17
  553. package/.next/server/app/setup.segments/_full.segment.rsc +18 -17
  554. package/.next/server/app/setup.segments/_head.segment.rsc +4 -4
  555. package/.next/server/app/setup.segments/_index.segment.rsc +10 -10
  556. package/.next/server/app/setup.segments/_tree.segment.rsc +3 -2
  557. package/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +4 -4
  558. package/.next/server/app/setup.segments/setup.segment.rsc +3 -3
  559. package/.next/server/app/trip/page/next-font-manifest.json +4 -2
  560. package/.next/server/app/trip/page/react-loadable-manifest.json +1 -1
  561. package/.next/server/app/trip/page.js.nft.json +1 -1
  562. package/.next/server/app/trip/page_client-reference-manifest.js +1 -1
  563. package/.next/server/app/trip.html +1 -1
  564. package/.next/server/app/trip.rsc +18 -17
  565. package/.next/server/app/trip.segments/_full.segment.rsc +18 -17
  566. package/.next/server/app/trip.segments/_head.segment.rsc +4 -4
  567. package/.next/server/app/trip.segments/_index.segment.rsc +10 -10
  568. package/.next/server/app/trip.segments/_tree.segment.rsc +3 -2
  569. package/.next/server/app/trip.segments/trip/__PAGE__.segment.rsc +4 -4
  570. package/.next/server/app/trip.segments/trip.segment.rsc +3 -3
  571. package/.next/server/app/wiki/page/next-font-manifest.json +4 -2
  572. package/.next/server/app/wiki/page/react-loadable-manifest.json +1 -1
  573. package/.next/server/app/wiki/page.js.nft.json +1 -1
  574. package/.next/server/app/wiki/page_client-reference-manifest.js +1 -1
  575. package/.next/server/app/wiki/timeline/page/next-font-manifest.json +4 -2
  576. package/.next/server/app/wiki/timeline/page/react-loadable-manifest.json +1 -1
  577. package/.next/server/app/wiki/timeline/page.js.nft.json +1 -1
  578. package/.next/server/app/wiki/timeline/page_client-reference-manifest.js +1 -1
  579. package/.next/server/app/wiki/timeline.html +1 -1
  580. package/.next/server/app/wiki/timeline.rsc +18 -17
  581. package/.next/server/app/wiki/timeline.segments/_full.segment.rsc +18 -17
  582. package/.next/server/app/wiki/timeline.segments/_head.segment.rsc +4 -4
  583. package/.next/server/app/wiki/timeline.segments/_index.segment.rsc +10 -10
  584. package/.next/server/app/wiki/timeline.segments/_tree.segment.rsc +3 -2
  585. package/.next/server/app/wiki/timeline.segments/wiki/timeline/__PAGE__.segment.rsc +4 -4
  586. package/.next/server/app/wiki/timeline.segments/wiki/timeline.segment.rsc +3 -3
  587. package/.next/server/app/wiki/timeline.segments/wiki.segment.rsc +3 -3
  588. package/.next/server/app/wiki.html +1 -1
  589. package/.next/server/app/wiki.rsc +18 -17
  590. package/.next/server/app/wiki.segments/_full.segment.rsc +18 -17
  591. package/.next/server/app/wiki.segments/_head.segment.rsc +4 -4
  592. package/.next/server/app/wiki.segments/_index.segment.rsc +10 -10
  593. package/.next/server/app/wiki.segments/_tree.segment.rsc +3 -2
  594. package/.next/server/app/wiki.segments/wiki/__PAGE__.segment.rsc +4 -4
  595. package/.next/server/app/wiki.segments/wiki.segment.rsc +3 -3
  596. package/.next/server/app-paths-manifest.json +6 -9
  597. package/.next/server/chunks/0z~i_next_dist_esm_build_templates_app-route_0o_o_hp.js +1 -1
  598. package/.next/server/chunks/[root-of-the-server]__02gp4s0._.js +1 -1
  599. package/.next/server/chunks/[root-of-the-server]__0gckkni._.js +1 -1
  600. package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_connections_notes_page_actions_04zn1-i.js +3 -0
  601. package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_danger-zone_page_actions_0mp3gc-.js +3 -0
  602. package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_safety_page_actions_05rsfax.js +3 -0
  603. package/.next/server/chunks/ssr/0juq_dashboard_src_app_settings_integrations_browser-history_page_tsx_0.30t~j._.js +1 -1
  604. package/.next/server/chunks/ssr/0x9-__next-internal_server_app_settings_infrastructure_page_actions_0u8fwic.js +3 -0
  605. package/.next/server/chunks/ssr/0x9-_src_app_settings_integrations_browser-history-managed_b4_page_tsx_03zkdyv._.js +1 -1
  606. package/.next/server/chunks/ssr/0x9-_src_app_settings_integrations_browser-history-managed_page_tsx_0q.v5ph._.js +1 -1
  607. package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0-xf3nq.js +1 -1
  608. package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_05t.o5v.js +4 -0
  609. package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0rzk_wb.js → 0z~i_next_dist_esm_build_templates_app-page_07tjgqy.js} +3 -3
  610. package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0dgjd77.js → 0z~i_next_dist_esm_build_templates_app-page_08-8pml.js} +3 -3
  611. package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0~l1-oo.js → 0z~i_next_dist_esm_build_templates_app-page_0_hw.~x.js} +3 -3
  612. package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0i5nfg6.js → 0z~i_next_dist_esm_build_templates_app-page_0gja0sp.js} +3 -3
  613. package/.next/server/chunks/ssr/{0z~i_next_dist_esm_build_templates_app-page_0i3pbzc.js → 0z~i_next_dist_esm_build_templates_app-page_0xk7dvj.js} +3 -3
  614. package/.next/server/chunks/ssr/{[root-of-the-server]__0.oq_nd._.js → [root-of-the-server]__064iw-m._.js} +2 -2
  615. package/.next/server/chunks/ssr/[root-of-the-server]__0bcu47h._.js +3 -0
  616. package/.next/server/chunks/ssr/{[root-of-the-server]__0hxae6t._.js → [root-of-the-server]__0dz8grn._.js} +2 -2
  617. package/.next/server/chunks/ssr/[root-of-the-server]__0e3togs._.js +1 -1
  618. package/.next/server/chunks/ssr/[root-of-the-server]__0own5qk._.js +7 -0
  619. package/.next/server/chunks/ssr/{[root-of-the-server]__0k4~6v4._.js → [root-of-the-server]__0p.rqkz._.js} +2 -2
  620. package/.next/server/chunks/ssr/[root-of-the-server]__0twuzim._.js +1 -1
  621. package/.next/server/chunks/ssr/[root-of-the-server]__0v.2-w_._.js +9 -0
  622. package/.next/server/chunks/ssr/{[root-of-the-server]__0ku1mlh._.js → [root-of-the-server]__0x90fri._.js} +2 -2
  623. package/.next/server/chunks/ssr/{[root-of-the-server]__138v34b._.js → [root-of-the-server]__12ocbb6._.js} +2 -2
  624. package/.next/server/chunks/ssr/_0-fa0e6._.js +3 -0
  625. package/.next/server/chunks/ssr/_0-fv_sr._.js +1 -1
  626. package/.next/server/chunks/ssr/_0.83~vc._.js +3 -0
  627. package/.next/server/chunks/ssr/_0.buz~z._.js +3 -0
  628. package/.next/server/chunks/ssr/_00m~lu3._.js +3 -0
  629. package/.next/server/chunks/ssr/_00yd82b._.js +3 -0
  630. package/.next/server/chunks/ssr/_01u8_20._.js +1 -1
  631. package/.next/server/chunks/ssr/_02-~4_x._.js +3 -0
  632. package/.next/server/chunks/ssr/_03ylkmo._.js +1 -1
  633. package/.next/server/chunks/ssr/_042qll3._.js +3 -0
  634. package/.next/server/chunks/ssr/_05-nasq._.js +3 -0
  635. package/.next/server/chunks/ssr/_052c-d8._.js +1 -1
  636. package/.next/server/chunks/ssr/_05etcnw._.js +3 -0
  637. package/.next/server/chunks/ssr/_06pfh8i._.js +3 -0
  638. package/.next/server/chunks/ssr/_07y8~wo._.js +3 -0
  639. package/.next/server/chunks/ssr/_0837jo1._.js +1 -1
  640. package/.next/server/chunks/ssr/_095g5nv._.js +3 -0
  641. package/.next/server/chunks/ssr/_0_59iz5._.js +3 -0
  642. package/.next/server/chunks/ssr/_0_mohhy._.js +3 -0
  643. package/.next/server/chunks/ssr/_0_qa7ix._.js +3 -0
  644. package/.next/server/chunks/ssr/_0a0gitj._.js +3 -0
  645. package/.next/server/chunks/ssr/_0bbgll1._.js +3 -0
  646. package/.next/server/chunks/ssr/_0bsns8f._.js +3 -0
  647. package/.next/server/chunks/ssr/_0cus~q3._.js +3 -0
  648. package/.next/server/chunks/ssr/_0cwcz17._.js +1 -1
  649. package/.next/server/chunks/ssr/_0do3r93._.js +3 -0
  650. package/.next/server/chunks/ssr/_0eoqkp.._.js +3 -0
  651. package/.next/server/chunks/ssr/_0fse1qi._.js +3 -0
  652. package/.next/server/chunks/ssr/_0g7_r5i._.js +1 -1
  653. package/.next/server/chunks/ssr/_0h-mq6i._.js +3 -0
  654. package/.next/server/chunks/ssr/_0h7l~qt._.js +3 -0
  655. package/.next/server/chunks/ssr/_0hojxqy._.js +1 -1
  656. package/.next/server/chunks/ssr/_0jlpcde._.js +3 -0
  657. package/.next/server/chunks/ssr/_0kn1u4v._.js +3 -0
  658. package/.next/server/chunks/ssr/_0l7uzol._.js +3 -0
  659. package/.next/server/chunks/ssr/_0m~vcd.._.js +3 -0
  660. package/.next/server/chunks/ssr/_0n2_n8d._.js +3 -0
  661. package/.next/server/chunks/ssr/_0p4ugyq._.js +3 -0
  662. package/.next/server/chunks/ssr/_0pbcc~c._.js +3 -0
  663. package/.next/server/chunks/ssr/_0q6ga5s._.js +3 -0
  664. package/.next/server/chunks/ssr/_0rcvmzk._.js +3 -0
  665. package/.next/server/chunks/ssr/_0tl98en._.js +1 -1
  666. package/.next/server/chunks/ssr/_0vtof91._.js +3 -0
  667. package/.next/server/chunks/ssr/_0wj-xi-._.js +1 -1
  668. package/.next/server/chunks/ssr/_0y-w3is._.js +1 -1
  669. package/.next/server/chunks/ssr/_0ys19k1._.js +3 -0
  670. package/.next/server/chunks/ssr/_0zegd8c._.js +3 -0
  671. package/.next/server/chunks/ssr/_0zskdhg._.js +3 -0
  672. package/.next/server/chunks/ssr/_0~5jogr._.js +3 -0
  673. package/.next/server/chunks/ssr/_10t~mm1._.js +5 -0
  674. package/.next/server/chunks/ssr/_12yrbbd._.js +3 -0
  675. package/.next/server/chunks/ssr/_12~voz0._.js +3 -0
  676. package/.next/server/chunks/ssr/_13x8vt3._.js +3 -0
  677. package/.next/server/chunks/ssr/node_modules__pnpm_0hiwu9~._.js +3 -0
  678. package/.next/server/chunks/ssr/packages_dashboard__next-internal_server_app_browser_page_actions_09ozuw5.js +3 -0
  679. package/.next/server/chunks/ssr/packages_dashboard__next-internal_server_app_settings_hours_page_actions_090o.uf.js +3 -0
  680. package/.next/server/chunks/ssr/packages_dashboard_src_08ni3k2._.js +1 -1
  681. package/.next/server/chunks/ssr/packages_dashboard_src_0dzu4m3._.js +1 -1
  682. package/.next/server/chunks/ssr/packages_dashboard_src_0l-df62._.js +1 -1
  683. package/.next/server/chunks/ssr/packages_dashboard_src_0somi_b._.js +3 -0
  684. package/.next/server/chunks/ssr/packages_dashboard_src_0uxs9-.._.js +1 -1
  685. package/.next/server/chunks/ssr/packages_dashboard_src_0wg3sud._.js +1 -1
  686. package/.next/server/chunks/ssr/packages_dashboard_src_0yi7124._.js +3 -0
  687. package/.next/server/chunks/ssr/packages_dashboard_src_0zhdaa4._.js +1 -1
  688. package/.next/server/chunks/ssr/packages_dashboard_src_13g~g03._.js +1 -1
  689. package/.next/server/chunks/ssr/packages_dashboard_src_app_activity_loading_tsx_0rzsqef._.js +1 -1
  690. package/.next/server/chunks/ssr/packages_dashboard_src_app_activity_page_tsx_08yep46._.js +1 -1
  691. package/.next/server/chunks/ssr/packages_dashboard_src_app_agents_[slug]_page_tsx_038yph.._.js +1 -1
  692. package/.next/server/chunks/ssr/packages_dashboard_src_app_agents_page_tsx_0simg3k._.js +2 -2
  693. package/.next/server/chunks/ssr/packages_dashboard_src_app_analytics_page_tsx_0tb_amd._.js +1 -1
  694. package/.next/server/chunks/ssr/packages_dashboard_src_app_browser-tasks_[id]_page_tsx_0.80q8e._.js +1 -1
  695. package/.next/server/chunks/ssr/packages_dashboard_src_app_chat_page_tsx_0i0_8pw._.js +1 -1
  696. package/.next/server/chunks/ssr/packages_dashboard_src_app_connections_mcp_page_tsx_0lc.low._.js +2 -2
  697. package/.next/server/chunks/ssr/packages_dashboard_src_app_connections_repositories_page_tsx_08y6paq._.js +1 -1
  698. package/.next/server/chunks/ssr/packages_dashboard_src_app_git_page_tsx_0ah19-6._.js +1 -1
  699. package/.next/server/chunks/ssr/packages_dashboard_src_app_knowledge_page_tsx_0uf4..4._.js +1 -1
  700. package/.next/server/chunks/ssr/packages_dashboard_src_app_page_tsx_0.p6n1a._.js +1 -1
  701. package/.next/server/chunks/ssr/packages_dashboard_src_app_schedule_page_tsx_0znc404._.js +1 -1
  702. package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_commands_page_tsx_0nacqrh._.js +1 -1
  703. package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_hours_page_tsx_0shgzxo._.js +3 -0
  704. package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_infrastructure_page_tsx_0c9oi1c._.js +3 -0
  705. package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_management_page_tsx_09mnin5._.js +1 -1
  706. package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_models_page_tsx_0djsx88._.js +1 -1
  707. package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_page_tsx_13_rdav._.js +1 -1
  708. package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_self-learning_page_tsx_0noj6fo._.js +1 -1
  709. package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_wiki_page_tsx_0..1tkb._.js +1 -1
  710. package/.next/server/chunks/ssr/packages_dashboard_src_app_setup_page_tsx_06k3via._.js +1 -1
  711. package/.next/server/chunks/ssr/packages_dashboard_src_components_0c08h~y._.js +3 -0
  712. package/.next/server/chunks/ssr/packages_dashboard_src_components_agents_AgentEditor_tsx_1379k-6._.js +2 -2
  713. package/.next/server/chunks/ssr/packages_dashboard_src_components_connections_integration-card_tsx_0yh1a-~._.js +2 -2
  714. package/.next/server/chunks/ssr/packages_dashboard_src_components_connections_slack-card_tsx_0mahejj._.js +1 -1
  715. package/.next/server/chunks/ssr/packages_dashboard_src_components_logs_event-row_tsx_0gwfgqo._.js +3 -0
  716. package/.next/server/chunks/ssr/packages_dashboard_src_components_mail_gmail-card_tsx_0kpway8._.js +1 -1
  717. package/.next/server/chunks/ssr/packages_shared_dist_index_0kuvow-.js +1 -1
  718. package/.next/server/edge/chunks/[root-of-the-server]__0iap10r._.js +1 -1
  719. package/.next/server/middleware/middleware-manifest.json +29 -5
  720. package/.next/server/middleware-build-manifest.js +3 -3
  721. package/.next/server/middleware-manifest.json +29 -5
  722. package/.next/server/next-font-manifest.js +1 -1
  723. package/.next/server/next-font-manifest.json +51 -2
  724. package/.next/server/pages/404.html +1 -1
  725. package/.next/server/pages/500.html +1 -1
  726. package/.next/server/server-reference-manifest.js +1 -1
  727. package/.next/server/server-reference-manifest.json +1 -1
  728. package/.next/static/{i_QR0WWkZFeICcOMbfuUs → 4Wu33OvzutxPxXUu1PWPC}/_clientMiddlewareManifest.js +24 -0
  729. package/.next/static/chunks/0-sq9td.e1huw.js +1 -0
  730. package/.next/static/chunks/0-~s5n1hsw0xz.css +1 -0
  731. package/.next/static/chunks/0.1mo3ft90qg_.js +1 -0
  732. package/.next/static/chunks/0.eu.rxoo07x6.js +1 -0
  733. package/.next/static/chunks/0147tjztlthxv.js +1 -0
  734. package/.next/static/chunks/01~5c-.ttg~hv.js +1 -0
  735. package/.next/static/chunks/02jrxwgg0c4jp.js +1 -0
  736. package/.next/static/chunks/02tb-nh0a2y6t.js +1 -0
  737. package/.next/static/chunks/03ndokpk6o0.5.js +1 -0
  738. package/.next/static/chunks/03qz~hx5zgr~d.js +1 -0
  739. package/.next/static/chunks/042u~0qpgty0o.js +10 -0
  740. package/.next/static/chunks/050-z9-4lo_4l.js +1 -0
  741. package/.next/static/chunks/051m0t~qz1jvu.js +1 -0
  742. package/.next/static/chunks/0755mii5h~0jr.js +1 -0
  743. package/.next/static/chunks/07_-k85izz7.j.js +1 -0
  744. package/.next/static/chunks/07qdiaq4h1bev.js +1 -0
  745. package/.next/static/chunks/07w_f8nwejvtm.js +1 -0
  746. package/.next/static/chunks/087m534nojkn2.js +1 -0
  747. package/.next/static/chunks/08tuvmjn9p090.js +1 -0
  748. package/.next/static/chunks/09k746-3cizz1.js +19 -0
  749. package/.next/static/chunks/09sekcnc01we8.js +1 -0
  750. package/.next/static/chunks/0_-a6t77lnxg4.js +1 -0
  751. package/.next/static/chunks/0_b4esx30vjxq.js +1 -0
  752. package/.next/static/chunks/0_r~att41ue.r.js +1 -0
  753. package/.next/static/chunks/0cj6iorqj7he_.js +1 -0
  754. package/.next/static/chunks/0c~_onh_gv7zj.js +1 -0
  755. package/.next/static/chunks/0d13hqow~d37h.js +1 -0
  756. package/.next/static/chunks/0drk956_8nbwg.js +1 -0
  757. package/.next/static/chunks/0e-txs97b3.x9.js +1 -0
  758. package/.next/static/chunks/0ezl44_wv~csn.js +1 -0
  759. package/.next/static/chunks/0g-eqp3qwkojl.js +1 -0
  760. package/.next/static/chunks/0h5rf~pu59~hu.js +1 -0
  761. package/.next/static/chunks/0i8.oj~1w~u~..js +1 -0
  762. package/.next/static/chunks/0iichp621kqto.js +1 -0
  763. package/.next/static/chunks/{0afrwc5vvwfx4.js → 0iscxmienbk2m.js} +1 -1
  764. package/.next/static/chunks/0iv9k-z7~xtww.js +1 -0
  765. package/.next/static/chunks/0k6jf41ge3u~8.js +1 -0
  766. package/.next/static/chunks/0k9-e5pear~t4.js +3 -0
  767. package/.next/static/chunks/0kib-9vm23r0j.js +1 -0
  768. package/.next/static/chunks/0kj.5xdofdrz7.js +1 -0
  769. package/.next/static/chunks/0lbnukk03a8nv.js +1 -0
  770. package/.next/static/chunks/0m8e4hy-r8y-4.js +1 -0
  771. package/.next/static/chunks/{02k085x_j4_bz.js → 0mkryl3ctt_xh.js} +1 -1
  772. package/.next/static/chunks/0mxp..4l7j1dn.js +1 -0
  773. package/.next/static/chunks/0o61x2xdye~o2.js +1 -0
  774. package/.next/static/chunks/0os-c6-aqwq4d.js +1 -0
  775. package/.next/static/chunks/0pxjn_pm269cw.js +1 -0
  776. package/.next/static/chunks/0qyxjj5z_is.d.js +1 -0
  777. package/.next/static/chunks/0s.cyrhyscm8x.js +1 -0
  778. package/.next/static/chunks/0wvyy~m_e1q5c.js +3 -0
  779. package/.next/static/chunks/0x96~upcinv2_.js +1 -0
  780. package/.next/static/chunks/0zo_ws6shrfnh.js +1 -0
  781. package/.next/static/chunks/0~kj3qxs7kx58.js +1 -0
  782. package/.next/static/chunks/10rtk-h9y-705.js +2 -0
  783. package/.next/static/chunks/115_4xjsk0jzh.js +1 -0
  784. package/.next/static/chunks/12zmqqk8p-b.~.js +1 -0
  785. package/.next/static/chunks/135nkfxk7so9p.js +1 -0
  786. package/.next/static/chunks/153z3m3.a2ubk.js +5 -0
  787. package/.next/static/chunks/15fpord4hyosp.js +1 -0
  788. package/.next/static/chunks/15~h2wegwdbf4.js +1 -0
  789. package/.next/static/chunks/16-i4p1ipmpts.js +1 -0
  790. package/.next/static/chunks/171j55n_9gyxb.js +1 -0
  791. package/.next/static/chunks/17c6~kld51ls5.js +11 -0
  792. package/.next/static/chunks/17tv5jbg2hiup.js +1 -0
  793. package/.next/static/chunks/187a-majiuj8r.js +1 -0
  794. package/.next/static/media/fraunces-latin-ext-wght-normal.08-a-oz-atsnn.woff2 +0 -0
  795. package/.next/static/media/fraunces-latin-wght-normal.0l9v6sgnyeoq8.woff2 +0 -0
  796. package/.next/static/media/fraunces-vietnamese-wght-normal.05ntv1..6v~z7.woff2 +0 -0
  797. package/.next/static/media/instrument-sans-latin-ext-wght-normal.0td0--1m0lec9.woff2 +0 -0
  798. package/.next/static/media/instrument-sans-latin-wght-normal.10bj0-z630vnn.woff2 +0 -0
  799. package/.next/types/routes.d.ts +7 -10
  800. package/.next/types/validator.ts +33 -60
  801. package/package.json +4 -2
  802. package/.next/server/app/connections/knowledge/page/app-paths-manifest.json +0 -3
  803. package/.next/server/app/connections/knowledge/page/next-font-manifest.json +0 -6
  804. package/.next/server/app/connections/knowledge/page.js.nft.json +0 -1
  805. package/.next/server/app/connections/knowledge/page_client-reference-manifest.js +0 -3
  806. package/.next/server/app/connections/knowledge.html +0 -1
  807. package/.next/server/app/connections/knowledge.rsc +0 -27
  808. package/.next/server/app/connections/knowledge.segments/_full.segment.rsc +0 -27
  809. package/.next/server/app/connections/knowledge.segments/_head.segment.rsc +0 -6
  810. package/.next/server/app/connections/knowledge.segments/_index.segment.rsc +0 -11
  811. package/.next/server/app/connections/knowledge.segments/_tree.segment.rsc +0 -2
  812. package/.next/server/app/connections/knowledge.segments/connections/knowledge/__PAGE__.segment.rsc +0 -9
  813. package/.next/server/app/connections/knowledge.segments/connections/knowledge.segment.rsc +0 -5
  814. package/.next/server/app/connections/knowledge.segments/connections.segment.rsc +0 -5
  815. package/.next/server/app/settings/advanced/page/app-paths-manifest.json +0 -3
  816. package/.next/server/app/settings/advanced/page/next-font-manifest.json +0 -6
  817. package/.next/server/app/settings/advanced/page.js.nft.json +0 -1
  818. package/.next/server/app/settings/advanced/page_client-reference-manifest.js +0 -3
  819. package/.next/server/app/settings/advanced.html +0 -1
  820. package/.next/server/app/settings/advanced.rsc +0 -27
  821. package/.next/server/app/settings/advanced.segments/_full.segment.rsc +0 -27
  822. package/.next/server/app/settings/advanced.segments/_head.segment.rsc +0 -6
  823. package/.next/server/app/settings/advanced.segments/_index.segment.rsc +0 -11
  824. package/.next/server/app/settings/advanced.segments/_tree.segment.rsc +0 -2
  825. package/.next/server/app/settings/advanced.segments/settings/advanced/__PAGE__.segment.rsc +0 -9
  826. package/.next/server/app/settings/advanced.segments/settings/advanced.segment.rsc +0 -5
  827. package/.next/server/app/settings/advanced.segments/settings.segment.rsc +0 -5
  828. package/.next/server/app/settings/backends/page/app-paths-manifest.json +0 -3
  829. package/.next/server/app/settings/backends/page/next-font-manifest.json +0 -6
  830. package/.next/server/app/settings/backends/page.js +0 -17
  831. package/.next/server/app/settings/backends/page_client-reference-manifest.js +0 -3
  832. package/.next/server/app/settings/backends.html +0 -1
  833. package/.next/server/app/settings/backends.rsc +0 -24
  834. package/.next/server/app/settings/backends.segments/_full.segment.rsc +0 -24
  835. package/.next/server/app/settings/backends.segments/_head.segment.rsc +0 -6
  836. package/.next/server/app/settings/backends.segments/_index.segment.rsc +0 -11
  837. package/.next/server/app/settings/backends.segments/_tree.segment.rsc +0 -2
  838. package/.next/server/app/settings/backends.segments/settings/backends/__PAGE__.segment.rsc +0 -6
  839. package/.next/server/app/settings/backends.segments/settings/backends.segment.rsc +0 -5
  840. package/.next/server/app/settings/backends.segments/settings.segment.rsc +0 -5
  841. package/.next/server/app/settings/connections/page/app-paths-manifest.json +0 -3
  842. package/.next/server/app/settings/connections/page/next-font-manifest.json +0 -6
  843. package/.next/server/app/settings/connections/page.js +0 -17
  844. package/.next/server/app/settings/connections/page_client-reference-manifest.js +0 -3
  845. package/.next/server/app/settings/connections.html +0 -1
  846. package/.next/server/app/settings/connections.rsc +0 -24
  847. package/.next/server/app/settings/connections.segments/_full.segment.rsc +0 -24
  848. package/.next/server/app/settings/connections.segments/_head.segment.rsc +0 -6
  849. package/.next/server/app/settings/connections.segments/_index.segment.rsc +0 -11
  850. package/.next/server/app/settings/connections.segments/_tree.segment.rsc +0 -2
  851. package/.next/server/app/settings/connections.segments/settings/connections/__PAGE__.segment.rsc +0 -6
  852. package/.next/server/app/settings/connections.segments/settings/connections.segment.rsc +0 -5
  853. package/.next/server/app/settings/connections.segments/settings.segment.rsc +0 -5
  854. package/.next/server/app/settings/journal/page/app-paths-manifest.json +0 -3
  855. package/.next/server/app/settings/journal/page/next-font-manifest.json +0 -6
  856. package/.next/server/app/settings/journal/page/react-loadable-manifest.json +0 -8
  857. package/.next/server/app/settings/journal/page_client-reference-manifest.js +0 -3
  858. package/.next/server/app/settings/journal.html +0 -1
  859. package/.next/server/app/settings/journal.rsc +0 -27
  860. package/.next/server/app/settings/journal.segments/_full.segment.rsc +0 -27
  861. package/.next/server/app/settings/journal.segments/_head.segment.rsc +0 -6
  862. package/.next/server/app/settings/journal.segments/_index.segment.rsc +0 -11
  863. package/.next/server/app/settings/journal.segments/_tree.segment.rsc +0 -2
  864. package/.next/server/app/settings/journal.segments/settings/journal/__PAGE__.segment.rsc +0 -9
  865. package/.next/server/app/settings/journal.segments/settings/journal.segment.rsc +0 -5
  866. package/.next/server/app/settings/journal.segments/settings.segment.rsc +0 -5
  867. package/.next/server/app/settings/messaging/page/app-paths-manifest.json +0 -3
  868. package/.next/server/app/settings/messaging/page/next-font-manifest.json +0 -6
  869. package/.next/server/app/settings/messaging/page/react-loadable-manifest.json +0 -8
  870. package/.next/server/app/settings/messaging/page.js +0 -17
  871. package/.next/server/app/settings/messaging/page.js.nft.json +0 -1
  872. package/.next/server/app/settings/messaging/page_client-reference-manifest.js +0 -3
  873. package/.next/server/app/settings/messaging.html +0 -1
  874. package/.next/server/app/settings/messaging.meta +0 -16
  875. package/.next/server/app/settings/messaging.rsc +0 -24
  876. package/.next/server/app/settings/messaging.segments/_full.segment.rsc +0 -24
  877. package/.next/server/app/settings/messaging.segments/_head.segment.rsc +0 -6
  878. package/.next/server/app/settings/messaging.segments/_index.segment.rsc +0 -11
  879. package/.next/server/app/settings/messaging.segments/_tree.segment.rsc +0 -2
  880. package/.next/server/app/settings/messaging.segments/settings/messaging/__PAGE__.segment.rsc +0 -6
  881. package/.next/server/app/settings/messaging.segments/settings/messaging.segment.rsc +0 -5
  882. package/.next/server/app/settings/messaging.segments/settings.segment.rsc +0 -5
  883. package/.next/server/app/settings/processes/page/app-paths-manifest.json +0 -3
  884. package/.next/server/app/settings/processes/page/build-manifest.json +0 -18
  885. package/.next/server/app/settings/processes/page/next-font-manifest.json +0 -6
  886. package/.next/server/app/settings/processes/page/react-loadable-manifest.json +0 -8
  887. package/.next/server/app/settings/processes/page/server-reference-manifest.json +0 -4
  888. package/.next/server/app/settings/processes/page.js +0 -17
  889. package/.next/server/app/settings/processes/page_client-reference-manifest.js +0 -3
  890. package/.next/server/app/settings/processes.html +0 -1
  891. package/.next/server/app/settings/processes.meta +0 -16
  892. package/.next/server/app/settings/processes.rsc +0 -24
  893. package/.next/server/app/settings/processes.segments/_full.segment.rsc +0 -24
  894. package/.next/server/app/settings/processes.segments/_head.segment.rsc +0 -6
  895. package/.next/server/app/settings/processes.segments/_index.segment.rsc +0 -11
  896. package/.next/server/app/settings/processes.segments/_tree.segment.rsc +0 -2
  897. package/.next/server/app/settings/processes.segments/settings/processes/__PAGE__.segment.rsc +0 -6
  898. package/.next/server/app/settings/processes.segments/settings/processes.segment.rsc +0 -5
  899. package/.next/server/app/settings/processes.segments/settings.segment.rsc +0 -5
  900. package/.next/server/app/settings/routines/page/app-paths-manifest.json +0 -3
  901. package/.next/server/app/settings/routines/page/build-manifest.json +0 -18
  902. package/.next/server/app/settings/routines/page/next-font-manifest.json +0 -6
  903. package/.next/server/app/settings/routines/page/react-loadable-manifest.json +0 -8
  904. package/.next/server/app/settings/routines/page/server-reference-manifest.json +0 -4
  905. package/.next/server/app/settings/routines/page.js.nft.json +0 -1
  906. package/.next/server/app/settings/routines/page_client-reference-manifest.js +0 -3
  907. package/.next/server/app/settings/routines.html +0 -1
  908. package/.next/server/app/settings/routines.meta +0 -16
  909. package/.next/server/app/settings/routines.rsc +0 -27
  910. package/.next/server/app/settings/routines.segments/_full.segment.rsc +0 -27
  911. package/.next/server/app/settings/routines.segments/_head.segment.rsc +0 -6
  912. package/.next/server/app/settings/routines.segments/_index.segment.rsc +0 -11
  913. package/.next/server/app/settings/routines.segments/_tree.segment.rsc +0 -2
  914. package/.next/server/app/settings/routines.segments/settings/routines/__PAGE__.segment.rsc +0 -9
  915. package/.next/server/app/settings/routines.segments/settings/routines.segment.rsc +0 -5
  916. package/.next/server/app/settings/routines.segments/settings.segment.rsc +0 -5
  917. package/.next/server/app/settings/schedule/page/app-paths-manifest.json +0 -3
  918. package/.next/server/app/settings/schedule/page/build-manifest.json +0 -18
  919. package/.next/server/app/settings/schedule/page/next-font-manifest.json +0 -6
  920. package/.next/server/app/settings/schedule/page/react-loadable-manifest.json +0 -8
  921. package/.next/server/app/settings/schedule/page/server-reference-manifest.json +0 -4
  922. package/.next/server/app/settings/schedule/page_client-reference-manifest.js +0 -3
  923. package/.next/server/app/settings/schedule.html +0 -1
  924. package/.next/server/app/settings/schedule.meta +0 -16
  925. package/.next/server/app/settings/schedule.rsc +0 -27
  926. package/.next/server/app/settings/schedule.segments/_full.segment.rsc +0 -27
  927. package/.next/server/app/settings/schedule.segments/_head.segment.rsc +0 -6
  928. package/.next/server/app/settings/schedule.segments/_index.segment.rsc +0 -11
  929. package/.next/server/app/settings/schedule.segments/_tree.segment.rsc +0 -2
  930. package/.next/server/app/settings/schedule.segments/settings/schedule/__PAGE__.segment.rsc +0 -9
  931. package/.next/server/app/settings/schedule.segments/settings/schedule.segment.rsc +0 -5
  932. package/.next/server/app/settings/schedule.segments/settings.segment.rsc +0 -5
  933. package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_connections_knowledge_page_actions_06w7ski.js +0 -3
  934. package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_advanced_page_actions_0x06bjx.js +0 -3
  935. package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_backends_page_actions_0z3vipu.js +0 -3
  936. package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_connections_page_actions_0n0b1rb.js +0 -3
  937. package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_journal_page_actions_0_.h.-y.js +0 -3
  938. package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_messaging_page_actions_0czehcp.js +0 -3
  939. package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_processes_page_actions_0zbumx3.js +0 -3
  940. package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_routines_page_actions_0-37ia4.js +0 -3
  941. package/.next/server/chunks/ssr/0juq_dashboard__next-internal_server_app_settings_schedule_page_actions_045j4zv.js +0 -3
  942. package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0s6jb_7.js +0 -4
  943. package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0wu80v6.js +0 -4
  944. package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0~yic40.js +0 -4
  945. package/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_113c8xj.js +0 -4
  946. package/.next/server/chunks/ssr/[root-of-the-server]__00ch_ms._.js +0 -3
  947. package/.next/server/chunks/ssr/[root-of-the-server]__00s5z4o._.js +0 -3
  948. package/.next/server/chunks/ssr/[root-of-the-server]__03yuq_v._.js +0 -7
  949. package/.next/server/chunks/ssr/[root-of-the-server]__0kcivrd._.js +0 -3
  950. package/.next/server/chunks/ssr/[root-of-the-server]__0kvyeu1._.js +0 -3
  951. package/.next/server/chunks/ssr/[root-of-the-server]__0t-9jvt._.js +0 -3
  952. package/.next/server/chunks/ssr/_0-3uzu1._.js +0 -3
  953. package/.next/server/chunks/ssr/_0.yhrky._.js +0 -3
  954. package/.next/server/chunks/ssr/_0.zct4p._.js +0 -3
  955. package/.next/server/chunks/ssr/_00_--i0._.js +0 -3
  956. package/.next/server/chunks/ssr/_00ej8j9._.js +0 -3
  957. package/.next/server/chunks/ssr/_03bq.de._.js +0 -3
  958. package/.next/server/chunks/ssr/_04jkn8c._.js +0 -3
  959. package/.next/server/chunks/ssr/_04kt9.8._.js +0 -3
  960. package/.next/server/chunks/ssr/_05jfize._.js +0 -3
  961. package/.next/server/chunks/ssr/_06_m-vp._.js +0 -3
  962. package/.next/server/chunks/ssr/_09-o1vq._.js +0 -3
  963. package/.next/server/chunks/ssr/_095u19_._.js +0 -3
  964. package/.next/server/chunks/ssr/_0_qwmiz._.js +0 -3
  965. package/.next/server/chunks/ssr/_0bzj8lx._.js +0 -3
  966. package/.next/server/chunks/ssr/_0cccma-._.js +0 -3
  967. package/.next/server/chunks/ssr/_0da0k2u._.js +0 -3
  968. package/.next/server/chunks/ssr/_0evcd7w._.js +0 -3
  969. package/.next/server/chunks/ssr/_0e~4oah._.js +0 -3
  970. package/.next/server/chunks/ssr/_0ibeuw6._.js +0 -3
  971. package/.next/server/chunks/ssr/_0ixicrb._.js +0 -3
  972. package/.next/server/chunks/ssr/_0jg6hy0._.js +0 -3
  973. package/.next/server/chunks/ssr/_0jrxrig._.js +0 -3
  974. package/.next/server/chunks/ssr/_0mbbas-._.js +0 -3
  975. package/.next/server/chunks/ssr/_0n5nlcq._.js +0 -3
  976. package/.next/server/chunks/ssr/_0nvpv18._.js +0 -3
  977. package/.next/server/chunks/ssr/_0o~hk.m._.js +0 -3
  978. package/.next/server/chunks/ssr/_0pdbiu.._.js +0 -9
  979. package/.next/server/chunks/ssr/_0pg6_56._.js +0 -3
  980. package/.next/server/chunks/ssr/_0q8o~q1._.js +0 -3
  981. package/.next/server/chunks/ssr/_0r1lb0f._.js +0 -3
  982. package/.next/server/chunks/ssr/_0r25vcp._.js +0 -3
  983. package/.next/server/chunks/ssr/_0r9.4nv._.js +0 -3
  984. package/.next/server/chunks/ssr/_0tf7hjz._.js +0 -3
  985. package/.next/server/chunks/ssr/_0xmdrbq._.js +0 -3
  986. package/.next/server/chunks/ssr/_0zz58.-._.js +0 -5
  987. package/.next/server/chunks/ssr/_0~62r4-._.js +0 -3
  988. package/.next/server/chunks/ssr/_0~fi8o-._.js +0 -3
  989. package/.next/server/chunks/ssr/_10s6iy.._.js +0 -3
  990. package/.next/server/chunks/ssr/_11pdc0s._.js +0 -3
  991. package/.next/server/chunks/ssr/_12u1eq4._.js +0 -3
  992. package/.next/server/chunks/ssr/_12~0n.1._.js +0 -3
  993. package/.next/server/chunks/ssr/_139rl~~._.js +0 -3
  994. package/.next/server/chunks/ssr/node_modules__pnpm_0ehnn5t._.js +0 -3
  995. package/.next/server/chunks/ssr/packages_dashboard_src_0ylj~og._.js +0 -3
  996. package/.next/server/chunks/ssr/packages_dashboard_src_0z~3g5n._.js +0 -3
  997. package/.next/server/chunks/ssr/packages_dashboard_src_app_connections_knowledge_page_tsx_027jwd3._.js +0 -3
  998. package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_advanced_page_tsx_0o~_885._.js +0 -3
  999. package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_routines_page_tsx_0wcgtqz._.js +0 -27
  1000. package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_schedule_page_tsx_0b8zr2l._.js +0 -3
  1001. package/.next/static/chunks/0-7buty0ytvtv.js +0 -1
  1002. package/.next/static/chunks/0-dw-4a8vg9m8.js +0 -1
  1003. package/.next/static/chunks/0.42rv-zt_0x9.js +0 -1
  1004. package/.next/static/chunks/0.za~0o8~5n1~.css +0 -1
  1005. package/.next/static/chunks/0.~7m9beb0bmp.js +0 -11
  1006. package/.next/static/chunks/00bnu7r6428v0.js +0 -5
  1007. package/.next/static/chunks/00w3emoohg-8r.js +0 -1
  1008. package/.next/static/chunks/01v7jn283j2tm.js +0 -1
  1009. package/.next/static/chunks/04l41qp5lpt_e.js +0 -1
  1010. package/.next/static/chunks/04ufv2_7i_b6..js +0 -1
  1011. package/.next/static/chunks/053f~_moi~csx.js +0 -2
  1012. package/.next/static/chunks/05xugzf8sfrxt.js +0 -1
  1013. package/.next/static/chunks/05z4egti~pj9t.js +0 -1
  1014. package/.next/static/chunks/073hnld9_qq5g.js +0 -1
  1015. package/.next/static/chunks/08ql4siwtlgpn.js +0 -1
  1016. package/.next/static/chunks/08wmxlql_xq.d.js +0 -1
  1017. package/.next/static/chunks/0e3ds9mkx7.~v.js +0 -1
  1018. package/.next/static/chunks/0eaf903zc7v~5.js +0 -1
  1019. package/.next/static/chunks/0fri59ogcsfbl.js +0 -1
  1020. package/.next/static/chunks/0gj-lf~wlbr8e.js +0 -1
  1021. package/.next/static/chunks/0gurc-kqffso6.js +0 -1
  1022. package/.next/static/chunks/0gyst06ap~-n~.js +0 -19
  1023. package/.next/static/chunks/0g~py-0sje~1m.js +0 -1
  1024. package/.next/static/chunks/0hk8v-849puw8.js +0 -1
  1025. package/.next/static/chunks/0hlvfkk1o66wf.js +0 -1
  1026. package/.next/static/chunks/0hog4tqr3.skm.js +0 -10
  1027. package/.next/static/chunks/0igwe6jdxslbt.js +0 -1
  1028. package/.next/static/chunks/0ikm~jl5uiw6-.js +0 -1
  1029. package/.next/static/chunks/0j15hn~z~i56..js +0 -1
  1030. package/.next/static/chunks/0jffu_yb.90.i.js +0 -1
  1031. package/.next/static/chunks/0mfem_s.3s4r-.js +0 -1
  1032. package/.next/static/chunks/0n3b0fpsgml2x.js +0 -1
  1033. package/.next/static/chunks/0p.w04inifyq..js +0 -1
  1034. package/.next/static/chunks/0qqty6t-yyty4.js +0 -3
  1035. package/.next/static/chunks/0q~dvm61tpf3~.js +0 -1
  1036. package/.next/static/chunks/0rt76ki54i~hm.js +0 -1
  1037. package/.next/static/chunks/0scggusqhhid7.js +0 -1
  1038. package/.next/static/chunks/0t.xvj-t_vtrp.js +0 -25
  1039. package/.next/static/chunks/0t9rda60_m-vk.js +0 -1
  1040. package/.next/static/chunks/0u9qsqnsm-skj.js +0 -1
  1041. package/.next/static/chunks/0urw8_v9f97en.js +0 -1
  1042. package/.next/static/chunks/0vcwfsuf878wc.js +0 -1
  1043. package/.next/static/chunks/0vivqt8njmkpv.js +0 -1
  1044. package/.next/static/chunks/0vktbjh2e4xpg.js +0 -1
  1045. package/.next/static/chunks/0v~gg~hn-8_k2.js +0 -1
  1046. package/.next/static/chunks/0ws8mq3rp~572.js +0 -1
  1047. package/.next/static/chunks/0x..-zi0av524.js +0 -1
  1048. package/.next/static/chunks/0xsb_r_t_1r-u.js +0 -1
  1049. package/.next/static/chunks/0zaa6zhrjsaik.js +0 -1
  1050. package/.next/static/chunks/0zimhqr6r4xlz.js +0 -1
  1051. package/.next/static/chunks/0~7d6m~du_b.d.js +0 -1
  1052. package/.next/static/chunks/0~nct--xt2~bi.js +0 -1
  1053. package/.next/static/chunks/1121be2-kv8g~.js +0 -1
  1054. package/.next/static/chunks/1257_06cutyq_.js +0 -1
  1055. package/.next/static/chunks/12ee4r9-orwi8.js +0 -1
  1056. package/.next/static/chunks/13kdqs0pmjqy5.js +0 -1
  1057. package/.next/static/chunks/13tf0oa.w743m.js +0 -1
  1058. package/.next/static/chunks/16s5r16k361sd.js +0 -1
  1059. package/.next/static/chunks/16tqshshex~qk.js +0 -1
  1060. package/.next/static/chunks/17846-azlpszq.js +0 -1
  1061. package/.next/static/chunks/17b2~cmid8qeu.js +0 -3
  1062. package/.next/static/chunks/17rcecfesskxn.js +0 -1
  1063. /package/.next/server/app/{connections/knowledge → browser}/page/build-manifest.json +0 -0
  1064. /package/.next/server/app/{connections/knowledge → browser}/page/server-reference-manifest.json +0 -0
  1065. /package/.next/server/app/{settings/advanced → connections/notes}/page/build-manifest.json +0 -0
  1066. /package/.next/server/app/{settings/advanced → connections/notes}/page/server-reference-manifest.json +0 -0
  1067. /package/.next/server/app/settings/{backends → danger-zone}/page/build-manifest.json +0 -0
  1068. /package/.next/server/app/settings/{backends → danger-zone}/page/server-reference-manifest.json +0 -0
  1069. /package/.next/server/app/settings/{connections → hours}/page/build-manifest.json +0 -0
  1070. /package/.next/server/app/settings/{connections → hours}/page/server-reference-manifest.json +0 -0
  1071. /package/.next/server/app/settings/{journal → infrastructure}/page/build-manifest.json +0 -0
  1072. /package/.next/server/app/settings/{journal → infrastructure}/page/server-reference-manifest.json +0 -0
  1073. /package/.next/server/app/settings/{messaging → safety}/page/build-manifest.json +0 -0
  1074. /package/.next/server/app/settings/{messaging → safety}/page/server-reference-manifest.json +0 -0
  1075. /package/.next/static/{i_QR0WWkZFeICcOMbfuUs → 4Wu33OvzutxPxXUu1PWPC}/_buildManifest.js +0 -0
  1076. /package/.next/static/{i_QR0WWkZFeICcOMbfuUs → 4Wu33OvzutxPxXUu1PWPC}/_ssgManifest.js +0 -0
@@ -0,0 +1,3 @@
1
+ module.exports=[5039,a=>{"use strict";var b=a.i(39752),c=a.i(54150),d=a.i(92379),e=a.i(56295),f=a.i(34542),g=a.i(32307),h=a.i(82687),i=a.i(5423);let j=(0,i.default)("CircleDashed",[["path",{d:"M10.1 2.182a10 10 0 0 1 3.8 0",key:"5ilxe3"}],["path",{d:"M13.9 21.818a10 10 0 0 1-3.8 0",key:"11zvb9"}],["path",{d:"M17.609 3.721a10 10 0 0 1 2.69 2.7",key:"1iw5b2"}],["path",{d:"M2.182 13.9a10 10 0 0 1 0-3.8",key:"c0bmvh"}],["path",{d:"M20.279 17.609a10 10 0 0 1-2.7 2.69",key:"1ruxm7"}],["path",{d:"M21.818 10.1a10 10 0 0 1 0 3.8",key:"qkgqxc"}],["path",{d:"M3.721 6.391a10 10 0 0 1 2.7-2.69",key:"1mcia2"}],["path",{d:"M6.391 20.279a10 10 0 0 1-2.69-2.7",key:"1fvljs"}]]),k=(0,i.default)("HardDrive",[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]]);var l=a.i(92241);let m=(0,i.default)("Mic",[["path",{d:"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z",key:"131961"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]]);var n=a.i(96336),o=a.i(81130),p=a.i(62588);a.i(70010);var q=a.i(35875),r=a.i(59974),s=a.i(21218),t=a.i(30400),u=a.i(47696),v=a.i(28314),w=a.i(48558);function x(){let a=(0,o.useQueryClient)(),c=(0,v.useConfirm)(),[d,e]=(0,f.useState)(!1),[g,h]=(0,f.useState)(!1),[i,j]=(0,f.useState)(null),[k,n]=(0,f.useState)(null),{data:x}=(0,p.useQuery)({queryKey:["voice-status"],queryFn:async()=>{try{return await r.api.get("/voice/status")}catch(a){if(g)return{enabled:!1,installing:!0,installed:!0,modelOnDisk:!1,modelSizeBytes:0,modelDir:"",status:"running",error:null,startedAt:null,finishedAt:null,model:"onnx-community/whisper-large-v3-turbo",progress:null,primaryLanguage:null,suggestedPrimaryLanguage:"en"};throw a}},refetchInterval:a=>{let b=a.state.data;return!!(g||b?.installing||b?.status==="running")&&1500},refetchOnWindowFocus:!1});(0,f.useEffect)(()=>{if(!x)return;let a=x.primaryLanguage??x.suggestedPrimaryLanguage;n(b=>b??a)},[x?.primaryLanguage,x?.suggestedPrimaryLanguage,x]),(0,f.useEffect)(()=>{g&&x?.enabled&&(h(!1),a.invalidateQueries({queryKey:["config"]}))},[g,x?.enabled,a]),(0,f.useEffect)(()=>{x?.status!=="ready"||x.enabled||h(!0)},[x?.status,x?.enabled]);let z=async()=>{j(null),e(!0);try{await r.api.post("/voice/install",{primaryLanguage:k}),await a.invalidateQueries({queryKey:["voice-status"]})}catch(a){j(a instanceof r.ApiError?a.message:"Install failed")}finally{e(!1)}},A=async()=>{if(await c({title:"Delete the local Whisper model?",description:'Removes the on-disk Whisper weights (~800 MB). Voice mode stays enabled — click "Upgrade & install" afterwards to download the model again. Use this when an install attempt failed and the dashboard is stuck on an error banner.',confirmLabel:"Delete model",variant:"destructive"})){j(null),e(!0);try{await r.api.delete("/voice/model"),await a.invalidateQueries({queryKey:["voice-status"]})}catch(a){j(a instanceof r.ApiError?a.message:"Deleting voice model failed")}finally{e(!1)}}},B=async b=>{j(null),e(!0);try{await r.api.patch("/config",{voiceTranscriptionPrimaryLanguage:b}),n(b),await a.invalidateQueries({queryKey:["voice-status"]}),await a.invalidateQueries({queryKey:["config"]})}catch(a){j(a instanceof r.ApiError?a.message:"Saving primary language failed")}finally{e(!1)}},C=x?.enabled??!1,D=d||(x?.installing??!1)||g,E=x?.progress??null,F=i??x?.error??null,G=C&&x?.modelOnDisk===!1&&!D,H=(0,f.useMemo)(()=>{let a=new Set(q.VOICE_LANGUAGE_TOP.map(a=>a.code)),b=q.VOICE_LANGUAGE_FULL.filter(b=>!a.has(b.code)).slice().sort((a,b)=>a.englishName.localeCompare(b.englishName));return{top:q.VOICE_LANGUAGE_TOP,more:b}},[]),I=a=>(0,b.jsxs)(u.Select,{value:k??void 0,onValueChange:a=>n(a),disabled:D,children:[(0,b.jsx)(u.SelectTrigger,{id:a,className:"w-full max-w-sm",children:(0,b.jsx)(u.SelectValue,{placeholder:"Select language…"})}),(0,b.jsxs)(u.SelectContent,{children:[H.top.length>0&&(0,b.jsxs)(u.SelectGroup,{children:[(0,b.jsx)(u.SelectLabel,{children:"Common"}),H.top.map(a=>(0,b.jsxs)(u.SelectItem,{value:a.code,children:[a.nativeName,a.nativeName!==a.englishName&&(0,b.jsxs)("span",{className:"text-muted-foreground",children:[" · ",a.englishName]})]},a.code))]}),H.more.length>0&&(0,b.jsxs)(u.SelectGroup,{children:[(0,b.jsx)(u.SelectLabel,{children:"More languages"}),H.more.map(a=>(0,b.jsxs)(u.SelectItem,{value:a.code,children:[a.nativeName,a.nativeName!==a.englishName&&(0,b.jsxs)("span",{className:"text-muted-foreground",children:[" · ",a.englishName]})]},a.code))]})]})]});return(0,b.jsxs)(t.Card,{children:[(0,b.jsx)(t.CardHeader,{children:(0,b.jsxs)(t.CardTitle,{className:"flex items-center gap-2",children:[(0,b.jsx)(m,{className:"h-4 w-4"}),"Voice Mode"]})}),(0,b.jsxs)("div",{className:"space-y-3 [&>p]:max-w-prose",children:[(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Transcribe inbound voice messages (Telegram voice / WhatsApp PTT / Discord audio / Slack audio file) locally with Whisper before they reach the agent. Audio bytes never leave the host. See"," ",(0,b.jsx)("code",{children:"docs/design/appendices/voice-transcription.md"})," for implementation details."]}),(0,b.jsx)(y,{status:x,modelOnDisk:x?.modelOnDisk??!1,upgradeAvailable:G,installing:D,waitingForRestart:g,onDelete:A,deleteDisabled:d}),F&&(0,b.jsx)("p",{className:"rounded-md border border-destructive/40 bg-destructive/5 px-3 py-2 text-xs text-destructive",children:F}),G&&(0,b.jsxs)("div",{className:"rounded-md border border-warning/40 bg-warning/5 px-3 py-2 text-xs",children:[(0,b.jsx)("p",{className:"font-medium text-warning",children:"Upgrade voice model"}),(0,b.jsxs)("p",{className:"text-muted-foreground mt-0.5",children:["The configured model"," ",(0,b.jsx)("code",{children:x?.model})," is not yet downloaded — likely because a package update changed the default. Click"," ",(0,b.jsx)("strong",{children:"Upgrade & install"})," below to fetch it. Inbound voice will keep using the previous model until then."]})]}),!C&&!D&&(0,b.jsxs)("div",{className:"space-y-2 rounded-md border border-border bg-muted/30 px-3 py-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{htmlFor:"voice-primary-language",className:"text-sm font-medium",children:"Your primary spoken language"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Used as the fallback when Whisper's automatic language detection fails on a clip. Other languages are still transcribed correctly when detected — this only kicks in when detection is uncertain."})]}),I("voice-primary-language")]}),(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("p",{className:"text-sm",children:["Status:"," ",(0,b.jsx)("span",{className:"font-medium",children:D?g?"Restarting daemon to apply…":E?.phase==="ready"?"Finalizing…":E?.currentFile?`Downloading ${E.currentFile}…`:"Starting model download…":C?G?"Enabled (upgrade available)":"Enabled":"Disabled"})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:C?"Inbound audio is transcribed locally before it reaches the agent. You can change your primary language below at any time.":"Turning this on downloads the Whisper weights (~800 MB), then auto-restarts the daemon so the transcriber picks up the new flag. First download takes a minute or two, depending on your connection."})]}),(0,b.jsx)(s.Button,{size:"sm",variant:C&&!G?"outline":"default",onClick:z,disabled:d||D||C&&!G||null===k,children:D?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(l.Loader2,{className:"h-3.5 w-3.5 mr-1 animate-spin"}),"Working…"]}):G?"Upgrade & install":C?"Enabled":"Enable & install"})]}),C&&!D&&(0,b.jsxs)("div",{className:"space-y-2 rounded-md border border-border bg-muted/30 px-3 py-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{htmlFor:"voice-primary-language-live",className:"text-sm font-medium",children:"Primary spoken language"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Saved changes apply to the next inbound voice attachment — no daemon restart needed."})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[I("voice-primary-language-live"),(0,b.jsx)(s.Button,{size:"sm",variant:"outline",disabled:d||null===k||k===x?.primaryLanguage,onClick:()=>{k&&B(k)},children:"Save"})]})]}),D&&!g&&(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("div",{className:"h-1.5 w-full overflow-hidden rounded-full bg-muted",children:(0,b.jsx)("div",{className:(0,w.cn)("h-full bg-primary transition-[width] duration-200",(!E||0===E.percent)&&"animate-pulse"),style:{width:`${Math.min(100,Math.max(E?.percent??0,E?2:8))}%`}})}),(0,b.jsxs)("div",{className:"flex items-center justify-between text-[11px] text-muted-foreground tabular-nums",children:[(0,b.jsxs)("span",{children:[E&&E.totalBytes>0?`${(0,w.formatBytes)(E.loadedBytes)} / ${(0,w.formatBytes)(E.totalBytes)}`:"Contacting Hugging Face…",E&&E.filesDownloaded>0&&(0,b.jsxs)(b.Fragment,{children:[" · ",E.filesDownloaded," file",1===E.filesDownloaded?"":"s"," complete"]})]}),(0,b.jsx)("span",{children:E&&E.percent>0?`${Math.round(E.percent)}%`:""})]})]})]})]})}function y({status:a,modelOnDisk:c,upgradeAvailable:d,installing:e,waitingForRestart:f,onDelete:i,deleteDisabled:m}){let o=a?.model??"onnx-community/whisper-large-v3-turbo",p=a?.modelSizeBytes??0,q=a?.modelDir??null,r=e?"installing":d?"upgrade":c?"installed":"missing",t={installing:{container:"border-border bg-muted/30",pill:"bg-muted text-foreground",iconBg:"text-muted-foreground"},upgrade:{container:"border-warning/40 bg-warning/5",pill:"bg-warning/15 text-warning",iconBg:"text-warning"},installed:{container:"border-success/40 bg-success/5",pill:"bg-success/15 text-success",iconBg:"text-success"},missing:{container:"border-border bg-muted/30",pill:"bg-muted text-muted-foreground",iconBg:"text-muted-foreground"}}[r],u="installing"===r?(0,b.jsx)(l.Loader2,{className:(0,w.cn)("h-4 w-4 animate-spin",t.iconBg)}):"installed"===r?(0,b.jsx)(h.CheckCircle2,{className:(0,w.cn)("h-4 w-4",t.iconBg)}):"upgrade"===r?(0,b.jsx)(g.AlertTriangle,{className:(0,w.cn)("h-4 w-4",t.iconBg)}):(0,b.jsx)(j,{className:(0,w.cn)("h-4 w-4",t.iconBg)}),v="installed"===r&&p>0?(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 tabular-nums",children:[(0,b.jsx)(k,{className:"h-3 w-3"}),(0,w.formatBytes)(p)," on disk"]}):"upgrade"===r?(0,b.jsx)("span",{children:"Configured model is not on disk yet."}):"installing"===r?(0,b.jsx)("span",{children:"Downloading weights from Hugging Face…"}):(0,b.jsxs)("span",{children:["Click ",(0,b.jsx)("strong",{children:"Enable & install"})," below to download (~800 MB)."]});return(0,b.jsx)("div",{className:(0,w.cn)("rounded-md border px-3 py-2.5",t.container),children:(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.jsx)("div",{className:"mt-0.5",children:u}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 space-y-1",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("span",{className:(0,w.cn)("inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide",t.pill),children:"installing"===r?f?"Restarting":"Installing":"installed"===r?"Installed":"upgrade"===r?"Upgrade available":"Not installed"}),(0,b.jsx)("code",{className:"break-all text-xs",children:o})]}),(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:v}),q&&"installed"===r&&(0,b.jsx)("div",{className:"text-[10px] text-muted-foreground/70 font-mono break-all",children:q})]}),!e&&("installed"===r||"upgrade"===r)&&(0,b.jsxs)(s.Button,{size:"sm",variant:"ghost",onClick:i,disabled:m,className:"h-7 shrink-0 px-2 text-xs text-muted-foreground hover:text-destructive",children:[(0,b.jsx)(n.Trash2,{className:"h-3 w-3 mr-1"}),"Delete"]})]})})}var z=a.i(87206);a.s(["default",0,function(){let{data:a}=(0,c.useConfig)(),{df:f}=(0,c.useConfigDefaults)(),{deferSaveFor:g,dv:h,dirtyFields:i}=(0,d.useDirtyFields)();if(!a)return(0,b.jsx)("div",{className:"text-muted-foreground",children:"Loading..."});let j=g(a);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(z.PageHeader,{title:"Infrastructure",description:"Daemon runtime tuning — polling cadences, history injection, ports, and the local voice model. Low-level knobs; read each description before saving."}),(0,b.jsxs)(e.ConfigSection,{title:"Polling Intervals",children:[(0,b.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"How often each observer checks its source for changes. Lower values react faster but burn more API quota; the defaults are tuned for all-day background use. Observations still consolidate into the activity scan — these cadences only control detection latency."}),(0,b.jsx)(e.EditableField,{label:"Obsidian Debounce",value:h("obsidianDebounceSeconds",a.obsidianDebounceSeconds),configKey:"obsidianDebounceSeconds",type:"number",suffix:"sec",min:1,description:"Quiet window after a vault file change before it is recorded — coalesces editor save bursts into one observation.",modified:i.has("obsidianDebounceSeconds"),defaultValue:f("obsidianDebounceSeconds"),onSave:j}),(0,b.jsx)(e.EditableField,{label:"Scheduler Poll Interval",value:h("schedulePollIntervalSeconds",a.schedulePollIntervalSeconds),configKey:"schedulePollIntervalSeconds",type:"number",suffix:"sec",min:1,description:"How often the scheduler scans agent_schedule for due tasks.",modified:i.has("schedulePollIntervalSeconds"),defaultValue:f("schedulePollIntervalSeconds"),onSave:j}),(0,b.jsx)(e.EditableField,{label:"Git Poll Interval",value:h("gitPollIntervalSeconds",a.gitPollIntervalSeconds),configKey:"gitPollIntervalSeconds",type:"number",suffix:"sec",min:1,description:"How often watched local repositories are scanned for new commits.",modified:i.has("gitPollIntervalSeconds"),defaultValue:f("gitPollIntervalSeconds"),onSave:j}),(0,b.jsx)(e.EditableField,{label:"Notion Poll Interval",value:h("notionPollIntervalSeconds",a.notionPollIntervalSeconds),configKey:"notionPollIntervalSeconds",type:"number",suffix:"sec",min:1,description:"How often watched Notion databases are checked for edits (direct mode only).",modified:i.has("notionPollIntervalSeconds"),defaultValue:f("notionPollIntervalSeconds"),onSave:j}),(0,b.jsx)(e.EditableField,{label:"Calendar Poll Interval",value:h("calendarPollIntervalSeconds",a.calendarPollIntervalSeconds),configKey:"calendarPollIntervalSeconds",type:"number",suffix:"sec",min:1,description:"How often Google Calendar is checked for event changes (direct mode only).",modified:i.has("calendarPollIntervalSeconds"),defaultValue:f("calendarPollIntervalSeconds"),onSave:j}),(0,b.jsx)(e.EditableField,{label:"Gmail Poll Interval",value:h("gmailPollIntervalSeconds",a.gmailPollIntervalSeconds),configKey:"gmailPollIntervalSeconds",type:"number",suffix:"sec",min:1,description:"How often the Gmail inbox poller runs (direct mode only).",modified:i.has("gmailPollIntervalSeconds"),defaultValue:f("gmailPollIntervalSeconds"),onSave:j})]}),(0,b.jsxs)(e.ConfigSection,{title:"History Injection",children:[(0,b.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"How much prior conversation is replayed into a resumed session. Larger budgets give the agent more recall at higher per-turn token cost."}),(0,b.jsx)(e.EditableField,{label:"Max Messages",value:h("historyInjectionMaxMessages",a.historyInjectionMaxMessages),configKey:"historyInjectionMaxMessages",type:"number",min:1,description:"Upper bound on replayed messages per session resume.",modified:i.has("historyInjectionMaxMessages"),defaultValue:f("historyInjectionMaxMessages"),onSave:j}),(0,b.jsx)(e.EditableField,{label:"Max Tokens",value:h("historyInjectionMaxTokens",a.historyInjectionMaxTokens),configKey:"historyInjectionMaxTokens",type:"number",min:1,description:"Token budget for the injected history block — applied after the message cap.",modified:i.has("historyInjectionMaxTokens"),defaultValue:f("historyInjectionMaxTokens"),onSave:j}),(0,b.jsx)(e.EditableBooleanField,{label:"Strict DM Staleness",value:h("dmStalenessStrict",a.dmStalenessStrict),configKey:"dmStalenessStrict",description:"Invalidate resumed DM context more aggressively when the underlying session looks stale.",modified:i.has("dmStalenessStrict"),defaultValue:f("dmStalenessStrict"),onSave:j})]}),(0,b.jsxs)(e.ConfigSection,{title:"Infrastructure",children:[(0,b.jsx)(e.EditableField,{label:"API Port",value:h("apiPort",a.apiPort),configKey:"apiPort",type:"number",min:1,max:65535,description:"TCP port the daemon's Hono API listens on. The dashboard proxy and every skill curl target this port.",modified:i.has("apiPort"),defaultValue:f("apiPort"),onSave:j}),(0,b.jsx)(e.EditableBooleanField,{label:"Disable Auth Probes",value:h("authProbeDisabled",a.authProbeDisabled),configKey:"authProbeDisabled",description:"Turn off the periodic backend auth-health probes. Auth failures then surface only when a real session hits them.",modified:i.has("authProbeDisabled"),defaultValue:f("authProbeDisabled"),onSave:j}),(0,b.jsx)(e.EditableField,{label:"Auth Preflight Freshness",value:h("authPreflightFreshnessMs",a.authPreflightFreshnessMs),configKey:"authPreflightFreshnessMs",type:"number",suffix:"ms",min:0,description:"How long a successful auth-health result is trusted before the pre-dispatch check re-probes.",modified:i.has("authPreflightFreshnessMs"),defaultValue:f("authPreflightFreshnessMs"),onSave:j})]}),(0,b.jsx)(x,{})]})}],5039)}];
2
+
3
+ //# sourceMappingURL=packages_dashboard_src_app_settings_infrastructure_page_tsx_0c9oi1c._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[17961,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(82508),e=a.i(9306),f=a.i(87206),g=a.i(43179),h=a.i(95024),i=a.i(96336),j=a.i(59616),k=a.i(59974),l=a.i(8753),m=a.i(62588),n=a.i(81130);let o=["sot-bindings"];var p=a.i(21218),q=a.i(30400),r=a.i(8212),s=a.i(47696),t=a.i(29629),u=a.i(41010);let v=[{value:"agent",label:"agent"},{value:"shared",label:"shared"},{value:"user",label:"user"}];function w(a){let b=a.trim();return""===b?null:b}function x(a,b){if(a.length!==b.length)return!1;for(let c=0;c<a.length;c++){let d=a[c],e=b[c];if(d.category!==e.category||d.sotApp!==e.sotApp||d.mirrorPath!==e.mirrorPath||d.policy!==e.policy||d.writer!==e.writer)return!1}return!0}function y(){let a,d=(0,m.useQuery)({queryKey:o,queryFn:()=>k.api.get("/sot-bindings"),staleTime:3e4}),e=(a=(0,n.useQueryClient)(),(0,l.useMutation)({mutationFn:a=>k.api.put("/sot-bindings",a),onSuccess:()=>{a.invalidateQueries({queryKey:o}),a.invalidateQueries({queryKey:["management-history"]})}})),[f,y]=(0,c.useState)([]),[z,A]=(0,c.useState)([]),[B,C]=(0,c.useState)(null),[D,E]=(0,c.useState)(null);(0,c.useEffect)(()=>{if(d.data&&!e.isPending){let a=d.data.items;y(b=>x(b,z)?a:b),A(a)}},[d.data,e.isPending]);let F=(0,c.useMemo)(()=>!x(f,z),[f,z]),G=(0,c.useMemo)(()=>(function(a){let b=new Set;for(let c=0;c<a.length;c++){let d=a[c];if(!d.category.trim())return{ok:!1,reason:`Row ${c+1}: Category is required`};if(!d.sotApp.trim())return{ok:!1,reason:`Row ${c+1}: SoT app is required`};let e=d.category.trim().toLowerCase();if(b.has(e))return{ok:!1,reason:`Duplicate category "${d.category}"`};b.add(e)}return{ok:!0}})(f),[f]),H=(a,b)=>{y(c=>c.map((c,d)=>d===a?{...c,...b}:c)),C(null)},I=async()=>{if(!G.ok)return void C(G.reason);C(null);try{let a=f.map(a=>({category:a.category.trim(),sotApp:a.sotApp.trim(),mirrorPath:a.mirrorPath,policy:a.policy,writer:a.writer})),b=await e.mutateAsync(a);A(b.items),y(b.items),E("Saved."),window.setTimeout(()=>E(null),2500)}catch(a){C(a instanceof k.ApiError||a instanceof Error?a.message:"save failed")}};return(0,b.jsxs)(q.Card,{className:"space-y-4",children:[(0,b.jsxs)(q.CardHeader,{className:"p-0",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)(q.CardTitle,{className:"text-base",children:"A. Source-of-Truth bindings"}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground max-w-prose",children:["Where the canonical data lives for each category. Renders Section A of ",(0,b.jsx)("code",{children:"policies/management.md"}),"; injected into every agent session so reactive flows know what to read or write."]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)(p.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{y(z),C(null)},disabled:!F||e.isPending,children:[(0,b.jsx)(j.Undo2,{className:"mr-1.5 h-3.5 w-3.5"}),"Discard"]}),(0,b.jsxs)(p.Button,{type:"button",size:"sm",onClick:I,disabled:!F||e.isPending||!G.ok,children:[(0,b.jsx)(h.Save,{className:"mr-1.5 h-3.5 w-3.5"}),e.isPending?"Saving…":"Save"]})]})]}),(0,b.jsx)(u.QueryResult,{isLoading:d.isLoading,isError:d.isError,error:d.error,onRetry:()=>d.refetch(),skeleton:(0,b.jsx)(u.TableSkeleton,{rows:3}),children:(0,b.jsxs)("div",{className:"space-y-2",children:[0===f.length?(0,b.jsx)("p",{className:"rounded-md border border-dashed border-border p-4 text-center text-xs text-muted-foreground",children:"No bindings yet. Add one to declare where a category’s source of truth lives."}):(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"w-full border-collapse text-sm",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{className:"border-b border-border text-left text-[11px] uppercase tracking-wide text-muted-foreground",children:[(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Category"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"SoT app"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Mirror path"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Policy"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Writer"}),(0,b.jsx)("th",{className:"w-10 px-2 py-2"})]})}),(0,b.jsx)("tbody",{children:f.map((a,c)=>(0,b.jsxs)("tr",{className:"border-b border-border/40 align-top",children:[(0,b.jsx)("td",{className:"px-1 py-1.5",children:(0,b.jsx)(r.Input,{value:a.category,onChange:a=>H(c,{category:a.target.value}),placeholder:"tasks",maxLength:64})}),(0,b.jsx)("td",{className:"px-1 py-1.5",children:(0,b.jsx)(r.Input,{value:a.sotApp,onChange:a=>H(c,{sotApp:a.target.value}),placeholder:"notion",maxLength:64})}),(0,b.jsx)("td",{className:"px-1 py-1.5",children:(0,b.jsx)(r.Input,{value:a.mirrorPath??"",onChange:a=>H(c,{mirrorPath:w(a.target.value)}),placeholder:"context/work/tasks-index.md",maxLength:255})}),(0,b.jsx)("td",{className:"px-1 py-1.5",children:(0,b.jsx)(r.Input,{value:a.policy??"",onChange:a=>H(c,{policy:w(a.target.value)}),placeholder:"—",maxLength:200})}),(0,b.jsx)("td",{className:"px-1 py-1.5",children:(0,b.jsxs)(s.Select,{value:a.writer,onValueChange:a=>H(c,{writer:a}),children:[(0,b.jsx)(s.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(s.SelectValue,{})}),(0,b.jsx)(s.SelectContent,{children:v.map(a=>(0,b.jsx)(s.SelectItem,{value:a.value,children:a.label},a.value))})]})}),(0,b.jsx)("td",{className:"px-1 py-1.5",children:(0,b.jsx)(p.Button,{type:"button",variant:"ghost",size:"icon","aria-label":`Remove row ${c+1}`,onClick:()=>{y(a=>a.filter((a,b)=>b!==c)),C(null)},className:"h-8 w-8",children:(0,b.jsx)(i.Trash2,{className:"h-3.5 w-3.5"})})})]},c))})]})}),(0,b.jsxs)(p.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{y(a=>[...a,{category:"",sotApp:"",mirrorPath:null,policy:null,writer:"shared"}]),C(null)},disabled:e.isPending,children:[(0,b.jsx)(g.Plus,{className:"mr-1.5 h-3.5 w-3.5"}),"Add binding"]})]})}),B&&(0,b.jsx)(t.Alert,{variant:"error",className:"text-xs",children:B}),D&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:D})]})}var z=a.i(32307),A=a.i(82687),B=a.i(3504),C=a.i(45133);let D=(0,a.i(5423).default)("CirclePlay",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polygon",{points:"10 8 16 12 10 16 10 8",key:"1cimsy"}]]);var E=a.i(7385);a.i(70010);var F=a.i(27085),G=a.i(84478),H=a.i(28314),I=a.i(7384),J=a.i(61213),K=a.i(27727),L=a.i(48558);let M=["daily","weekly","monthly"],N=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];function O(a,b){if(a===b)return!0;if(!a||!b||a.frequency!==b.frequency||(a.time??null)!==(b.time??null)||(a.timezone??null)!==(b.timezone??null))return!1;let c=(a.daysOfWeek??[]).slice().sort((a,b)=>a-b),d=(b.daysOfWeek??[]).slice().sort((a,b)=>a-b);if(c.length!==d.length)return!1;for(let a=0;a<c.length;a++)if(c[a]!==d[a])return!1;let e=(a.daysOfMonth??[]).slice().sort((a,b)=>a-b),f=(b.daysOfMonth??[]).slice().sort((a,b)=>a-b);if(e.length!==f.length)return!1;for(let a=0;a<e.length;a++)if(e[a]!==f[a])return!1;return!0}function P(a){return a instanceof k.ApiError||a instanceof Error?a.message:"operation failed"}let Q=Array.from({length:31},(a,b)=>b+1);function R({rule:a,onChange:c,errors:d}){return(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-[11px] font-medium text-muted-foreground",children:"Frequency"}),(0,b.jsxs)(s.Select,{value:a.frequency,onValueChange:b=>{let d;return c((d={frequency:b,time:a.time??"00:00",...a.timezone?{timezone:a.timezone}:{}},"weekly"===b&&(d.daysOfWeek=a.daysOfWeek??[]),"monthly"===b&&(d.daysOfMonth=a.daysOfMonth??[]),d))},children:[(0,b.jsx)(s.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(s.SelectValue,{})}),(0,b.jsx)(s.SelectContent,{children:M.map(a=>(0,b.jsx)(s.SelectItem,{value:a,children:a},a))})]})]}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-[11px] font-medium text-muted-foreground",htmlFor:"recurrence-time",children:"Time of day"}),(0,b.jsx)(r.Input,{id:"recurrence-time",type:"time",value:a.time,onChange:b=>c({...a,time:b.target.value}),className:"h-8 text-xs"}),d?.time&&(0,b.jsx)("p",{className:"text-[11px] text-destructive",children:d.time})]})]}),"weekly"===a.frequency&&(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-[11px] font-medium text-muted-foreground",children:"Days of week"}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1",children:N.map((d,e)=>{let f=(a.daysOfWeek??[]).includes(e);return(0,b.jsx)(p.Button,{type:"button",size:"sm",variant:f?"default":"outline",onClick:()=>c(function(a,b){if("weekly"!==a.frequency)return a;let c=new Set(a.daysOfWeek??[]);return c.has(b)?c.delete(b):c.add(b),{...a,daysOfWeek:Array.from(c).sort((a,b)=>a-b)}}(a,e)),"aria-pressed":f,className:"h-7 px-2 text-xs",children:d},d)})}),d?.daysOfWeek&&(0,b.jsx)("p",{className:"text-[11px] text-destructive",children:d.daysOfWeek})]}),"monthly"===a.frequency&&(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-[11px] font-medium text-muted-foreground",children:"Days of month"}),(0,b.jsx)("div",{className:"grid grid-cols-7 gap-1 sm:grid-cols-10",children:Q.map(d=>{let e=(a.daysOfMonth??[]).includes(d);return(0,b.jsx)("button",{type:"button",onClick:()=>c(function(a,b){if("monthly"!==a.frequency)return a;let c=new Set(a.daysOfMonth??[]);return c.has(b)?c.delete(b):c.add(b),{...a,daysOfMonth:Array.from(c).sort((a,b)=>a-b)}}(a,d)),"aria-pressed":e,className:(0,L.cn)("h-7 rounded-md border text-[11px] tabular-nums transition-colors",e?"border-primary bg-primary text-primary-foreground":"border-input bg-background hover:bg-muted"),children:d},d)})}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"29-31 clamp to the last day on shorter months."}),d?.daysOfMonth&&(0,b.jsx)("p",{className:"text-[11px] text-destructive",children:d.daysOfMonth})]}),a.timezone&&(0,b.jsxs)("p",{className:"text-[10px] text-muted-foreground",children:["Timezone: ",(0,b.jsx)("code",{children:a.timezone})]})]})}function S({task:a,threshold:c}){return a.consecutive_failures>=c?(0,b.jsxs)(I.Badge,{variant:"red",className:"gap-1",children:[(0,b.jsx)(E.XCircle,{className:"h-3 w-3"}),a.consecutive_failures,"× failing"]}):a.consecutive_failures>0?(0,b.jsxs)(I.Badge,{variant:"amber",className:"gap-1",children:[(0,b.jsx)(z.AlertTriangle,{className:"h-3 w-3"}),a.consecutive_failures,"× recently failed"]}):a.last_run_at?(0,b.jsxs)(I.Badge,{variant:"green",className:"gap-1",children:[(0,b.jsx)(A.CheckCircle2,{className:"h-3 w-3"}),"ok"]}):(0,b.jsxs)(I.Badge,{variant:"gray",className:"gap-1",children:[(0,b.jsx)(B.Clock,{className:"h-3 w-3"}),"not yet run"]})}function T({failureThreshold:a=F.MANAGEMENT_FAILURE_NOTIFY_THRESHOLD_DEFAULT}){let d=(0,G.useManagedTasks)(),[e,f]=(0,c.useState)(null),g=d.data?.count??0,h=g>=F.MANAGEMENT_ACTIVE_TASKS_SOFT_WARNING;return(0,b.jsxs)(q.Card,{className:"space-y-4",children:[(0,b.jsxs)(q.CardHeader,{className:"p-0",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)(q.CardTitle,{className:"text-base",children:"B. Managed tasks"}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground max-w-prose",children:["Recurring read-only fetches the agent runs against external apps. New tasks are registered through DM (e.g."," ",(0,b.jsx)("code",{children:"“Check Zoom daily at 10 AM”"}),") so the",(0,b.jsx)("code",{className:"ml-0.5",children:"management-task-register"})," skill can run dedup and a live connector probe before commit."]})]}),(0,b.jsx)("div",{className:h?"text-xs font-medium text-amber-600":"text-xs text-muted-foreground",title:h?`≥ ${F.MANAGEMENT_ACTIVE_TASKS_SOFT_WARNING} active tasks — rendered management.md may approach the 32 KB policy-files cap.`:void 0,children:d.data?`${g} active`:""})]}),(0,b.jsx)(u.QueryResult,{isLoading:d.isLoading,isError:d.isError,error:d.error,onRetry:()=>d.refetch(),skeleton:(0,b.jsx)(u.TableSkeleton,{rows:3}),children:d.data&&0!==d.data.items.length?(0,b.jsx)(U,{items:d.data.items,failureThreshold:a,onEdit:f}):(0,b.jsx)(K.EmptyState,{icon:B.Clock,title:"No managed tasks yet",description:'Send the agent a DM like "Check Zoom daily at 10 AM" to register one.'})}),(0,b.jsx)(V,{task:e,onClose:()=>f(null)})]})}function U({items:a,failureThreshold:d,onEdit:e}){let f=(0,G.useRunManagedTaskNow)(),g=(0,G.useDeleteManagedTask)(),h=(0,H.useConfirm)(),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(null),n=async a=>{k(null),m(a.id);try{await f.mutateAsync({id:a.id,reason:"dashboard"})}catch(a){k(P(a))}finally{m(null)}},o=async a=>{if(await h({title:`Stop ${a.id}?`,description:"Hard-deletes the row and the underlying recurring schedule. The history stays in agent_actions and can be reviewed under History. Type the id to confirm.",requireText:a.id,confirmLabel:"Stop",cancelLabel:"Cancel",variant:"destructive"})){k(null),m(a.id);try{await g.mutateAsync(a.id)}catch(a){k(P(a))}finally{m(null)}}};return(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"w-full border-collapse text-sm",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{className:"border-b border-border text-left text-[11px] uppercase tracking-wide text-muted-foreground",children:[(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"ID"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Intent"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"App"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Cadence"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Output path"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Last run"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Status"}),(0,b.jsx)("th",{className:"w-32 px-2 py-2"})]})}),(0,b.jsx)("tbody",{children:a.map(a=>(0,b.jsxs)("tr",{className:"border-b border-border/40 align-top text-xs",children:[(0,b.jsx)("td",{className:"px-2 py-2 font-mono text-[11px]",children:a.id}),(0,b.jsx)("td",{className:"px-2 py-2",children:a.intent}),(0,b.jsx)("td",{className:"px-2 py-2",children:a.app}),(0,b.jsx)("td",{className:"px-2 py-2 text-muted-foreground",children:a.cadence}),(0,b.jsx)("td",{className:"px-2 py-2 font-mono text-[11px]",children:a.output_path??(0,b.jsx)("span",{className:"text-muted-foreground/60",children:"—"})}),(0,b.jsx)("td",{className:"px-2 py-2 text-muted-foreground",children:a.last_run_at?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{title:(0,L.formatAbsoluteTime)(a.last_run_at),children:(0,L.formatRelativeTime)(a.last_run_at)}),a.last_result&&(0,b.jsx)("span",{className:"block text-[11px] text-muted-foreground/70",children:a.last_result})]}):(0,b.jsx)("span",{className:"text-muted-foreground/60",children:"—"})}),(0,b.jsx)("td",{className:"px-2 py-2",children:(0,b.jsx)(S,{task:a,threshold:d})}),(0,b.jsx)("td",{className:"px-2 py-2",children:(0,b.jsxs)("div",{className:"flex items-center justify-end gap-1",children:[(0,b.jsx)(p.Button,{type:"button",variant:"ghost",size:"icon","aria-label":`Run ${a.id} now`,title:"Run now",onClick:()=>n(a),disabled:l===a.id,className:"h-7 w-7",children:(0,b.jsx)(D,{className:"h-4 w-4"})}),(0,b.jsx)(p.Button,{type:"button",variant:"ghost",size:"icon","aria-label":`Modify ${a.id}`,title:"Modify",onClick:()=>e(a),disabled:l===a.id,className:"h-7 w-7",children:(0,b.jsx)(C.Edit2,{className:"h-4 w-4"})}),(0,b.jsx)(p.Button,{type:"button",variant:"ghost",size:"icon","aria-label":`Stop ${a.id}`,title:"Stop",onClick:()=>o(a),disabled:l===a.id,className:"h-7 w-7 text-destructive hover:text-destructive",children:(0,b.jsx)(i.Trash2,{className:"h-4 w-4"})})]})})]},a.id))})]})}),j&&(0,b.jsx)(t.Alert,{variant:"error",className:"text-xs",children:j})]})}function V({task:a,onClose:c}){return(0,b.jsx)(J.Sheet,{open:null!==a,onOpenChange:a=>!a&&c(),children:a&&(0,b.jsx)(W,{task:a,onClose:c},a.id)})}function W({task:a,onClose:d}){let e=(0,G.useManagedTask)(a.id),f=(0,G.useUpdateManagedTask)(),g=(0,G.useRenameManagedTaskApp)(),h=(0,G.useManagedTaskRuns)(a.id,25),i=(0,H.useConfirm)(),[j,k]=(0,c.useState)(a.intent),[l,m]=(0,c.useState)(a.cadence),[n,o]=(0,c.useState)(()=>(function(a){if(!a)return{domain:"",type:""};let b=a.replace(/\/$/,"").split("/");if(2!==b.length)return{domain:"",type:""};let[c,d]=b,e=(0,F.pluralToType)(d);return e&&F.DOMAINS.includes(c)?{domain:c,type:e}:{domain:"",type:""}})(a.output_path)),[q,u]=(0,c.useState)(null),[v,w]=(0,c.useState)(null),x=e.data?.recurrenceRule??null;(0,c.useEffect)(()=>{null===q&&null!==x&&u(x)},[q,x]);let y=(0,c.useMemo)(()=>n.domain&&n.type?`${n.domain}/${F.TYPE_PLURALS[n.type]}/`:null,[n]),z=(0,c.useMemo)(()=>q?function(a){let b={};if("string"==typeof a.time&&/^([01]\d|2[0-3]):[0-5]\d$/.test(a.time)||(b.time="Time must be HH:MM, zero-padded."),"weekly"===a.frequency){let c=a.daysOfWeek??[];0===c.length?b.daysOfWeek="Select at least one weekday.":c.some(a=>!Number.isInteger(a)||a<0||a>6)&&(b.daysOfWeek="Days of week must be 0..6 (Sun..Sat).")}if("monthly"===a.frequency){let c=a.daysOfMonth??[];0===c.length?b.daysOfMonth="Select at least one day of the month.":c.some(a=>!Number.isInteger(a)||a<1||a>31)&&(b.daysOfMonth="Days of month must be 1..31.")}return 0===Object.keys(b).length?null:b}(q):null,[q]),A=(0,c.useMemo)(()=>{var b,c;return b={intent:j,cadence:l,outputPath:y,recurrenceRule:q},c={task:a,recurrenceRule:x},!(b.intent.trim()===c.task.intent&&b.cadence.trim()===c.task.cadence&&b.outputPath===c.task.output_path&&O(b.recurrenceRule,c.recurrenceRule))},[j,l,y,q,a,x]),B=j.trim().length>0&&j.trim().length<=200,C=l.trim().length>0&&l.trim().length<=200,D=A&&B&&C&&null===z,E=async()=>{w(null);let b={id:a.id};j.trim()!==a.intent&&(b.intent=j.trim()),l.trim()!==a.cadence&&(b.cadence=l.trim()),y!==a.output_path&&(b.output_path=y),q&&!O(q,x)&&(b.recurrenceRule=q);try{await f.mutateAsync(b),d()}catch(a){w(P(a))}},I=async()=>{let b=window.prompt(`Rename ${a.app} to:`,a.app);if(null===b)return;let c=b.trim();if(""!==c&&c!==a.app&&await i({title:`Rename ${a.id}'s app to "${c}"?`,description:`Rewrites every entity file's frontmatter \`sources.${a.app}\` to \`sources.${c}\`. Irreversible — entity files are touched on disk. Type the task id to confirm.`,requireText:a.id,confirmLabel:"Rename app",cancelLabel:"Cancel",variant:"destructive"})){w(null);try{await g.mutateAsync({id:a.id,newApp:c})}catch(a){w(P(a))}}};return(0,b.jsxs)(J.SheetContent,{className:"flex w-full max-w-xl flex-col gap-4 overflow-y-auto",children:[(0,b.jsxs)(J.SheetHeader,{children:[(0,b.jsxs)(J.SheetTitle,{children:["Modify ",a.id]}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:[a.app," · created ",(0,L.formatAbsoluteTime)(a.created_at)]})]}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium",htmlFor:"intent",children:"Intent"}),(0,b.jsx)(r.Input,{id:"intent",value:j,onChange:a=>k(a.target.value),maxLength:200}),(0,b.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Free text (≤200 chars). Rendered in the management.md table and included in the scheduled-task description."})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium",htmlFor:"cadence",children:"Cadence label"}),(0,b.jsx)(r.Input,{id:"cadence",value:l,onChange:a=>m(a.target.value),maxLength:200,placeholder:"daily 10:00 (Asia/Tokyo)"}),(0,b.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Free-text label rendered in §B. The structured fire schedule is edited below — they round-trip independently so the agent can keep its preferred phrasing while the cron form moves."})]}),(0,b.jsxs)("div",{className:"space-y-1.5 rounded-md border border-border/60 p-3",children:[(0,b.jsx)("p",{className:"text-xs font-medium",children:"Schedule"}),e.isLoading&&!q&&(0,b.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Loading…"}),e.isError&&(0,b.jsx)(t.Alert,{variant:"error",className:"text-xs",children:"Could not load the recurring schedule. Save other fields, or refresh and retry."}),q&&(0,b.jsx)(R,{rule:q,onChange:u,errors:z}),(0,b.jsxs)("p",{className:"text-[10px] text-muted-foreground",children:["Underlying schedule: ",(0,b.jsxs)("code",{children:["rs:",a.schedule_id]}),". Saving updates the same row — the daemon regenerates the next",(0,b.jsx)("code",{className:"ml-0.5",children:"agent_schedule"})," fire."]})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium",children:"Output path"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)(s.Select,{value:n.domain,onValueChange:a=>o(b=>({...b,domain:a})),children:[(0,b.jsx)(s.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(s.SelectValue,{placeholder:"domain"})}),(0,b.jsx)(s.SelectContent,{children:F.DOMAINS.map(a=>(0,b.jsx)(s.SelectItem,{value:a,children:a},a))})]}),(0,b.jsx)("span",{className:"text-muted-foreground",children:"/"}),(0,b.jsxs)(s.Select,{value:n.type,onValueChange:a=>o(b=>({...b,type:a})),children:[(0,b.jsx)(s.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(s.SelectValue,{placeholder:"type"})}),(0,b.jsx)(s.SelectContent,{children:F.ENTITY_TYPES.map(a=>(0,b.jsx)(s.SelectItem,{value:a,children:F.TYPE_PLURALS[a]},a))})]}),(0,b.jsx)(p.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>{o({domain:"",type:""})},className:"h-8 px-2 text-xs",children:"Clear"})]}),(0,b.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:["Where this task writes entity files. Composed path:"," ",(0,b.jsx)("code",{className:"font-mono",children:y??"—"})]})]}),v&&(0,b.jsx)(t.Alert,{variant:"error",className:"text-xs",children:v}),(0,b.jsxs)("div",{className:"flex justify-between gap-2",children:[(0,b.jsx)(p.Button,{type:"button",variant:"ghost",size:"sm",onClick:I,disabled:g.isPending||f.isPending,className:"text-destructive hover:text-destructive",children:"Rename app…"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(p.Button,{type:"button",variant:"outline",size:"sm",onClick:d,children:"Cancel"}),(0,b.jsx)(p.Button,{type:"button",size:"sm",onClick:E,disabled:!D||f.isPending,children:f.isPending?"Saving…":"Save"})]})]})]}),(0,b.jsxs)("div",{className:"border-t border-border pt-4",children:[(0,b.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:"Recent activity"}),h.isLoading&&(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"Loading…"}),h.data&&0===h.data.runs.length&&(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"No history recorded yet."}),h.data&&h.data.runs.length>0&&(0,b.jsx)("ul",{className:"mt-2 space-y-1.5",children:h.data.runs.map(a=>(0,b.jsxs)("li",{className:"flex items-start gap-2 rounded-md border border-border/40 px-2 py-1.5 text-[11px]",children:[(0,b.jsx)("span",{className:"success"===a.result?"text-emerald-500":"failed"===a.result?"text-destructive":"text-muted-foreground",children:"●"}),(0,b.jsxs)("div",{className:"flex-1",children:[(0,b.jsx)("code",{className:"font-mono text-[10px]",children:a.kind.replace("management_task.","")}),a.startedAt&&(0,b.jsx)("span",{className:"ml-2 text-muted-foreground",title:(0,L.formatAbsoluteTime)(a.startedAt),children:(0,L.formatRelativeTime)(a.startedAt)})]})]},a.id))})]})]})}var X=a.i(60133);let Y={"management_task.created":"Created","management_task.modified":"Modified","management_task.deleted":"Stopped","management_task.run_recorded":"Ran","management_task.run_now":"Ran (on demand)","management_task.app_renamed":"Renamed app","sot_binding.updated":"SoT bindings updated"},Z={"management_task.created":"green","management_task.modified":"blue","management_task.deleted":"red","management_task.run_recorded":"gray","management_task.run_now":"purple","management_task.app_renamed":"amber","sot_binding.updated":"blue"};function $({limit:a=50}){let d=(0,G.useManagementHistory)(a),e=(0,c.useMemo)(()=>d.data?.pages.flatMap(a=>a.events)??[],[d.data]);return(0,b.jsxs)(q.Card,{className:"space-y-4",children:[(0,b.jsx)(q.CardHeader,{className:"p-0",children:(0,b.jsxs)("div",{children:[(0,b.jsx)(q.CardTitle,{className:"text-base",children:"History"}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground max-w-prose",children:["Recent changes to managed tasks (Section B) and SoT bindings (Section A). Sourced from ",(0,b.jsx)("code",{children:"agent_actions"})," — the authoritative audit trail per §15."]})]})}),(0,b.jsx)(u.QueryResult,{isLoading:d.isLoading,isError:d.isError,error:d.error,onRetry:()=>d.refetch(),children:0===e.length?(0,b.jsx)(K.EmptyState,{icon:X.History,title:"No history yet",description:"Register or modify a managed task to see entries here."}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("ol",{className:"space-y-2",children:e.map(a=>{let c=a.detail,d=c&&"string"==typeof c.mt_id?c.mt_id:null,e=function(a,b){if(!b)return null;switch(a){case"management_task.created":{let a="string"==typeof b.app?b.app:null,c="string"==typeof b.cadence?b.cadence:null,d="string"==typeof b.output_path?b.output_path:null,e=[];return a&&e.push(a),c&&e.push(c),d&&e.push(`→ ${d}`),e.length?e.join(" · "):null}case"management_task.modified":{let a=Array.isArray(b.changed)?b.changed.filter(a=>"string"==typeof a):[];return a.length?`changed: ${a.join(", ")}`:null}case"management_task.deleted":{let a=b.original_row&&"object"==typeof b.original_row?b.original_row:null;if(!a)return null;let c="string"==typeof a.intent?a.intent:"",d="string"==typeof a.app?a.app:"";return`${c} (${d})`.trim()}case"management_task.run_now":{let a="string"==typeof b.reason?b.reason:null;return a?`reason: ${a}`:null}case"management_task.run_recorded":return"string"==typeof b.last_result?b.last_result:null;case"management_task.app_renamed":{let a="string"==typeof b.from?b.from:"",c="string"==typeof b.to?b.to:"";return`${a} → ${c}`}case"sot_binding.updated":{let a=Array.isArray(b.next)?b.next.length:null,c=Array.isArray(b.previous)?b.previous.length:null;if(null===c||null===a)return null;return`${c} → ${a} bindings`}default:return null}}(a.kind,c);return(0,b.jsxs)("li",{className:"flex items-start gap-3 rounded-md border border-border/40 px-3 py-2 text-xs",children:[(0,b.jsx)(I.Badge,{variant:Z[a.kind]??"gray",className:"mt-0.5 shrink-0",children:Y[a.kind]??a.kind}),(0,b.jsxs)("div",{className:"flex-1 space-y-0.5",children:[d&&(0,b.jsx)("code",{className:"font-mono text-[11px]",children:d}),e&&(0,b.jsx)("p",{className:"text-foreground/90",children:e})]}),a.startedAt&&(0,b.jsx)("span",{className:"shrink-0 text-[11px] text-muted-foreground",title:(0,L.formatAbsoluteTime)(a.startedAt),children:(0,L.formatRelativeTime)(a.startedAt)})]},a.id)})}),d.hasNextPage&&(0,b.jsx)("div",{className:"flex justify-center pt-2",children:(0,b.jsx)(p.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>void d.fetchNextPage(),disabled:d.isFetchingNextPage,children:d.isFetchingNextPage?"Loading…":"Load more"})})]})})]})}let _=["tasks","bindings","history"];function aa(a){return null!==a&&_.includes(a)}function ab(){let a=(0,d.useSearchParams)(),c=(0,d.useRouter)(),g=a.get("tab"),h=aa(g)?g:"tasks";return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.PageHeader,{title:"Management",description:(0,b.jsxs)(b.Fragment,{children:["Source-of-Truth bindings (Section A) and Managed Tasks (Section B) — the structured rows the daemon renders into"," ",(0,b.jsx)("code",{children:"policies/management.md"})," and injects into every agent session. Edits here re-render the file atomically; the agent picks up the new state on its next session."]})}),(0,b.jsxs)(e.Tabs,{value:h,onValueChange:a=>{aa(a)&&c.replace(`/settings/management?tab=${a}`,{scroll:!1})},children:[(0,b.jsxs)(e.TabsList,{children:[(0,b.jsx)(e.TabsTrigger,{value:"tasks",children:"Managed Tasks"}),(0,b.jsx)(e.TabsTrigger,{value:"bindings",children:"SoT Bindings"}),(0,b.jsx)(e.TabsTrigger,{value:"history",children:"History"})]}),(0,b.jsx)(e.TabsContent,{value:"tasks",className:"pt-3",children:(0,b.jsx)(T,{})}),(0,b.jsx)(e.TabsContent,{value:"bindings",className:"pt-3",children:(0,b.jsx)(y,{})}),(0,b.jsx)(e.TabsContent,{value:"history",className:"pt-3",children:(0,b.jsx)($,{})})]})]})}a.s(["default",0,function(){return(0,b.jsx)(c.Suspense,{children:(0,b.jsx)(ab,{})})}],17961)}];
1
+ module.exports=[17961,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(82508),e=a.i(9306),f=a.i(87206),g=a.i(43179),h=a.i(95024),i=a.i(96336),j=a.i(59616),k=a.i(59974),l=a.i(8753),m=a.i(62588),n=a.i(81130);let o=["sot-bindings"];var p=a.i(21218),q=a.i(30400),r=a.i(8212),s=a.i(47696),t=a.i(29629),u=a.i(41010);let v=[{value:"agent",label:"agent"},{value:"shared",label:"shared"},{value:"user",label:"user"}];function w(a){let b=a.trim();return""===b?null:b}function x(a,b){if(a.length!==b.length)return!1;for(let c=0;c<a.length;c++){let d=a[c],e=b[c];if(d.category!==e.category||d.sotApp!==e.sotApp||d.mirrorPath!==e.mirrorPath||d.policy!==e.policy||d.writer!==e.writer)return!1}return!0}function y(){let a,d=(0,m.useQuery)({queryKey:o,queryFn:()=>k.api.get("/sot-bindings"),staleTime:3e4}),e=(a=(0,n.useQueryClient)(),(0,l.useMutation)({mutationFn:a=>k.api.put("/sot-bindings",a),onSuccess:()=>{a.invalidateQueries({queryKey:o}),a.invalidateQueries({queryKey:["management-history"]})}})),[f,y]=(0,c.useState)([]),[z,A]=(0,c.useState)([]),[B,C]=(0,c.useState)(null),[D,E]=(0,c.useState)(null);(0,c.useEffect)(()=>{if(d.data&&!e.isPending){let a=d.data.items;y(b=>x(b,z)?a:b),A(a)}},[d.data,e.isPending]);let F=(0,c.useMemo)(()=>!x(f,z),[f,z]),G=(0,c.useMemo)(()=>(function(a){let b=new Set;for(let c=0;c<a.length;c++){let d=a[c];if(!d.category.trim())return{ok:!1,reason:`Row ${c+1}: Category is required`};if(!d.sotApp.trim())return{ok:!1,reason:`Row ${c+1}: SoT app is required`};let e=d.category.trim().toLowerCase();if(b.has(e))return{ok:!1,reason:`Duplicate category "${d.category}"`};b.add(e)}return{ok:!0}})(f),[f]),H=(a,b)=>{y(c=>c.map((c,d)=>d===a?{...c,...b}:c)),C(null)},I=async()=>{if(!G.ok)return void C(G.reason);C(null);try{let a=f.map(a=>({category:a.category.trim(),sotApp:a.sotApp.trim(),mirrorPath:a.mirrorPath,policy:a.policy,writer:a.writer})),b=await e.mutateAsync(a);A(b.items),y(b.items),E("Saved."),window.setTimeout(()=>E(null),2500)}catch(a){C(a instanceof k.ApiError||a instanceof Error?a.message:"save failed")}};return(0,b.jsxs)(q.Card,{className:"space-y-4",children:[(0,b.jsxs)(q.CardHeader,{className:"p-0",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)(q.CardTitle,{className:"text-base",children:"A. Source-of-Truth bindings"}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground max-w-prose",children:["Where the canonical data lives for each category. Renders Section A of ",(0,b.jsx)("code",{children:"policies/management.md"}),"; injected into every agent session so reactive flows know what to read or write."]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)(p.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{y(z),C(null)},disabled:!F||e.isPending,children:[(0,b.jsx)(j.Undo2,{className:"mr-1.5 h-3.5 w-3.5"}),"Discard"]}),(0,b.jsxs)(p.Button,{type:"button",size:"sm",onClick:I,disabled:!F||e.isPending||!G.ok,children:[(0,b.jsx)(h.Save,{className:"mr-1.5 h-3.5 w-3.5"}),e.isPending?"Saving…":"Save"]})]})]}),(0,b.jsx)(u.QueryResult,{isLoading:d.isLoading,isError:d.isError,error:d.error,onRetry:()=>d.refetch(),skeleton:(0,b.jsx)(u.TableSkeleton,{rows:3}),children:(0,b.jsxs)("div",{className:"space-y-2",children:[0===f.length?(0,b.jsx)("p",{className:"rounded-md border border-dashed border-border p-4 text-center text-xs text-muted-foreground",children:"No bindings yet. Add one to declare where a category’s source of truth lives."}):(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"w-full border-collapse text-sm",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{className:"border-b border-border text-left text-[11px] uppercase tracking-wide text-muted-foreground",children:[(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Category"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"SoT app"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Mirror path"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Policy"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Writer"}),(0,b.jsx)("th",{className:"w-10 px-2 py-2"})]})}),(0,b.jsx)("tbody",{children:f.map((a,c)=>(0,b.jsxs)("tr",{className:"border-b border-border/40 align-top",children:[(0,b.jsx)("td",{className:"px-1 py-1.5",children:(0,b.jsx)(r.Input,{value:a.category,onChange:a=>H(c,{category:a.target.value}),placeholder:"tasks",maxLength:64})}),(0,b.jsx)("td",{className:"px-1 py-1.5",children:(0,b.jsx)(r.Input,{value:a.sotApp,onChange:a=>H(c,{sotApp:a.target.value}),placeholder:"notion",maxLength:64})}),(0,b.jsx)("td",{className:"px-1 py-1.5",children:(0,b.jsx)(r.Input,{value:a.mirrorPath??"",onChange:a=>H(c,{mirrorPath:w(a.target.value)}),placeholder:"context/work/tasks-index.md",maxLength:255})}),(0,b.jsx)("td",{className:"px-1 py-1.5",children:(0,b.jsx)(r.Input,{value:a.policy??"",onChange:a=>H(c,{policy:w(a.target.value)}),placeholder:"—",maxLength:200})}),(0,b.jsx)("td",{className:"px-1 py-1.5",children:(0,b.jsxs)(s.Select,{value:a.writer,onValueChange:a=>H(c,{writer:a}),children:[(0,b.jsx)(s.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(s.SelectValue,{})}),(0,b.jsx)(s.SelectContent,{children:v.map(a=>(0,b.jsx)(s.SelectItem,{value:a.value,children:a.label},a.value))})]})}),(0,b.jsx)("td",{className:"px-1 py-1.5",children:(0,b.jsx)(p.Button,{type:"button",variant:"ghost",size:"icon","aria-label":`Remove row ${c+1}`,onClick:()=>{y(a=>a.filter((a,b)=>b!==c)),C(null)},className:"h-8 w-8",children:(0,b.jsx)(i.Trash2,{className:"h-3.5 w-3.5"})})})]},c))})]})}),(0,b.jsxs)(p.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{y(a=>[...a,{category:"",sotApp:"",mirrorPath:null,policy:null,writer:"shared"}]),C(null)},disabled:e.isPending,children:[(0,b.jsx)(g.Plus,{className:"mr-1.5 h-3.5 w-3.5"}),"Add binding"]})]})}),B&&(0,b.jsx)(t.Alert,{variant:"error",className:"text-xs",children:B}),D&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:D})]})}var z=a.i(32307),A=a.i(82687),B=a.i(3504),C=a.i(45133);let D=(0,a.i(5423).default)("CirclePlay",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polygon",{points:"10 8 16 12 10 16 10 8",key:"1cimsy"}]]);var E=a.i(7385);a.i(70010);var F=a.i(27085),G=a.i(84478),H=a.i(28314),I=a.i(7384),J=a.i(61213),K=a.i(27727),L=a.i(48558);let M=["daily","weekly","monthly"],N=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];function O(a,b){if(a===b)return!0;if(!a||!b||a.frequency!==b.frequency||(a.time??null)!==(b.time??null)||(a.timezone??null)!==(b.timezone??null))return!1;let c=(a.daysOfWeek??[]).slice().sort((a,b)=>a-b),d=(b.daysOfWeek??[]).slice().sort((a,b)=>a-b);if(c.length!==d.length)return!1;for(let a=0;a<c.length;a++)if(c[a]!==d[a])return!1;let e=(a.daysOfMonth??[]).slice().sort((a,b)=>a-b),f=(b.daysOfMonth??[]).slice().sort((a,b)=>a-b);if(e.length!==f.length)return!1;for(let a=0;a<e.length;a++)if(e[a]!==f[a])return!1;return!0}function P(a){return a instanceof k.ApiError||a instanceof Error?a.message:"operation failed"}let Q=Array.from({length:31},(a,b)=>b+1);function R({rule:a,onChange:c,errors:d}){return(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-[11px] font-medium text-muted-foreground",children:"Frequency"}),(0,b.jsxs)(s.Select,{value:a.frequency,onValueChange:b=>{let d;return c((d={frequency:b,time:a.time??"00:00",...a.timezone?{timezone:a.timezone}:{}},"weekly"===b&&(d.daysOfWeek=a.daysOfWeek??[]),"monthly"===b&&(d.daysOfMonth=a.daysOfMonth??[]),d))},children:[(0,b.jsx)(s.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(s.SelectValue,{})}),(0,b.jsx)(s.SelectContent,{children:M.map(a=>(0,b.jsx)(s.SelectItem,{value:a,children:a},a))})]})]}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("label",{className:"text-[11px] font-medium text-muted-foreground",htmlFor:"recurrence-time",children:"Time of day"}),(0,b.jsx)(r.Input,{id:"recurrence-time",type:"time",value:a.time,onChange:b=>c({...a,time:b.target.value}),className:"h-8 text-xs"}),d?.time&&(0,b.jsx)("p",{className:"text-[11px] text-destructive",children:d.time})]})]}),"weekly"===a.frequency&&(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-[11px] font-medium text-muted-foreground",children:"Days of week"}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1",children:N.map((d,e)=>{let f=(a.daysOfWeek??[]).includes(e);return(0,b.jsx)(p.Button,{type:"button",size:"sm",variant:f?"default":"outline",onClick:()=>c(function(a,b){if("weekly"!==a.frequency)return a;let c=new Set(a.daysOfWeek??[]);return c.has(b)?c.delete(b):c.add(b),{...a,daysOfWeek:Array.from(c).sort((a,b)=>a-b)}}(a,e)),"aria-pressed":f,className:"h-7 px-2 text-xs",children:d},d)})}),d?.daysOfWeek&&(0,b.jsx)("p",{className:"text-[11px] text-destructive",children:d.daysOfWeek})]}),"monthly"===a.frequency&&(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-[11px] font-medium text-muted-foreground",children:"Days of month"}),(0,b.jsx)("div",{className:"grid grid-cols-7 gap-1 sm:grid-cols-10",children:Q.map(d=>{let e=(a.daysOfMonth??[]).includes(d);return(0,b.jsx)("button",{type:"button",onClick:()=>c(function(a,b){if("monthly"!==a.frequency)return a;let c=new Set(a.daysOfMonth??[]);return c.has(b)?c.delete(b):c.add(b),{...a,daysOfMonth:Array.from(c).sort((a,b)=>a-b)}}(a,d)),"aria-pressed":e,className:(0,L.cn)("h-7 rounded-md border text-[11px] tabular-nums transition-colors",e?"border-primary bg-primary text-primary-foreground":"border-input bg-background hover:bg-muted"),children:d},d)})}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"29-31 clamp to the last day on shorter months."}),d?.daysOfMonth&&(0,b.jsx)("p",{className:"text-[11px] text-destructive",children:d.daysOfMonth})]}),a.timezone&&(0,b.jsxs)("p",{className:"text-[10px] text-muted-foreground",children:["Timezone: ",(0,b.jsx)("code",{children:a.timezone})]})]})}function S({task:a,threshold:c}){return a.consecutive_failures>=c?(0,b.jsxs)(I.Badge,{variant:"red",className:"gap-1",children:[(0,b.jsx)(E.XCircle,{className:"h-3 w-3"}),a.consecutive_failures,"× failing"]}):a.consecutive_failures>0?(0,b.jsxs)(I.Badge,{variant:"amber",className:"gap-1",children:[(0,b.jsx)(z.AlertTriangle,{className:"h-3 w-3"}),a.consecutive_failures,"× recently failed"]}):a.last_run_at?(0,b.jsxs)(I.Badge,{variant:"green",className:"gap-1",children:[(0,b.jsx)(A.CheckCircle2,{className:"h-3 w-3"}),"ok"]}):(0,b.jsxs)(I.Badge,{variant:"gray",className:"gap-1",children:[(0,b.jsx)(B.Clock,{className:"h-3 w-3"}),"not yet run"]})}function T({failureThreshold:a=F.MANAGEMENT_FAILURE_NOTIFY_THRESHOLD_DEFAULT}){let d=(0,G.useManagedTasks)(),[e,f]=(0,c.useState)(null),g=d.data?.count??0,h=g>=F.MANAGEMENT_ACTIVE_TASKS_SOFT_WARNING;return(0,b.jsxs)(q.Card,{className:"space-y-4",children:[(0,b.jsxs)(q.CardHeader,{className:"p-0",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)(q.CardTitle,{className:"text-base",children:"B. Managed tasks"}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground max-w-prose",children:["Recurring read-only fetches the agent runs against external apps. New tasks are registered through DM (e.g."," ",(0,b.jsx)("code",{children:"“Check Zoom daily at 10 AM”"}),") so the",(0,b.jsx)("code",{className:"ml-0.5",children:"management-task-register"})," skill can run dedup and a live connector probe before commit."]})]}),(0,b.jsx)("div",{className:h?"text-xs font-medium text-warning":"text-xs text-muted-foreground",title:h?`≥ ${F.MANAGEMENT_ACTIVE_TASKS_SOFT_WARNING} active tasks — rendered management.md may approach the 32 KB policy-files cap.`:void 0,children:d.data?`${g} active`:""})]}),(0,b.jsx)(u.QueryResult,{isLoading:d.isLoading,isError:d.isError,error:d.error,onRetry:()=>d.refetch(),skeleton:(0,b.jsx)(u.TableSkeleton,{rows:3}),children:d.data&&0!==d.data.items.length?(0,b.jsx)(U,{items:d.data.items,failureThreshold:a,onEdit:f}):(0,b.jsx)(K.EmptyState,{icon:B.Clock,title:"No managed tasks yet",description:'Send the agent a DM like "Check Zoom daily at 10 AM" to register one.'})}),(0,b.jsx)(V,{task:e,onClose:()=>f(null)})]})}function U({items:a,failureThreshold:d,onEdit:e}){let f=(0,G.useRunManagedTaskNow)(),g=(0,G.useDeleteManagedTask)(),h=(0,H.useConfirm)(),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(null),n=async a=>{k(null),m(a.id);try{await f.mutateAsync({id:a.id,reason:"dashboard"})}catch(a){k(P(a))}finally{m(null)}},o=async a=>{if(await h({title:`Stop ${a.id}?`,description:"Hard-deletes the row and the underlying recurring schedule. The history stays in agent_actions and can be reviewed under History. Type the id to confirm.",requireText:a.id,confirmLabel:"Stop",cancelLabel:"Cancel",variant:"destructive"})){k(null),m(a.id);try{await g.mutateAsync(a.id)}catch(a){k(P(a))}finally{m(null)}}};return(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"w-full border-collapse text-sm",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{className:"border-b border-border text-left text-[11px] uppercase tracking-wide text-muted-foreground",children:[(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"ID"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Intent"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"App"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Cadence"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Output path"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Last run"}),(0,b.jsx)("th",{className:"px-2 py-2 font-medium",children:"Status"}),(0,b.jsx)("th",{className:"w-32 px-2 py-2"})]})}),(0,b.jsx)("tbody",{children:a.map(a=>(0,b.jsxs)("tr",{className:"border-b border-border/40 align-top text-xs",children:[(0,b.jsx)("td",{className:"px-2 py-2 font-mono text-[11px]",children:a.id}),(0,b.jsx)("td",{className:"px-2 py-2",children:a.intent}),(0,b.jsx)("td",{className:"px-2 py-2",children:a.app}),(0,b.jsx)("td",{className:"px-2 py-2 text-muted-foreground",children:a.cadence}),(0,b.jsx)("td",{className:"px-2 py-2 font-mono text-[11px]",children:a.output_path??(0,b.jsx)("span",{className:"text-muted-foreground/60",children:"—"})}),(0,b.jsx)("td",{className:"px-2 py-2 text-muted-foreground",children:a.last_run_at?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{title:(0,L.formatAbsoluteTime)(a.last_run_at),children:(0,L.formatRelativeTime)(a.last_run_at)}),a.last_result&&(0,b.jsx)("span",{className:"block text-[11px] text-muted-foreground/70",children:a.last_result})]}):(0,b.jsx)("span",{className:"text-muted-foreground/60",children:"—"})}),(0,b.jsx)("td",{className:"px-2 py-2",children:(0,b.jsx)(S,{task:a,threshold:d})}),(0,b.jsx)("td",{className:"px-2 py-2",children:(0,b.jsxs)("div",{className:"flex items-center justify-end gap-1",children:[(0,b.jsx)(p.Button,{type:"button",variant:"ghost",size:"icon","aria-label":`Run ${a.id} now`,title:"Run now",onClick:()=>n(a),disabled:l===a.id,className:"h-7 w-7",children:(0,b.jsx)(D,{className:"h-4 w-4"})}),(0,b.jsx)(p.Button,{type:"button",variant:"ghost",size:"icon","aria-label":`Modify ${a.id}`,title:"Modify",onClick:()=>e(a),disabled:l===a.id,className:"h-7 w-7",children:(0,b.jsx)(C.Edit2,{className:"h-4 w-4"})}),(0,b.jsx)(p.Button,{type:"button",variant:"ghost",size:"icon","aria-label":`Stop ${a.id}`,title:"Stop",onClick:()=>o(a),disabled:l===a.id,className:"h-7 w-7 text-destructive hover:text-destructive",children:(0,b.jsx)(i.Trash2,{className:"h-4 w-4"})})]})})]},a.id))})]})}),j&&(0,b.jsx)(t.Alert,{variant:"error",className:"text-xs",children:j})]})}function V({task:a,onClose:c}){return(0,b.jsx)(J.Sheet,{open:null!==a,onOpenChange:a=>!a&&c(),children:a&&(0,b.jsx)(W,{task:a,onClose:c},a.id)})}function W({task:a,onClose:d}){let e=(0,G.useManagedTask)(a.id),f=(0,G.useUpdateManagedTask)(),g=(0,G.useRenameManagedTaskApp)(),h=(0,G.useManagedTaskRuns)(a.id,25),i=(0,H.useConfirm)(),[j,k]=(0,c.useState)(a.intent),[l,m]=(0,c.useState)(a.cadence),[n,o]=(0,c.useState)(()=>(function(a){if(!a)return{domain:"",type:""};let b=a.replace(/\/$/,"").split("/");if(2!==b.length)return{domain:"",type:""};let[c,d]=b,e=(0,F.pluralToType)(d);return e&&F.DOMAINS.includes(c)?{domain:c,type:e}:{domain:"",type:""}})(a.output_path)),[q,u]=(0,c.useState)(null),[v,w]=(0,c.useState)(null),x=e.data?.recurrenceRule??null;(0,c.useEffect)(()=>{null===q&&null!==x&&u(x)},[q,x]);let y=(0,c.useMemo)(()=>n.domain&&n.type?`${n.domain}/${F.TYPE_PLURALS[n.type]}/`:null,[n]),z=(0,c.useMemo)(()=>q?function(a){let b={};if("string"==typeof a.time&&/^([01]\d|2[0-3]):[0-5]\d$/.test(a.time)||(b.time="Time must be HH:MM, zero-padded."),"weekly"===a.frequency){let c=a.daysOfWeek??[];0===c.length?b.daysOfWeek="Select at least one weekday.":c.some(a=>!Number.isInteger(a)||a<0||a>6)&&(b.daysOfWeek="Days of week must be 0..6 (Sun..Sat).")}if("monthly"===a.frequency){let c=a.daysOfMonth??[];0===c.length?b.daysOfMonth="Select at least one day of the month.":c.some(a=>!Number.isInteger(a)||a<1||a>31)&&(b.daysOfMonth="Days of month must be 1..31.")}return 0===Object.keys(b).length?null:b}(q):null,[q]),A=(0,c.useMemo)(()=>{var b,c;return b={intent:j,cadence:l,outputPath:y,recurrenceRule:q},c={task:a,recurrenceRule:x},!(b.intent.trim()===c.task.intent&&b.cadence.trim()===c.task.cadence&&b.outputPath===c.task.output_path&&O(b.recurrenceRule,c.recurrenceRule))},[j,l,y,q,a,x]),B=j.trim().length>0&&j.trim().length<=200,C=l.trim().length>0&&l.trim().length<=200,D=A&&B&&C&&null===z,E=async()=>{w(null);let b={id:a.id};j.trim()!==a.intent&&(b.intent=j.trim()),l.trim()!==a.cadence&&(b.cadence=l.trim()),y!==a.output_path&&(b.output_path=y),q&&!O(q,x)&&(b.recurrenceRule=q);try{await f.mutateAsync(b),d()}catch(a){w(P(a))}},I=async()=>{let b=window.prompt(`Rename ${a.app} to:`,a.app);if(null===b)return;let c=b.trim();if(""!==c&&c!==a.app&&await i({title:`Rename ${a.id}'s app to "${c}"?`,description:`Rewrites every entity file's frontmatter \`sources.${a.app}\` to \`sources.${c}\`. Irreversible — entity files are touched on disk. Type the task id to confirm.`,requireText:a.id,confirmLabel:"Rename app",cancelLabel:"Cancel",variant:"destructive"})){w(null);try{await g.mutateAsync({id:a.id,newApp:c})}catch(a){w(P(a))}}};return(0,b.jsxs)(J.SheetContent,{className:"flex w-full max-w-xl flex-col gap-4 overflow-y-auto",children:[(0,b.jsxs)(J.SheetHeader,{children:[(0,b.jsxs)(J.SheetTitle,{children:["Modify ",a.id]}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:[a.app," · created ",(0,L.formatAbsoluteTime)(a.created_at)]})]}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium",htmlFor:"intent",children:"Intent"}),(0,b.jsx)(r.Input,{id:"intent",value:j,onChange:a=>k(a.target.value),maxLength:200}),(0,b.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Free text (≤200 chars). Rendered in the management.md table and included in the scheduled-task description."})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium",htmlFor:"cadence",children:"Cadence label"}),(0,b.jsx)(r.Input,{id:"cadence",value:l,onChange:a=>m(a.target.value),maxLength:200,placeholder:"daily 10:00 (Asia/Tokyo)"}),(0,b.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Free-text label rendered in §B. The structured fire schedule is edited below — they round-trip independently so the agent can keep its preferred phrasing while the cron form moves."})]}),(0,b.jsxs)("div",{className:"space-y-1.5 rounded-md border border-border/60 p-3",children:[(0,b.jsx)("p",{className:"text-xs font-medium",children:"Schedule"}),e.isLoading&&!q&&(0,b.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Loading…"}),e.isError&&(0,b.jsx)(t.Alert,{variant:"error",className:"text-xs",children:"Could not load the recurring schedule. Save other fields, or refresh and retry."}),q&&(0,b.jsx)(R,{rule:q,onChange:u,errors:z}),(0,b.jsxs)("p",{className:"text-[10px] text-muted-foreground",children:["Underlying schedule: ",(0,b.jsxs)("code",{children:["rs:",a.schedule_id]}),". Saving updates the same row — the daemon regenerates the next",(0,b.jsx)("code",{className:"ml-0.5",children:"agent_schedule"})," fire."]})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium",children:"Output path"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)(s.Select,{value:n.domain,onValueChange:a=>o(b=>({...b,domain:a})),children:[(0,b.jsx)(s.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(s.SelectValue,{placeholder:"domain"})}),(0,b.jsx)(s.SelectContent,{children:F.DOMAINS.map(a=>(0,b.jsx)(s.SelectItem,{value:a,children:a},a))})]}),(0,b.jsx)("span",{className:"text-muted-foreground",children:"/"}),(0,b.jsxs)(s.Select,{value:n.type,onValueChange:a=>o(b=>({...b,type:a})),children:[(0,b.jsx)(s.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(s.SelectValue,{placeholder:"type"})}),(0,b.jsx)(s.SelectContent,{children:F.ENTITY_TYPES.map(a=>(0,b.jsx)(s.SelectItem,{value:a,children:F.TYPE_PLURALS[a]},a))})]}),(0,b.jsx)(p.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>{o({domain:"",type:""})},className:"h-8 px-2 text-xs",children:"Clear"})]}),(0,b.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:["Where this task writes entity files. Composed path:"," ",(0,b.jsx)("code",{className:"font-mono",children:y??"—"})]})]}),v&&(0,b.jsx)(t.Alert,{variant:"error",className:"text-xs",children:v}),(0,b.jsxs)("div",{className:"flex justify-between gap-2",children:[(0,b.jsx)(p.Button,{type:"button",variant:"ghost",size:"sm",onClick:I,disabled:g.isPending||f.isPending,className:"text-destructive hover:text-destructive",children:"Rename app…"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(p.Button,{type:"button",variant:"outline",size:"sm",onClick:d,children:"Cancel"}),(0,b.jsx)(p.Button,{type:"button",size:"sm",onClick:E,disabled:!D||f.isPending,children:f.isPending?"Saving…":"Save"})]})]})]}),(0,b.jsxs)("div",{className:"border-t border-border pt-4",children:[(0,b.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:"Recent activity"}),h.isLoading&&(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"Loading…"}),h.data&&0===h.data.runs.length&&(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"No history recorded yet."}),h.data&&h.data.runs.length>0&&(0,b.jsx)("ul",{className:"mt-2 space-y-1.5",children:h.data.runs.map(a=>(0,b.jsxs)("li",{className:"flex items-start gap-2 rounded-md border border-border/40 px-2 py-1.5 text-[11px]",children:[(0,b.jsx)("span",{className:"success"===a.result?"text-success":"failed"===a.result?"text-destructive":"text-muted-foreground",children:"●"}),(0,b.jsxs)("div",{className:"flex-1",children:[(0,b.jsx)("code",{className:"font-mono text-[10px]",children:a.kind.replace("management_task.","")}),a.startedAt&&(0,b.jsx)("span",{className:"ml-2 text-muted-foreground",title:(0,L.formatAbsoluteTime)(a.startedAt),children:(0,L.formatRelativeTime)(a.startedAt)})]})]},a.id))})]})]})}var X=a.i(60133);let Y={"management_task.created":"Created","management_task.modified":"Modified","management_task.deleted":"Stopped","management_task.run_recorded":"Ran","management_task.run_now":"Ran (on demand)","management_task.app_renamed":"Renamed app","sot_binding.updated":"SoT bindings updated"},Z={"management_task.created":"green","management_task.modified":"blue","management_task.deleted":"red","management_task.run_recorded":"gray","management_task.run_now":"purple","management_task.app_renamed":"amber","sot_binding.updated":"blue"};function $({limit:a=50}){let d=(0,G.useManagementHistory)(a),e=(0,c.useMemo)(()=>d.data?.pages.flatMap(a=>a.events)??[],[d.data]);return(0,b.jsxs)(q.Card,{className:"space-y-4",children:[(0,b.jsx)(q.CardHeader,{className:"p-0",children:(0,b.jsxs)("div",{children:[(0,b.jsx)(q.CardTitle,{className:"text-base",children:"History"}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground max-w-prose",children:["Recent changes to managed tasks (Section B) and SoT bindings (Section A). Sourced from ",(0,b.jsx)("code",{children:"agent_actions"})," — the authoritative audit trail per §15."]})]})}),(0,b.jsx)(u.QueryResult,{isLoading:d.isLoading,isError:d.isError,error:d.error,onRetry:()=>d.refetch(),children:0===e.length?(0,b.jsx)(K.EmptyState,{icon:X.History,title:"No history yet",description:"Register or modify a managed task to see entries here."}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("ol",{className:"space-y-2",children:e.map(a=>{let c=a.detail,d=c&&"string"==typeof c.mt_id?c.mt_id:null,e=function(a,b){if(!b)return null;switch(a){case"management_task.created":{let a="string"==typeof b.app?b.app:null,c="string"==typeof b.cadence?b.cadence:null,d="string"==typeof b.output_path?b.output_path:null,e=[];return a&&e.push(a),c&&e.push(c),d&&e.push(`→ ${d}`),e.length?e.join(" · "):null}case"management_task.modified":{let a=Array.isArray(b.changed)?b.changed.filter(a=>"string"==typeof a):[];return a.length?`changed: ${a.join(", ")}`:null}case"management_task.deleted":{let a=b.original_row&&"object"==typeof b.original_row?b.original_row:null;if(!a)return null;let c="string"==typeof a.intent?a.intent:"",d="string"==typeof a.app?a.app:"";return`${c} (${d})`.trim()}case"management_task.run_now":{let a="string"==typeof b.reason?b.reason:null;return a?`reason: ${a}`:null}case"management_task.run_recorded":return"string"==typeof b.last_result?b.last_result:null;case"management_task.app_renamed":{let a="string"==typeof b.from?b.from:"",c="string"==typeof b.to?b.to:"";return`${a} → ${c}`}case"sot_binding.updated":{let a=Array.isArray(b.next)?b.next.length:null,c=Array.isArray(b.previous)?b.previous.length:null;if(null===c||null===a)return null;return`${c} → ${a} bindings`}default:return null}}(a.kind,c);return(0,b.jsxs)("li",{className:"flex items-start gap-3 rounded-md border border-border/40 px-3 py-2 text-xs",children:[(0,b.jsx)(I.Badge,{variant:Z[a.kind]??"gray",className:"mt-0.5 shrink-0",children:Y[a.kind]??a.kind}),(0,b.jsxs)("div",{className:"flex-1 space-y-0.5",children:[d&&(0,b.jsx)("code",{className:"font-mono text-[11px]",children:d}),e&&(0,b.jsx)("p",{className:"text-foreground/90",children:e})]}),a.startedAt&&(0,b.jsx)("span",{className:"shrink-0 text-[11px] text-muted-foreground",title:(0,L.formatAbsoluteTime)(a.startedAt),children:(0,L.formatRelativeTime)(a.startedAt)})]},a.id)})}),d.hasNextPage&&(0,b.jsx)("div",{className:"flex justify-center pt-2",children:(0,b.jsx)(p.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>void d.fetchNextPage(),disabled:d.isFetchingNextPage,children:d.isFetchingNextPage?"Loading…":"Load more"})})]})})]})}let _=["tasks","bindings","history"];function aa(a){return null!==a&&_.includes(a)}function ab(){let a=(0,d.useSearchParams)(),c=(0,d.useRouter)(),g=a.get("tab"),h=aa(g)?g:"tasks";return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.PageHeader,{title:"Management",description:(0,b.jsxs)(b.Fragment,{children:["Source-of-Truth bindings (Section A) and Managed Tasks (Section B) — the structured rows the daemon renders into"," ",(0,b.jsx)("code",{children:"policies/management.md"})," and injects into every agent session. Edits here re-render the file atomically; the agent picks up the new state on its next session."]})}),(0,b.jsxs)(e.Tabs,{value:h,onValueChange:a=>{aa(a)&&c.replace(`/settings/management?tab=${a}`,{scroll:!1})},children:[(0,b.jsxs)(e.TabsList,{children:[(0,b.jsx)(e.TabsTrigger,{value:"tasks",children:"Managed Tasks"}),(0,b.jsx)(e.TabsTrigger,{value:"bindings",children:"SoT Bindings"}),(0,b.jsx)(e.TabsTrigger,{value:"history",children:"History"})]}),(0,b.jsx)(e.TabsContent,{value:"tasks",className:"pt-3",children:(0,b.jsx)(T,{})}),(0,b.jsx)(e.TabsContent,{value:"bindings",className:"pt-3",children:(0,b.jsx)(y,{})}),(0,b.jsx)(e.TabsContent,{value:"history",className:"pt-3",children:(0,b.jsx)($,{})})]})]})}a.s(["default",0,function(){return(0,b.jsx)(c.Suspense,{children:(0,b.jsx)(ab,{})})}],17961)}];
2
2
 
3
3
  //# sourceMappingURL=packages_dashboard_src_app_settings_management_page_tsx_09mnin5._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[83679,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(42732),e=a.i(54150),f=a.i(78933),g=a.i(92379),h=a.i(70054),i=a.i(92241),j=a.i(81130);a.i(70010);var k=a.i(58906),l=a.i(51141),m=a.i(21218),n=a.i(47696),o=a.i(59974),p=a.i(40091),q=a.i(74794),r=a.i(89021),s=a.i(74358),t=a.i(81831);let u=(0,k.getBackendIds)();function v({onToast:a}){let{data:d,refetch:f}=(0,q.useBackends)(),{data:g}=(0,e.useConfig)(),h=(0,j.useQueryClient)(),[k,w]=(0,c.useState)(null),[x,y]=(0,c.useState)({claude:{status:"idle"},codex:{status:"idle"},gemini:{status:"idle"},opencode:{status:"idle"}}),[z,A]=(0,c.useState)(null),[B,C]=(0,c.useState)(!1);(0,c.useEffect)(()=>{let a=!1;return(async()=>{try{let b=await o.api.get("/backends/advisor");if(a)return;A({enabled:b.enabled,model:b.model})}catch{a||A({enabled:!1,model:null})}})(),()=>{a=!0}},[]);let D=(0,c.useCallback)(async a=>{y(b=>({...b,[a]:{status:"checking"}}));try{let b=await o.api.post(`/backends/${a}/verify-install`);if(await f(),b.ok)y(c=>({...c,[a]:{status:"ok",version:b.version}}));else{let c=b.cliInstalled?b.timedOut?`${b.cliCommand} --version timed out`:b.stderr.trim()||b.stdout.trim()||"CLI failed to run":`${b.cliCommand} not found on PATH`;y(b=>({...b,[a]:{status:"error",error:c}}))}}catch(b){y(c=>({...c,[a]:{status:"error",error:b instanceof Error?b.message:"Verify install failed"}}))}},[f]),E=(0,c.useCallback)(async b=>{w(b);try{let c=await o.api.put("/backends/main",{backendId:b});await f(),await h.invalidateQueries({queryKey:["backends"]}),await h.invalidateQueries({queryKey:["integrations"]}),await h.invalidateQueries({queryKey:["health"]}),await h.invalidateQueries({queryKey:["agent-actions","native_unbound"]});let d=c?.nativeUnbound??[];if(d.length>0){let c=d.map(a=>a.key).join(", ");a("warning",`Main backend set to ${p.BACKEND_PROVIDER_LABELS[b]}. ${d.length} native integration${1===d.length?"":"s"} disabled (${c}). Re-configure on /connections.`)}else a("success",`Main backend set to ${p.BACKEND_PROVIDER_LABELS[b]}.`)}catch(b){a("error",b instanceof o.ApiError||b instanceof Error?b.message:"Failed to set main backend")}finally{w(null)}},[f,h,a]),F=(0,c.useCallback)(async b=>{let c=d?.backends.find(a=>a.id===b);if(!c)return;let e=!c.enabled;w(b);try{await o.api.post(`/backends/${b}/${e?"enable":"disable"}`),await f(),a("success",`${p.BACKEND_PROVIDER_LABELS[b]} ${e?"enabled":"disabled"}.`)}catch(b){a("error",b instanceof Error?b.message:"Failed to update backend")}finally{w(null)}},[d,f,a]),G=(0,c.useCallback)(async b=>{let c=d?.backends.find(a=>a.id===b);if(!c)return;let e=!c.webSearchEnabled;w(b);try{await o.api.post(`/backends/${b}/web-search`,{enabled:e}),await f()}catch(b){a("error",b instanceof Error?b.message:"Failed to update web search")}finally{w(null)}},[d,f,a]),H=(0,c.useCallback)(async b=>{C(!0);try{await o.api.put("/backends/advisor",{enabled:b.enabled,model:b.model}),A(b),a("success",`Advisor ${b.enabled?"enabled":"disabled"}.`)}catch(b){a("error",b instanceof Error?b.message:"Failed to save advisor")}finally{C(!1)}},[a]),I=d?.defaultBackend??null;return(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"Backends"}),(0,b.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,b.jsx)(t.SubscriptionAuthWarning,{}),(0,b.jsx)("div",{className:"space-y-3",children:u.map(c=>{let e=d?.backends.find(a=>a.id===c),h=I===c,i=(0,p.isBackendSelectionDisabled)(c),j=g?g[`${c}ExecutionPermissionMode`]:null;return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(r.BackendCard,{backendId:c,mode:"settings",isMain:h,authStatus:e?.authStatus??"unknown",authStatusDetail:e?.authDetail??null,authFirstExpiredAt:e?.authFirstExpiredAt??null,authLastSuccessAt:e?.authLastSuccessAt??null,authNotificationCount:e?.authNotificationCount??0,cliInstalled:e?.cliInstalled??!0,enabled:e?.enabled??!1,webSearchEnabled:e?.webSearchEnabled??!1,webSearchSupported:e?.webSearchSupported??!1,permissionMode:j,busy:k===c,controlsDisabled:i,disabledReason:i?p.UI_PREVIEW_ONLY_REASON:void 0,installCheck:x[c],onCliInstalled:()=>{f()},onVerifyInstall:()=>{D(c)},onToggleEnable:()=>{F(c)},onToggleWebSearch:()=>{G(c)}}),!i&&(0,b.jsx)(s.BackendApiKeyPanel,{backendId:c,onToast:a}),!h&&(0,b.jsx)("div",{className:"flex justify-end",children:(0,b.jsxs)(m.Button,{size:"sm",variant:"outline",disabled:i||null!==k||!e?.cliInstalled,onClick:()=>{E(c)},children:["Set ",p.BACKEND_PROVIDER_SHORT[c]," as main"]})})]},c)})}),z&&(0,b.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4 shadow-sm",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:"Advisor (Claude Agent SDK)"}),(0,b.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,b.jsxs)(m.Button,{size:"sm",variant:z.enabled?"outline":"default",disabled:B,onClick:()=>{H(z.enabled?{enabled:!1,model:null}:{enabled:!0,model:z.model??l.ADVISOR_ALLOWED_MODELS[0]})},children:[B&&(0,b.jsx)(i.Loader2,{className:"mr-2 h-3.5 w-3.5 animate-spin"}),z.enabled?"Disable advisor":"Enable advisor"]})]}),z.enabled&&(0,b.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:"Model:"}),(0,b.jsxs)(n.Select,{value:z.model??l.ADVISOR_ALLOWED_MODELS[0],onValueChange:a=>{(0,l.isAdvisorModel)(a)&&H({enabled:!0,model:a})},disabled:B,children:[(0,b.jsx)(n.SelectTrigger,{className:"h-8 w-auto min-w-[12rem] text-xs",children:(0,b.jsx)(n.SelectValue,{})}),(0,b.jsx)(n.SelectContent,{children:l.ADVISOR_ALLOWED_MODELS.map(a=>(0,b.jsx)(n.SelectItem,{value:a,children:a},a))})]})]})]})]})}var w=a.i(32307),x=a.i(78019),y=a.i(50891),z=a.i(26206),A=a.i(30400),B=a.i(59809),C=a.i(57216),D=a.i(48558),E=a.i(16611);function F(a){let b=(0,k.getBackendIds)().map(b=>(0,E.internalToUi)(a[`${b}ExecutionPermissionMode`])),c=b[0]??"safe";return b.every(a=>a===c)?c:null}let G=(0,k.getBackendIds)();function H({onToast:a}){let{data:d}=(0,e.useConfig)(),[f,g]=(0,c.useState)(0);return d?(0,b.jsx)(I,{config:d,onToast:a,onApplied:()=>g(a=>a+1)},f):(0,b.jsx)(A.Card,{children:(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(i.Loader2,{className:"h-4 w-4 animate-spin"})," Loading…"]})})}function I({config:a,onToast:d,onApplied:e}){let f=(0,j.useQueryClient)(),g=(0,c.useState)(()=>{let b;return{topLevel:b=F(a),overrides:null!==F(a)?{...E.EMPTY_OVERRIDES}:Object.fromEntries((0,k.getBackendIds)().map(b=>[b,(0,E.internalToUi)(a[`${b}ExecutionPermissionMode`])])),forceAccordionOpen:null===b}})[0],[h,l]=(0,c.useState)(g.topLevel),[n,q]=(0,c.useState)(g.overrides),[r,s]=(0,c.useState)(g.forceAccordionOpen),[t,u]=(0,c.useState)(!1),v=null===h||(0,E.hasDivergentOverride)(h,n);async function w(){let a=(0,E.buildSetupModePayload)(h,n);if(null!==a){u(!0);try{await o.api.post("/setup/mode",a),await f.invalidateQueries({queryKey:["config"]}),d("success","Execution mode updated"),e()}catch(a){a instanceof o.ApiError||a instanceof Error?d("error",a.message):d("error","Failed to update execution mode")}finally{u(!1)}}}return(0,b.jsxs)(A.Card,{id:"execution-mode",children:[(0,b.jsx)(A.CardHeader,{className:"px-0 pt-0",children:(0,b.jsxs)(A.CardTitle,{className:"flex items-center gap-1.5 text-base",children:[(0,b.jsx)("span",{children:"Execution Mode"}),(0,b.jsx)(B.DocsHelpInline,{docId:"concepts/safety-and-execution",label:"Execution Mode"})]})}),(0,b.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,b.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,b.jsx)(J,{icon:(0,b.jsx)(y.ShieldCheck,{className:"h-5 w-5"}),title:"Safe",badge:"Recommended",selected:"safe"===h,onSelect:()=>l("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,b.jsxs)(J,{icon:(0,b.jsx)(z.Unlock,{className:"h-5 w-5"}),title:"Allow",selected:"allow"===h,onSelect:()=>l("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,b.jsx)(L,{})]}),(0,b.jsxs)(C.Collapsible,{open:r,onOpenChange:s,children:[(0,b.jsx)(C.CollapsibleTrigger,{asChild:!0,children:(0,b.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,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsx)(x.ChevronDown,{className:(0,D.cn)("h-3.5 w-3.5 transition-transform",r&&"rotate-180")}),"Advanced — per-backend overrides",v&&(0,b.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,b.jsx)("span",{className:"text-[11px]",children:r?"Hide":"Show"})]})}),(0,b.jsx)(C.CollapsibleContent,{className:"mt-2 space-y-2 rounded-md border border-border bg-background p-3",children:G.map(a=>(0,b.jsx)(K,{backend:a,topLevel:h,override:n[a]??null,disabled:(0,p.isUiPreviewOnlyBackend)(a),onChange:b=>q(c=>({...c,[a]:b}))},a))})]}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(m.Button,{onClick:w,disabled:!(0,E.canApply)(h,n)||t,children:t?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),"Saving…"]}):"Apply"})})]})]})}function J({icon:a,title:c,badge:d,selected:e,onSelect:f,children:g}){return(0,b.jsxs)("button",{type:"button",onClick:f,className:(0,D.cn)("block w-full rounded-lg border p-3 text-left transition-colors",e?"border-primary bg-primary/5 shadow-sm":"border-border hover:border-foreground/30"),children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 font-semibold text-foreground",children:[a,c,d&&(0,b.jsx)("span",{className:"rounded bg-primary/15 px-1.5 py-0.5 text-[10px] font-medium text-primary",children:d})]}),(0,b.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:g})]})}function K({backend:a,topLevel:c,override:d,disabled:e=!1,onChange:f}){let g=d??c,h=null===g?"pick a top-level mode first":`runs as: ${g}`;return(0,b.jsxs)("div",{className:(0,D.cn)("rounded-md border border-border/60 px-3 py-2",e&&"opacity-60"),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{className:"text-sm",children:[(0,b.jsxs)("div",{className:"font-medium text-foreground",children:[p.BACKEND_PROVIDER_LABELS[a],(0,b.jsxs)("span",{className:"ml-1 text-xs text-muted-foreground",children:["(",p.BACKEND_PROVIDER_SHORT[a],")"]}),e&&(0,b.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,b.jsx)("div",{className:"text-[11px] text-muted-foreground",children:h})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1 text-xs",children:[(0,b.jsx)(M,{active:null===d,label:"Follow",disabled:e,onClick:()=>f(null)}),(0,b.jsx)(M,{active:"safe"===d,label:"Safe",disabled:e,onClick:()=>f("safe")}),(0,b.jsx)(M,{active:"allow"===d,label:"Allow",disabled:e,onClick:()=>f("allow")})]})]}),"codex"===a&&"allow"===g&&(0,b.jsxs)("p",{className:"mt-2 flex items-start gap-1.5 text-[11px] text-amber-700 dark:text-amber-300",children:[(0,b.jsx)(w.AlertTriangle,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,b.jsx)("span",{children:"Codex Allow disables the daemon's absolute-block layer (sandbox-off). See the Allow card above."})]})]})}function L(){return(0,b.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,b.jsx)(w.AlertTriangle,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),(0,b.jsxs)("span",{className:"space-y-1",children:[(0,b.jsxs)("span",{className:"block",children:[(0,b.jsx)("span",{className:"font-semibold",children:"Codex caveat."})," Codex CLI runs Allow mode under"," ",(0,b.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,b.jsx)("code",{className:"rounded bg-black/10 px-1 font-mono text-[11px] dark:bg-white/10",children:"rm -rf"}),","," ",(0,b.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,b.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,b.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 M({active:a,label:c,disabled:d=!1,onClick:e}){return(0,b.jsx)("button",{type:"button",onClick:e,disabled:d,className:(0,D.cn)("rounded-md border px-2 py-1 transition-colors",a?"border-primary bg-primary/10 text-foreground":"border-border text-muted-foreground hover:border-foreground/30",d&&"cursor-not-allowed opacity-60 hover:border-border"),children:c})}var N=a.i(87206),O=a.i(56295),P=a.i(74345);function Q({title:a,defaultOpen:e=!1,children:f}){let[g,h]=(0,c.useState)(e);return(0,b.jsxs)(C.Collapsible,{open:g,onOpenChange:h,children:[(0,b.jsx)(C.CollapsibleTrigger,{asChild:!0,children:(0,b.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,b.jsx)(d.ChevronRight,{className:(0,D.cn)("h-3.5 w-3.5 shrink-0 transition-transform duration-200",g&&"rotate-90")}),a]})}),(0,b.jsx)(C.CollapsibleContent,{className:"space-y-3 pt-1",children:f})]})}a.s(["default",0,function(){let{data:a}=(0,e.useConfig)(),{df:c}=(0,e.useConfigDefaults)(),{toast:d,showToast:i}=(0,f.useSaveConfig)(),{deferSaveFor:j,dv:k,dirtyFields:l}=(0,g.useDirtyFields)();if(!a)return(0,b.jsx)("div",{className:"text-muted-foreground",children:"Loading..."});let m=j(a);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(N.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,b.jsx)(P.SettingsToast,{toast:d}),(0,b.jsx)(v,{onToast:i}),(0,b.jsx)(H,{onToast:i}),(0,b.jsx)(h.BackendSettingsSection,{onToast:i,sections:["processes"]}),(0,b.jsx)(Q,{title:"Execution limits",children:(0,b.jsxs)(O.ConfigSection,{title:"Execution limits",children:[(0,b.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,b.jsx)(O.EditableField,{label:"Max Concurrent Sessions",value:k("maxConcurrentSessions",a.maxConcurrentSessions),configKey:"maxConcurrentSessions",type:"number",modified:l.has("maxConcurrentSessions"),defaultValue:c("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,b.jsx)(O.EditableField,{label:"Max Reactive Sessions",value:k("maxReactiveSessions",a.maxReactiveSessions),configKey:"maxReactiveSessions",type:"number",modified:l.has("maxReactiveSessions"),defaultValue:c("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,b.jsx)(O.EditableField,{label:"Execute Timeout",value:k("executeTimeoutMinutes",a.executeTimeoutMinutes),configKey:"executeTimeoutMinutes",type:"number",suffix:"min",min:1,max:1440,modified:l.has("executeTimeoutMinutes"),defaultValue:c("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,b.jsx)(O.EditableField,{label:"Delegated Proxy Concurrency",value:k("delegatedProxyMaxConcurrent",a.delegatedProxyMaxConcurrent),configKey:"delegatedProxyMaxConcurrent",type:"number",min:1,max:64,modified:l.has("delegatedProxyMaxConcurrent"),defaultValue:c("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,b.jsx)(Q,{title:"Session timeouts",children:(0,b.jsxs)(O.ConfigSection,{title:"Session timeouts",children:[(0,b.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,b.jsx)(O.EditableField,{label:"DM Timeout",value:k("sessionTimeoutDmMinutes",a.sessionTimeoutDmMinutes),configKey:"sessionTimeoutDmMinutes",type:"number",suffix:"min",modified:l.has("sessionTimeoutDmMinutes"),defaultValue:c("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,b.jsx)(O.EditableField,{label:"Channel Timeout",value:k("sessionTimeoutChannelMinutes",a.sessionTimeoutChannelMinutes),configKey:"sessionTimeoutChannelMinutes",type:"number",suffix:"min",modified:l.has("sessionTimeoutChannelMinutes"),defaultValue:c("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,b.jsx)(O.EditableField,{label:"Dashboard Timeout",value:k("sessionTimeoutDashboardMinutes",a.sessionTimeoutDashboardMinutes),configKey:"sessionTimeoutDashboardMinutes",type:"number",suffix:"min",modified:l.has("sessionTimeoutDashboardMinutes"),defaultValue:c("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,b.jsx)(Q,{title:"Cost guardrails",children:(0,b.jsxs)(O.ConfigSection,{title:"Cost guardrails",children:[(0,b.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,b.jsx)(O.EditableField,{label:"Autonomous Daily Cost Cap",value:k("autonomousDailyCostCapUsd",a.autonomousDailyCostCapUsd),configKey:"autonomousDailyCostCapUsd",type:"number",suffix:"$",nullable:!0,emptyLabel:"Disabled",min:.01,modified:l.has("autonomousDailyCostCapUsd"),defaultValue:c("autonomousDailyCostCapUsd"),description:"Maximum daily USD spend for autonomous sessions before lower-priority routines are skipped. Leave blank to disable the cap.",onSave:m}),(0,b.jsx)(O.EditableField,{label:"Autonomous Monthly Cost Cap (alert only)",value:k("autonomousMonthlyCostCapUsd",a.autonomousMonthlyCostCapUsd),configKey:"autonomousMonthlyCostCapUsd",type:"number",suffix:"$",nullable:!0,emptyLabel:"Disabled",min:.01,modified:l.has("autonomousMonthlyCostCapUsd"),defaultValue:c("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})]})})]})}],83679)}];
1
+ module.exports=[83679,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(42732),e=a.i(54150),f=a.i(78933),g=a.i(92379),h=a.i(70054),i=a.i(92241),j=a.i(81130);a.i(70010);var k=a.i(58906),l=a.i(51141),m=a.i(21218),n=a.i(47696),o=a.i(59974),p=a.i(40091),q=a.i(74794),r=a.i(89021),s=a.i(74358),t=a.i(81831);let u=(0,k.getBackendIds)();function v({onToast:a}){let{data:d,refetch:f}=(0,q.useBackends)(),{data:g}=(0,e.useConfig)(),h=(0,j.useQueryClient)(),[k,w]=(0,c.useState)(null),[x,y]=(0,c.useState)({claude:{status:"idle"},codex:{status:"idle"},gemini:{status:"idle"},opencode:{status:"idle"}}),[z,A]=(0,c.useState)(null),[B,C]=(0,c.useState)(!1);(0,c.useEffect)(()=>{let a=!1;return(async()=>{try{let b=await o.api.get("/backends/advisor");if(a)return;A({enabled:b.enabled,model:b.model})}catch{a||A({enabled:!1,model:null})}})(),()=>{a=!0}},[]);let D=(0,c.useCallback)(async a=>{y(b=>({...b,[a]:{status:"checking"}}));try{let b=await o.api.post(`/backends/${a}/verify-install`);if(await f(),b.ok)y(c=>({...c,[a]:{status:"ok",version:b.version}}));else{let c=b.cliInstalled?b.timedOut?`${b.cliCommand} --version timed out`:b.stderr.trim()||b.stdout.trim()||"CLI failed to run":`${b.cliCommand} not found on PATH`;y(b=>({...b,[a]:{status:"error",error:c}}))}}catch(b){y(c=>({...c,[a]:{status:"error",error:b instanceof Error?b.message:"Verify install failed"}}))}},[f]),E=(0,c.useCallback)(async b=>{w(b);try{let c=await o.api.put("/backends/main",{backendId:b});await f(),await h.invalidateQueries({queryKey:["backends"]}),await h.invalidateQueries({queryKey:["integrations"]}),await h.invalidateQueries({queryKey:["health"]}),await h.invalidateQueries({queryKey:["agent-actions","native_unbound"]});let d=c?.nativeUnbound??[];if(d.length>0){let c=d.map(a=>a.key).join(", ");a("warning",`Main backend set to ${p.BACKEND_PROVIDER_LABELS[b]}. ${d.length} native integration${1===d.length?"":"s"} disabled (${c}). Re-configure on /connections.`)}else a("success",`Main backend set to ${p.BACKEND_PROVIDER_LABELS[b]}.`)}catch(b){a("error",b instanceof o.ApiError||b instanceof Error?b.message:"Failed to set main backend")}finally{w(null)}},[f,h,a]),F=(0,c.useCallback)(async b=>{let c=d?.backends.find(a=>a.id===b);if(!c)return;let e=!c.enabled;w(b);try{await o.api.post(`/backends/${b}/${e?"enable":"disable"}`),await f(),a("success",`${p.BACKEND_PROVIDER_LABELS[b]} ${e?"enabled":"disabled"}.`)}catch(b){a("error",b instanceof Error?b.message:"Failed to update backend")}finally{w(null)}},[d,f,a]),G=(0,c.useCallback)(async b=>{let c=d?.backends.find(a=>a.id===b);if(!c)return;let e=!c.webSearchEnabled;w(b);try{await o.api.post(`/backends/${b}/web-search`,{enabled:e}),await f()}catch(b){a("error",b instanceof Error?b.message:"Failed to update web search")}finally{w(null)}},[d,f,a]),H=(0,c.useCallback)(async b=>{C(!0);try{await o.api.put("/backends/advisor",{enabled:b.enabled,model:b.model}),A(b),a("success",`Advisor ${b.enabled?"enabled":"disabled"}.`)}catch(b){a("error",b instanceof Error?b.message:"Failed to save advisor")}finally{C(!1)}},[a]),I=d?.defaultBackend??null;return(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"Backends"}),(0,b.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,b.jsx)(t.SubscriptionAuthWarning,{}),(0,b.jsx)("div",{className:"space-y-3",children:u.map(c=>{let e=d?.backends.find(a=>a.id===c),h=I===c,i=(0,p.isBackendSelectionDisabled)(c),j=g?g[`${c}ExecutionPermissionMode`]:null;return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(r.BackendCard,{backendId:c,mode:"settings",isMain:h,authStatus:e?.authStatus??"unknown",authStatusDetail:e?.authDetail??null,authFirstExpiredAt:e?.authFirstExpiredAt??null,authLastSuccessAt:e?.authLastSuccessAt??null,authNotificationCount:e?.authNotificationCount??0,cliInstalled:e?.cliInstalled??!0,enabled:e?.enabled??!1,webSearchEnabled:e?.webSearchEnabled??!1,webSearchSupported:e?.webSearchSupported??!1,permissionMode:j,busy:k===c,controlsDisabled:i,disabledReason:i?p.UI_PREVIEW_ONLY_REASON:void 0,installCheck:x[c],onCliInstalled:()=>{f()},onVerifyInstall:()=>{D(c)},onToggleEnable:()=>{F(c)},onToggleWebSearch:()=>{G(c)}}),!i&&(0,b.jsx)(s.BackendApiKeyPanel,{backendId:c,onToast:a}),!h&&(0,b.jsx)("div",{className:"flex justify-end",children:(0,b.jsxs)(m.Button,{size:"sm",variant:"outline",disabled:i||null!==k||!e?.cliInstalled,onClick:()=>{E(c)},children:["Set ",p.BACKEND_PROVIDER_SHORT[c]," as main"]})})]},c)})}),z&&(0,b.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4 shadow-sm",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:"Advisor (Claude Agent SDK)"}),(0,b.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,b.jsxs)(m.Button,{size:"sm",variant:z.enabled?"outline":"default",disabled:B,onClick:()=>{H(z.enabled?{enabled:!1,model:null}:{enabled:!0,model:z.model??l.ADVISOR_ALLOWED_MODELS[0]})},children:[B&&(0,b.jsx)(i.Loader2,{className:"mr-2 h-3.5 w-3.5 animate-spin"}),z.enabled?"Disable advisor":"Enable advisor"]})]}),z.enabled&&(0,b.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:"Model:"}),(0,b.jsxs)(n.Select,{value:z.model??l.ADVISOR_ALLOWED_MODELS[0],onValueChange:a=>{(0,l.isAdvisorModel)(a)&&H({enabled:!0,model:a})},disabled:B,children:[(0,b.jsx)(n.SelectTrigger,{className:"h-8 w-auto min-w-[12rem] text-xs",children:(0,b.jsx)(n.SelectValue,{})}),(0,b.jsx)(n.SelectContent,{children:l.ADVISOR_ALLOWED_MODELS.map(a=>(0,b.jsx)(n.SelectItem,{value:a,children:a},a))})]})]})]})]})}var w=a.i(32307),x=a.i(78019),y=a.i(50891),z=a.i(26206),A=a.i(30400),B=a.i(59809),C=a.i(57216),D=a.i(48558),E=a.i(16611);function F(a){let b=(0,k.getBackendIds)().map(b=>(0,E.internalToUi)(a[`${b}ExecutionPermissionMode`])),c=b[0]??"safe";return b.every(a=>a===c)?c:null}let G=(0,k.getBackendIds)();function H({onToast:a}){let{data:d}=(0,e.useConfig)(),[f,g]=(0,c.useState)(0);return d?(0,b.jsx)(I,{config:d,onToast:a,onApplied:()=>g(a=>a+1)},f):(0,b.jsx)(A.Card,{children:(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(i.Loader2,{className:"h-4 w-4 animate-spin"})," Loading…"]})})}function I({config:a,onToast:d,onApplied:e}){let f=(0,j.useQueryClient)(),g=(0,c.useState)(()=>{let b;return{topLevel:b=F(a),overrides:null!==F(a)?{...E.EMPTY_OVERRIDES}:Object.fromEntries((0,k.getBackendIds)().map(b=>[b,(0,E.internalToUi)(a[`${b}ExecutionPermissionMode`])])),forceAccordionOpen:null===b}})[0],[h,l]=(0,c.useState)(g.topLevel),[n,q]=(0,c.useState)(g.overrides),[r,s]=(0,c.useState)(g.forceAccordionOpen),[t,u]=(0,c.useState)(!1),v=null===h||(0,E.hasDivergentOverride)(h,n);async function w(){let a=(0,E.buildSetupModePayload)(h,n);if(null!==a){u(!0);try{await o.api.post("/setup/mode",a),await f.invalidateQueries({queryKey:["config"]}),d("success","Execution mode updated"),e()}catch(a){a instanceof o.ApiError||a instanceof Error?d("error",a.message):d("error","Failed to update execution mode")}finally{u(!1)}}}return(0,b.jsxs)(A.Card,{id:"execution-mode",children:[(0,b.jsx)(A.CardHeader,{className:"px-0 pt-0",children:(0,b.jsxs)(A.CardTitle,{className:"flex items-center gap-1.5 text-base",children:[(0,b.jsx)("span",{children:"Execution Mode"}),(0,b.jsx)(B.DocsHelpInline,{docId:"concepts/safety-and-execution",label:"Execution Mode"})]})}),(0,b.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,b.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,b.jsx)(J,{icon:(0,b.jsx)(y.ShieldCheck,{className:"h-5 w-5"}),title:"Safe",badge:"Recommended",selected:"safe"===h,onSelect:()=>l("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,b.jsxs)(J,{icon:(0,b.jsx)(z.Unlock,{className:"h-5 w-5"}),title:"Allow",selected:"allow"===h,onSelect:()=>l("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,b.jsx)(L,{})]}),(0,b.jsxs)(C.Collapsible,{open:r,onOpenChange:s,children:[(0,b.jsx)(C.CollapsibleTrigger,{asChild:!0,children:(0,b.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,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsx)(x.ChevronDown,{className:(0,D.cn)("h-3.5 w-3.5 transition-transform",r&&"rotate-180")}),"Advanced — per-backend overrides",v&&(0,b.jsx)("span",{className:"rounded bg-warning/15 px-1.5 py-0.5 text-[10px] font-medium text-warning",children:"mixed"})]}),(0,b.jsx)("span",{className:"text-[11px]",children:r?"Hide":"Show"})]})}),(0,b.jsx)(C.CollapsibleContent,{className:"mt-2 space-y-2 rounded-md border border-border bg-background p-3",children:G.map(a=>(0,b.jsx)(K,{backend:a,topLevel:h,override:n[a]??null,disabled:(0,p.isUiPreviewOnlyBackend)(a),onChange:b=>q(c=>({...c,[a]:b}))},a))})]}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(m.Button,{onClick:w,disabled:!(0,E.canApply)(h,n)||t,children:t?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),"Saving…"]}):"Apply"})})]})]})}function J({icon:a,title:c,badge:d,selected:e,onSelect:f,children:g}){return(0,b.jsxs)("button",{type:"button",onClick:f,className:(0,D.cn)("block w-full rounded-lg border p-3 text-left transition-colors",e?"border-primary bg-primary/5 shadow-sm":"border-border hover:border-foreground/30"),children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 font-semibold text-foreground",children:[a,c,d&&(0,b.jsx)("span",{className:"rounded bg-primary/15 px-1.5 py-0.5 text-[10px] font-medium text-primary",children:d})]}),(0,b.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:g})]})}function K({backend:a,topLevel:c,override:d,disabled:e=!1,onChange:f}){let g=d??c,h=null===g?"pick a top-level mode first":`runs as: ${g}`;return(0,b.jsxs)("div",{className:(0,D.cn)("rounded-md border border-border/60 px-3 py-2",e&&"opacity-60"),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{className:"text-sm",children:[(0,b.jsxs)("div",{className:"font-medium text-foreground",children:[p.BACKEND_PROVIDER_LABELS[a],(0,b.jsxs)("span",{className:"ml-1 text-xs text-muted-foreground",children:["(",p.BACKEND_PROVIDER_SHORT[a],")"]}),e&&(0,b.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,b.jsx)("div",{className:"text-[11px] text-muted-foreground",children:h})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1 text-xs",children:[(0,b.jsx)(M,{active:null===d,label:"Follow",disabled:e,onClick:()=>f(null)}),(0,b.jsx)(M,{active:"safe"===d,label:"Safe",disabled:e,onClick:()=>f("safe")}),(0,b.jsx)(M,{active:"allow"===d,label:"Allow",disabled:e,onClick:()=>f("allow")})]})]}),"codex"===a&&"allow"===g&&(0,b.jsxs)("p",{className:"mt-2 flex items-start gap-1.5 text-[11px] text-warning",children:[(0,b.jsx)(w.AlertTriangle,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,b.jsx)("span",{children:"Codex Allow disables the daemon's absolute-block layer (sandbox-off). See the Allow card above."})]})]})}function L(){return(0,b.jsxs)("span",{className:"mt-3 flex items-start gap-2 rounded-md border border-warning/30 bg-warning/10 px-3 py-2 text-xs text-warning",children:[(0,b.jsx)(w.AlertTriangle,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),(0,b.jsxs)("span",{className:"space-y-1",children:[(0,b.jsxs)("span",{className:"block",children:[(0,b.jsx)("span",{className:"font-semibold",children:"Codex caveat."})," Codex CLI runs Allow mode under"," ",(0,b.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,b.jsx)("code",{className:"rounded bg-black/10 px-1 font-mono text-[11px] dark:bg-white/10",children:"rm -rf"}),","," ",(0,b.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,b.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,b.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 M({active:a,label:c,disabled:d=!1,onClick:e}){return(0,b.jsx)("button",{type:"button",onClick:e,disabled:d,className:(0,D.cn)("rounded-md border px-2 py-1 transition-colors",a?"border-primary bg-primary/10 text-foreground":"border-border text-muted-foreground hover:border-foreground/30",d&&"cursor-not-allowed opacity-60 hover:border-border"),children:c})}var N=a.i(87206),O=a.i(56295),P=a.i(74345);function Q({title:a,defaultOpen:e=!1,children:f}){let[g,h]=(0,c.useState)(e);return(0,b.jsxs)(C.Collapsible,{open:g,onOpenChange:h,children:[(0,b.jsx)(C.CollapsibleTrigger,{asChild:!0,children:(0,b.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,b.jsx)(d.ChevronRight,{className:(0,D.cn)("h-3.5 w-3.5 shrink-0 transition-transform duration-200",g&&"rotate-90")}),a]})}),(0,b.jsx)(C.CollapsibleContent,{className:"space-y-3 pt-1",children:f})]})}a.s(["default",0,function(){let{data:a}=(0,e.useConfig)(),{df:c}=(0,e.useConfigDefaults)(),{toast:d,showToast:i}=(0,f.useSaveConfig)(),{deferSaveFor:j,dv:k,dirtyFields:l}=(0,g.useDirtyFields)();if(!a)return(0,b.jsx)("div",{className:"text-muted-foreground",children:"Loading..."});let m=j(a);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(N.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,b.jsx)(P.SettingsToast,{toast:d}),(0,b.jsx)(v,{onToast:i}),(0,b.jsx)(H,{onToast:i}),(0,b.jsx)(h.BackendSettingsSection,{onToast:i,sections:["processes"]}),(0,b.jsx)(Q,{title:"Execution limits",children:(0,b.jsxs)(O.ConfigSection,{title:"Execution limits",children:[(0,b.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,b.jsx)(O.EditableField,{label:"Max Concurrent Sessions",value:k("maxConcurrentSessions",a.maxConcurrentSessions),configKey:"maxConcurrentSessions",type:"number",modified:l.has("maxConcurrentSessions"),defaultValue:c("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,b.jsx)(O.EditableField,{label:"Max Reactive Sessions",value:k("maxReactiveSessions",a.maxReactiveSessions),configKey:"maxReactiveSessions",type:"number",modified:l.has("maxReactiveSessions"),defaultValue:c("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,b.jsx)(O.EditableField,{label:"Execute Timeout",value:k("executeTimeoutMinutes",a.executeTimeoutMinutes),configKey:"executeTimeoutMinutes",type:"number",suffix:"min",min:1,max:1440,modified:l.has("executeTimeoutMinutes"),defaultValue:c("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,b.jsx)(O.EditableField,{label:"Delegated Proxy Concurrency",value:k("delegatedProxyMaxConcurrent",a.delegatedProxyMaxConcurrent),configKey:"delegatedProxyMaxConcurrent",type:"number",min:1,max:64,modified:l.has("delegatedProxyMaxConcurrent"),defaultValue:c("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,b.jsx)(Q,{title:"Session timeouts",children:(0,b.jsxs)(O.ConfigSection,{title:"Session timeouts",children:[(0,b.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,b.jsx)(O.EditableField,{label:"DM Timeout",value:k("sessionTimeoutDmMinutes",a.sessionTimeoutDmMinutes),configKey:"sessionTimeoutDmMinutes",type:"number",suffix:"min",modified:l.has("sessionTimeoutDmMinutes"),defaultValue:c("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,b.jsx)(O.EditableField,{label:"Channel Timeout",value:k("sessionTimeoutChannelMinutes",a.sessionTimeoutChannelMinutes),configKey:"sessionTimeoutChannelMinutes",type:"number",suffix:"min",modified:l.has("sessionTimeoutChannelMinutes"),defaultValue:c("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,b.jsx)(O.EditableField,{label:"Dashboard Timeout",value:k("sessionTimeoutDashboardMinutes",a.sessionTimeoutDashboardMinutes),configKey:"sessionTimeoutDashboardMinutes",type:"number",suffix:"min",modified:l.has("sessionTimeoutDashboardMinutes"),defaultValue:c("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,b.jsx)(Q,{title:"Cost guardrails",children:(0,b.jsxs)(O.ConfigSection,{title:"Cost guardrails",children:[(0,b.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,b.jsx)(O.EditableField,{label:"Autonomous Daily Cost Cap",value:k("autonomousDailyCostCapUsd",a.autonomousDailyCostCapUsd),configKey:"autonomousDailyCostCapUsd",type:"number",suffix:"$",nullable:!0,emptyLabel:"Disabled",min:.01,modified:l.has("autonomousDailyCostCapUsd"),defaultValue:c("autonomousDailyCostCapUsd"),description:"Maximum daily USD spend for autonomous sessions before lower-priority routines are skipped. Leave blank to disable the cap.",onSave:m}),(0,b.jsx)(O.EditableField,{label:"Autonomous Monthly Cost Cap (alert only)",value:k("autonomousMonthlyCostCapUsd",a.autonomousMonthlyCostCapUsd),configKey:"autonomousMonthlyCostCapUsd",type:"number",suffix:"$",nullable:!0,emptyLabel:"Disabled",min:.01,modified:l.has("autonomousMonthlyCostCapUsd"),defaultValue:c("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})]})})]})}],83679)}];
2
2
 
3
3
  //# sourceMappingURL=packages_dashboard_src_app_settings_models_page_tsx_0djsx88._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[31066,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(7037),e=a.i(54150),f=a.i(92379),g=a.i(21218),h=a.i(47696),i=a.i(8212),j=a.i(87206),k=a.i(56295);let l=(0,a.i(5423).default)("FolderCog",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["path",{d:"M10.3 20H4a2 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.9H20a2 2 0 0 1 2 2v3.3",key:"1k8050"}],["path",{d:"m21.7 19.4-.9-.3",key:"1qgwi9"}],["path",{d:"m15.2 16.9-.9-.3",key:"1t7mvx"}],["path",{d:"m16.6 21.7.3-.9",key:"1j67ps"}],["path",{d:"m19.1 15.2.3-.9",key:"18r7jp"}],["path",{d:"m19.6 21.7-.4-1",key:"z2vh2"}],["path",{d:"m16.8 15.3-.4-1",key:"1ei7r6"}],["path",{d:"m14.3 19.6 1-.4",key:"11sv9r"}],["path",{d:"m20.7 16.8 1-.4",key:"19m87a"}]]);var m=a.i(11307),n=a.i(40410),o=a.i(29629),p=a.i(74345),q=a.i(81130),r=a.i(32307),s=a.i(19512),t=a.i(92241),u=a.i(61213),v=a.i(91534),w=a.i(59974),x=a.i(48558),y=a.i(34043),z=a.i(66135);function A(a,b){return b?"Migrating…":"sessions_active"===a||"executions_active"===a||"migration_in_progress"===a?"Wait Then Retry":a?"Retry":"Confirm & Migrate"}function B({currentVaultMode:a,currentPrimaryVaultPath:d,onToast:e,trigger:f}){var h;let[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(a),[m,n]=(0,c.useState)(d),[p,r]=(0,c.useState)("abort"),[D,E]=(0,c.useState)(!1),[F,G]=(0,c.useState)(null),[H,I]=(0,c.useState)(null),[J,K]=(0,c.useState)({status:"idle"}),[L,M]=(0,c.useState)(null),N=(0,q.useQueryClient)(),{subscribeNamedEvent:O}=(0,y.useSSE)(),P=(0,c.useRef)(0);(0,c.useEffect)(()=>{i&&(l(a),n(d),r("abort"),G(null),I(null),K({status:"idle"}),M(null))},[i]),(0,c.useEffect)(()=>{if(i)return O("context_migration_progress",a=>{M(a)})},[i,O]),(0,c.useEffect)(()=>{i&&(G(null),I(null),M(null))},[k,m]),(0,c.useEffect)(()=>{let a=function(a){switch(a){case"target_has_agent_file_conflicts":return"overwrite_agent_files";case"target_has_unrelated_files":return"merge";default:return null}}("valid"===J.status?J.response.conflict?.kind:F?.error);a&&r(a)},[F?.error,J]);let Q=(0,c.useMemo)(()=>{let a;return"obsidian"!==k?null:0===(a=m.trim()).length?{code:"empty",message:"Path is required."}:(0,z.isClientAbsolutePath)(a)?(0,z.hasPathTraversalSegment)(a)?{code:"path_traversal",message:"Path may not contain `..` segments."}:null:{code:"not_absolute",message:"Path must be absolute (for example /Users/me/Vault, ~/Vault, C:\\Vault, or \\\\server\\share)."}},[k,m]);(0,c.useEffect)(()=>{if(!i||"obsidian"!==k)return void K({status:"idle"});let a=m.trim();if(0===a.length)return void K({status:"idle"});if(Q)return void K({status:"invalid",message:Q.message});let b=++P.current;K({status:"validating"});let c=window.setTimeout(async()=>{try{let c=await w.api.post("/setup/validate-vault-path",{targetVaultMode:"obsidian",targetVaultPath:a});if(P.current!==b)return;K({status:"valid",response:c})}catch(a){if(P.current!==b)return;if(a instanceof w.ApiError){let b=a.body;K({status:"invalid",message:b?.message??a.message})}else K({status:"invalid",message:a instanceof Error?a.message:"Path validation failed."})}},250);return()=>window.clearTimeout(c)},[k,i,m,Q]);let R="valid"===J.status?J.response.conflict:null,S=F?.error==="target_has_agent_file_conflicts"?{kind:"target_has_agent_file_conflicts",entries:F.entries??[],allowedPolicies:["overwrite_agent_files"]}:F?.error==="target_has_unrelated_files"?{kind:"target_has_unrelated_files",entries:F.entries??[],allowedPolicies:["merge","overwrite_agent_files"]}:null,T=null!==R||null!==S,U=R?.allowedPolicies??S?.allowedPolicies??["abort","merge","overwrite_agent_files"],V=R?.entries??S?.entries??[],W="valid"===J.status?J.response.targetDir:m.trim(),X=!(h={submitting:D,samePath:k===a&&("plain"===k||W===d.trim()),mode:k,path:m,pathIssue:Q,validationStatus:J.status,policy:p,allowedPolicies:U}).submitting&&!h.samePath&&("plain"===h.mode||h.path.trim().length>0&&null===h.pathIssue&&"valid"===h.validationStatus&&h.allowedPolicies.includes(h.policy));async function Y(){E(!0),G(null),I(null);try{let a={targetVaultMode:k,conflictPolicy:p};"obsidian"===k&&(a.targetVaultPath=m.trim()),M(null);let b=await w.api.post("/setup/migrate-context",a);if("noop"===b.status)e("info","No change needed — already in the target state.");else{let{filesMoved:a,bytes:c,durationMs:d,manualActionRequired:f}=b,g=(c/1024).toFixed(1),h=`Moved ${a} file${1===a?"":"s"} (${g} KiB) in ${d} ms.`;f?e("warning",`${h} Observers failed to resume — restart the daemon.`):e("success",h)}await N.invalidateQueries({queryKey:["config"]}),await N.invalidateQueries({queryKey:["health"]}),j(!1)}catch(a){a instanceof w.ApiError?(G(a.body??{}),I(a.status)):(G({error:"internal_error",message:a instanceof Error?a.message:"Unexpected error."}),I(500))}finally{E(!1)}}return(0,b.jsxs)(u.Sheet,{open:i,onOpenChange:j,children:[(0,b.jsx)(u.SheetTrigger,{asChild:!0,children:f}),(0,b.jsxs)(u.SheetContent,{className:"overflow-y-auto",children:[(0,b.jsx)(u.SheetHeader,{children:(0,b.jsx)(u.SheetTitle,{children:"Change Management Mode"})}),(0,b.jsxs)("div",{className:"mt-6 space-y-5",children:[(0,b.jsxs)("section",{children:[(0,b.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Where should the agent store its personal data?"}),(0,b.jsx)("div",{className:"mt-2 grid grid-cols-1 gap-2",children:["plain","obsidian"].map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>l(a),className:(0,x.cn)("rounded-md border px-3 py-2 text-left text-sm transition-colors",k===a?"border-primary bg-primary/10 text-foreground":"border-border bg-background text-muted-foreground hover:border-primary/50"),children:[(0,b.jsx)("span",{className:"block font-medium",children:"plain"===a?"This app manages it":"Obsidian-style local directory"}),(0,b.jsx)("span",{className:"block text-xs text-muted-foreground",children:"plain"===a?"Data lives in ~/.personal-agent/context. Only this app reads and writes.":"Data lives in a folder you pick (iCloud, Dropbox, Google Drive, or a plain local path)."})]},a))})]}),"obsidian"===k&&(0,b.jsxs)("section",{"data-testid":"path-input-section",children:[(0,b.jsx)("label",{htmlFor:"mm-path-input",className:"text-sm font-medium text-foreground",children:"Directory path"}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Use the folder picker to select a local directory. Cloud-sync folders (iCloud Drive, Dropbox, OneDrive, Google Drive) are supported. You can paste an absolute path if your desktop blocks native dialogs."}),(0,b.jsx)(v.DirectoryPickerField,{id:"mm-path-input",value:m,onChange:n,title:"Choose primary vault directory",placeholder:"Choose a folder for the primary vault",defaultPath:d||void 0,className:"mt-2",disabled:D}),Q&&m.length>0&&(0,b.jsx)("p",{className:"mt-1 text-xs text-destructive",children:Q.message}),"obsidian"===k&&!Q&&"validating"===J.status&&(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Checking the path and target directory contents…"}),"obsidian"===k&&!Q&&"invalid"===J.status&&(0,b.jsx)("p",{className:"mt-1 text-xs text-destructive",children:J.message}),"obsidian"===k&&"valid"===J.status&&J.response.fsInfo?.isCloudSync&&(0,b.jsx)(o.Alert,{variant:"info",className:"mt-2",children:(0,b.jsxs)("p",{children:["Cloud sync detected:"," ",(0,b.jsx)("strong",{children:J.response.fsInfo.isCloudSync}),". Migration is supported, but performance can be slower than a local SSD."]})})]}),T&&(0,b.jsxs)("section",{"data-testid":"policy-picker",children:[(0,b.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Target directory already has content — pick a conflict policy:"}),(0,b.jsx)("div",{className:"mt-2 space-y-2",children:U.map(a=>(0,b.jsxs)("label",{className:"flex cursor-pointer items-start gap-2 rounded-md border border-border p-2 text-sm hover:bg-muted/40",children:[(0,b.jsx)("input",{type:"radio",name:"conflict-policy",value:a,checked:p===a,onChange:()=>r(a),className:"mt-1"}),(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"block font-medium",children:function(a){switch(a){case"abort":return"Abort on any conflict";case"merge":return"Merge (preserve existing target files)";case"overwrite_agent_files":return"Overwrite agent files at target"}}(a)}),(0,b.jsx)("span",{className:"block text-xs text-muted-foreground",children:function(a){switch(a){case"abort":return"Stop if the target has any unrelated content.";case"merge":return"Move source files alongside existing target content. Unrelated target files are left in place.";case"overwrite_agent_files":return"If target has files with the same names as the agent's, the target copies are archived into the backup and the source versions take their place."}}(a)})]})]},a))}),V.length>0&&(0,b.jsxs)("div",{className:"mt-2 rounded border border-border bg-muted/30 p-2",children:[(0,b.jsxs)("p",{className:"text-xs font-medium text-muted-foreground",children:["Conflicting entries (",V.length,"):"]}),(0,b.jsxs)("ul",{className:"mt-1 max-h-32 overflow-y-auto text-xs text-muted-foreground",children:[V.slice(0,50).map(a=>(0,b.jsx)("li",{className:"font-mono",children:a},a)),V.length>50&&(0,b.jsxs)("li",{className:"italic",children:["…and ",V.length-50," more"]})]})]})]}),(0,b.jsx)(o.Alert,{variant:"info",children:(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"font-medium",children:"Backup made before the move"}),(0,b.jsxs)("p",{className:"mt-0.5",children:["We'll back up your current data under ",(0,b.jsx)("code",{children:"~/.personal-agent/migration-backups/"})," for 7 days before moving. If the migration fails, all files are restored automatically."]})]})}),L&&(0,b.jsx)(o.Alert,{variant:"failed"===L.status?"error":"completed"===L.status?"success":"info",children:(0,b.jsxs)("div",{children:[(0,b.jsxs)("p",{className:"font-medium",children:["Migration progress: ",L.progress,"%"]}),(0,b.jsx)("p",{className:"mt-0.5",children:L.message})]})}),F&&(0,b.jsx)(C,{status:H,body:F,onDismiss:()=>{G(null),I(null)}}),(0,b.jsxs)("div",{className:"flex items-center justify-end gap-2 pt-2",children:[(0,b.jsx)(g.Button,{variant:"outline",onClick:()=>j(!1),disabled:D,children:"Cancel"}),(0,b.jsx)(g.Button,{onClick:Y,disabled:!X,"data-testid":"mm-confirm",children:D?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(t.Loader2,{className:"h-4 w-4 animate-spin"}),"Migrating…"]}):"Wait Then Retry"===A(F?.error,!1)?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s.FolderSymlink,{className:"h-4 w-4"}),"Wait Then Retry"]}):"Retry"===A(F?.error,!1)?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s.FolderSymlink,{className:"h-4 w-4"}),"Retry"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s.FolderSymlink,{className:"h-4 w-4"}),"Confirm & Migrate"]})})]})]})]})]})}function C({status:a,body:c,onDismiss:d}){return(0,b.jsx)(o.Alert,{variant:409===a?"warning":"error",children:(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsxs)("p",{className:"font-medium",children:[(0,b.jsx)(r.AlertTriangle,{className:"mr-1 inline h-3.5 w-3.5"}),function(a){switch(a.error){case"sessions_active":return"Active sessions block migration";case"executions_active":return"In-flight executions block migration";case"migration_in_progress":return"Another migration is already running";case"target_has_unrelated_files":return"Target has unrelated files";case"target_has_agent_file_conflicts":return"Target has conflicting files";case"target_invalid":return"Target path is invalid";case"backup_failed":return"Backup creation failed";case"move_failed":case"cross_fs_partial_failure":case"icloud_file_evicted":return"File move failed";case"move_verification_failed":return"Move verification failed";case"db_rewrite_failed":return"Database rewrite failed";case"settings_update_failed":return"Settings update failed";case"invalid_request":return"Request was rejected";case"internal_error":return"Unexpected error"}}(c)]}),(0,b.jsx)("p",{children:c.message}),"sessions_active"===c.error&&c.sessions&&c.sessions.length>0&&(0,b.jsx)("ul",{className:"mt-1 list-disc pl-4 text-xs",children:c.sessions.map(a=>(0,b.jsxs)("li",{children:["Session #",a.id," — ",a.scope," / ",a.scope_key]},a.id))}),"executions_active"===c.error&&c.executions&&c.executions.length>0&&(0,b.jsx)("ul",{className:"mt-1 list-disc pl-4 text-xs",children:c.executions.map((a,c)=>(0,b.jsx)("li",{children:JSON.stringify(a)},c))}),c.backupPath&&(0,b.jsxs)("div",{className:"mt-2 rounded bg-muted/40 p-2 text-xs",children:[(0,b.jsx)("p",{className:"font-medium",children:"Backup preserved at:"}),(0,b.jsx)("code",{className:"break-all",children:c.backupPath}),(0,b.jsx)("p",{className:"mt-1 text-muted-foreground",children:"Manual recovery: copy files back from this directory if the automatic rollback did not complete."}),(0,b.jsx)("a",{href:"#mm-recovery-instructions",className:"mt-2 inline-block underline underline-offset-2",children:"Recovery instructions"})]}),"manual_required"===c.rollbackStatus&&(0,b.jsx)("p",{className:"mt-1 text-xs font-medium",children:"Automatic rollback did not complete. Please restore from the backup above, then restart the daemon."}),c.backupPath&&(0,b.jsxs)("ol",{id:"mm-recovery-instructions",className:"list-decimal pl-4 text-xs text-muted-foreground",children:[(0,b.jsx)("li",{children:"Stop the daemon before touching the vault contents."}),(0,b.jsx)("li",{children:"Copy the backup contents back to the original location if the automatic rollback did not finish."}),(0,b.jsx)("li",{children:"Re-open Settings → Management Mode and retry the migration once the files are back in place."})]}),(0,b.jsx)("div",{className:"pt-2",children:(0,b.jsx)(g.Button,{size:"sm",variant:"ghost",onClick:d,children:"Dismiss"})})]})})}function D(){let{data:a}=(0,e.useConfig)(),{data:d}=(0,n.useHealth)(),[f,h]=(0,c.useState)(null);if((0,c.useEffect)(()=>{if(!f)return;let a=setTimeout(()=>h(null),6e3);return()=>clearTimeout(a)},[f]),!a)return null;let i=a.vaultMode,j=a.primaryVaultPath,q=a.contextDir,r=d?.degraded??null,s=r?.reason==="primary_vault_unreachable";return(0,b.jsx)("section",{id:"management-mode",className:"scroll-mt-4",children:(0,b.jsxs)(k.ConfigSection,{title:"Management Mode",children:[(0,b.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"Where the agent stores its personal data — the six-class vault (identity, state, plans, journal, knowledge, policies). Switching here moves every existing file to the new location atomically — no reinstall needed."}),(0,b.jsxs)("div",{className:"space-y-3 pb-2",children:[(0,b.jsx)(E,{label:"Mode",value:"obsidian"===i?"Obsidian-style local directory":"This app"}),"obsidian"===i&&(0,b.jsx)(E,{label:"Directory",value:j?(0,b.jsx)("code",{className:"font-mono text-xs break-all",children:j}):(0,b.jsx)("span",{className:"italic text-muted-foreground",children:"Not configured"})}),(0,b.jsx)(E,{label:"Effective path",value:(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,b.jsx)(m.FolderOpen,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,b.jsx)("code",{className:"font-mono text-xs break-all",children:q})]})}),s&&(0,b.jsx)(o.Alert,{variant:"error",children:(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"font-medium",children:"Primary vault unreachable"}),(0,b.jsxs)("p",{className:"mt-0.5",children:["The configured directory",r?.path?(0,b.jsxs)(b.Fragment,{children:[" ",(0,b.jsx)("code",{className:"font-mono",children:r.path})]}):null," ","is missing or not writable. Writes to the context API are currently blocked. Fix the path or switch back to “This app” to restore normal operation."]})]})}),(0,b.jsx)("div",{className:"flex items-center gap-2 pt-1",children:(0,b.jsx)(B,{currentVaultMode:i,currentPrimaryVaultPath:j,onToast:(a,b)=>h({type:a,message:b}),trigger:(0,b.jsxs)(g.Button,{size:"sm",variant:"outline",children:[(0,b.jsx)(l,{className:"h-3.5 w-3.5"}),"Change…"]})})}),(0,b.jsx)(p.SettingsToast,{toast:f})]})]})})}function E({label:a,value:c}){return(0,b.jsxs)("div",{className:"flex items-start justify-between gap-4 py-1",children:[(0,b.jsx)("span",{className:"text-sm text-muted-foreground min-w-[140px]",children:a}),(0,b.jsx)("div",{className:"text-sm text-foreground text-right",children:c})]})}var F=a.i(6465);function G({value:a,onSave:e}){let[h,i]=(0,c.useState)(!1),[j,k]=(0,c.useState)(a),[l,m]=(0,c.useState)(!1),n=(0,f.useDiscardGeneration)(),o=(0,c.useRef)(n);(0,c.useEffect)(()=>{n!==o.current&&(o.current=n,i(!1))},[n]),(0,c.useEffect)(()=>{h||k(a)},[a,h]);let p=(0,F.isCharacterOverCap)(j),q=(0,c.useCallback)(async()=>{if(j===a)return void i(!1);m(!0);try{await e("character",j),i(!1)}catch{}finally{m(!1)}},[j,a,e]);return h?(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(F.CharacterEditor,{value:j,onChange:k,disabled:l}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(g.Button,{size:"sm",onClick:q,disabled:l||p,children:l?"Applying...":"Done"}),(0,b.jsx)(g.Button,{size:"sm",variant:"ghost",onClick:()=>{k(a),i(!1)},children:"Cancel"})]})]}):(0,b.jsxs)("div",{className:"space-y-2",children:[a?(0,b.jsx)("pre",{className:"whitespace-pre-wrap rounded bg-muted p-3 text-xs text-foreground min-h-[60px]",children:a}):(0,b.jsx)("p",{className:"text-xs italic text-muted-foreground",children:"(no character set — default behavior)"}),(0,b.jsxs)(g.Button,{size:"sm",variant:"outline",onClick:()=>i(!0),children:[(0,b.jsx)(d.Pencil,{className:"h-3.5 w-3.5 mr-1"}),"Edit"]})]})}let H=[{tag:"en",label:"English"},{tag:"ja",label:"Japanese"},{tag:"zh",label:"Chinese"},{tag:"es",label:"Español (Spanish)"},{tag:"fr",label:"Français (French)"},{tag:"de",label:"Deutsch (German)"},{tag:"pt",label:"Português (Portuguese)"},{tag:"ko",label:"한국어 (Korean)"},{tag:"__custom__",label:"Other (BCP-47 tag…)"}],I=/^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})?$/;function J({value:a,modified:d,onSave:e}){let f=H.some(b=>b.tag===a&&"__custom__"!==b.tag),[g,j]=(0,c.useState)(null),[k,l]=(0,c.useState)(null),m=f?a:"__custom__",n=g??m,o=k??(f?"":a),p="__custom__"===n&&o.trim().length>0&&!I.test(o.trim());return(0,b.jsxs)("div",{className:(0,x.cn)("py-1.5",d&&"border-l-2 border-blue-500 pl-2 -ml-1 rounded"),"data-config-key":"primaryLanguage",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("p",{className:"text-sm text-muted-foreground inline-flex items-center gap-1.5",children:["Primary Language",d&&(0,b.jsx)("span",{className:"text-[10px] font-medium text-blue-600 dark:text-blue-400",children:"modified"})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Used for user-facing prose: profile, daily journal, and weekly/monthly reviews. System files (agent journal, dossiers, context index) always stay in English."})]}),(0,b.jsxs)(h.Select,{value:n,onValueChange:b=>{j(b===m?null:b),"__custom__"===b?l(f?"":a):(l(null),b!==a&&e("primaryLanguage",b))},children:[(0,b.jsx)(h.SelectTrigger,{className:"w-[220px]",children:(0,b.jsx)(h.SelectValue,{})}),(0,b.jsx)(h.SelectContent,{children:H.map(a=>(0,b.jsx)(h.SelectItem,{value:a.tag,children:a.label},a.tag))})]})]}),"__custom__"===n&&(0,b.jsxs)("div",{className:"flex flex-col gap-1 pt-2",children:[(0,b.jsx)(i.Input,{value:o,onChange:a=>l(a.target.value),onBlur:()=>{let b=o.trim();b&&b!==a&&I.test(b)&&(e("primaryLanguage",b),j(null),l(null))},placeholder:"e.g. zh-Hans or pt-BR",className:"max-w-[240px]"}),p&&(0,b.jsxs)("p",{className:"text-xs text-red-500",children:["Use a BCP-47 tag like ",(0,b.jsx)("code",{children:"en-US"})," or ",(0,b.jsx)("code",{children:"zh-Hans"}),"."]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Blur the field to save."})]})]})}a.s(["default",0,function(){let{data:a}=(0,e.useConfig)(),{df:c}=(0,e.useConfigDefaults)(),{deferSaveFor:d,dv:g,dirtyFields:h}=(0,f.useDirtyFields)();if(!a)return(0,b.jsx)("div",{className:"text-muted-foreground",children:"Loading..."});let i=d(a);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(j.PageHeader,{title:"Profile",description:"Your agent’s identity and personality, plus the storage location for its personal data."}),(0,b.jsx)(k.ConfigSection,{title:"Agent Identity",children:(0,b.jsx)(k.EditableField,{label:"Display Name",value:g("agentDisplayName",a.agentDisplayName),configKey:"agentDisplayName",modified:h.has("agentDisplayName"),defaultValue:c("agentDisplayName"),description:"The name your agent signs off with. Shown in the dashboard header and prefixed to WhatsApp replies as `[name]` so you can tell its messages apart from human contacts.",onSave:i})}),(0,b.jsxs)(k.ConfigSection,{title:"Personality",children:[(0,b.jsxs)("p",{className:"pb-2 text-xs text-muted-foreground",children:["How the agent should talk to you. Safety rules still take precedence. Capped at ",F.CHARACTER_MAX_LENGTH," characters; leave empty for default behavior."]}),(0,b.jsx)(G,{value:g("character",a.character),onSave:i})]}),(0,b.jsxs)(k.ConfigSection,{title:"Language",children:[(0,b.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"Changes take effect the next time the agent writes a user-facing file. Existing files are not rewritten."}),(0,b.jsx)(J,{value:g("primaryLanguage",a.primaryLanguage),modified:h.has("primaryLanguage"),onSave:i})]}),(0,b.jsx)(D,{})]})}],31066)}];
1
+ module.exports=[31066,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(7037),e=a.i(54150),f=a.i(92379),g=a.i(21218),h=a.i(47696),i=a.i(8212),j=a.i(87206),k=a.i(56295),l=a.i(5423);let m=(0,l.default)("FolderCog",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["path",{d:"M10.3 20H4a2 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.9H20a2 2 0 0 1 2 2v3.3",key:"1k8050"}],["path",{d:"m21.7 19.4-.9-.3",key:"1qgwi9"}],["path",{d:"m15.2 16.9-.9-.3",key:"1t7mvx"}],["path",{d:"m16.6 21.7.3-.9",key:"1j67ps"}],["path",{d:"m19.1 15.2.3-.9",key:"18r7jp"}],["path",{d:"m19.6 21.7-.4-1",key:"z2vh2"}],["path",{d:"m16.8 15.3-.4-1",key:"1ei7r6"}],["path",{d:"m14.3 19.6 1-.4",key:"11sv9r"}],["path",{d:"m20.7 16.8 1-.4",key:"19m87a"}]]);var n=a.i(11307),o=a.i(40410),p=a.i(29629),q=a.i(74345),r=a.i(81130),s=a.i(32307),t=a.i(19512),u=a.i(92241),v=a.i(61213),w=a.i(91534),x=a.i(59974),y=a.i(48558),z=a.i(34043),A=a.i(66135);function B(a,b){return b?"Migrating…":"sessions_active"===a||"executions_active"===a||"migration_in_progress"===a?"Wait Then Retry":a?"Retry":"Confirm & Migrate"}function C({currentVaultMode:a,currentPrimaryVaultPath:d,onToast:e,trigger:f}){var h;let[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(a),[m,n]=(0,c.useState)(d),[o,q]=(0,c.useState)("abort"),[s,E]=(0,c.useState)(!1),[F,G]=(0,c.useState)(null),[H,I]=(0,c.useState)(null),[J,K]=(0,c.useState)({status:"idle"}),[L,M]=(0,c.useState)(null),N=(0,r.useQueryClient)(),{subscribeNamedEvent:O}=(0,z.useSSE)(),P=(0,c.useRef)(0);(0,c.useEffect)(()=>{i&&(l(a),n(d),q("abort"),G(null),I(null),K({status:"idle"}),M(null))},[i]),(0,c.useEffect)(()=>{if(i)return O("context_migration_progress",a=>{M(a)})},[i,O]),(0,c.useEffect)(()=>{i&&(G(null),I(null),M(null))},[k,m]),(0,c.useEffect)(()=>{let a=function(a){switch(a){case"target_has_agent_file_conflicts":return"overwrite_agent_files";case"target_has_unrelated_files":return"merge";default:return null}}("valid"===J.status?J.response.conflict?.kind:F?.error);a&&q(a)},[F?.error,J]);let Q=(0,c.useMemo)(()=>{let a;return"obsidian"!==k?null:0===(a=m.trim()).length?{code:"empty",message:"Path is required."}:(0,A.isClientAbsolutePath)(a)?(0,A.hasPathTraversalSegment)(a)?{code:"path_traversal",message:"Path may not contain `..` segments."}:null:{code:"not_absolute",message:"Path must be absolute (for example /Users/me/Vault, ~/Vault, C:\\Vault, or \\\\server\\share)."}},[k,m]);(0,c.useEffect)(()=>{if(!i||"obsidian"!==k)return void K({status:"idle"});let a=m.trim();if(0===a.length)return void K({status:"idle"});if(Q)return void K({status:"invalid",message:Q.message});let b=++P.current;K({status:"validating"});let c=window.setTimeout(async()=>{try{let c=await x.api.post("/setup/validate-vault-path",{targetVaultMode:"obsidian",targetVaultPath:a});if(P.current!==b)return;K({status:"valid",response:c})}catch(a){if(P.current!==b)return;if(a instanceof x.ApiError){let b=a.body;K({status:"invalid",message:b?.message??a.message})}else K({status:"invalid",message:a instanceof Error?a.message:"Path validation failed."})}},250);return()=>window.clearTimeout(c)},[k,i,m,Q]);let R="valid"===J.status?J.response.conflict:null,S=F?.error==="target_has_agent_file_conflicts"?{kind:"target_has_agent_file_conflicts",entries:F.entries??[],allowedPolicies:["overwrite_agent_files"]}:F?.error==="target_has_unrelated_files"?{kind:"target_has_unrelated_files",entries:F.entries??[],allowedPolicies:["merge","overwrite_agent_files"]}:null,T=null!==R||null!==S,U=R?.allowedPolicies??S?.allowedPolicies??["abort","merge","overwrite_agent_files"],V=R?.entries??S?.entries??[],W="valid"===J.status?J.response.targetDir:m.trim(),X=!(h={submitting:s,samePath:k===a&&("plain"===k||W===d.trim()),mode:k,path:m,pathIssue:Q,validationStatus:J.status,policy:o,allowedPolicies:U}).submitting&&!h.samePath&&("plain"===h.mode||h.path.trim().length>0&&null===h.pathIssue&&"valid"===h.validationStatus&&h.allowedPolicies.includes(h.policy));async function Y(){E(!0),G(null),I(null);try{let a={targetVaultMode:k,conflictPolicy:o};"obsidian"===k&&(a.targetVaultPath=m.trim()),M(null);let b=await x.api.post("/setup/migrate-context",a);if("noop"===b.status)e("info","No change needed — already in the target state.");else{let{filesMoved:a,bytes:c,durationMs:d,manualActionRequired:f}=b,g=(c/1024).toFixed(1),h=`Moved ${a} file${1===a?"":"s"} (${g} KiB) in ${d} ms.`;f?e("warning",`${h} Observers failed to resume — restart the daemon.`):e("success",h)}await N.invalidateQueries({queryKey:["config"]}),await N.invalidateQueries({queryKey:["health"]}),j(!1)}catch(a){a instanceof x.ApiError?(G(a.body??{}),I(a.status)):(G({error:"internal_error",message:a instanceof Error?a.message:"Unexpected error."}),I(500))}finally{E(!1)}}return(0,b.jsxs)(v.Sheet,{open:i,onOpenChange:j,children:[(0,b.jsx)(v.SheetTrigger,{asChild:!0,children:f}),(0,b.jsxs)(v.SheetContent,{className:"overflow-y-auto",children:[(0,b.jsx)(v.SheetHeader,{children:(0,b.jsx)(v.SheetTitle,{children:"Change Management Mode"})}),(0,b.jsxs)("div",{className:"mt-6 space-y-5",children:[(0,b.jsxs)("section",{children:[(0,b.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Where should the agent store its personal data?"}),(0,b.jsx)("div",{className:"mt-2 grid grid-cols-1 gap-2",children:["plain","obsidian"].map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>l(a),className:(0,y.cn)("rounded-md border px-3 py-2 text-left text-sm transition-colors",k===a?"border-primary bg-primary/10 text-foreground":"border-border bg-background text-muted-foreground hover:border-primary/50"),children:[(0,b.jsx)("span",{className:"block font-medium",children:"plain"===a?"This app manages it":"Obsidian-style local directory"}),(0,b.jsx)("span",{className:"block text-xs text-muted-foreground",children:"plain"===a?"Data lives in ~/.personal-agent/context. Only this app reads and writes.":"Data lives in a folder you pick (iCloud, Dropbox, Google Drive, or a plain local path)."})]},a))})]}),"obsidian"===k&&(0,b.jsxs)("section",{"data-testid":"path-input-section",children:[(0,b.jsx)("label",{htmlFor:"mm-path-input",className:"text-sm font-medium text-foreground",children:"Directory path"}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Use the folder picker to select a local directory. Cloud-sync folders (iCloud Drive, Dropbox, OneDrive, Google Drive) are supported. You can paste an absolute path if your desktop blocks native dialogs."}),(0,b.jsx)(w.DirectoryPickerField,{id:"mm-path-input",value:m,onChange:n,title:"Choose primary vault directory",placeholder:"Choose a folder for the primary vault",defaultPath:d||void 0,className:"mt-2",disabled:s}),Q&&m.length>0&&(0,b.jsx)("p",{className:"mt-1 text-xs text-destructive",children:Q.message}),"obsidian"===k&&!Q&&"validating"===J.status&&(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Checking the path and target directory contents…"}),"obsidian"===k&&!Q&&"invalid"===J.status&&(0,b.jsx)("p",{className:"mt-1 text-xs text-destructive",children:J.message}),"obsidian"===k&&"valid"===J.status&&J.response.fsInfo?.isCloudSync&&(0,b.jsx)(p.Alert,{variant:"info",className:"mt-2",children:(0,b.jsxs)("p",{children:["Cloud sync detected:"," ",(0,b.jsx)("strong",{children:J.response.fsInfo.isCloudSync}),". Migration is supported, but performance can be slower than a local SSD."]})})]}),T&&(0,b.jsxs)("section",{"data-testid":"policy-picker",children:[(0,b.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Target directory already has content — pick a conflict policy:"}),(0,b.jsx)("div",{className:"mt-2 space-y-2",children:U.map(a=>(0,b.jsxs)("label",{className:"flex cursor-pointer items-start gap-2 rounded-md border border-border p-2 text-sm hover:bg-muted/40",children:[(0,b.jsx)("input",{type:"radio",name:"conflict-policy",value:a,checked:o===a,onChange:()=>q(a),className:"mt-1"}),(0,b.jsxs)("span",{children:[(0,b.jsx)("span",{className:"block font-medium",children:function(a){switch(a){case"abort":return"Abort on any conflict";case"merge":return"Merge (preserve existing target files)";case"overwrite_agent_files":return"Overwrite agent files at target"}}(a)}),(0,b.jsx)("span",{className:"block text-xs text-muted-foreground",children:function(a){switch(a){case"abort":return"Stop if the target has any unrelated content.";case"merge":return"Move source files alongside existing target content. Unrelated target files are left in place.";case"overwrite_agent_files":return"If target has files with the same names as the agent's, the target copies are archived into the backup and the source versions take their place."}}(a)})]})]},a))}),V.length>0&&(0,b.jsxs)("div",{className:"mt-2 rounded border border-border bg-muted/30 p-2",children:[(0,b.jsxs)("p",{className:"text-xs font-medium text-muted-foreground",children:["Conflicting entries (",V.length,"):"]}),(0,b.jsxs)("ul",{className:"mt-1 max-h-32 overflow-y-auto text-xs text-muted-foreground",children:[V.slice(0,50).map(a=>(0,b.jsx)("li",{className:"font-mono",children:a},a)),V.length>50&&(0,b.jsxs)("li",{className:"italic",children:["…and ",V.length-50," more"]})]})]})]}),(0,b.jsx)(p.Alert,{variant:"info",children:(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"font-medium",children:"Backup made before the move"}),(0,b.jsxs)("p",{className:"mt-0.5",children:["We'll back up your current data under ",(0,b.jsx)("code",{children:"~/.personal-agent/migration-backups/"})," for 7 days before moving. If the migration fails, all files are restored automatically."]})]})}),L&&(0,b.jsx)(p.Alert,{variant:"failed"===L.status?"error":"completed"===L.status?"success":"info",children:(0,b.jsxs)("div",{children:[(0,b.jsxs)("p",{className:"font-medium",children:["Migration progress: ",L.progress,"%"]}),(0,b.jsx)("p",{className:"mt-0.5",children:L.message})]})}),F&&(0,b.jsx)(D,{status:H,body:F,onDismiss:()=>{G(null),I(null)}}),(0,b.jsxs)("div",{className:"flex items-center justify-end gap-2 pt-2",children:[(0,b.jsx)(g.Button,{variant:"outline",onClick:()=>j(!1),disabled:s,children:"Cancel"}),(0,b.jsx)(g.Button,{onClick:Y,disabled:!X,"data-testid":"mm-confirm",children:s?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(u.Loader2,{className:"h-4 w-4 animate-spin"}),"Migrating…"]}):"Wait Then Retry"===B(F?.error,!1)?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(t.FolderSymlink,{className:"h-4 w-4"}),"Wait Then Retry"]}):"Retry"===B(F?.error,!1)?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(t.FolderSymlink,{className:"h-4 w-4"}),"Retry"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(t.FolderSymlink,{className:"h-4 w-4"}),"Confirm & Migrate"]})})]})]})]})]})}function D({status:a,body:c,onDismiss:d}){return(0,b.jsx)(p.Alert,{variant:409===a?"warning":"error",children:(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsxs)("p",{className:"font-medium",children:[(0,b.jsx)(s.AlertTriangle,{className:"mr-1 inline h-3.5 w-3.5"}),function(a){switch(a.error){case"sessions_active":return"Active sessions block migration";case"executions_active":return"In-flight executions block migration";case"migration_in_progress":return"Another migration is already running";case"target_has_unrelated_files":return"Target has unrelated files";case"target_has_agent_file_conflicts":return"Target has conflicting files";case"target_invalid":return"Target path is invalid";case"backup_failed":return"Backup creation failed";case"move_failed":case"cross_fs_partial_failure":case"icloud_file_evicted":return"File move failed";case"move_verification_failed":return"Move verification failed";case"db_rewrite_failed":return"Database rewrite failed";case"settings_update_failed":return"Settings update failed";case"invalid_request":return"Request was rejected";case"internal_error":return"Unexpected error"}}(c)]}),(0,b.jsx)("p",{children:c.message}),"sessions_active"===c.error&&c.sessions&&c.sessions.length>0&&(0,b.jsx)("ul",{className:"mt-1 list-disc pl-4 text-xs",children:c.sessions.map(a=>(0,b.jsxs)("li",{children:["Session #",a.id," — ",a.scope," / ",a.scope_key]},a.id))}),"executions_active"===c.error&&c.executions&&c.executions.length>0&&(0,b.jsx)("ul",{className:"mt-1 list-disc pl-4 text-xs",children:c.executions.map((a,c)=>(0,b.jsx)("li",{children:JSON.stringify(a)},c))}),c.backupPath&&(0,b.jsxs)("div",{className:"mt-2 rounded bg-muted/40 p-2 text-xs",children:[(0,b.jsx)("p",{className:"font-medium",children:"Backup preserved at:"}),(0,b.jsx)("code",{className:"break-all",children:c.backupPath}),(0,b.jsx)("p",{className:"mt-1 text-muted-foreground",children:"Manual recovery: copy files back from this directory if the automatic rollback did not complete."}),(0,b.jsx)("a",{href:"#mm-recovery-instructions",className:"mt-2 inline-block underline underline-offset-2",children:"Recovery instructions"})]}),"manual_required"===c.rollbackStatus&&(0,b.jsx)("p",{className:"mt-1 text-xs font-medium",children:"Automatic rollback did not complete. Please restore from the backup above, then restart the daemon."}),c.backupPath&&(0,b.jsxs)("ol",{id:"mm-recovery-instructions",className:"list-decimal pl-4 text-xs text-muted-foreground",children:[(0,b.jsx)("li",{children:"Stop the daemon before touching the vault contents."}),(0,b.jsx)("li",{children:"Copy the backup contents back to the original location if the automatic rollback did not finish."}),(0,b.jsx)("li",{children:"Re-open Settings → Management Mode and retry the migration once the files are back in place."})]}),(0,b.jsx)("div",{className:"pt-2",children:(0,b.jsx)(g.Button,{size:"sm",variant:"ghost",onClick:d,children:"Dismiss"})})]})})}function E(){let{data:a}=(0,e.useConfig)(),{data:d}=(0,o.useHealth)(),[f,h]=(0,c.useState)(null);if((0,c.useEffect)(()=>{if(!f)return;let a=setTimeout(()=>h(null),6e3);return()=>clearTimeout(a)},[f]),!a)return null;let i=a.vaultMode,j=a.primaryVaultPath,l=a.contextDir,r=d?.degraded??null,s=r?.reason==="primary_vault_unreachable";return(0,b.jsx)("section",{id:"management-mode",className:"scroll-mt-4",children:(0,b.jsxs)(k.ConfigSection,{title:"Management Mode",children:[(0,b.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"Where the agent stores its personal data — the six-class vault (identity, state, plans, journal, knowledge, policies). Switching here moves every existing file to the new location atomically — no reinstall needed."}),(0,b.jsxs)("div",{className:"space-y-3 pb-2",children:[(0,b.jsx)(F,{label:"Mode",value:"obsidian"===i?"Obsidian-style local directory":"This app"}),"obsidian"===i&&(0,b.jsx)(F,{label:"Directory",value:j?(0,b.jsx)("code",{className:"font-mono text-xs break-all",children:j}):(0,b.jsx)("span",{className:"italic text-muted-foreground",children:"Not configured"})}),(0,b.jsx)(F,{label:"Effective path",value:(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,b.jsx)(n.FolderOpen,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,b.jsx)("code",{className:"font-mono text-xs break-all",children:l})]})}),s&&(0,b.jsx)(p.Alert,{variant:"error",children:(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"font-medium",children:"Primary vault unreachable"}),(0,b.jsxs)("p",{className:"mt-0.5",children:["The configured directory",r?.path?(0,b.jsxs)(b.Fragment,{children:[" ",(0,b.jsx)("code",{className:"font-mono",children:r.path})]}):null," ","is missing or not writable. Writes to the context API are currently blocked. Fix the path or switch back to “This app” to restore normal operation."]})]})}),(0,b.jsx)("div",{className:"flex items-center gap-2 pt-1",children:(0,b.jsx)(C,{currentVaultMode:i,currentPrimaryVaultPath:j,onToast:(a,b)=>h({type:a,message:b}),trigger:(0,b.jsxs)(g.Button,{size:"sm",variant:"outline",children:[(0,b.jsx)(m,{className:"h-3.5 w-3.5"}),"Change…"]})})}),(0,b.jsx)(q.SettingsToast,{toast:f})]})]})})}function F({label:a,value:c}){return(0,b.jsxs)("div",{className:"flex items-start justify-between gap-4 py-1",children:[(0,b.jsx)("span",{className:"text-sm text-muted-foreground min-w-[140px]",children:a}),(0,b.jsx)("div",{className:"text-sm text-foreground text-right",children:c})]})}var G=a.i(82687),H=a.i(42732);let I=(0,l.default)("FileWarning",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var J=a.i(39293),K=a.i(50891);let L=(0,l.default)("Wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]]);var M=a.i(7385),N=a.i(8753),O=a.i(62588),P=a.i(7384),Q=a.i(30400),R=a.i(57216);function S({title:a,count:d,children:e,defaultOpen:f}){let[g,h]=(0,c.useState)(f??d>0);return 0===d?null:(0,b.jsxs)(R.Collapsible,{open:g,onOpenChange:h,children:[(0,b.jsxs)(R.CollapsibleTrigger,{className:"flex w-full items-center justify-between rounded-md px-2 py-1.5 text-left text-sm font-medium text-foreground hover:bg-accent",children:[(0,b.jsx)("span",{children:a}),(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[d,(0,b.jsx)(H.ChevronRight,{className:(0,y.cn)("h-3.5 w-3.5 transition-transform",g&&"rotate-90")})]})]}),(0,b.jsx)(R.CollapsibleContent,{children:(0,b.jsx)("div",{className:"mt-2 divide-y divide-border rounded-md border border-border",children:e})})]})}function T({issue:a,repairingPath:c,onRepair:d}){let e=c===a.path;return(0,b.jsxs)("div",{className:"flex items-center gap-3 px-3 py-2 text-sm",children:[(0,b.jsx)(I,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate font-mono text-xs text-foreground",children:a.path}),(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:a.message})]}),a.repairable&&(0,b.jsxs)(g.Button,{size:"sm",variant:"outline",className:"h-7 shrink-0 gap-1",disabled:null!==c,onClick:()=>d(a.path),children:[(0,b.jsx)(L,{className:(0,y.cn)("h-3.5 w-3.5",e&&"animate-spin")}),e?"Fixing":"Fix"]})]})}function U({issue:a}){return(0,b.jsxs)("div",{className:"flex items-start gap-3 px-3 py-2 text-sm",children:[(0,b.jsx)(s.AlertTriangle,{className:"mt-0.5 h-4 w-4 shrink-0 text-warning"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate font-mono text-xs text-foreground",children:a.path}),(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:a.message})]})]})}function V({issue:a}){return(0,b.jsxs)("div",{className:"flex items-start gap-3 px-3 py-2 text-sm",children:[(0,b.jsx)(s.AlertTriangle,{className:"mt-0.5 h-4 w-4 shrink-0 text-warning"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate font-mono text-xs text-foreground",children:a.path}),(0,b.jsxs)("div",{className:"text-xs text-muted-foreground",children:[(0,y.formatBytes)(a.bytes)," / ",(0,y.formatBytes)(a.capBytes)]})]})]})}function W({issue:a}){return(0,b.jsxs)("div",{className:"flex items-start gap-3 px-3 py-2 text-sm",children:[(0,b.jsx)(s.AlertTriangle,{className:"mt-0.5 h-4 w-4 shrink-0 text-warning"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate font-mono text-xs text-foreground",children:a.source}),(0,b.jsxs)("div",{className:"text-xs text-muted-foreground",children:["missing ",(0,b.jsx)("span",{className:"font-mono",children:a.target})]})]})]})}function X(){var a;let d,{data:e,isLoading:f,error:h,refetch:i,isFetching:j}=(0,O.useQuery)({queryKey:["context-health"],queryFn:()=>x.api.get("/context/health"),refetchInterval:3e4}),k=(d=(0,r.useQueryClient)(),(0,N.useMutation)({mutationFn:({path:a})=>x.api.post("/context/repair/stub",{path:a}),onSuccess:(a,{path:b})=>{d.invalidateQueries({queryKey:["context-health"]});let c=b.includes("/")?b.split("/")[0]:null;c&&d.invalidateQueries({queryKey:["context-list",c]}),d.invalidateQueries({queryKey:["context",b.replace(/\.md$/,"")]})}})),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(null),[q,t]=(0,c.useState)(null),u=async a=>{m(a),o(null),t(null);try{let b=await k.mutateAsync({path:a});o("created"===b.status?`${b.path} created.`:`${b.path} already exists.`)}catch(a){a instanceof x.ApiError?t(`Repair failed: ${a.message}`):t(a instanceof Error?a.message:"Repair failed")}finally{m(null)}},v=e?.status??"warning",w="ok"===v?{variant:"green",label:"Healthy"}:"warning"===v?{variant:"amber",label:"Warnings"}:{variant:"red",label:"Needs Repair"},z="ok"===v?G.CheckCircle2:"warning"===v?s.AlertTriangle:M.XCircle;return(0,b.jsxs)(Q.Card,{tone:e?"ok"===(a=e.status)?"success":"warning"===a?"warning":"error":"default",children:[(0,b.jsxs)("div",{className:"mb-3 flex items-start justify-between gap-3",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[(0,b.jsx)(K.ShieldCheck,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),(0,b.jsx)("h3",{className:"truncate text-sm font-medium text-foreground",children:"Vault Health"})]}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[e&&(0,b.jsx)(P.Badge,{variant:w.variant,children:w.label}),(0,b.jsx)(g.Button,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>void i(),disabled:j,"aria-label":"Refresh vault health",children:(0,b.jsx)(J.RefreshCw,{className:(0,y.cn)("h-3.5 w-3.5",j&&"animate-spin")})})]})]}),f&&(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"Checking vault..."}),h&&(0,b.jsx)(p.Alert,{variant:"error",children:h instanceof Error?h.message:"Failed to load vault health."}),e&&(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)(z,{className:(0,y.cn)("h-4 w-4","ok"===e.status&&"text-success","warning"===e.status&&"text-warning","error"===e.status&&"text-destructive")}),(0,b.jsx)("span",{className:"text-foreground",children:"ok"===e.status?"All required vault checks passed.":`${e.summary.missingFiles+e.summary.frontmatterErrors+e.summary.sizeWarnings+e.summary.indexLinkIssues} issue(s) found.`}),(0,b.jsx)("span",{className:"ml-auto text-xs text-muted-foreground",children:(0,y.formatAbsoluteTime)(e.checkedAt)})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-2 text-xs sm:grid-cols-4",children:[(0,b.jsx)(Y,{label:"Missing",value:e.summary.missingFiles}),(0,b.jsx)(Y,{label:"Frontmatter",value:e.summary.frontmatterErrors}),(0,b.jsx)(Y,{label:"Oversize",value:e.summary.sizeWarnings}),(0,b.jsx)(Y,{label:"Index links",value:e.summary.indexLinkIssues})]}),n&&(0,b.jsx)(p.Alert,{variant:"success",children:n}),q&&(0,b.jsx)(p.Alert,{variant:"error",children:q}),(0,b.jsx)(S,{title:"Missing files",count:e.missingFiles.length,children:e.missingFiles.map(a=>(0,b.jsx)(T,{issue:a,repairingPath:l,onRepair:a=>void u(a)},a.path))}),(0,b.jsx)(S,{title:"Frontmatter errors",count:e.frontmatterErrors.length,children:e.frontmatterErrors.map(a=>(0,b.jsx)(U,{issue:a},`${a.path}:${a.code}`))}),(0,b.jsx)(S,{title:"Oversize injected files",count:e.sizeWarnings.length,children:e.sizeWarnings.map(a=>(0,b.jsx)(V,{issue:a},a.path))}),(0,b.jsx)(S,{title:"Broken index references",count:e.indexLinkIssues.length,children:e.indexLinkIssues.map(a=>(0,b.jsx)(W,{issue:a},`${a.source}:${a.target}`))})]})]})}function Y({label:a,value:c}){return(0,b.jsxs)("div",{className:"rounded-md border border-border px-2 py-1.5",children:[(0,b.jsx)("div",{className:"text-muted-foreground",children:a}),(0,b.jsx)("div",{className:"font-mono text-base font-semibold text-foreground",children:c})]})}var Z=a.i(6465);function $({value:a,onSave:e}){let[h,i]=(0,c.useState)(!1),[j,k]=(0,c.useState)(a),[l,m]=(0,c.useState)(!1),n=(0,f.useDiscardGeneration)(),o=(0,c.useRef)(n);(0,c.useEffect)(()=>{n!==o.current&&(o.current=n,i(!1))},[n]),(0,c.useEffect)(()=>{h||k(a)},[a,h]);let p=(0,Z.isCharacterOverCap)(j),q=(0,c.useCallback)(async()=>{if(j===a)return void i(!1);m(!0);try{await e("character",j),i(!1)}catch{}finally{m(!1)}},[j,a,e]);return h?(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(Z.CharacterEditor,{value:j,onChange:k,disabled:l}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(g.Button,{size:"sm",onClick:q,disabled:l||p,children:l?"Applying...":"Done"}),(0,b.jsx)(g.Button,{size:"sm",variant:"ghost",onClick:()=>{k(a),i(!1)},children:"Cancel"})]})]}):(0,b.jsxs)("div",{className:"space-y-2",children:[a?(0,b.jsx)("pre",{className:"whitespace-pre-wrap rounded bg-muted p-3 text-xs text-foreground min-h-[60px]",children:a}):(0,b.jsx)("p",{className:"text-xs italic text-muted-foreground",children:"(no character set — default behavior)"}),(0,b.jsxs)(g.Button,{size:"sm",variant:"outline",onClick:()=>i(!0),children:[(0,b.jsx)(d.Pencil,{className:"h-3.5 w-3.5 mr-1"}),"Edit"]})]})}let _=[{tag:"en",label:"English"},{tag:"ja",label:"Japanese"},{tag:"zh",label:"Chinese"},{tag:"es",label:"Español (Spanish)"},{tag:"fr",label:"Français (French)"},{tag:"de",label:"Deutsch (German)"},{tag:"pt",label:"Português (Portuguese)"},{tag:"ko",label:"한국어 (Korean)"},{tag:"__custom__",label:"Other (BCP-47 tag…)"}],aa=/^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})?$/;function ab({value:a,modified:d,onSave:e}){let f=_.some(b=>b.tag===a&&"__custom__"!==b.tag),[g,j]=(0,c.useState)(null),[k,l]=(0,c.useState)(null),m=f?a:"__custom__",n=g??m,o=k??(f?"":a),p="__custom__"===n&&o.trim().length>0&&!aa.test(o.trim());return(0,b.jsxs)("div",{className:(0,y.cn)("py-1.5",d&&"border-l-2 border-primary pl-2 -ml-1 rounded"),"data-config-key":"primaryLanguage",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("p",{className:"text-sm text-muted-foreground inline-flex items-center gap-1.5",children:["Primary Language",d&&(0,b.jsx)("span",{className:"text-[10px] font-medium text-primary",children:"modified"})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Used for user-facing prose: profile, daily journal, and weekly/monthly reviews. System files (agent journal, dossiers, context index) always stay in English."})]}),(0,b.jsxs)(h.Select,{value:n,onValueChange:b=>{j(b===m?null:b),"__custom__"===b?l(f?"":a):(l(null),b!==a&&e("primaryLanguage",b))},children:[(0,b.jsx)(h.SelectTrigger,{className:"w-[220px]",children:(0,b.jsx)(h.SelectValue,{})}),(0,b.jsx)(h.SelectContent,{children:_.map(a=>(0,b.jsx)(h.SelectItem,{value:a.tag,children:a.label},a.tag))})]})]}),"__custom__"===n&&(0,b.jsxs)("div",{className:"flex flex-col gap-1 pt-2",children:[(0,b.jsx)(i.Input,{value:o,onChange:a=>l(a.target.value),onBlur:()=>{let b=o.trim();b&&b!==a&&aa.test(b)&&(e("primaryLanguage",b),j(null),l(null))},placeholder:"e.g. zh-Hans or pt-BR",className:"max-w-[240px]"}),p&&(0,b.jsxs)("p",{className:"text-xs text-destructive",children:["Use a BCP-47 tag like ",(0,b.jsx)("code",{children:"en-US"})," or ",(0,b.jsx)("code",{children:"zh-Hans"}),"."]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Blur the field to save."})]})]})}a.s(["default",0,function(){let{data:a}=(0,e.useConfig)(),{df:c}=(0,e.useConfigDefaults)(),{deferSaveFor:d,dv:g,dirtyFields:h}=(0,f.useDirtyFields)();if(!a)return(0,b.jsx)("div",{className:"text-muted-foreground",children:"Loading..."});let i=d(a);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(j.PageHeader,{title:"Profile",description:"Your agent’s identity and personality, plus the storage location for its personal data."}),(0,b.jsx)(k.ConfigSection,{title:"Agent Identity",children:(0,b.jsx)(k.EditableField,{label:"Display Name",value:g("agentDisplayName",a.agentDisplayName),configKey:"agentDisplayName",modified:h.has("agentDisplayName"),defaultValue:c("agentDisplayName"),description:"The name your agent signs off with. Shown in the dashboard header and prefixed to WhatsApp replies as `[name]` so you can tell its messages apart from human contacts.",onSave:i})}),(0,b.jsxs)(k.ConfigSection,{title:"Personality",children:[(0,b.jsxs)("p",{className:"pb-2 text-xs text-muted-foreground",children:["How the agent should talk to you. Safety rules still take precedence. Capped at ",Z.CHARACTER_MAX_LENGTH," characters; leave empty for default behavior."]}),(0,b.jsx)($,{value:g("character",a.character),onSave:i})]}),(0,b.jsxs)(k.ConfigSection,{title:"Language",children:[(0,b.jsx)("p",{className:"pb-2 text-xs text-muted-foreground",children:"Changes take effect the next time the agent writes a user-facing file. Existing files are not rewritten."}),(0,b.jsx)(ab,{value:g("primaryLanguage",a.primaryLanguage),modified:h.has("primaryLanguage"),onSave:i})]}),(0,b.jsx)(E,{}),(0,b.jsx)("section",{id:"vault-health",className:"scroll-mt-4",children:(0,b.jsx)(X,{})})]})}],31066)}];
2
2
 
3
3
  //# sourceMappingURL=packages_dashboard_src_app_settings_page_tsx_13_rdav._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[58729,a=>{"use strict";var b=a.i(39752),c=a.i(34542);a.i(70010);var d=a.i(58906),e=a.i(40091),f=a.i(59974),g=a.i(29629),h=a.i(7384),i=a.i(21218),j=a.i(30400),k=a.i(8212),l=a.i(28627),m=a.i(87206),n=a.i(57216),o=a.i(23780);let p=[{key:"applied",label:"applied"},{key:"auto_reverted",label:"auto-reverted",emphasise:!0},{key:"smoke_failed",label:"smoke-failed"},{key:"diff_caps",label:"diff-caps"},{key:"render_budget",label:"render-budget"},{key:"conflict",label:"conflict"}],q={claude:"claude-sonnet-4-6",codex:"gpt-5.4",gemini:"gemini-2.5-flash",opencode:"anthropic/claude-sonnet-4-6"},r=["today","management-policy","project-doc","user-profile"];function s({checked:a,onChange:c,hint:d}){return(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("span",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:a?"On":"Off"}),d&&(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:d})]}),(0,b.jsx)(t,{checked:a,onChange:c,ariaLabel:"Enable self-learning skill optimization"})]})}function t({checked:a,onChange:c,ariaLabel:d}){return(0,b.jsx)("button",{type:"button",role:"switch","aria-checked":a,"aria-label":d,onClick:()=>c(!a),className:"relative inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 "+(a?"bg-primary":"bg-input"),children:(0,b.jsx)("span",{className:"inline-block h-5 w-5 transform rounded-full bg-background shadow-sm transition-transform "+(a?"translate-x-[22px]":"translate-x-[2px]")})})}function u({value:a,onChange:c,options:d}){return(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-2 pt-1",children:d.map(e=>(0,b.jsxs)("label",{className:"flex items-start gap-2 cursor-pointer text-sm rounded-md border border-input p-2",children:[(0,b.jsx)("input",{type:"radio",name:`radio-${d[0].value}`,checked:a===e.value,onChange:()=>c(e.value),className:"mt-1 h-4 w-4 accent-primary"}),(0,b.jsxs)("span",{className:"flex flex-col",children:[(0,b.jsx)("span",{className:"font-medium",children:e.label}),e.hint&&(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:e.hint})]})]},e.value))})}function v({label:a,value:c,onChange:d,options:e}){return(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-sm",children:[(0,b.jsx)("span",{className:"font-medium",children:a}),(0,b.jsx)(l.NativeSelect,{value:c,onChange:a=>d(a.target.value),children:e.map(a=>(0,b.jsx)("option",{value:a.value,disabled:a.disabled,children:a.label},a.value))})]})}function w({label:a,value:c,onChange:d,placeholder:e}){return(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-sm",children:[(0,b.jsx)("span",{className:"font-medium",children:a}),(0,b.jsx)(k.Input,{value:c,onChange:a=>d(a.target.value),placeholder:e,className:"h-9 px-3"})]})}function x({counts:a}){return(0,b.jsx)("div",{className:"flex flex-wrap gap-2 text-[11px] text-muted-foreground pl-1",children:p.map(({key:c,label:d,emphasise:e})=>{let f=a[c]??0;return"applied"!==c&&0===f?null:(0,b.jsxs)("span",{className:e&&f>0?"text-amber-700 dark:text-amber-300":void 0,children:[f," ",d]},c)})})}a.s(["default",0,function(){let[a,k]=(0,c.useState)(null),[l,p]=(0,c.useState)(null),[t,y]=(0,c.useState)(!0),[z,A]=(0,c.useState)(!1),[B,C]=(0,c.useState)(!1),[D,E]=(0,c.useState)(null),[F,G]=(0,c.useState)(null),[H,I]=(0,c.useState)(!1),J=(0,c.useMemo)(()=>(a?.recent_runs??[]).some(a=>"running"===a.status),[a]);async function K(){y(!0),E(null);try{let a=await f.api.get("/settings/skill-curation");k(a),p(a.config)}catch(a){E((a instanceof f.ApiError,a.message))}finally{y(!1)}}(0,c.useEffect)(()=>{K()},[]);let L=(0,c.useMemo)(()=>!!a&&!!l&&JSON.stringify(a.config)!==JSON.stringify(l),[a,l]);async function M(){if(l){A(!0),E(null),G(null);try{await f.api.patch("/settings/skill-curation",l),G("Saved"),window.setTimeout(()=>G(null),2500),await K()}catch(a){E((a instanceof f.ApiError,a.message))}finally{A(!1)}}}async function N(a,b){try{await f.api.post("/skill-curation/orphans/discard",{slug:a,section_id:b}),await K()}catch(a){E((a instanceof f.ApiError,a.message))}}async function O(){C(!0),E(null),G(null);try{await f.api.post("/skill-curation/runs/manual",{}),G("Optimization started. The agent will run silently in the background."),window.setTimeout(()=>G(null),4e3),await K()}catch(a){a instanceof f.ApiError&&409===a.status?E("A run is already in flight. Wait for it to complete."):E((a instanceof f.ApiError,a.message))}finally{C(!1)}}return!t&&l&&a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(m.PageHeader,{title:"Self-learning skill optimization",badge:(0,b.jsx)(h.Badge,{variant:"amber",children:"Preview"}),description:(0,b.jsxs)(b.Fragment,{children:["Lets the agent periodically refresh a bounded set of “knowledge map” sections inside its own skills — for example, the list of files under ",(0,b.jsx)("code",{children:"identity/"}),", the section names inside"," ",(0,b.jsx)("code",{children:"state/today.md"}),", or the routing table that decides where a fact gets written. When ON, the agent runs on the cadence below and silently applies every passing proposal; an auto-revert loop rolls back any change that introduces more drift. There is no review queue: toggling OFF stops new runs and immediately unhooks every applied overlay."]}),children:(0,b.jsxs)("p",{className:"mt-1 max-w-3xl text-sm text-muted-foreground",children:["The optimizer targets the highest-leverage skills first — the daily surface (",(0,b.jsx)("code",{children:"today"}),"), the routing for explicit user-managed apps and projects (",(0,b.jsx)("code",{children:"management-policy"}),","," ",(0,b.jsx)("code",{children:"project-doc"}),"), and the user-fact layout (",(0,b.jsx)("code",{children:"user-profile"}),"). Fine-tune this cohort under",(0,b.jsx)("span",{className:"font-medium",children:"Advanced → Per-skill exclusions"})," below."]})}),(0,b.jsxs)(g.Alert,{variant:"info",children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:"Recommended only after long-term operation."})," ",(0,b.jsx)("span",{className:"text-sm text-muted-foreground",children:"The optimizer learns from accumulated signals across runs, observations, and your daily activity. Enabling on a fresh install yields little benefit and can produce churn. Wait until the agent has been running for several weeks of regular use before turning this ON."})]}),D&&(0,b.jsx)(g.Alert,{variant:"error",children:D}),F&&(0,b.jsx)(g.Alert,{variant:"success",children:F}),(0,b.jsxs)(j.Card,{className:"flex flex-col gap-3 p-4",children:[(0,b.jsx)(j.CardHeader,{className:"p-0",children:(0,b.jsx)(j.CardTitle,{className:"text-sm font-semibold",children:"Safety"})}),(0,b.jsxs)("ul",{className:"list-disc pl-5 text-xs text-muted-foreground space-y-1",children:[(0,b.jsx)("li",{children:"The optimizer runs in an isolated working directory with no Edit / Write tools and no access to your knowledge files. Its only mutation path is a typed JSON API enforced by Zod schemas."}),(0,b.jsx)("li",{children:"It can NEVER touch a skill's framework parts (API endpoints, allowed-tools, lock semantics). Only sections explicitly marked curatable are in scope, and safety-critical skills are excluded."}),(0,b.jsx)("li",{children:"Bad proposals are caught by an auto-revert loop: if the next run sees more drift after a change, the section rolls back automatically and freezes for two cycles."}),(0,b.jsx)("li",{children:"Toggling OFF below stops injecting every applied optimization immediately. Overlays stay on disk, so toggling back ON resumes them."})]})]}),(0,b.jsxs)(j.Card,{className:"flex flex-col gap-4 p-4",children:[(0,b.jsx)(j.CardHeader,{className:"p-0",children:(0,b.jsx)(j.CardTitle,{className:"text-sm font-semibold",children:"Enabled"})}),(0,b.jsx)(s,{checked:l.enabled,onChange:b=>{if(b){var c,d;p({...l,enabled:!0,excluded_skills:(c=a.eligible_skills,(d=l.excluded_skills).length>0?d:c.filter(a=>!r.includes(a)))})}else p({...l,enabled:!1})},hint:"Default OFF. While off, no new runs are scheduled and applied overlays are not injected into sessions."}),(0,b.jsx)(o.Separator,{}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-sm font-medium",children:"Cadence"}),(0,b.jsx)(u,{value:l.cadence,onChange:a=>p({...l,cadence:a}),options:[{value:"daily",label:"Daily",hint:"Tighter feedback, more cost"},{value:"weekly",label:"Weekly",hint:"Balanced default"},{value:"monthly",label:"Monthly",hint:"Minimal cost"}]})]}),(0,b.jsx)(o.Separator,{}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[(0,b.jsx)(v,{label:"Execution backend",value:l.backend,onChange:a=>{p({...l,backend:a,model:q[a]})},options:d.RUNTIME_AVAILABLE_BACKEND_IDS.map(a=>{let b=(0,e.isUiPreviewOnlyBackend)(a);return{value:a,label:e.BACKEND_PROVIDER_SHORT[a]+(b?e.UI_PREVIEW_ONLY_BADGE_SUFFIX:""),disabled:b}})}),(0,b.jsx)(w,{label:"Model",value:l.model,onChange:a=>p({...l,model:a}),placeholder:q[l.backend]})]}),(0,b.jsx)(o.Separator,{}),(0,b.jsxs)(n.Collapsible,{open:H,onOpenChange:I,children:[(0,b.jsxs)(n.CollapsibleTrigger,{className:"group flex w-full items-center justify-between gap-2 text-left","aria-label":"Toggle advanced settings",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:"Advanced"}),(0,b.jsxs)("span",{className:"text-xs text-muted-foreground",children:["Override the auto-selected cohort. ",l.excluded_skills.length," skill",1===l.excluded_skills.length?"":"s"," excluded."]})]}),(0,b.jsx)("span",{"aria-hidden":!0,className:"text-xs text-muted-foreground transition-transform group-data-[state=open]:rotate-90",children:"▶"})]}),(0,b.jsxs)(n.CollapsibleContent,{className:"pt-3",children:[(0,b.jsx)("p",{className:"text-sm font-medium",children:"Per-skill exclusions"}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground pb-2",children:["Tick a skill to opt it OUT of self-learning. The cohort is built from skills that ship a ",(0,b.jsx)("code",{children:"curation.json"}),". By default, skills outside the high-impact set (",r.join(", "),") are excluded — uncheck to opt them back in."]}),(0,b.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-1.5",children:a.eligible_skills.map(a=>{let c=l.excluded_skills.includes(a),d=r.includes(a);return(0,b.jsxs)("label",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)("input",{type:"checkbox",checked:c,onChange:()=>p({...l,excluded_skills:c?l.excluded_skills.filter(b=>b!==a):[...l.excluded_skills,a]}),className:"h-4 w-4 accent-primary"}),(0,b.jsx)("code",{className:"text-xs",children:a}),d&&(0,b.jsx)(h.Badge,{variant:"green",className:"text-[10px]",children:"recommended"})]},a)})})]})]}),(0,b.jsxs)("div",{className:"flex items-center justify-end gap-2 pt-1",children:[L&&(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:"Unsaved changes"}),(0,b.jsx)(i.Button,{onClick:()=>void M(),disabled:!L||z,children:z?"Saving…":"Save"})]})]}),(0,b.jsxs)(j.Card,{className:"flex flex-col gap-3 p-4",children:[(0,b.jsxs)(j.CardHeader,{className:"p-0 flex flex-row items-start justify-between gap-2",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)(j.CardTitle,{className:"text-sm font-semibold",children:"Run optimization now"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground pt-1 max-w-md",children:"Triggers a curation run immediately, skipping the cadence wait. The next scheduled run will fire one cadence interval after the manual click. Use this when you feel the agent's recall has drifted and want it to look at your knowledge layout again."})]}),(0,b.jsx)(i.Button,{onClick:()=>void O(),disabled:B||J||!l.enabled,children:B?"Starting…":J?"Run in flight":"Run now"})]}),(0,b.jsx)(o.Separator,{}),(0,b.jsx)(j.CardTitle,{className:"text-sm font-semibold pt-1",children:"Recent runs"}),0===a.recent_runs.length?(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"No curation runs yet. Once enabled, the next scheduled cadence will populate this list."}):(0,b.jsx)("ul",{className:"text-sm divide-y",children:a.recent_runs.map(a=>(0,b.jsxs)("li",{className:"py-2 flex flex-col gap-1",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("span",{className:"text-xs",children:[(0,b.jsx)("code",{children:a.id})," ",(0,b.jsx)("span",{className:"text-muted-foreground",children:"·"})," ",new Date(a.started_at).toLocaleString()," ",(0,b.jsx)("span",{className:"text-muted-foreground",children:"·"})," ",a.cadence,"/",a.backend,"/",a.model,a.is_manual&&(0,b.jsxs)(b.Fragment,{children:[" ",(0,b.jsx)(h.Badge,{variant:"blue",className:"ml-1 text-[10px]",children:"manual"})]})]}),(0,b.jsx)(h.Badge,{variant:"finalized"===a.status?"green":"gray",children:a.status})]}),(0,b.jsx)(x,{counts:a.counts??{}})]},a.id))})]}),a.orphan_overlays.length>0&&(0,b.jsxs)(j.Card,{className:"flex flex-col gap-3 p-4 border-warning",children:[(0,b.jsx)(j.CardHeader,{className:"p-0",children:(0,b.jsxs)(j.CardTitle,{className:"text-sm font-semibold",children:["Orphaned overlays (",a.orphan_overlays.length,")"]})}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:["These overlays remained on disk after a framework update dropped their declaration from ",(0,b.jsx)("code",{children:"curation.json"}),". They have no effect on rendered skills — the renderer falls back to seed or empty — but discarding them keeps disk and declarations in sync. Discard is always explicit; orphans are never auto-deleted."]}),(0,b.jsx)("ul",{className:"text-sm divide-y",children:a.orphan_overlays.map(a=>(0,b.jsxs)("li",{className:"py-2 flex items-center justify-between gap-2",children:[(0,b.jsxs)("span",{className:"text-xs",children:[(0,b.jsx)("code",{children:a.slug})," / ",(0,b.jsx)("code",{children:a.section_id})," ",(0,b.jsx)("span",{className:"text-muted-foreground",children:"·"})," ",a.kind??"(unparseable)"," ",(0,b.jsx)("span",{className:"text-muted-foreground",children:"·"})," ",a.reason]}),(0,b.jsx)(i.Button,{size:"sm",variant:"outline",onClick:()=>void N(a.slug,a.section_id),children:"Discard"})]},`${a.slug}:${a.section_id}`))})]})]}):(0,b.jsx)(j.Card,{className:"p-4",children:(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:D??"Loading…"})})}])}];
1
+ module.exports=[58729,a=>{"use strict";var b=a.i(39752),c=a.i(34542);a.i(70010);var d=a.i(58906),e=a.i(40091),f=a.i(59974),g=a.i(29629),h=a.i(7384),i=a.i(21218),j=a.i(30400),k=a.i(8212),l=a.i(28627),m=a.i(87206),n=a.i(57216),o=a.i(23780);let p=[{key:"applied",label:"applied"},{key:"auto_reverted",label:"auto-reverted",emphasise:!0},{key:"smoke_failed",label:"smoke-failed"},{key:"diff_caps",label:"diff-caps"},{key:"render_budget",label:"render-budget"},{key:"conflict",label:"conflict"}],q={claude:"claude-sonnet-4-6",codex:"gpt-5.4",gemini:"gemini-2.5-flash",opencode:"anthropic/claude-sonnet-4-6"},r=["today","management-policy","project-doc","user-profile"];function s({checked:a,onChange:c,hint:d}){return(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("span",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:a?"On":"Off"}),d&&(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:d})]}),(0,b.jsx)(t,{checked:a,onChange:c,ariaLabel:"Enable self-learning skill optimization"})]})}function t({checked:a,onChange:c,ariaLabel:d}){return(0,b.jsx)("button",{type:"button",role:"switch","aria-checked":a,"aria-label":d,onClick:()=>c(!a),className:"relative inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 "+(a?"bg-primary":"bg-input"),children:(0,b.jsx)("span",{className:"inline-block h-5 w-5 transform rounded-full bg-background shadow-sm transition-transform "+(a?"translate-x-[22px]":"translate-x-[2px]")})})}function u({value:a,onChange:c,options:d}){return(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-2 pt-1",children:d.map(e=>(0,b.jsxs)("label",{className:"flex items-start gap-2 cursor-pointer text-sm rounded-md border border-input p-2",children:[(0,b.jsx)("input",{type:"radio",name:`radio-${d[0].value}`,checked:a===e.value,onChange:()=>c(e.value),className:"mt-1 h-4 w-4 accent-primary"}),(0,b.jsxs)("span",{className:"flex flex-col",children:[(0,b.jsx)("span",{className:"font-medium",children:e.label}),e.hint&&(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:e.hint})]})]},e.value))})}function v({label:a,value:c,onChange:d,options:e}){return(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-sm",children:[(0,b.jsx)("span",{className:"font-medium",children:a}),(0,b.jsx)(l.NativeSelect,{value:c,onChange:a=>d(a.target.value),children:e.map(a=>(0,b.jsx)("option",{value:a.value,disabled:a.disabled,children:a.label},a.value))})]})}function w({label:a,value:c,onChange:d,placeholder:e}){return(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-sm",children:[(0,b.jsx)("span",{className:"font-medium",children:a}),(0,b.jsx)(k.Input,{value:c,onChange:a=>d(a.target.value),placeholder:e,className:"h-9 px-3"})]})}function x({counts:a}){return(0,b.jsx)("div",{className:"flex flex-wrap gap-2 text-[11px] text-muted-foreground pl-1",children:p.map(({key:c,label:d,emphasise:e})=>{let f=a[c]??0;return"applied"!==c&&0===f?null:(0,b.jsxs)("span",{className:e&&f>0?"text-warning":void 0,children:[f," ",d]},c)})})}a.s(["default",0,function(){let[a,k]=(0,c.useState)(null),[l,p]=(0,c.useState)(null),[t,y]=(0,c.useState)(!0),[z,A]=(0,c.useState)(!1),[B,C]=(0,c.useState)(!1),[D,E]=(0,c.useState)(null),[F,G]=(0,c.useState)(null),[H,I]=(0,c.useState)(!1),J=(0,c.useMemo)(()=>(a?.recent_runs??[]).some(a=>"running"===a.status),[a]);async function K(){y(!0),E(null);try{let a=await f.api.get("/settings/skill-curation");k(a),p(a.config)}catch(a){E((a instanceof f.ApiError,a.message))}finally{y(!1)}}(0,c.useEffect)(()=>{K()},[]);let L=(0,c.useMemo)(()=>!!a&&!!l&&JSON.stringify(a.config)!==JSON.stringify(l),[a,l]);async function M(){if(l){A(!0),E(null),G(null);try{await f.api.patch("/settings/skill-curation",l),G("Saved"),window.setTimeout(()=>G(null),2500),await K()}catch(a){E((a instanceof f.ApiError,a.message))}finally{A(!1)}}}async function N(a,b){try{await f.api.post("/skill-curation/orphans/discard",{slug:a,section_id:b}),await K()}catch(a){E((a instanceof f.ApiError,a.message))}}async function O(){C(!0),E(null),G(null);try{await f.api.post("/skill-curation/runs/manual",{}),G("Optimization started. The agent will run silently in the background."),window.setTimeout(()=>G(null),4e3),await K()}catch(a){a instanceof f.ApiError&&409===a.status?E("A run is already in flight. Wait for it to complete."):E((a instanceof f.ApiError,a.message))}finally{C(!1)}}return!t&&l&&a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(m.PageHeader,{title:"Self-learning skill optimization",badge:(0,b.jsx)(h.Badge,{variant:"amber",children:"Preview"}),description:(0,b.jsxs)(b.Fragment,{children:["Lets the agent periodically refresh a bounded set of “knowledge map” sections inside its own skills — for example, the list of files under ",(0,b.jsx)("code",{children:"identity/"}),", the section names inside"," ",(0,b.jsx)("code",{children:"state/today.md"}),", or the routing table that decides where a fact gets written. When ON, the agent runs on the cadence below and silently applies every passing proposal; an auto-revert loop rolls back any change that introduces more drift. There is no review queue: toggling OFF stops new runs and immediately unhooks every applied overlay."]}),children:(0,b.jsxs)("p",{className:"mt-1 max-w-3xl text-sm text-muted-foreground",children:["The optimizer targets the highest-leverage skills first — the daily surface (",(0,b.jsx)("code",{children:"today"}),"), the routing for explicit user-managed apps and projects (",(0,b.jsx)("code",{children:"management-policy"}),","," ",(0,b.jsx)("code",{children:"project-doc"}),"), and the user-fact layout (",(0,b.jsx)("code",{children:"user-profile"}),"). Fine-tune this cohort under",(0,b.jsx)("span",{className:"font-medium",children:"Advanced → Per-skill exclusions"})," below."]})}),(0,b.jsxs)(g.Alert,{variant:"info",children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:"Recommended only after long-term operation."})," ",(0,b.jsx)("span",{className:"text-sm text-muted-foreground",children:"The optimizer learns from accumulated signals across runs, observations, and your daily activity. Enabling on a fresh install yields little benefit and can produce churn. Wait until the agent has been running for several weeks of regular use before turning this ON."})]}),D&&(0,b.jsx)(g.Alert,{variant:"error",children:D}),F&&(0,b.jsx)(g.Alert,{variant:"success",children:F}),(0,b.jsxs)(j.Card,{className:"flex flex-col gap-3 p-4",children:[(0,b.jsx)(j.CardHeader,{className:"p-0",children:(0,b.jsx)(j.CardTitle,{className:"text-sm font-semibold",children:"Safety"})}),(0,b.jsxs)("ul",{className:"list-disc pl-5 text-xs text-muted-foreground space-y-1",children:[(0,b.jsx)("li",{children:"The optimizer runs in an isolated working directory with no Edit / Write tools and no access to your knowledge files. Its only mutation path is a typed JSON API enforced by Zod schemas."}),(0,b.jsx)("li",{children:"It can NEVER touch a skill's framework parts (API endpoints, allowed-tools, lock semantics). Only sections explicitly marked curatable are in scope, and safety-critical skills are excluded."}),(0,b.jsx)("li",{children:"Bad proposals are caught by an auto-revert loop: if the next run sees more drift after a change, the section rolls back automatically and freezes for two cycles."}),(0,b.jsx)("li",{children:"Toggling OFF below stops injecting every applied optimization immediately. Overlays stay on disk, so toggling back ON resumes them."})]})]}),(0,b.jsxs)(j.Card,{className:"flex flex-col gap-4 p-4",children:[(0,b.jsx)(j.CardHeader,{className:"p-0",children:(0,b.jsx)(j.CardTitle,{className:"text-sm font-semibold",children:"Enabled"})}),(0,b.jsx)(s,{checked:l.enabled,onChange:b=>{if(b){var c,d;p({...l,enabled:!0,excluded_skills:(c=a.eligible_skills,(d=l.excluded_skills).length>0?d:c.filter(a=>!r.includes(a)))})}else p({...l,enabled:!1})},hint:"Default OFF. While off, no new runs are scheduled and applied overlays are not injected into sessions."}),(0,b.jsx)(o.Separator,{}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-sm font-medium",children:"Cadence"}),(0,b.jsx)(u,{value:l.cadence,onChange:a=>p({...l,cadence:a}),options:[{value:"daily",label:"Daily",hint:"Tighter feedback, more cost"},{value:"weekly",label:"Weekly",hint:"Balanced default"},{value:"monthly",label:"Monthly",hint:"Minimal cost"}]})]}),(0,b.jsx)(o.Separator,{}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[(0,b.jsx)(v,{label:"Execution backend",value:l.backend,onChange:a=>{p({...l,backend:a,model:q[a]})},options:d.RUNTIME_AVAILABLE_BACKEND_IDS.map(a=>{let b=(0,e.isUiPreviewOnlyBackend)(a);return{value:a,label:e.BACKEND_PROVIDER_SHORT[a]+(b?e.UI_PREVIEW_ONLY_BADGE_SUFFIX:""),disabled:b}})}),(0,b.jsx)(w,{label:"Model",value:l.model,onChange:a=>p({...l,model:a}),placeholder:q[l.backend]})]}),(0,b.jsx)(o.Separator,{}),(0,b.jsxs)(n.Collapsible,{open:H,onOpenChange:I,children:[(0,b.jsxs)(n.CollapsibleTrigger,{className:"group flex w-full items-center justify-between gap-2 text-left","aria-label":"Toggle advanced settings",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:"Advanced"}),(0,b.jsxs)("span",{className:"text-xs text-muted-foreground",children:["Override the auto-selected cohort. ",l.excluded_skills.length," skill",1===l.excluded_skills.length?"":"s"," excluded."]})]}),(0,b.jsx)("span",{"aria-hidden":!0,className:"text-xs text-muted-foreground transition-transform group-data-[state=open]:rotate-90",children:"▶"})]}),(0,b.jsxs)(n.CollapsibleContent,{className:"pt-3",children:[(0,b.jsx)("p",{className:"text-sm font-medium",children:"Per-skill exclusions"}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground pb-2",children:["Tick a skill to opt it OUT of self-learning. The cohort is built from skills that ship a ",(0,b.jsx)("code",{children:"curation.json"}),". By default, skills outside the high-impact set (",r.join(", "),") are excluded — uncheck to opt them back in."]}),(0,b.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-1.5",children:a.eligible_skills.map(a=>{let c=l.excluded_skills.includes(a),d=r.includes(a);return(0,b.jsxs)("label",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)("input",{type:"checkbox",checked:c,onChange:()=>p({...l,excluded_skills:c?l.excluded_skills.filter(b=>b!==a):[...l.excluded_skills,a]}),className:"h-4 w-4 accent-primary"}),(0,b.jsx)("code",{className:"text-xs",children:a}),d&&(0,b.jsx)(h.Badge,{variant:"green",className:"text-[10px]",children:"recommended"})]},a)})})]})]}),(0,b.jsxs)("div",{className:"flex items-center justify-end gap-2 pt-1",children:[L&&(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:"Unsaved changes"}),(0,b.jsx)(i.Button,{onClick:()=>void M(),disabled:!L||z,children:z?"Saving…":"Save"})]})]}),(0,b.jsxs)(j.Card,{className:"flex flex-col gap-3 p-4",children:[(0,b.jsxs)(j.CardHeader,{className:"p-0 flex flex-row items-start justify-between gap-2",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)(j.CardTitle,{className:"text-sm font-semibold",children:"Run optimization now"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground pt-1 max-w-md",children:"Triggers a curation run immediately, skipping the cadence wait. The next scheduled run will fire one cadence interval after the manual click. Use this when you feel the agent's recall has drifted and want it to look at your knowledge layout again."})]}),(0,b.jsx)(i.Button,{onClick:()=>void O(),disabled:B||J||!l.enabled,children:B?"Starting…":J?"Run in flight":"Run now"})]}),(0,b.jsx)(o.Separator,{}),(0,b.jsx)(j.CardTitle,{className:"text-sm font-semibold pt-1",children:"Recent runs"}),0===a.recent_runs.length?(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"No curation runs yet. Once enabled, the next scheduled cadence will populate this list."}):(0,b.jsx)("ul",{className:"text-sm divide-y",children:a.recent_runs.map(a=>(0,b.jsxs)("li",{className:"py-2 flex flex-col gap-1",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("span",{className:"text-xs",children:[(0,b.jsx)("code",{children:a.id})," ",(0,b.jsx)("span",{className:"text-muted-foreground",children:"·"})," ",new Date(a.started_at).toLocaleString()," ",(0,b.jsx)("span",{className:"text-muted-foreground",children:"·"})," ",a.cadence,"/",a.backend,"/",a.model,a.is_manual&&(0,b.jsxs)(b.Fragment,{children:[" ",(0,b.jsx)(h.Badge,{variant:"blue",className:"ml-1 text-[10px]",children:"manual"})]})]}),(0,b.jsx)(h.Badge,{variant:"finalized"===a.status?"green":"gray",children:a.status})]}),(0,b.jsx)(x,{counts:a.counts??{}})]},a.id))})]}),a.orphan_overlays.length>0&&(0,b.jsxs)(j.Card,{className:"flex flex-col gap-3 p-4 border-warning",children:[(0,b.jsx)(j.CardHeader,{className:"p-0",children:(0,b.jsxs)(j.CardTitle,{className:"text-sm font-semibold",children:["Orphaned overlays (",a.orphan_overlays.length,")"]})}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:["These overlays remained on disk after a framework update dropped their declaration from ",(0,b.jsx)("code",{children:"curation.json"}),". They have no effect on rendered skills — the renderer falls back to seed or empty — but discarding them keeps disk and declarations in sync. Discard is always explicit; orphans are never auto-deleted."]}),(0,b.jsx)("ul",{className:"text-sm divide-y",children:a.orphan_overlays.map(a=>(0,b.jsxs)("li",{className:"py-2 flex items-center justify-between gap-2",children:[(0,b.jsxs)("span",{className:"text-xs",children:[(0,b.jsx)("code",{children:a.slug})," / ",(0,b.jsx)("code",{children:a.section_id})," ",(0,b.jsx)("span",{className:"text-muted-foreground",children:"·"})," ",a.kind??"(unparseable)"," ",(0,b.jsx)("span",{className:"text-muted-foreground",children:"·"})," ",a.reason]}),(0,b.jsx)(i.Button,{size:"sm",variant:"outline",onClick:()=>void N(a.slug,a.section_id),children:"Discard"})]},`${a.slug}:${a.section_id}`))})]})]}):(0,b.jsx)(j.Card,{className:"p-4",children:(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:D??"Loading…"})})}])}];
2
2
 
3
3
  //# sourceMappingURL=packages_dashboard_src_app_settings_self-learning_page_tsx_0noj6fo._.js.map