@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
@@ -1,4 +1,4 @@
1
- module.exports=[36581,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(54506),e=a.i(78019),f=a.i(39293),g=a.i(85857),h=a.i(7384),i=a.i(21218),j=a.i(29629),k=a.i(30400),l=a.i(47696),m=a.i(57216),n=a.i(74794),o=a.i(54150),p=a.i(40410),q=a.i(47026),r=a.i(28314),s=a.i(81130),t=a.i(59974),u=a.i(48558);a.i(70010);var v=a.i(59825),w=a.i(58906);let x={search:"Search",read:"Read",draft:"Drafts",update_draft:"Update drafts",send:"Send",forward:"Forward",delete:"Archive / delete",label:"Labels",create_label:"Create labels",read_attachment:"Read attachments",batch:"Batch operations",list_events:"List events",get_event:"Read event",create_event:"Create event",update_event:"Update event",delete_event:"Delete event",respond_to_event:"RSVP",respond_event:"RSVP",suggest_time:"Suggest time",list_calendars:"List calendars",get_availability:"Check availability",batch_read:"Batch read"};function y(a){let b=x[a];return void 0!==b?b:a.split("_").map(a=>0===a.length?a:a[0].toUpperCase()+a.slice(1)).join(" ")}function z(a){return a.userManagedConnector?[...w.RUNTIME_AVAILABLE_BACKEND_IDS]:Object.keys(a.backendConnectors)}function A(a){return a.userManagedConnector?[...v.NATIVE_CONNECTOR_BACKEND_IDS]:Object.keys(a.backendConnectors)}let B="__auto__";function C(a){let b=Date.parse(a.endsWith("Z")||/[+-]\d{2}:\d{2}$/.test(a)?a:a.replace(" ","T")+"Z");return Number.isNaN(b)?null:b}function D(a){return 0===a?"$0":a<.01?"<$0.01":`$${a.toFixed(2)}`}function E(a,b){if("gmail"!==a||b<=1)return null;let c=b-1;return`Delegated mode supports one Google account. Your other ${c} Gmail ${1===c?"account":"accounts"} will be disabled (tokens kept — re-enable by switching back to direct).`}let F={gmail:{presentClause:"Gmail OAuth tokens are still in the keychain",absentClause:"Gmail has no OAuth tokens yet",setupPhrase:"the 5-step Google Cloud setup"},google_calendar:{presentClause:"Google Calendar OAuth tokens are still in the keychain",absentClause:"Google Calendar has no OAuth tokens yet",setupPhrase:"the 5-step Google Cloud setup"},notion:{presentClause:"The Notion API key is still in the keychain",absentClause:"Notion has no API key in the keychain yet",setupPhrase:"creating a Notion internal integration, pasting the key, and sharing each database with the integration"},git:{presentClause:"Git direct mode uses the local git CLI and watched repository list",absentClause:"Git direct mode needs watched repositories before it can poll",setupPhrase:"adding at least one watched repository"},github:{presentClause:"GitHub direct mode uses the local gh CLI",absentClause:"GitHub direct mode needs gh auth login outside the daemon",setupPhrase:"authenticating the gh CLI and optionally adding watched repositories"},outlook_mail:{presentClause:"The Outlook BYOA client config is still in the keychain",absentClause:"Outlook has no BYOA client config in the keychain yet",setupPhrase:"registering a Microsoft Identity (Azure) app and authenticating each Outlook mailbox"},outlook_calendar:{presentClause:"The Outlook BYOA client config is still in the keychain (shared with Outlook Mail)",absentClause:"Outlook Calendar has no BYOA client config to reuse yet",setupPhrase:"registering a Microsoft Identity (Azure) app via the Outlook Mail card"},browser_history:{presentClause:"Browser history consent is already accepted on this device",absentClause:"Browser history consent has not been accepted yet",setupPhrase:"accepting the on-device browser history consent latch"}};function G(a){let b=a.directSetup?.credentialKeys??[];if(0===b.length)return null;let c=F[a.key],d=b.join(" + ");return{secretKeys:b,optionDescription:`Deletes ${d} from the keychain after the mode flip. Reverting to direct later will require ${c.setupPhrase}. Asks for a second confirmation.`,confirmTitle:`Purge ${a.displayName} credentials?`,confirmDescription:`This removes ${d} from the keychain. To restore direct mode later you will need to redo ${c.setupPhrase}.`}}var H=a.i(92241),I=a.i(61213),J=a.i(40091);function K(a){let{open:c,onOpenChange:d,descriptor:e,currentMode:f,currentBackend:g,targetMode:h,targetBackend:k,onTargetBackendChange:m,directCredentialsPresent:n,gmailAccountCount:o,tokenHandling:p,onTokenHandlingChange:q,onConfirm:r,isPending:s,error:t}=a,u=function(a){try{return function(a,b){let{mode:c,backend:d}=a,{toMode:e,toBackend:f}=b;if(c===e)return"delegated"===c&&f&&f!==d?{kind:"delegated-backend-change",toBackend:f}:{kind:"no-op"};if("native"===e){if(!f)throw Error("toBackend required for native flip");return"direct"!==c&&"delegated"!==c&&"disabled"!==c?{kind:"to-native",fromMode:"disabled",toBackend:f}:{kind:"to-native",fromMode:c,toBackend:f}}if("native"===c){if("direct"===e)return{kind:"native-to-direct",needsOauthSetup:!a.directCredentialsPresent};if("delegated"===e){if(!f)throw Error("toBackend required for native→delegated");return{kind:"native-to-delegated",toBackend:f}}return{kind:"native-to-disabled"}}if("direct"===c&&"delegated"===e){if(!f)throw Error("toBackend required for direct→delegated");return{kind:"direct-to-delegated",toBackend:f}}if("delegated"===c&&"direct"===e)return{kind:"delegated-to-direct",needsOauthSetup:!a.directCredentialsPresent};if("disabled"===c){if("delegated"===e){if(!f)throw Error("toBackend required for delegated flip");return{kind:"enable-from-disabled",to:"delegated",toBackend:f}}return{kind:"enable-from-disabled",to:"direct"}}return{kind:"disable-from-active"}}(a.from,{toMode:a.to.mode,toBackend:a.to.backend})}catch{return null}}({from:{mode:f,backend:g,directCredentialsPresent:n},to:{mode:h,backend:k}}),v=z(e),w="delegated"===h&&v.length>1,x="direct"===f&&"delegated"===h&&n&&null!==e.directSetup;return(0,b.jsx)(I.Sheet,{open:c,onOpenChange:d,children:(0,b.jsx)(I.SheetContent,{children:(0,b.jsxs)("div",{className:"flex h-full flex-col",children:[(0,b.jsx)(I.SheetHeader,{children:(0,b.jsx)(I.SheetTitle,{children:function(a,b){if(!b||"no-op"===b.kind)return`${a} — no change`;if("direct-to-delegated"===b.kind)return`Delegate ${a} to ${b.toBackend}?`;if("delegated-to-direct"===b.kind)return`Switch ${a} to direct mode?`;if("delegated-backend-change"===b.kind)return`Change ${a} delegate to ${b.toBackend}?`;if("enable-from-disabled"===b.kind){let c="direct"===b.to?"direct":`delegated to ${b.toBackend??"?"}`;return`Enable ${a} (${c})?`}return"to-native"===b.kind?`Switch ${a} to native (${b.toBackend})?`:"native-to-direct"===b.kind?`Switch ${a} to direct mode?`:"native-to-delegated"===b.kind?`Switch ${a} to delegated (${b.toBackend})?`:(b.kind,`Disable ${a}?`)}(e.displayName,u)})}),(0,b.jsxs)("div",{className:"mt-4 min-h-0 flex-1 space-y-4 overflow-y-auto px-1",children:[w&&(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:"Backend"}),(0,b.jsxs)(l.Select,{value:k??v[0],onValueChange:a=>m?.(a),disabled:s,children:[(0,b.jsx)(l.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(l.SelectValue,{})}),(0,b.jsx)(l.SelectContent,{children:v.map(a=>{let c=(0,J.isUiPreviewOnlyBackend)(a);return(0,b.jsxs)(l.SelectItem,{value:a,disabled:c,children:[a,c?J.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},a)})})]})]}),u&&(0,b.jsx)(L,{action:u,descriptor:e,gmailAccountCount:o}),x&&(0,b.jsx)(M,{value:p,onChange:q,disabled:s,purgeDescription:G(e)?.optionDescription}),t&&(0,b.jsx)(j.Alert,{variant:"error",children:t})]}),(0,b.jsxs)("div",{className:"mt-6 flex items-center justify-end gap-2 border-t border-border pt-4",children:[(0,b.jsx)(i.Button,{variant:"outline",size:"sm",onClick:()=>d(!1),disabled:s,children:"Cancel"}),(0,b.jsxs)(i.Button,{variant:u?.kind==="disable-from-active"?"destructive":"default",size:"sm",onClick:()=>void r(),disabled:s||null===u||"no-op"===u.kind,children:[s&&(0,b.jsx)(H.Loader2,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}),function(a){if(!a)return"Apply";switch(a.kind){case"direct-to-delegated":case"enable-from-disabled":return"Apply";case"delegated-to-direct":case"native-to-direct":return a.needsOauthSetup?"Continue to setup":"Resume direct mode";case"delegated-backend-change":return"Change delegate";case"disable-from-active":case"native-to-disabled":return"Disable";case"to-native":return"Switch to native";case"native-to-delegated":return"Switch to delegated";case"no-op":return"—"}}(u)]})]})]})})})}function L({action:a,descriptor:c,gmailAccountCount:d}){var e,f,g,h,i,k,l;if("direct-to-delegated"===a.kind){let e=function(a,b,c){let d=[];"gmail"===a&&d.push({message:"Mail poller stops observing Gmail — receipts, travel, and Kindle classifiers will not run against new messages.",reversible:!0},{message:"Local FTS5 search on Gmail messages is unavailable. The agent searches through its backend connector instead.",reversible:!0},{message:"Only one Google account is reachable at a time. Additional Gmail accounts will be disabled.",reversible:!0}),"google_calendar"===a&&d.push({message:"Calendar poller stops running. Event awareness drops from 5-minute to hourly granularity.",reversible:!0},{message:"15-minute imminent-event alerts are unavailable — the agent learns about new events on the next hourly check.",reversible:!0}),"notion"===a&&d.push({message:"Notion poller stops observing database edits. Recent-edit awareness shifts from per-poll to inline notion-search inside the hourly check, with reduced recall on less-typed databases.",reversible:!0},{message:"Structured property filter on database queries is unavailable. The agent falls back to semantic notion-search plus client-side filtering — fine for small databases, awkward for >100-row workspaces.",reversible:!0},{message:"Native page archive is unavailable. The agent uses workarounds (status-property update, or move-to-trash-page) and DMs you naming the workaround taken.",reversible:!0}),"git"===a&&d.push({message:"GitWatcher stops polling directly. Git lifecycle checks move to a scheduled backend session, so detection is bounded by the delegated cadence and backend quota.",reversible:!0},{message:"Daemon-side project document updates no longer run from direct classifier output. The delegated session must inspect the repo and update context through the project-doc API.",reversible:!0}),"github"===a&&d.push({message:"GitHubPoller stops polling notifications and workflow runs directly. The delegated session uses gh read-only checks on its cadence instead.",reversible:!0},{message:"Review requests, CI failures, assignments, and security alerts may arrive later because they depend on the delegated cron tick.",reversible:!0}),"outlook_mail"===a&&d.push({message:"Mail poller stops observing Outlook accounts; receipts, travel, and Kindle classifiers will not run against new Outlook messages.",reversible:!0},{message:"Local FTS5 search on Outlook messages is unavailable. The agent searches through whichever Outlook MCP / connector you have wired up on the selected backend.",reversible:!0},{message:`You must register an Outlook / Microsoft Graph MCP server on the ${b} backend before the agent can send, read, or label Outlook mail. The daemon does not proxy this integration.`,reversible:!1}),"outlook_calendar"===a&&d.push({message:"On-demand Outlook calendar reads via /api/calendar/outlook return 410. Calendar awareness depends entirely on the MCP / connector you configure on the selected backend.",reversible:!0},{message:`You must register an Outlook / Microsoft Graph MCP server on the ${b} backend that exposes calendar reads/writes. The daemon does not proxy this integration.`,reversible:!1});let e=c.backendConnectors[b];if(e&&"gmail"===a)for(let a of["send","forward","delete","read_attachment"].filter(a=>!e.optionalCapabilities.includes(a)))d.push({message:`${y(a)} is unavailable on this backend — the agent will draft but not ${function(a){switch(a){case"send":return"send";case"forward":return"forward";case"delete":return"archive or delete";case"read_attachment":return"read attachments";default:return a}}(a)}.`,reversible:!0});return d}(c.key,a.toBackend,c),f=E(c.key,d);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(j.Alert,{variant:"warning",children:[(0,b.jsx)("p",{className:"font-medium",children:"You will lose these direct-mode features"}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"All losses are reversible — OAuth tokens stay in the keychain by default so switching back is frictionless."})]}),f&&(0,b.jsx)(j.Alert,{variant:"warning",children:f}),(0,b.jsx)("ul",{className:"space-y-1.5 text-sm",children:e.map((a,c)=>(0,b.jsxs)("li",{className:"flex items-start gap-2",children:[(0,b.jsx)("span",{className:"mt-1 inline-block h-1.5 w-1.5 shrink-0 rounded-full bg-amber-500"}),(0,b.jsx)("span",{className:"text-muted-foreground",children:a.message})]},c))})]})}if("delegated-to-direct"===a.kind){let d,g=(c.state.deniedTools?.length??0)>0;return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(j.Alert,{variant:a.needsOauthSetup?"warning":"success",children:(0,b.jsx)("p",{className:"text-sm",children:(e=c.key,f=!a.needsOauthSetup,d=F[e],f?`${d.presentClause}. Switching back re-enables polling with no re-consent step.`:`${d.absentClause}. Switching to direct will walk through ${d.setupPhrase}.`)})}),g&&(0,b.jsx)(j.Alert,{variant:"info",children:(0,b.jsx)("p",{className:"text-sm",children:"Your tool deny list will be retained but is inactive in direct mode. Re-enabling delegated mode restores it."})})]})}if("delegated-backend-change"===a.kind)return(0,b.jsx)(j.Alert,{variant:"info",children:(0,b.jsxs)("p",{className:"text-sm",children:["The integration stays delegated — only the backend changes to"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:a.toBackend}),". Skills and task-flow variants re-materialize on the next session."]})});if("enable-from-disabled"===a.kind)return(0,b.jsx)(j.Alert,{variant:"info",children:(0,b.jsx)("p",{className:"text-sm",children:"direct"===a.to?"The integration will poll the service directly. You may need to complete OAuth setup.":`The integration will delegate to the ${a.toBackend} backend connector.`})});if("disable-from-active"===a.kind)return(0,b.jsx)(j.Alert,{variant:"warning",children:(0,b.jsx)("p",{className:"text-sm",children:"The daemon stops observing this integration. Any poller associated with it pauses; the agent's session templates drop the skill / task-flow body that depends on it. Re-enabling is one click — credentials stay in the keychain."})});if("to-native"===a.kind){let e,f,k,l,m,n=(g=a.fromMode,h=a.toBackend,e=[],f=c.displayName,"direct"===g&&(e.push({message:`The daemon's background poller for ${f} stops. The agent fetches via ${h}'s native connector during DM and hourly_check turns instead.`,reversible:!0}),e.push({message:"Local FTS5 search / classifier passes (receipts, travel, Kindle for mail; calendar reconcile for events) stop running. Direct-mode data already in the DB stays searchable; new data lands as in-turn observations only.",reversible:!0}),e.push({message:`Your direct-mode credentials for ${f} stay in the keychain (dormant) so a future flip back to direct re-uses them without re-consent. Delete them explicitly via the direct→delegated "Purge from keychain" flow if you want them gone.`,reversible:!0})),"delegated"===g&&(e.push({message:"The delegated-sync worker stops ticking on its cadence. Observations land at hourly_check granularity instead, fetched by the main DM session itself.",reversible:!0}),e.push({message:"Per-call proxy cost shifts from the (cheap) lite-tier delegated model to your main DM session's medium tier — typically ~20–30× more expensive per fetch.",reversible:!0})),"disabled"===g&&e.push({message:"The integration becomes reachable from hourly_check and DM again — currently it is silent. No background poller runs; the agent fetches in-turn.",reversible:!0}),e.push({message:`${h} must already have its ${f} connector configured (e.g. claude.ai/connections, ~/.codex MCP entry, or ~/.gemini extension). The daemon does not see ${f} credentials.`,reversible:!1}),e.push({message:"Switching the main backend later automatically disables this row (an explicit binding, not a routing rule). You'll be asked to re-configure on the new backend.",reversible:!0}),e),o="direct"===a.fromMode?E(c.key,d):null,p=(l=Math.round((.39-(k=.014*("delegated"===(i=a.fromMode))))*365),m=k>0?Math.round(.39/k):null,{fromDailyUsd:k,toDailyUsd:.39,yearlyDeltaUsd:l,multiplier:m,fromLabel:"delegated"===i?"delegated worker":"direct"===i?"direct poller (no LLM tokens)":"disabled (no fetch at all)"});return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(j.Alert,{variant:"info",children:[(0,b.jsxs)("p",{className:"text-sm font-medium",children:["Native mode — the agent fetches ",c.displayName," in-turn via ",a.toBackend,"'s connector. No background poller, no delegated worker."]}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"We run a live capability probe before committing the flip so a missing connector capability surfaces here, not at the next DM / hourly_check turn."})]}),o&&(0,b.jsx)(j.Alert,{variant:"warning",children:o}),(0,b.jsxs)("div",{className:"rounded-md border border-amber-300/60 bg-amber-50/60 p-3 text-xs dark:border-amber-700/50 dark:bg-amber-950/30",children:[(0,b.jsx)("p",{className:"font-medium text-amber-800 dark:text-amber-200",children:"Estimated cost shift (typical workload)"}),(0,b.jsxs)("p",{className:"mt-1 text-amber-900/80 dark:text-amber-100/80",children:["From ",p.fromLabel," ",(0,b.jsxs)("code",{className:"rounded bg-amber-100 px-1 py-0.5 font-mono text-[11px] dark:bg-amber-900/50",children:["≈ ",D(p.fromDailyUsd),"/day"]})," ","→ native MCP on ",a.toBackend," ",(0,b.jsxs)("code",{className:"rounded bg-amber-100 px-1 py-0.5 font-mono text-[11px] dark:bg-amber-900/50",children:["≈ ",D(p.toDailyUsd),"/day"]}),null!==p.multiplier&&(0,b.jsxs)(b.Fragment,{children:[" ","— roughly"," ",(0,b.jsxs)("strong",{children:[p.multiplier,"×"]})," more per integration"]}),"."]}),(0,b.jsxs)("p",{className:"mt-1 text-[11px] text-amber-900/70 dark:text-amber-100/70",children:["Marginal ~$",p.yearlyDeltaUsd,"/year per integration at typical volume. Native is recommended when the alternative is leaving the integration disabled — not as a free upgrade from delegated."]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-2 text-xs font-medium text-muted-foreground",children:"What changes"}),(0,b.jsx)("ul",{className:"space-y-1.5 text-sm",children:n.map((a,c)=>(0,b.jsxs)("li",{className:"flex items-start gap-2",children:[(0,b.jsx)("span",{className:`mt-1 inline-block h-1.5 w-1.5 shrink-0 rounded-full ${a.reversible?"bg-amber-500":"bg-red-500"}`}),(0,b.jsx)("span",{className:"text-muted-foreground",children:a.message})]},c))})]})]})}if("native-to-direct"===a.kind){let d;return(0,b.jsx)(j.Alert,{variant:a.needsOauthSetup?"warning":"success",children:(0,b.jsx)("p",{className:"text-sm",children:(k=c.key,l=!a.needsOauthSetup,d=F[k],l?`${d.presentClause} from a previous direct-mode setup. Switching back re-enables polling without re-consent.`:`${d.absentClause} — native mode left credential management to the backend. Switching to direct will walk through ${d.setupPhrase}.`)})})}return"native-to-delegated"===a.kind?(0,b.jsx)(j.Alert,{variant:"info",children:(0,b.jsxs)("p",{className:"text-sm",children:["The agent stops calling ",c.displayName," directly through the main backend. Instead, the daemon proxies through"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:a.toBackend})," ","and the delegated-sync worker resumes its cadence — observations land server-side again."]})}):"native-to-disabled"===a.kind?(0,b.jsx)(j.Alert,{variant:"warning",children:(0,b.jsxs)("p",{className:"text-sm",children:["The agent loses awareness of ",c.displayName,". No background poller, no in-turn fetch — the hourly check and DM flow drop the integration from their actionable steps. Re-enabling is one click; no data is destroyed."]})}):null}function M({value:a,onChange:c,disabled:d,purgeDescription:e}){return(0,b.jsxs)("div",{className:"rounded-md border border-border bg-muted/30 p-3",children:[(0,b.jsx)("p",{className:"mb-2 text-sm font-medium",children:"Direct-mode credential handling"}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(N,{checked:"keep"===a,disabled:d,onSelect:()=>c("keep"),label:"Keep dormant (recommended)",description:"Credentials stay in the keychain. Reverting to direct is a one-click flip with no re-consent step."}),(0,b.jsx)(N,{checked:"purge"===a,disabled:d,onSelect:()=>c("purge"),label:"Purge from keychain",description:e??"Deletes the direct-mode credentials after the mode flip. Reverting to direct later will require redoing the original setup. Asks for a second confirmation."})]})]})}function N({checked:a,disabled:c,onSelect:d,label:e,description:f}){return(0,b.jsxs)("label",{className:`flex cursor-pointer items-start gap-2 rounded-md border p-2 text-xs transition ${a?"border-primary bg-primary/5":"border-border hover:bg-muted/50"} ${c?"pointer-events-none opacity-50":""}`,children:[(0,b.jsx)("input",{type:"radio",name:"token-handling",className:"mt-0.5",checked:a,disabled:c,onChange:d}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"font-medium text-foreground",children:e}),(0,b.jsx)("p",{className:"mt-0.5 text-muted-foreground",children:f})]})]})}function O({currentMode:a,descriptor:d,onSelectMode:f,delegatedBackendCount:g,mainBackend:h,disabled:i=!1,groupId:j}){let[k,l]=(0,c.useState)(()=>new Set),n=j??`mode-explainer-${d.key}`,o=A(d),p=null!=h&&o.includes(h),q=d.supportedModes.includes("native")?h?p?null:`Your main backend (${h}) ships no native connector for ${d.displayName}.`:"Set a main backend first — native binds to it.":null;return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:"Mode"}),(0,b.jsx)("ul",{className:"space-y-2",children:d.supportedModes.map(c=>{let j=function(a,b,c=null){let d=b.displayName;if("direct"===a)return{title:"Direct",brief:`The daemon talks to ${d} itself using credentials you provide.`,details:[`Lowest token cost — your conversation backend (Claude / Codex / Gemini) does not pay tokens to fetch ${d} data; the daemon makes the API call directly and hands results to the agent.`,`Built-in safety guardrails apply: the daemon classifies destructive operations (send / delete / overwrite) and routes them through approval flows before they reach ${d}.`,function(a){switch(a){case"gmail":case"google_calendar":return"Requires a Google Cloud OAuth credential — upload the credentials JSON and complete the browser consent step on this screen before the daemon can poll.";case"notion":return"Requires a Notion internal-integration API key — paste it in this app and share each target database with the integration in Notion.";case"git":return"Requires the local git CLI plus a watched-repository list — no credential is stored in this app; the daemon reads the repos with your existing git config.";case"github":return"Requires the local gh CLI authenticated outside the daemon (gh auth login) — no credential is stored in this app; the daemon shells out to gh.";case"outlook_mail":case"outlook_calendar":return"Requires a Microsoft Identity (Azure BYOA) client config plus a per-account MSAL sign-in for each Outlook mailbox.";case"browser_history":return"Requires accepting the on-device browser history consent latch — no external credential is stored; the daemon reads local browser history databases directly."}}(b.key),"Local observers stay on — receipts, travel, calendar-imminent alerts, and FTS5 search continue to run."],footnote:"Recommended when you have the credentials ready and want the lowest token cost."};if("delegated"===a)return{title:"Delegated",brief:`Reuse Claude Code / Gemini CLI / Codex's existing connectors (MCP, plugin, or built-in connector) to reach ${d}.`,details:[`When the agent needs ${d} data, the daemon invokes the chosen CLI (Claude Code / Codex / Gemini) which calls ${d} through its already-configured connector. A small per-call token cost is incurred each time the CLI is invoked.`,`Concrete flow: your main DM agent (e.g. Claude) is asked to read ${d}; it calls this app's API; the daemon invokes the chosen CLI (e.g. Gemini CLI) which uses its already-configured connector to talk to ${d}; the result flows back through the daemon to your main agent.`,`Effective when the backend that handles your DM conversation differs from the backend that has the ${d} connector — for example, a Claude Code main agent borrowing Gemini CLI's Gmail connector to save on Claude tokens or to leverage a connector you already configured there.`,"No extra credentials live in this app — auth is whatever Claude / Codex / Gemini already had configured (claude.ai/connections, ~/.codex MCP entries, ~/.gemini extensions).","Daemon-side safety guardrails run more loosely here because the actual API call happens inside the CLI, not on the daemon. Per-tool deny-lists still apply on the proxy layer."],footnote:"Recommended when you want one backend to handle conversation and another to handle integration access, or when you do not want to manage GCP / Notion credentials yourself."};if("native"===a){let a=function(a){switch(a){case"claude":return"Claude";case"codex":return"Codex";case"gemini":return"Gemini";case"opencode":return"OpenCode";default:return"your main backend"}}(c);return{title:`Native — via ${a}`,brief:`Your DM agent (${a}) reaches ${d} directly through its own connector — no background polling and no daemon-side proxy.`,details:[`Pick this when you already use ${a}'s ${d} connector for ad-hoc work and just want the agent's hourly check and DM replies to use the same connector instead of the daemon. No background poller runs, no delegated worker ticks, no per-call proxy hop — the agent fetches in-turn when it needs ${d}.`,'Token cost moves from the (cheap) delegated worker to your main DM session. Reads sit on the same prompt as the rest of the turn, which raises the medium-tier token bill — typically by an order of magnitude per integration vs. delegated. Worth it when you would otherwise leave the integration "Disabled" and lose hourly-check awareness entirely.',`${a} must already have its ${d} connector configured (e.g. claude.ai/connections for Claude, an MCP entry for Codex, an extension for Gemini). The daemon never sees your ${d} credentials; auth and revocation live in ${a}.`,"Daemon-side safety guardrails (destructive-op confirmation, deny-lists) still cover the absolute-block layer. Per-tool deny lists do NOT apply here — the call never crosses the daemon proxy, so deny enforcement is whatever your backend allows.","If you switch the main backend later, this row is automatically flipped to Disabled and you'll be asked to re-configure. Native is an explicit binding to the backend, not a routing rule."],footnote:`Recommended when ${a} already has the ${d} connector wired up and you want the agent to use it for hourly check / DM, instead of either running a background poller or leaving the integration disabled.`}}return{title:"Disabled",brief:`The daemon does not observe or act on ${d} at all.`,details:[`The agent loses awareness of ${d} entirely — no observers, no skill body, no task-flow guidance. It will not bring up ${d} data on its own.`,`Pick this when the backend you DM with already has ${d} access through its own connectors and you do not need cross-backend delegation. Your agent can still answer ad-hoc questions about ${d} via that backend's native tools, but the daemon will not orchestrate it.`,`Pick this when you simply do not use ${d}.`,"Switching back to direct or delegated later is one click; no data is destroyed."],footnote:"Recommended when this integration is not relevant to you, or your main backend already covers it natively."}}(c,d,h??null),o=c===a,p=k.has(c),r="delegated"===c&&0===g,s="native"===c&&null!==q,t=i||r||s;return(0,b.jsxs)("li",{className:(0,u.cn)("rounded-md border transition-colors",o?"border-primary bg-primary/5":"border-border bg-card",t&&"opacity-60"),children:[(0,b.jsxs)("label",{className:(0,u.cn)("flex cursor-pointer items-start gap-3 p-3",t&&"cursor-not-allowed"),children:[(0,b.jsx)("input",{type:"radio",name:n,className:"mt-1 h-4 w-4 shrink-0",checked:o,disabled:t,onChange:()=>{t||o||f(c)},"aria-label":`Set mode to ${j.title}`}),(0,b.jsxs)("div",{className:"flex-1 space-y-1",children:[(0,b.jsx)("p",{className:"text-sm font-medium text-foreground",children:j.title}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:j.brief}),r&&(0,b.jsx)("p",{className:"text-xs text-amber-700 dark:text-amber-400",children:"No backend connector is registered for this integration — Delegated mode cannot be activated."}),s&&q&&(0,b.jsx)("p",{className:"text-xs text-amber-700 dark:text-amber-400",children:q})]})]}),(0,b.jsxs)(m.Collapsible,{open:p,onOpenChange:a=>{l(b=>{let d=new Set(b);return a?d.add(c):d.delete(c),d})},children:[(0,b.jsxs)(m.CollapsibleTrigger,{type:"button",className:"group flex w-full items-center gap-1 border-t border-border/50 px-3 py-1.5 text-left text-[11px] font-medium text-muted-foreground hover:bg-muted/40 hover:text-foreground","aria-label":`Toggle details for ${j.title} mode`,children:[(0,b.jsx)(e.ChevronDown,{className:(0,u.cn)("h-3 w-3 transition-transform",p&&"rotate-180")}),p?"Hide details":"Show details"]}),(0,b.jsx)(m.CollapsibleContent,{children:(0,b.jsxs)("div",{className:"space-y-2 px-3 pb-3 pt-1 text-xs leading-relaxed",children:[(0,b.jsx)("ul",{className:"list-disc space-y-1.5 pl-5 text-muted-foreground",children:j.details.map((a,c)=>(0,b.jsx)("li",{children:a},c))}),j.footnote&&(0,b.jsx)("p",{className:"rounded bg-muted/50 px-2 py-1 text-[11px] italic text-foreground/80",children:j.footnote})]})})]})]},c)})})]})}var P=a.i(42732),Q=a.i(48033),R=a.i(869);function S(a){let b=new Set,c=[];for(let d of a.split(/\r?\n/)){let a=d.trim();a&&(b.has(a)||(b.add(a),c.push(a)))}return c}let T={gmail:{codex:{heading:"Gmail (delegated to Codex) — pre-populated entries:",entries:[{tool:"send_email",parenNote:"sending a freshly-composed message",verdict:"strictly destructive"},{tool:"delete_emails",parenNote:"move to Trash — the connector's only delete primitive",verdict:"strictly destructive"},{tool:"archive_emails",parenNote:"archive",verdict:'recoverable from "All Mail" but easy to lose track of'},{tool:"apply_labels_to_emails",verdict:"mutating; can hide threads"}]},claude:{heading:"Gmail (delegated to Claude) — the hosted Gmail connector is draft-only (no send / delete / archive). The only mutating ops are label changes:",entries:[{tool:"label_message",verdict:"mutating"},{tool:"label_thread",verdict:"mutating"}]}},google_calendar:{codex:{heading:"Google Calendar — pre-populated entries:",entries:[{tool:"delete_event",verdict:"strictly destructive"},{tool:"update_event",parenNote:"edits to existing events",verdict:"mutating; not strictly destructive but easy to undo wrong"}]},claude:{heading:"Google Calendar — pre-populated entries:",entries:[{tool:"delete_event",verdict:"strictly destructive"},{tool:"update_event",parenNote:"edits to existing events",verdict:"mutating; not strictly destructive but easy to undo wrong"}]}}};function U({integrationKey:a,delegatedBackend:c}){let d=T[a]?.[c];return(0,b.jsxs)(k.Card,{className:"bg-amber-50/40 dark:bg-amber-950/20",children:[(0,b.jsx)("h4",{className:"text-sm font-semibold",children:"Your destructive-action floor"}),(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"By default, the wizard pre-populated the destructive tools below into your deny list. The agent can still read, search, and draft — it just can't send, archive, or delete unless you remove the corresponding entry."}),d&&(0,b.jsxs)("div",{className:"mt-3 space-y-2 text-xs",children:[(0,b.jsx)("p",{className:"font-medium text-foreground",children:d.heading}),d.preamble&&(0,b.jsx)("p",{className:"text-muted-foreground",children:d.preamble}),(0,b.jsx)("ul",{className:"ml-4 list-disc space-y-1 text-muted-foreground",children:d.entries.map(a=>(0,b.jsxs)("li",{children:[(0,b.jsx)("code",{className:"font-mono text-[11px] text-foreground",children:a.tool}),a.parenNote&&(0,b.jsxs)("span",{children:[" (",a.parenNote,")"]}),(0,b.jsx)("span",{children:" — "}),(0,b.jsx)("em",{children:a.verdict})]},a.tool))})]}),(0,b.jsxs)("div",{className:"mt-3 space-y-2 text-xs text-muted-foreground",children:[(0,b.jsxs)("p",{children:[(0,b.jsx)("span",{className:"font-medium text-foreground",children:"Why these defaults?"})," ","The list errs conservative on purpose: the floor here is what keeps the CLAUDE.md"," ",(0,b.jsx)("em",{children:'"destructive ops require user confirmation"'})," ","invariant intact on a fresh install. If you want the agent to archive freely, remove ",(0,b.jsx)("code",{className:"font-mono",children:"archive_emails"}),". If you trust it to update calendar events, remove"," ",(0,b.jsx)("code",{className:"font-mono",children:"update_event"}),". The strictly-destructive entries (",(0,b.jsx)("code",{className:"font-mono",children:"send_email"}),","," ",(0,b.jsx)("code",{className:"font-mono",children:"delete_emails"}),","," ",(0,b.jsx)("code",{className:"font-mono",children:"delete_event"}),") are the ones we recommend keeping."]}),(0,b.jsxs)("p",{children:["Tool names are bare — no ",(0,b.jsx)("code",{className:"font-mono",children:"mcp__*"})," ","prefix, no leading underscore (the daemon prepends the connector's namespace before forwarding). They match the connector you've delegated to: Codex Gmail uses ",(0,b.jsx)("code",{className:"font-mono",children:"send_email"}),"/",(0,b.jsx)("code",{className:"font-mono",children:"delete_emails"}),"/etc., Claude Gmail uses ",(0,b.jsx)("code",{className:"font-mono",children:"label_message"}),"/",(0,b.jsx)("code",{className:"font-mono",children:"label_thread"}),"/etc. Patterns support ",(0,b.jsx)("code",{className:"font-mono",children:"*"})," as a suffix — for example, ",(0,b.jsx)("code",{className:"font-mono",children:"delete_*"})," matches everything that starts with ",(0,b.jsx)("code",{className:"font-mono",children:"delete_"}),"."]}),(0,b.jsx)("p",{children:"Anything you deny here is rejected at the daemon, regardless of which path the agent takes (direct API, cross-backend proxy, or same-backend native MCP)."})]})]})}function V({integrationKey:a,descriptor:e,delegatedBackend:f,deniedTools:g,currentMode:l}){let[m,n]=(0,c.useState)(g??[]),[o,p]=(0,c.useState)(!1),[r,s]=(0,c.useState)(null),[u,v]=(0,c.useState)(!1),w=(0,q.usePatchIntegration)();(0,c.useEffect)(()=>{let a=[...g??[]];n(b=>!function(a,b){if(a.length!==b.length)return!1;let c=new Set(a);for(let a of b)if(!c.has(a))return!1;return!0}(b,a)?o?b:a:(p(!1),b))},[g,f]),(0,c.useEffect)(()=>{s(null),v(!1)},[f]);let x=(0,c.useMemo)(()=>(function(a,b,c){if(!b)return null;let d=a.backendConnectors[b];if(!d)return null;let e=new Set(c??[]),f=new Set(d.requiredCapabilities),g=new Set,h=[];for(let a of d.optionalCapabilities){if(g.has(a))continue;g.add(a);let b=[...d.capabilityTools[a]??[]],c=b.length>0&&b.every(a=>e.has(a));h.push({capability:a,label:y(a),tools:b,required:f.has(a),denied:c})}for(let a of d.requiredCapabilities){if(g.has(a))continue;g.add(a);let b=[...d.capabilityTools[a]??[]];h.push({capability:a,label:y(a),tools:b,required:!0,denied:!1})}let i=new Set;for(let a of Object.values(d.capabilityTools))for(let b of a)i.add(b);return{rows:h,staleDeniedTools:(c??[]).filter(a=>!i.has(a)),softEnforcement:"claude"!==b}})(e,f,m),[e,f,m]);if("delegated"!==l||!x)return null;let z=x.rows.filter(a=>!a.required),A=x.rows.filter(a=>a.required),B=async()=>{s(null),v(!1);try{await w.mutateAsync({key:a,body:{mode:"delegated",delegatedBackend:f,deniedTools:[...m]}}),p(!1),v(!0),window.setTimeout(()=>v(!1),1500)}catch(a){s(function(a){if(a instanceof t.ApiError){let b=a.body;if(b?.error==="unknown_tool")return b.message??`Unknown tool: ${b.tool??"?"}`;if(b?.error==="denial_breaks_required_capability"){let a=b.remainingTools?.join(", ")??"?";return b.message??`Denying these tools breaks required capability '${b.capability??"?"}'. Keep at least one of: ${a}.`}return b?.message??a.message}return a instanceof Error?a.message:"Unexpected error"}(a))}},C="codex"===f?"codex":null,D=z.filter(a=>a.denied).length;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(U,{integrationKey:a,delegatedBackend:f}),(0,b.jsxs)(k.Card,{children:[(0,b.jsxs)("div",{className:"mb-2 flex flex-wrap items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("h4",{className:"text-sm font-medium",children:"Tool permissions"}),D>0&&(0,b.jsxs)(h.Badge,{variant:"amber",className:"h-5 px-1.5 text-[10px]",children:[D," off"]})]}),C&&(0,b.jsx)(R.TooltipProvider,{children:(0,b.jsxs)(R.Tooltip,{children:[(0,b.jsx)(R.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)(h.Badge,{variant:"amber",className:"cursor-help gap-1",children:["Limited enforcement (",C,")"]})}),(0,b.jsx)(R.TooltipContent,{children:(0,b.jsx)("p",{className:"max-w-xs text-xs",children:'Codex doesn\'t expose a per-tool block at the binary level. The agent reads a "denied tools" note in its prompt and is asked to obey it — weaker than the SDK-level block Claude and Gemini provide. Switch to a Claude- or Gemini-backed delegation if you need hard enforcement.'})})]})})]}),(0,b.jsx)("p",{className:"mb-3 text-xs text-muted-foreground",children:"Turn off connector tools the agent should never use for this integration. Required capabilities (search, read, …) can't be disabled — to drop them, switch the integration out of delegated mode."}),0===z.length?(0,b.jsx)("p",{className:"text-xs italic text-muted-foreground",children:"This connector has no optional capabilities to manage."}):(0,b.jsx)("div",{className:"space-y-1",children:z.map(a=>(0,b.jsx)(X,{row:a,onToggle:()=>{a.required||(n(function(a,b,c){let d=new Set(a);if(c)for(let a of b.tools)d.add(a);else for(let a of b.tools)d.delete(a);return[...d]}(m,a,!a.denied)),p(!0),s(null),v(!1))}},a.capability))}),A.length>0&&(0,b.jsx)(Y,{rows:A}),x.staleDeniedTools.length>0&&(0,b.jsx)(j.Alert,{variant:"warning",className:"mt-3",children:(0,b.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("p",{className:"text-xs font-medium",children:[x.staleDeniedTools.length," stale entr",1===x.staleDeniedTools.length?"y":"ies"," from a previous backend"]}),(0,b.jsx)("ul",{className:"font-mono text-[11px]",children:x.staleDeniedTools.map(a=>(0,b.jsx)("li",{className:"break-all",children:a},a))}),(0,b.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:[`These names don't match any tool in ${f}'s`,"connector. The agent ignores them already; click Clean up to drop them from the saved list."]})]}),(0,b.jsx)(i.Button,{variant:"outline",size:"sm",className:"h-7 shrink-0 px-2 text-xs",onClick:()=>{if(0===x.staleDeniedTools.length)return;let a=new Set(x.staleDeniedTools);n(m.filter(b=>!a.has(b))),p(!0),s(null),v(!1)},children:"Clean up"})]})}),r&&(0,b.jsx)(j.Alert,{variant:"error",className:"mt-3 whitespace-pre-line",children:(0,b.jsx)("p",{className:"text-xs",children:r})}),(o||u)&&(0,b.jsxs)("div",{className:"mt-3 flex items-center justify-end gap-2",children:[u&&!o&&(0,b.jsxs)("span",{className:"flex items-center gap-1 text-xs text-emerald-600 dark:text-emerald-400",children:[(0,b.jsx)(d.Check,{className:"h-3 w-3"})," Saved"]}),o&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 text-xs",onClick:()=>{n(g??[]),p(!1),s(null),v(!1)},disabled:w.isPending,children:"Revert"}),(0,b.jsx)(i.Button,{size:"sm",className:"h-7 px-3 text-xs",onClick:()=>void B(),disabled:w.isPending,children:w.isPending?"Applying…":"Apply"})]})]}),(0,b.jsx)(W,{draft:m,onChange:a=>{n(a),p(!0),s(null),v(!1)}})]})]})}function W({draft:a,onChange:d}){let[f,g]=(0,c.useState)(!1),[h,i]=(0,c.useState)(a.join("\n"));return(0,c.useEffect)(()=>{let b=S(h);b.length===a.length&&b.every((b,c)=>b===a[c])||i(a.join("\n"))},[a]),(0,b.jsxs)("div",{className:"mt-4 border-t pt-3",children:[(0,b.jsxs)("button",{type:"button",className:"flex w-full items-center justify-between text-xs text-muted-foreground hover:text-foreground",onClick:()=>g(a=>!a),"aria-expanded":f,children:[(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)("span",{className:"font-medium",children:"Advanced — raw deny list"}),(0,b.jsxs)("span",{className:"text-[10px]",children:["(",a.length," ",1===a.length?"entry":"entries",")"]})]}),f?(0,b.jsx)(e.ChevronDown,{className:"h-3 w-3"}):(0,b.jsx)(P.ChevronRight,{className:"h-3 w-3"})]}),f&&(0,b.jsxs)("div",{className:"mt-2 space-y-2",children:[(0,b.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:["One tool pattern per line. Suffix glob support: ",(0,b.jsx)("code",{className:"font-mono",children:"delete_*"})," ","matches every tool starting with ",(0,b.jsx)("code",{className:"font-mono",children:"delete_"}),". The list is enforced uniformly across direct, cross-backend proxy, and same-backend native MCP paths."]}),(0,b.jsx)("textarea",{value:h,onChange:a=>{var b;i(b=a.target.value),d(S(b))},spellCheck:!1,rows:Math.max(4,Math.min(12,h.split("\n").length+1)),className:"w-full rounded-md border border-input bg-background p-2 font-mono text-[11px] text-foreground focus:outline-none focus:ring-2 focus:ring-ring",placeholder:"send_email\ndelete_emails\narchive_*"})]})]})}function X({row:a,onToggle:d}){let[f,g]=(0,c.useState)(!1),i=!a.denied;return(0,b.jsxs)("div",{className:(0,u.cn)("rounded-md border p-2 text-xs transition",i?"border-border":"border-dashed border-border/70 bg-muted/20"),children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{id:`perm-${a.capability}`,type:"checkbox",className:"cursor-pointer",checked:i,onChange:d}),(0,b.jsxs)("label",{htmlFor:`perm-${a.capability}`,className:"flex-1 cursor-pointer",children:[(0,b.jsx)("span",{className:"font-medium text-foreground",children:a.label}),a.denied&&(0,b.jsx)(h.Badge,{variant:"amber",className:"ml-2 h-4 px-1 text-[10px]",children:"off"})]}),a.tools.length>0&&(0,b.jsxs)("button",{type:"button",className:"flex shrink-0 items-center gap-0.5 rounded px-1 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/40 hover:text-foreground",onClick:()=>g(a=>!a),"aria-expanded":f,"aria-label":f?`Hide tools for ${a.label}`:`Show tools for ${a.label}`,children:[f?(0,b.jsx)(e.ChevronDown,{className:"h-3 w-3"}):(0,b.jsx)(P.ChevronRight,{className:"h-3 w-3"}),a.tools.length," tool",1===a.tools.length?"":"s"]})]}),f&&a.tools.length>0&&(0,b.jsx)("ul",{className:"ml-6 mt-1 font-mono text-[10px] text-muted-foreground",children:a.tools.map(a=>(0,b.jsx)("li",{className:"break-all",children:a},a))})]})}function Y({rows:a}){let[f,g]=(0,c.useState)(!1);return(0,b.jsxs)("div",{className:"mt-3 border-t pt-2",children:[(0,b.jsxs)("button",{type:"button",className:"flex w-full items-center justify-between text-xs text-muted-foreground hover:text-foreground",onClick:()=>g(a=>!a),"aria-expanded":f,children:[(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)(Q.Lock,{className:"h-3 w-3"})," Required capabilities (",a.length,")"]}),f?(0,b.jsx)(e.ChevronDown,{className:"h-3 w-3"}):(0,b.jsx)(P.ChevronRight,{className:"h-3 w-3"})]}),f&&(0,b.jsxs)("ul",{className:"mt-2 space-y-1",children:[a.map(a=>(0,b.jsxs)("li",{className:"flex items-center gap-1.5 text-[11px] text-muted-foreground",children:[(0,b.jsx)(d.Check,{className:"h-3 w-3 text-muted-foreground/70"}),(0,b.jsx)("span",{className:"font-medium text-foreground",children:a.label}),a.tools.length>0&&(0,b.jsxs)("span",{className:"font-mono text-[10px]",children:["· ",a.tools.join(", ")]})]},a.capability)),(0,b.jsx)("li",{className:"pt-1 text-[10px] italic text-muted-foreground",children:"To drop these, switch this integration out of delegated mode."})]})]})}function Z({name:a,badge:c,children:d}){return(0,b.jsxs)(k.Card,{children:[(0,b.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,b.jsx)("h3",{className:"text-sm font-medium",children:a}),c]}),d]})}function $(a){if(a instanceof t.ApiError){let b=a.body;if(b?.error==="missing_variants"){let a=[...b.missingSkills??[],...b.missingTaskFlows??[]],c="native"===b.mode?"native":"delegated";return`Missing variant file(s) for ${c} mode:
2
- ${a.join("\n")}`}if(b?.error==="backend_not_supported_native"){let a=b.supportedNativeBackends?.join(", ")??"—";return`${b.message??"Backend has no native connector."} Supported native backends: ${a}.`}return b?.error==="native_backend_mismatches_main"?b.message??`Native mode must bind to the current main backend (${b.mainBackend??"?"}).`:b?.message??a.message}return a instanceof Error?a.message:"Unexpected error"}function _({descriptor:a,backend:c,mode:d}){let e=c?function(a,b){switch(a){case"claude":return`Claude Code: register an MCP server via \`claude mcp add\` or wire up a connector at claude.ai/connections that exposes ${b}.`;case"codex":return`Codex: add an MCP server entry to your Codex configuration that exposes ${b} so the connector surfaces in Codex's tool list.`;case"gemini":return`Gemini CLI: install an MCP extension that exposes ${b} (e.g. \`gemini mcp add\` or a \`~/.gemini/extensions/<name>/\` directory).`;case"opencode":return`OpenCode: configure an MCP server for ${b} once OpenCode runtime support is enabled.`}}(c,a.displayName):null;return(0,b.jsxs)(j.Alert,{variant:"info",children:[(0,b.jsxs)("p",{className:"text-xs font-medium",children:["User-managed connector — the daemon does not poll, proxy, or store credentials for ",a.displayName,"."]}),(0,b.jsxs)("p",{className:"mt-1 text-xs",children:["native"===d?"Native":"Delegated"," mode requires you to register an MCP server or connector on the ",c??"selected"," backend that gives it access to"," ",a.displayName,". The agent uses those tools directly; no capability probe runs and no daemon-side proxy is exposed."]}),e&&(0,b.jsx)("p",{className:"mt-1 text-[11px] text-muted-foreground",children:e})]})}function aa({integrationKey:a,entry:k,descriptor:l,featureMatrix:n}){let o=n.filter(a=>a.present).length,p=n.length,r=k.lastProbeAt?new Date(k.lastProbeAt).toLocaleString():null,s=k.delegatedBackend;s&&l.backendConnectors[s];let v=(0,q.useIntegrationProbeLive)(),[w,x]=(0,c.useState)(null);if(l.userManagedConnector)return(0,b.jsx)(_,{descriptor:l,backend:s,mode:"delegated"});let y=async()=>{if(s){x(null);try{await v.mutateAsync({key:a,backend:s,liveProbe:!0})}catch(a){if(a instanceof t.ApiError){let b=a.body;b?.error==="live_probe_unsupported"?x(b.message??"Live probe not yet supported on this backend."):x(b?.message??a.message)}else x(a instanceof Error?a.message:"Unexpected error")}}};return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground",children:[(0,b.jsxs)("span",{children:["Tool namespace"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:k.toolNamespace??"?"})]}),(0,b.jsxs)("span",{children:["Capabilities"," ",(0,b.jsxs)("span",{className:"text-foreground",children:[o,"/",p]})]}),(0,b.jsxs)("span",{children:["Probe"," ",(0,b.jsx)("span",{className:"text-foreground",children:r??"defaults (no live probe yet)"})]}),(0,b.jsxs)(i.Button,{variant:"ghost",size:"sm",className:"h-6 gap-1 px-2 text-[11px]",onClick:()=>void y(),disabled:v.isPending||!s,"aria-label":"Re-probe connector",children:[(0,b.jsx)(f.RefreshCw,{className:(0,u.cn)("h-3 w-3",v.isPending&&"animate-spin")}),v.isPending?"Probing…":"Re-probe"]})]}),w&&(0,b.jsx)(j.Alert,{variant:"error",children:(0,b.jsx)("p",{className:"text-xs",children:w})}),p>0&&(0,b.jsxs)(m.Collapsible,{children:[(0,b.jsxs)(m.CollapsibleTrigger,{className:"group flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",children:[(0,b.jsx)(e.ChevronDown,{className:"h-3 w-3 transition-transform group-data-[state=open]:rotate-180"}),"Feature matrix"]}),(0,b.jsx)(m.CollapsibleContent,{children:(0,b.jsx)("ul",{className:"mt-2 grid grid-cols-1 gap-0.5 sm:grid-cols-2",children:n.map(a=>(0,b.jsxs)("li",{className:(0,u.cn)("flex items-center gap-1.5 text-xs",!a.present&&"text-muted-foreground/70"),children:[a.present?(0,b.jsx)(d.Check,{className:"h-3 w-3 text-emerald-500"}):(0,b.jsx)(g.X,{className:"h-3 w-3 text-muted-foreground"}),(0,b.jsx)("span",{children:a.label}),a.required&&!a.present&&(0,b.jsx)(h.Badge,{variant:"red",className:"h-4 px-1 text-[10px]",children:"required"})]},a.capability))})})]})]})}function ab({integrationKey:a,entry:k,descriptor:l,featureMatrix:n,mainBackend:o}){let p=n.filter(a=>a.present).length,r=n.length,s=k.lastProbeAt?new Date(k.lastProbeAt).toLocaleString():null,v=k.nativeBackend,w=(0,q.useIntegrationProbeLive)(),[x,y]=(0,c.useState)(null);if(l.userManagedConnector)return(0,b.jsx)(_,{descriptor:l,backend:v,mode:"native"});let z=null!==v&&null!==o&&v!==o,A=async()=>{if(v){y(null);try{await w.mutateAsync({key:a,backend:v,liveProbe:!0})}catch(a){if(a instanceof t.ApiError){let b=a.body;b?.error==="live_probe_unsupported"?y(b.message??"Live probe not yet supported on this backend."):y(b?.message??a.message)}else y(a instanceof Error?a.message:"Unexpected error")}}};return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(j.Alert,{variant:"info",children:(0,b.jsxs)("p",{className:"text-xs",children:["Native mode — the agent fetches ",l.displayName," via"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:v??"?"}),"'s connector during DM and hourly_check turns. The daemon does not poll, does not proxy, and does not store"," ",l.displayName," credentials. Destructive operations still require user confirmation via the absolute-block layer."]})}),z&&(0,b.jsx)(j.Alert,{variant:"warning",children:(0,b.jsxs)("p",{className:"text-xs",children:["This row is bound to"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:v})," ","but the current main backend is"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:o}),". The next session refresh will cascade this row to disabled — re-configure on the new main backend."]})}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground",children:[(0,b.jsxs)("span",{children:["Tool namespace"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:k.toolNamespace??"?"})]}),r>0&&(0,b.jsxs)("span",{children:["Capabilities"," ",(0,b.jsxs)("span",{className:"text-foreground",children:[p,"/",r]})]}),(0,b.jsxs)("span",{children:["Probe"," ",(0,b.jsx)("span",{className:"text-foreground",children:s??"defaults (no live probe yet)"})]}),(0,b.jsxs)(i.Button,{variant:"ghost",size:"sm",className:"h-6 gap-1 px-2 text-[11px]",onClick:()=>void A(),disabled:w.isPending||!v,"aria-label":"Re-probe connector",children:[(0,b.jsx)(f.RefreshCw,{className:(0,u.cn)("h-3 w-3",w.isPending&&"animate-spin")}),w.isPending?"Probing…":"Re-probe"]})]}),x&&(0,b.jsx)(j.Alert,{variant:"error",children:(0,b.jsx)("p",{className:"text-xs",children:x})}),r>0&&(0,b.jsxs)(m.Collapsible,{children:[(0,b.jsxs)(m.CollapsibleTrigger,{className:"group flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",children:[(0,b.jsx)(e.ChevronDown,{className:"h-3 w-3 transition-transform group-data-[state=open]:rotate-180"}),"Feature matrix"]}),(0,b.jsx)(m.CollapsibleContent,{children:(0,b.jsx)("ul",{className:"mt-2 grid grid-cols-1 gap-0.5 sm:grid-cols-2",children:n.map(a=>(0,b.jsxs)("li",{className:(0,u.cn)("flex items-center gap-1.5 text-xs",!a.present&&"text-muted-foreground/70"),children:[a.present?(0,b.jsx)(d.Check,{className:"h-3 w-3 text-emerald-500"}):(0,b.jsx)(g.X,{className:"h-3 w-3 text-muted-foreground"}),(0,b.jsx)("span",{children:a.label}),a.required&&!a.present&&(0,b.jsx)(h.Badge,{variant:"red",className:"h-4 px-1 text-[10px]",children:"required"})]},a.capability))})})]})]})}function ac({integrationKey:a,delegatedBackend:d,delegatedModel:e,currentMode:f}){var g,k;let m=(0,q.useProxyModels)(d),n=(0,q.usePatchIntegration)(),[o,p]=(0,c.useState)(null),r=m.data?.options??[],s=m.data?.canonical??null,t=e??B,u=null!==e&&r.length>0&&!r.some(a=>a.modelId===e),v=e?r.find(a=>a.modelId===e):r.find(a=>a.modelId===s)??r.find(a=>"lite"===a.tier)??r[0],w=v?(g=v.usdPer1kIn,k=v.usdPer1kOut,null===g||null===k?null:800*g/1e3+200*k/1e3):null,x=async b=>{p(null);let c=b===B?null:b;if(c!==e)try{await n.mutateAsync({key:a,body:{mode:"delegated",delegatedBackend:d,delegatedModel:c}})}catch(a){p($(a))}};return"delegated"!==f?null:(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",htmlFor:`proxy-model-${a}`,children:"Proxy model"}),(0,b.jsxs)(l.Select,{value:t,onValueChange:a=>void x(a),children:[(0,b.jsx)(l.SelectTrigger,{id:`proxy-model-${a}`,className:"h-8 w-auto min-w-[16rem] text-xs",disabled:m.isLoading||n.isPending,children:(0,b.jsx)(l.SelectValue,{})}),(0,b.jsxs)(l.SelectContent,{children:[(0,b.jsxs)(l.SelectItem,{value:B,children:["Auto (light tier",s?` — ${s}`:"",")"]}),r.map(a=>(0,b.jsxs)(l.SelectItem,{value:a.modelId,children:[a.displayName,"lite"!==a.tier?` \xb7 ${a.tier}`:"",a.deprecated?" · deprecated":""]},a.modelId)),u&&e&&(0,b.jsxs)(l.SelectItem,{value:e,children:[e," · stale"]})]})]}),null!==w&&(0,b.jsxs)(h.Badge,{variant:"gray",title:"Estimate based on a typical proxy call (≈800 in / 200 out tokens). Actual costs vary by tool.",children:["≈ ",w<.001?"<$0.001":w<.01?`$${w.toFixed(4)}`:`$${w.toFixed(3)}`," / call"]})]}),u&&(0,b.jsxs)(j.Alert,{variant:"warning",children:[(0,b.jsxs)("p",{className:"text-xs",children:["Pinned model ",(0,b.jsx)("code",{children:e})," is not registered for backend ",(0,b.jsx)("code",{children:d}),". Calls fall back to the canonical light-tier model until you reset."]}),(0,b.jsx)(i.Button,{variant:"ghost",size:"sm",className:"mt-1 h-6 px-2 text-[11px]",onClick:()=>void x(B),disabled:n.isPending,children:"Reset to default"})]}),o&&(0,b.jsx)(j.Alert,{variant:"error",children:(0,b.jsx)("p",{className:"text-xs",children:o})})]})}function ad({integrationKey:a,credentialsPresent:c}){let d=ae[a].present,e=ae[a].absent;return(0,b.jsx)(j.Alert,{variant:c?"success":"warning",children:(0,b.jsx)("p",{className:"text-xs",children:c?d:e})})}let ae={gmail:{present:"Google OAuth credentials present. The daemon is polling Gmail directly.",absent:"Direct mode requires a Google Cloud OAuth credential. Complete the credential upload + authorize step below."},google_calendar:{present:"Google OAuth credentials present. The daemon is polling Calendar directly.",absent:"Direct mode requires a Google Cloud OAuth credential. Complete the credential upload + authorize step below."},notion:{present:"Notion API key present. The daemon is polling configured databases directly.",absent:"Direct mode requires a Notion internal-integration API key. Paste it below and share each target database with the integration."},git:{present:"Direct mode active. The daemon polls watched repositories with the local git CLI.",absent:"Direct mode uses the local git CLI and watched repository list; no daemon-managed credential is required."},github:{present:"Direct mode active. The daemon polls GitHub through the local gh CLI.",absent:"Direct mode uses gh auth login outside the daemon keychain; no daemon-managed credential is required."},outlook_mail:{present:"Outlook BYOA client config present. The unified mail poller covers authenticated Outlook mailboxes.",absent:"Direct mode requires a Microsoft Identity (BYOA) client config. Register an Azure app and paste the client id below."},outlook_calendar:{present:"Outlook BYOA client config present. Calendar reads are on-demand and reuse the MSAL token from Outlook Mail; no background poller in v1.",absent:"Direct mode requires the BYOA client config used by Outlook Mail. Configure it via the Outlook Mail card; calendar reads reuse the same authenticated session."},browser_history:{present:"Browser history ingest is active. The daemon reads local browser history databases on the configured cadence.",absent:"Direct mode requires accepting the on-device browser history consent latch. No external credentials are required."}};function af({integrationKey:a}){let c=(0,q.useRecentProxyCalls)(a),d=c.data?.calls??[],f=d.some(a=>"failed"===a.result);return(0,b.jsxs)(m.Collapsible,{children:[(0,b.jsxs)(m.CollapsibleTrigger,{className:"group flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",children:[(0,b.jsx)(e.ChevronDown,{className:"h-3 w-3 transition-transform group-data-[state=open]:rotate-180"}),"Recent proxy calls",!c.isLoading&&(0,b.jsxs)("span",{className:"text-muted-foreground/70",children:["(",d.length,f&&(0,b.jsx)("span",{className:"ml-1 text-amber-600 dark:text-amber-400",children:"· failures"}),")"]})]}),(0,b.jsxs)(m.CollapsibleContent,{className:"pt-2",children:[c.isLoading&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Loading…"}),c.error&&(0,b.jsx)(j.Alert,{variant:"error",children:(0,b.jsxs)("p",{className:"text-xs",children:["Could not load recent calls:"," ",c.error instanceof Error?c.error.message:"Unexpected error"]})}),!c.isLoading&&!c.error&&0===d.length&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"No proxy calls have been recorded for this integration yet. They land here as the agent invokes the connector."}),(0,b.jsxs)("p",{className:"mb-2 text-[11px] text-muted-foreground",children:["Only ",(0,b.jsx)("strong",{children:"cross-backend"}),"delegated calls show up here — calls where your DM session runs on a different backend than the connector's owner. Same-backend delegated calls (for example, a Codex DM session using Codex's own Gmail connector) skip the proxy and roll up under the parent session's totals. Per-tool cost isn't measurable in those cases."]}),d.length>0&&(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"w-full min-w-[42rem] border-separate border-spacing-0 text-[11px]",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{className:"text-left text-muted-foreground",children:[(0,b.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Time"}),(0,b.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Tool"}),(0,b.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Model"}),(0,b.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Duration"}),(0,b.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Cost"}),(0,b.jsx)("th",{className:"pb-1 font-medium",children:"Result"})]})}),(0,b.jsx)("tbody",{children:d.map(a=>{var c,d;return(0,b.jsxs)("tr",{className:"border-t border-border/50 align-top",children:[(0,b.jsx)("td",{className:"py-1 pr-3 text-muted-foreground",children:function(a,b=new Date){if(null===a)return"—";let c=new Date(a);return Number.isNaN(c.getTime())?a:c.getFullYear()===b.getFullYear()&&c.getMonth()===b.getMonth()&&c.getDate()===b.getDate()?c.toLocaleTimeString():c.toLocaleString()}(a.startedAt)}),(0,b.jsx)("td",{className:"py-1 pr-3 font-mono",children:function(a){if(!a)return"—";let b=a.split("__"),c=b[b.length-1];return c&&c.length>0?c:a}(a.toolName)}),(0,b.jsx)("td",{className:"py-1 pr-3 text-muted-foreground",children:a.modelId??"—"}),(0,b.jsx)("td",{className:"py-1 pr-3 text-muted-foreground",children:null===(c=a.durationMs)?"—":c<1e3?`${c}ms`:`${(c/1e3).toFixed(1)}s`}),(0,b.jsx)("td",{className:"py-1 pr-3 text-muted-foreground",children:null===(d=a.costUsd)?"—":0===d?"$0":d<.001?"<$0.001":d<.01?`$${d.toFixed(4)}`:`$${d.toFixed(3)}`}),(0,b.jsx)("td",{className:"py-1",children:"success"===a.result?(0,b.jsx)(h.Badge,{variant:"green",className:"h-4 px-1 text-[10px]",children:"ok"}):(0,b.jsx)("span",{className:"text-amber-700 dark:text-amber-300",title:a.errorMessage??void 0,children:a.errorClass??a.result??"failed"})})]},a.id)})})]})})]})]})}a.s(["IntegrationCard",0,function({integrationKey:a,gmailAccountCount:d=0,children:e}){var f,g,k,m,u;let v=(0,q.useIntegrations)(),w=(0,p.useHealth)(),x=(0,o.useConfig)(),B=(0,n.useBackends)(),D=(0,q.useNativeUnboundActions)(),E=(0,q.usePatchIntegration)(),F=(0,q.useIntegrationProbeLive)(),H=(0,r.useConfirm)(),I=(0,s.useQueryClient)(),[L,M]=(0,c.useState)(null),[N,P]=(0,c.useState)("keep"),[Q,R]=(0,c.useState)(null),[S,T]=(0,c.useState)(null),[U,W]=(0,c.useState)(!1),X=(0,c.useMemo)(()=>v.data?.integrations.find(b=>b.key===a),[v.data,a]),Y=w.data?.integrationModes?.[a],_=B.data?.defaultBackend??null;if(v.isLoading||w.isLoading)return(0,b.jsx)(Z,{name:a,children:"Loading…"});if(!X||!Y)return(0,b.jsx)(Z,{name:a,children:(0,b.jsx)(j.Alert,{variant:"error",children:"Could not load integration metadata. The daemon may be offline."})});let ae=z(X),ag=A(X),ah=!!(f=x.data)&&("gmail"===a||"google_calendar"===a?f.googleCalendarCredentialsConfigured&&f.googleCalendarTokenConfigured:"notion"===a?f.notionConfigured:"git"===a||"github"===a||("outlook_mail"===a||"outlook_calendar"===a)&&!!f.outlookClientConfigConfigured),ai=G(X),aj=(D.data??[]).find(b=>b.key===a),ak=function(a){let{mode:b,unboundEntry:c,stateLastChangedAt:d,dismissedLocally:e}=a;if(e||void 0===c||"disabled"!==b)return!1;if(null===c.startedAt)return!0;let f=C(d),g=C(c.startedAt);return null===f||null===g||f<=g}({mode:Y.mode,unboundEntry:aj,stateLastChangedAt:X.state.lastChangedAt,dismissedLocally:U}),al="delegated"===Y.mode&&null!==_&&Y.delegatedBackend===_&&!!X.supportedModes.includes("native")&&!!_&&A(X).includes(_),am=function(a,b,c){if(null===a||null===c)return[];let d=b.backendConnectors[c];if(!d)return[];let e=new Set(d.requiredCapabilities),f=new Set,g=[];for(let b of[...d.requiredCapabilities,...d.optionalCapabilities])f.has(b)||(f.add(b),g.push({capability:b,label:y(b),present:!0===a[b],required:e.has(b)}));return g.sort((a,b)=>{let c=a=>a.present&&a.required?0:a.present?1:a.required?2:3,d=c(a)-c(b);return 0!==d?d:a.label.localeCompare(b.label)})}(Y.features,X,"native"===Y.mode?Y.nativeBackend:Y.delegatedBackend),an=async b=>{if("delegated"===Y.mode&&b!==Y.delegatedBackend){T(null);try{await E.mutateAsync({key:a,body:{mode:"delegated",delegatedBackend:b}}),F.mutateAsync({key:a,backend:b,liveProbe:!0}).catch(()=>void 0)}catch(a){T($(a))}}},ao=async()=>{if(!L)return;if(R(null),"direct"===Y.mode&&"delegated"===L.targetMode&&"purge"===N&&ai&&!await H({title:ai.confirmTitle,description:ai.confirmDescription,confirmLabel:"Purge",cancelLabel:"Keep dormant",variant:"destructive",requireText:"purge"}))return void P("keep");let b={mode:L.targetMode,..."delegated"===L.targetMode&&L.targetBackend?{delegatedBackend:L.targetBackend}:{},..."native"===L.targetMode&&L.targetBackend?{nativeBackend:L.targetBackend}:{}};try{await E.mutateAsync({key:a,body:b}),("delegated"===L.targetMode||"native"===L.targetMode)&&L.targetBackend&&F.mutateAsync({key:a,backend:L.targetBackend,liveProbe:!0}).catch(()=>void 0),"direct"===Y.mode&&"delegated"===L.targetMode&&"purge"===N&&ai&&(await Promise.all(ai.secretKeys.map(a=>t.api.delete(`/secrets/${a}`).catch(()=>{}))),I.invalidateQueries({queryKey:["config"]})),M(null)}catch(a){R($(a))}};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(Z,{name:X.displayName,badge:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[Y.subTier&&(0,b.jsx)(h.Badge,{variant:"blue",children:"draft-only"===(g=Y.subTier)?"Draft-Only":"full-auto"===g?"Full-Auto":null}),(0,b.jsx)(h.Badge,{variant:"direct"===(k=Y.mode)?"green":"delegated"===k?"amber":"native"===k?"blue":"gray",children:(m=Y.mode,u="native"===Y.mode?Y.nativeBackend:Y.delegatedBackend,"direct"===m?"Direct":"disabled"===m?"Disabled":"native"===m?null===u?"Native":`Native — ${u}`:null===u?"Delegated":`Delegated — ${u}`)})]}),children:(0,b.jsxs)("div",{className:"space-y-3",children:[ak&&aj&&(0,b.jsxs)(j.Alert,{variant:"error",children:[(0,b.jsxs)("p",{className:"text-sm font-medium",children:["Native binding lost — re-configure ",X.displayName,"."]}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:[X.displayName," was set to native mode on"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:aj.priorNativeBackend??"?"})," ","but you switched the main backend to"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:aj.newMainBackend??_??"?"}),". Native bindings are explicit — pick a mode below to restore agent awareness."]}),(0,b.jsx)(i.Button,{variant:"ghost",size:"sm",className:"mt-2 h-6 px-2 text-[11px]",onClick:()=>W(!0),children:"Dismiss"})]}),al&&_&&(0,b.jsxs)(j.Alert,{variant:"info",children:[X.userManagedConnector?(0,b.jsxs)("p",{className:"text-sm",children:["You're delegated to your main backend (",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:_}),"). Switching to ",(0,b.jsx)("strong",{children:"Native"})," swaps the row to an explicit binding against ",_," — the user-installed"," ",X.displayName," MCP is reached the same way, but the mode label honestly reflects that the daemon never proxies this integration, and a future main-backend change will prompt you to re-confirm the binding instead of silently moving the delegation."]}):(0,b.jsxs)("p",{className:"text-sm",children:["You're delegated to your main backend (",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:_}),"). Switching to ",(0,b.jsx)("strong",{children:"Native"})," stops the background worker cadence and lets the agent fetch"," ",X.displayName," in-turn through ",_,"'s own connector — fewer moving parts, no proxy hop."]}),(0,b.jsx)("div",{className:"mt-2 flex items-center gap-2",children:(0,b.jsx)(i.Button,{variant:"outline",size:"sm",className:"h-7 px-2 text-xs",disabled:E.isPending,onClick:()=>{R(null),P("keep"),M({open:!0,targetMode:"native",targetBackend:_})},children:"Switch to native"})})]}),(0,b.jsx)(O,{currentMode:Y.mode,descriptor:X,delegatedBackendCount:ae.length,mainBackend:_,disabled:E.isPending,onSelectMode:a=>{if(a!==Y.mode){if(R(null),P("keep"),"delegated"===a){let a=ae[0];if(!a)return;M({open:!0,targetMode:"delegated",targetBackend:a});return}if("native"===a){if(!_||!ag.includes(_))return;M({open:!0,targetMode:"native",targetBackend:_});return}M({open:!0,targetMode:a})}}}),"delegated"===Y.mode&&ae.length>0&&(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:"Backend"}),(0,b.jsxs)(l.Select,{value:Y.delegatedBackend??ae[0],onValueChange:a=>void an(a),disabled:E.isPending,children:[(0,b.jsx)(l.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(l.SelectValue,{})}),(0,b.jsx)(l.SelectContent,{children:ae.map(a=>{let c=(0,J.isUiPreviewOnlyBackend)(a);return(0,b.jsxs)(l.SelectItem,{value:a,disabled:c,children:[a,c?J.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},a)})})]}),S&&(0,b.jsx)(j.Alert,{variant:"error",className:"mt-2",children:(0,b.jsx)("p",{className:"text-xs",children:S})})]}),Y.variantsMissing&&Y.variantsMissing.length>0&&(0,b.jsxs)(j.Alert,{variant:"error",children:[(0,b.jsxs)("p",{className:"font-medium",children:["Missing ","native"===Y.mode?"native":"delegated"," ","variant file(s) — agent will silently fall back to the direct- mode skill body."]}),(0,b.jsx)("ul",{className:"mt-1 space-y-0.5 font-mono text-[11px]",children:Y.variantsMissing.map(a=>(0,b.jsx)("li",{className:"break-all",children:a},a))})]}),"delegated"===Y.mode&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(aa,{integrationKey:a,entry:Y,descriptor:X,featureMatrix:am}),Y.delegatedBackend&&!X.userManagedConnector&&(0,b.jsx)(ac,{integrationKey:a,delegatedBackend:Y.delegatedBackend,delegatedModel:X.state.delegatedModel??null,currentMode:Y.mode}),Y.delegatedBackend&&!X.userManagedConnector&&(0,b.jsx)(V,{integrationKey:a,descriptor:X,delegatedBackend:Y.delegatedBackend,deniedTools:X.state.deniedTools,currentMode:Y.mode}),!X.userManagedConnector&&(0,b.jsx)(af,{integrationKey:a})]}),"native"===Y.mode&&(0,b.jsx)(ab,{integrationKey:a,entry:Y,descriptor:X,featureMatrix:am,mainBackend:_}),"direct"===Y.mode&&(0,b.jsx)(ad,{integrationKey:a,credentialsPresent:ah}),"disabled"===Y.mode&&(0,b.jsx)(j.Alert,{variant:"info",children:(0,b.jsx)("p",{children:"Disabled. The agent does not observe or act on this integration. Flip the mode above to re-enable."})}),e]})}),L&&(0,b.jsx)(K,{open:L.open,onOpenChange:a=>{M(b=>b?{...b,open:a}:null),a||R(null)},descriptor:X,currentMode:Y.mode,currentBackend:"native"===Y.mode?Y.nativeBackend:Y.delegatedBackend,targetMode:L.targetMode,targetBackend:L.targetBackend,onTargetBackendChange:a=>M(b=>b?{...b,targetBackend:a}:null),directCredentialsPresent:ah,gmailAccountCount:d,tokenHandling:N,onTokenHandlingChange:P,onConfirm:ao,isPending:E.isPending,error:Q})]})}],36581)}];
1
+ module.exports=[36581,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(54506),e=a.i(78019),f=a.i(39293),g=a.i(85857),h=a.i(7384),i=a.i(21218),j=a.i(29629),k=a.i(30400),l=a.i(47696),m=a.i(57216),n=a.i(74794),o=a.i(54150),p=a.i(40410),q=a.i(47026),r=a.i(28314),s=a.i(81130),t=a.i(59974),u=a.i(48558);a.i(70010);var v=a.i(59825),w=a.i(58906);let x={search:"Search",read:"Read",draft:"Drafts",update_draft:"Update drafts",send:"Send",forward:"Forward",delete:"Archive / delete",label:"Labels",create_label:"Create labels",read_attachment:"Read attachments",batch:"Batch operations",list_events:"List events",get_event:"Read event",create_event:"Create event",update_event:"Update event",delete_event:"Delete event",respond_to_event:"RSVP",respond_event:"RSVP",suggest_time:"Suggest time",list_calendars:"List calendars",get_availability:"Check availability",batch_read:"Batch read"};function y(a){let b=x[a];return void 0!==b?b:a.split("_").map(a=>0===a.length?a:a[0].toUpperCase()+a.slice(1)).join(" ")}function z(a){return a.userManagedConnector?[...w.RUNTIME_AVAILABLE_BACKEND_IDS]:Object.keys(a.backendConnectors)}function A(a){return a.userManagedConnector?[...v.NATIVE_CONNECTOR_BACKEND_IDS]:Object.keys(a.backendConnectors)}let B="__auto__";function C(a){let b=Date.parse(a.endsWith("Z")||/[+-]\d{2}:\d{2}$/.test(a)?a:a.replace(" ","T")+"Z");return Number.isNaN(b)?null:b}function D(a){return 0===a?"$0":a<.01?"<$0.01":`$${a.toFixed(2)}`}function E(a,b){if("gmail"!==a||b<=1)return null;let c=b-1;return`Delegated mode supports one Google account. Your other ${c} Gmail ${1===c?"account":"accounts"} will be disabled (tokens kept — re-enable by switching back to direct).`}let F={gmail:{presentClause:"Gmail OAuth tokens are still in the keychain",absentClause:"Gmail has no OAuth tokens yet",setupPhrase:"the 5-step Google Cloud setup"},google_calendar:{presentClause:"Google Calendar OAuth tokens are still in the keychain",absentClause:"Google Calendar has no OAuth tokens yet",setupPhrase:"the 5-step Google Cloud setup"},notion:{presentClause:"The Notion API key is still in the keychain",absentClause:"Notion has no API key in the keychain yet",setupPhrase:"creating a Notion internal integration, pasting the key, and sharing each database with the integration"},git:{presentClause:"Git direct mode uses the local git CLI and watched repository list",absentClause:"Git direct mode needs watched repositories before it can poll",setupPhrase:"adding at least one watched repository"},github:{presentClause:"GitHub direct mode uses the local gh CLI",absentClause:"GitHub direct mode needs gh auth login outside the daemon",setupPhrase:"authenticating the gh CLI and optionally adding watched repositories"},outlook_mail:{presentClause:"The Outlook BYOA client config is still in the keychain",absentClause:"Outlook has no BYOA client config in the keychain yet",setupPhrase:"registering a Microsoft Identity (Azure) app and authenticating each Outlook mailbox"},outlook_calendar:{presentClause:"The Outlook BYOA client config is still in the keychain (shared with Outlook Mail)",absentClause:"Outlook Calendar has no BYOA client config to reuse yet",setupPhrase:"registering a Microsoft Identity (Azure) app via the Outlook Mail card"},browser_history:{presentClause:"Browser history consent is already accepted on this device",absentClause:"Browser history consent has not been accepted yet",setupPhrase:"accepting the on-device browser history consent latch"}};function G(a){let b=a.directSetup?.credentialKeys??[];if(0===b.length)return null;let c=F[a.key],d=b.join(" + ");return{secretKeys:b,optionDescription:`Deletes ${d} from the keychain after the mode flip. Reverting to direct later will require ${c.setupPhrase}. Asks for a second confirmation.`,confirmTitle:`Purge ${a.displayName} credentials?`,confirmDescription:`This removes ${d} from the keychain. To restore direct mode later you will need to redo ${c.setupPhrase}.`}}var H=a.i(92241),I=a.i(61213),J=a.i(40091);function K(a){let{open:c,onOpenChange:d,descriptor:e,currentMode:f,currentBackend:g,targetMode:h,targetBackend:k,onTargetBackendChange:m,directCredentialsPresent:n,gmailAccountCount:o,tokenHandling:p,onTokenHandlingChange:q,onConfirm:r,isPending:s,error:t}=a,u=function(a){try{return function(a,b){let{mode:c,backend:d}=a,{toMode:e,toBackend:f}=b;if(c===e)return"delegated"===c&&f&&f!==d?{kind:"delegated-backend-change",toBackend:f}:{kind:"no-op"};if("native"===e){if(!f)throw Error("toBackend required for native flip");return"direct"!==c&&"delegated"!==c&&"disabled"!==c?{kind:"to-native",fromMode:"disabled",toBackend:f}:{kind:"to-native",fromMode:c,toBackend:f}}if("native"===c){if("direct"===e)return{kind:"native-to-direct",needsOauthSetup:!a.directCredentialsPresent};if("delegated"===e){if(!f)throw Error("toBackend required for native→delegated");return{kind:"native-to-delegated",toBackend:f}}return{kind:"native-to-disabled"}}if("direct"===c&&"delegated"===e){if(!f)throw Error("toBackend required for direct→delegated");return{kind:"direct-to-delegated",toBackend:f}}if("delegated"===c&&"direct"===e)return{kind:"delegated-to-direct",needsOauthSetup:!a.directCredentialsPresent};if("disabled"===c){if("delegated"===e){if(!f)throw Error("toBackend required for delegated flip");return{kind:"enable-from-disabled",to:"delegated",toBackend:f}}return{kind:"enable-from-disabled",to:"direct"}}return{kind:"disable-from-active"}}(a.from,{toMode:a.to.mode,toBackend:a.to.backend})}catch{return null}}({from:{mode:f,backend:g,directCredentialsPresent:n},to:{mode:h,backend:k}}),v=z(e),w="delegated"===h&&v.length>1,x="direct"===f&&"delegated"===h&&n&&null!==e.directSetup;return(0,b.jsx)(I.Sheet,{open:c,onOpenChange:d,children:(0,b.jsx)(I.SheetContent,{children:(0,b.jsxs)("div",{className:"flex h-full flex-col",children:[(0,b.jsx)(I.SheetHeader,{children:(0,b.jsx)(I.SheetTitle,{children:function(a,b){if(!b||"no-op"===b.kind)return`${a} — no change`;if("direct-to-delegated"===b.kind)return`Delegate ${a} to ${b.toBackend}?`;if("delegated-to-direct"===b.kind)return`Switch ${a} to direct mode?`;if("delegated-backend-change"===b.kind)return`Change ${a} delegate to ${b.toBackend}?`;if("enable-from-disabled"===b.kind){let c="direct"===b.to?"direct":`delegated to ${b.toBackend??"?"}`;return`Enable ${a} (${c})?`}return"to-native"===b.kind?`Switch ${a} to native (${b.toBackend})?`:"native-to-direct"===b.kind?`Switch ${a} to direct mode?`:"native-to-delegated"===b.kind?`Switch ${a} to delegated (${b.toBackend})?`:(b.kind,`Disable ${a}?`)}(e.displayName,u)})}),(0,b.jsxs)("div",{className:"mt-4 min-h-0 flex-1 space-y-4 overflow-y-auto px-1",children:[w&&(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:"Backend"}),(0,b.jsxs)(l.Select,{value:k??v[0],onValueChange:a=>m?.(a),disabled:s,children:[(0,b.jsx)(l.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(l.SelectValue,{})}),(0,b.jsx)(l.SelectContent,{children:v.map(a=>{let c=(0,J.isUiPreviewOnlyBackend)(a);return(0,b.jsxs)(l.SelectItem,{value:a,disabled:c,children:[a,c?J.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},a)})})]})]}),u&&(0,b.jsx)(L,{action:u,descriptor:e,gmailAccountCount:o}),x&&(0,b.jsx)(M,{value:p,onChange:q,disabled:s,purgeDescription:G(e)?.optionDescription}),t&&(0,b.jsx)(j.Alert,{variant:"error",children:t})]}),(0,b.jsxs)("div",{className:"mt-6 flex items-center justify-end gap-2 border-t border-border pt-4",children:[(0,b.jsx)(i.Button,{variant:"outline",size:"sm",onClick:()=>d(!1),disabled:s,children:"Cancel"}),(0,b.jsxs)(i.Button,{variant:u?.kind==="disable-from-active"?"destructive":"default",size:"sm",onClick:()=>void r(),disabled:s||null===u||"no-op"===u.kind,children:[s&&(0,b.jsx)(H.Loader2,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}),function(a){if(!a)return"Apply";switch(a.kind){case"direct-to-delegated":case"enable-from-disabled":return"Apply";case"delegated-to-direct":case"native-to-direct":return a.needsOauthSetup?"Continue to setup":"Resume direct mode";case"delegated-backend-change":return"Change delegate";case"disable-from-active":case"native-to-disabled":return"Disable";case"to-native":return"Switch to native";case"native-to-delegated":return"Switch to delegated";case"no-op":return"—"}}(u)]})]})]})})})}function L({action:a,descriptor:c,gmailAccountCount:d}){var e,f,g,h,i,k,l;if("direct-to-delegated"===a.kind){let e=function(a,b,c){let d=[];"gmail"===a&&d.push({message:"Mail poller stops observing Gmail — receipts, travel, and Kindle classifiers will not run against new messages.",reversible:!0},{message:"Local FTS5 search on Gmail messages is unavailable. The agent searches through its backend connector instead.",reversible:!0},{message:"Only one Google account is reachable at a time. Additional Gmail accounts will be disabled.",reversible:!0}),"google_calendar"===a&&d.push({message:"Calendar poller stops running. Event awareness drops from 5-minute to hourly granularity.",reversible:!0},{message:"15-minute imminent-event alerts are unavailable — the agent learns about new events on the next activity scan.",reversible:!0}),"notion"===a&&d.push({message:"Notion poller stops observing database edits. Recent-edit awareness shifts from per-poll to inline notion-search inside the activity scan, with reduced recall on less-typed databases.",reversible:!0},{message:"Structured property filter on database queries is unavailable. The agent falls back to semantic notion-search plus client-side filtering — fine for small databases, awkward for >100-row workspaces.",reversible:!0},{message:"Native page archive is unavailable. The agent uses workarounds (status-property update, or move-to-trash-page) and DMs you naming the workaround taken.",reversible:!0}),"git"===a&&d.push({message:"GitWatcher stops polling directly. Git lifecycle checks move to a scheduled backend session, so detection is bounded by the delegated cadence and backend quota.",reversible:!0},{message:"Daemon-side project document updates no longer run from direct classifier output. The delegated session must inspect the repo and update context through the project-doc API.",reversible:!0}),"github"===a&&d.push({message:"GitHubPoller stops polling notifications and workflow runs directly. The delegated session uses gh read-only checks on its cadence instead.",reversible:!0},{message:"Review requests, CI failures, assignments, and security alerts may arrive later because they depend on the delegated cron tick.",reversible:!0}),"outlook_mail"===a&&d.push({message:"Mail poller stops observing Outlook accounts; receipts, travel, and Kindle classifiers will not run against new Outlook messages.",reversible:!0},{message:"Local FTS5 search on Outlook messages is unavailable. The agent searches through whichever Outlook MCP / connector you have wired up on the selected backend.",reversible:!0},{message:`You must register an Outlook / Microsoft Graph MCP server on the ${b} backend before the agent can send, read, or label Outlook mail. The daemon does not proxy this integration.`,reversible:!1}),"outlook_calendar"===a&&d.push({message:"On-demand Outlook calendar reads via /api/calendar/outlook return 410. Calendar awareness depends entirely on the MCP / connector you configure on the selected backend.",reversible:!0},{message:`You must register an Outlook / Microsoft Graph MCP server on the ${b} backend that exposes calendar reads/writes. The daemon does not proxy this integration.`,reversible:!1});let e=c.backendConnectors[b];if(e&&"gmail"===a)for(let a of["send","forward","delete","read_attachment"].filter(a=>!e.optionalCapabilities.includes(a)))d.push({message:`${y(a)} is unavailable on this backend — the agent will draft but not ${function(a){switch(a){case"send":return"send";case"forward":return"forward";case"delete":return"archive or delete";case"read_attachment":return"read attachments";default:return a}}(a)}.`,reversible:!0});return d}(c.key,a.toBackend,c),f=E(c.key,d);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(j.Alert,{variant:"warning",children:[(0,b.jsx)("p",{className:"font-medium",children:"You will lose these direct-mode features"}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"All losses are reversible — OAuth tokens stay in the keychain by default so switching back is frictionless."})]}),f&&(0,b.jsx)(j.Alert,{variant:"warning",children:f}),(0,b.jsx)("ul",{className:"space-y-1.5 text-sm",children:e.map((a,c)=>(0,b.jsxs)("li",{className:"flex items-start gap-2",children:[(0,b.jsx)("span",{className:"mt-1 inline-block h-1.5 w-1.5 shrink-0 rounded-full bg-warning"}),(0,b.jsx)("span",{className:"text-muted-foreground",children:a.message})]},c))})]})}if("delegated-to-direct"===a.kind){let d,g=(c.state.deniedTools?.length??0)>0;return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(j.Alert,{variant:a.needsOauthSetup?"warning":"success",children:(0,b.jsx)("p",{className:"text-sm",children:(e=c.key,f=!a.needsOauthSetup,d=F[e],f?`${d.presentClause}. Switching back re-enables polling with no re-consent step.`:`${d.absentClause}. Switching to direct will walk through ${d.setupPhrase}.`)})}),g&&(0,b.jsx)(j.Alert,{variant:"info",children:(0,b.jsx)("p",{className:"text-sm",children:"Your tool deny list will be retained but is inactive in direct mode. Re-enabling delegated mode restores it."})})]})}if("delegated-backend-change"===a.kind)return(0,b.jsx)(j.Alert,{variant:"info",children:(0,b.jsxs)("p",{className:"text-sm",children:["The integration stays delegated — only the backend changes to"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:a.toBackend}),". Skills and task-flow variants re-materialize on the next session."]})});if("enable-from-disabled"===a.kind)return(0,b.jsx)(j.Alert,{variant:"info",children:(0,b.jsx)("p",{className:"text-sm",children:"direct"===a.to?"The integration will poll the service directly. You may need to complete OAuth setup.":`The integration will delegate to the ${a.toBackend} backend connector.`})});if("disable-from-active"===a.kind)return(0,b.jsx)(j.Alert,{variant:"warning",children:(0,b.jsx)("p",{className:"text-sm",children:"The daemon stops observing this integration. Any poller associated with it pauses; the agent's session templates drop the skill / task-flow body that depends on it. Re-enabling is one click — credentials stay in the keychain."})});if("to-native"===a.kind){let e,f,k,l,m,n=(g=a.fromMode,h=a.toBackend,e=[],f=c.displayName,"direct"===g&&(e.push({message:`The daemon's background poller for ${f} stops. The agent fetches via ${h}'s native connector during DM and activity_scan turns instead.`,reversible:!0}),e.push({message:"Local FTS5 search / classifier passes (receipts, travel, Kindle for mail; calendar reconcile for events) stop running. Direct-mode data already in the DB stays searchable; new data lands as in-turn observations only.",reversible:!0}),e.push({message:`Your direct-mode credentials for ${f} stay in the keychain (dormant) so a future flip back to direct re-uses them without re-consent. Delete them explicitly via the direct→delegated "Purge from keychain" flow if you want them gone.`,reversible:!0})),"delegated"===g&&(e.push({message:"The delegated-sync worker stops ticking on its cadence. Observations land at activity_scan granularity instead, fetched by the main DM session itself.",reversible:!0}),e.push({message:"Per-call proxy cost shifts from the (cheap) lite-tier delegated model to your main DM session's medium tier — typically ~20–30× more expensive per fetch.",reversible:!0})),"disabled"===g&&e.push({message:"The integration becomes reachable from activity_scan and DM again — currently it is silent. No background poller runs; the agent fetches in-turn.",reversible:!0}),e.push({message:`${h} must already have its ${f} connector configured (e.g. claude.ai/connections, ~/.codex MCP entry, or ~/.gemini extension). The daemon does not see ${f} credentials.`,reversible:!1}),e.push({message:"Switching the main backend later automatically disables this row (an explicit binding, not a routing rule). You'll be asked to re-configure on the new backend.",reversible:!0}),e),o="direct"===a.fromMode?E(c.key,d):null,p=(l=Math.round((.39-(k=.014*("delegated"===(i=a.fromMode))))*365),m=k>0?Math.round(.39/k):null,{fromDailyUsd:k,toDailyUsd:.39,yearlyDeltaUsd:l,multiplier:m,fromLabel:"delegated"===i?"delegated worker":"direct"===i?"direct poller (no LLM tokens)":"disabled (no fetch at all)"});return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(j.Alert,{variant:"info",children:[(0,b.jsxs)("p",{className:"text-sm font-medium",children:["Native mode — the agent fetches ",c.displayName," in-turn via ",a.toBackend,"'s connector. No background poller, no delegated worker."]}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"We run a live capability probe before committing the flip so a missing connector capability surfaces here, not at the next DM / activity_scan turn."})]}),o&&(0,b.jsx)(j.Alert,{variant:"warning",children:o}),(0,b.jsxs)("div",{className:"rounded-md border border-warning/40 bg-warning/10 p-3 text-xs",children:[(0,b.jsx)("p",{className:"font-medium text-warning",children:"Estimated cost shift (typical workload)"}),(0,b.jsxs)("p",{className:"mt-1 text-warning/80",children:["From ",p.fromLabel," ",(0,b.jsxs)("code",{className:"rounded bg-warning/15 px-1 py-0.5 font-mono text-[11px]",children:["≈ ",D(p.fromDailyUsd),"/day"]})," ","→ native MCP on ",a.toBackend," ",(0,b.jsxs)("code",{className:"rounded bg-warning/15 px-1 py-0.5 font-mono text-[11px]",children:["≈ ",D(p.toDailyUsd),"/day"]}),null!==p.multiplier&&(0,b.jsxs)(b.Fragment,{children:[" ","— roughly"," ",(0,b.jsxs)("strong",{children:[p.multiplier,"×"]})," more per integration"]}),"."]}),(0,b.jsxs)("p",{className:"mt-1 text-[11px] text-warning/70",children:["Marginal ~$",p.yearlyDeltaUsd,"/year per integration at typical volume. Native is recommended when the alternative is leaving the integration disabled — not as a free upgrade from delegated."]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-2 text-xs font-medium text-muted-foreground",children:"What changes"}),(0,b.jsx)("ul",{className:"space-y-1.5 text-sm",children:n.map((a,c)=>(0,b.jsxs)("li",{className:"flex items-start gap-2",children:[(0,b.jsx)("span",{className:`mt-1 inline-block h-1.5 w-1.5 shrink-0 rounded-full ${a.reversible?"bg-warning":"bg-destructive"}`}),(0,b.jsx)("span",{className:"text-muted-foreground",children:a.message})]},c))})]})]})}if("native-to-direct"===a.kind){let d;return(0,b.jsx)(j.Alert,{variant:a.needsOauthSetup?"warning":"success",children:(0,b.jsx)("p",{className:"text-sm",children:(k=c.key,l=!a.needsOauthSetup,d=F[k],l?`${d.presentClause} from a previous direct-mode setup. Switching back re-enables polling without re-consent.`:`${d.absentClause} — native mode left credential management to the backend. Switching to direct will walk through ${d.setupPhrase}.`)})})}return"native-to-delegated"===a.kind?(0,b.jsx)(j.Alert,{variant:"info",children:(0,b.jsxs)("p",{className:"text-sm",children:["The agent stops calling ",c.displayName," directly through the main backend. Instead, the daemon proxies through"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:a.toBackend})," ","and the delegated-sync worker resumes its cadence — observations land server-side again."]})}):"native-to-disabled"===a.kind?(0,b.jsx)(j.Alert,{variant:"warning",children:(0,b.jsxs)("p",{className:"text-sm",children:["The agent loses awareness of ",c.displayName,". No background poller, no in-turn fetch — the activity scan and DM flow drop the integration from their actionable steps. Re-enabling is one click; no data is destroyed."]})}):null}function M({value:a,onChange:c,disabled:d,purgeDescription:e}){return(0,b.jsxs)("div",{className:"rounded-md border border-border bg-muted/30 p-3",children:[(0,b.jsx)("p",{className:"mb-2 text-sm font-medium",children:"Direct-mode credential handling"}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(N,{checked:"keep"===a,disabled:d,onSelect:()=>c("keep"),label:"Keep dormant (recommended)",description:"Credentials stay in the keychain. Reverting to direct is a one-click flip with no re-consent step."}),(0,b.jsx)(N,{checked:"purge"===a,disabled:d,onSelect:()=>c("purge"),label:"Purge from keychain",description:e??"Deletes the direct-mode credentials after the mode flip. Reverting to direct later will require redoing the original setup. Asks for a second confirmation."})]})]})}function N({checked:a,disabled:c,onSelect:d,label:e,description:f}){return(0,b.jsxs)("label",{className:`flex cursor-pointer items-start gap-2 rounded-md border p-2 text-xs transition ${a?"border-primary bg-primary/5":"border-border hover:bg-muted/50"} ${c?"pointer-events-none opacity-50":""}`,children:[(0,b.jsx)("input",{type:"radio",name:"token-handling",className:"mt-0.5",checked:a,disabled:c,onChange:d}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"font-medium text-foreground",children:e}),(0,b.jsx)("p",{className:"mt-0.5 text-muted-foreground",children:f})]})]})}function O({currentMode:a,descriptor:d,onSelectMode:f,delegatedBackendCount:g,mainBackend:h,disabled:i=!1,groupId:j}){let[k,l]=(0,c.useState)(()=>new Set),n=j??`mode-explainer-${d.key}`,o=A(d),p=null!=h&&o.includes(h),q=d.supportedModes.includes("native")?h?p?null:`Your main backend (${h}) ships no native connector for ${d.displayName}.`:"Set a main backend first — native binds to it.":null;return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:"Mode"}),(0,b.jsx)("ul",{className:"space-y-2",children:d.supportedModes.map(c=>{let j=function(a,b,c=null){let d=b.displayName;if("direct"===a)return{title:"Direct",brief:`The daemon talks to ${d} itself using credentials you provide.`,details:[`Lowest token cost — your conversation backend (Claude / Codex / Gemini) does not pay tokens to fetch ${d} data; the daemon makes the API call directly and hands results to the agent.`,`Built-in safety guardrails apply: the daemon classifies destructive operations (send / delete / overwrite) and routes them through approval flows before they reach ${d}.`,function(a){switch(a){case"gmail":case"google_calendar":return"Requires a Google Cloud OAuth credential — upload the credentials JSON and complete the browser consent step on this screen before the daemon can poll.";case"notion":return"Requires a Notion internal-integration API key — paste it in this app and share each target database with the integration in Notion.";case"git":return"Requires the local git CLI plus a watched-repository list — no credential is stored in this app; the daemon reads the repos with your existing git config.";case"github":return"Requires the local gh CLI authenticated outside the daemon (gh auth login) — no credential is stored in this app; the daemon shells out to gh.";case"outlook_mail":case"outlook_calendar":return"Requires a Microsoft Identity (Azure BYOA) client config plus a per-account MSAL sign-in for each Outlook mailbox.";case"browser_history":return"Requires accepting the on-device browser history consent latch — no external credential is stored; the daemon reads local browser history databases directly."}}(b.key),"Local observers stay on — receipts, travel, calendar-imminent alerts, and FTS5 search continue to run."],footnote:"Recommended when you have the credentials ready and want the lowest token cost."};if("delegated"===a)return{title:"Delegated",brief:`Reuse Claude Code / Gemini CLI / Codex's existing connectors (MCP, plugin, or built-in connector) to reach ${d}.`,details:[`When the agent needs ${d} data, the daemon invokes the chosen CLI (Claude Code / Codex / Gemini) which calls ${d} through its already-configured connector. A small per-call token cost is incurred each time the CLI is invoked.`,`Concrete flow: your main DM agent (e.g. Claude) is asked to read ${d}; it calls this app's API; the daemon invokes the chosen CLI (e.g. Gemini CLI) which uses its already-configured connector to talk to ${d}; the result flows back through the daemon to your main agent.`,`Effective when the backend that handles your DM conversation differs from the backend that has the ${d} connector — for example, a Claude Code main agent borrowing Gemini CLI's Gmail connector to save on Claude tokens or to leverage a connector you already configured there.`,"No extra credentials live in this app — auth is whatever Claude / Codex / Gemini already had configured (claude.ai/connections, ~/.codex MCP entries, ~/.gemini extensions).","Daemon-side safety guardrails run more loosely here because the actual API call happens inside the CLI, not on the daemon. Per-tool deny-lists still apply on the proxy layer."],footnote:"Recommended when you want one backend to handle conversation and another to handle integration access, or when you do not want to manage GCP / Notion credentials yourself."};if("native"===a){let a=function(a){switch(a){case"claude":return"Claude";case"codex":return"Codex";case"gemini":return"Gemini";case"opencode":return"OpenCode";default:return"your main backend"}}(c);return{title:`Native — via ${a}`,brief:`Your DM agent (${a}) reaches ${d} directly through its own connector — no background polling and no daemon-side proxy.`,details:[`Pick this when you already use ${a}'s ${d} connector for ad-hoc work and just want the agent's activity scan and DM replies to use the same connector instead of the daemon. No background poller runs, no delegated worker ticks, no per-call proxy hop — the agent fetches in-turn when it needs ${d}.`,'Token cost moves from the (cheap) delegated worker to your main DM session. Reads sit on the same prompt as the rest of the turn, which raises the medium-tier token bill — typically by an order of magnitude per integration vs. delegated. Worth it when you would otherwise leave the integration "Disabled" and lose activity-scan awareness entirely.',`${a} must already have its ${d} connector configured (e.g. claude.ai/connections for Claude, an MCP entry for Codex, an extension for Gemini). The daemon never sees your ${d} credentials; auth and revocation live in ${a}.`,"Daemon-side safety guardrails (destructive-op confirmation, deny-lists) still cover the absolute-block layer. Per-tool deny lists do NOT apply here — the call never crosses the daemon proxy, so deny enforcement is whatever your backend allows.","If you switch the main backend later, this row is automatically flipped to Disabled and you'll be asked to re-configure. Native is an explicit binding to the backend, not a routing rule."],footnote:`Recommended when ${a} already has the ${d} connector wired up and you want the agent to use it for activity scan / DM, instead of either running a background poller or leaving the integration disabled.`}}return{title:"Disabled",brief:`The daemon does not observe or act on ${d} at all.`,details:[`The agent loses awareness of ${d} entirely — no observers, no skill body, no task-flow guidance. It will not bring up ${d} data on its own.`,`Pick this when the backend you DM with already has ${d} access through its own connectors and you do not need cross-backend delegation. Your agent can still answer ad-hoc questions about ${d} via that backend's native tools, but the daemon will not orchestrate it.`,`Pick this when you simply do not use ${d}.`,"Switching back to direct or delegated later is one click; no data is destroyed."],footnote:"Recommended when this integration is not relevant to you, or your main backend already covers it natively."}}(c,d,h??null),o=c===a,p=k.has(c),r="delegated"===c&&0===g,s="native"===c&&null!==q,t=i||r||s;return(0,b.jsxs)("li",{className:(0,u.cn)("rounded-md border transition-colors",o?"border-primary bg-primary/5":"border-border bg-card",t&&"opacity-60"),children:[(0,b.jsxs)("label",{className:(0,u.cn)("flex cursor-pointer items-start gap-3 p-3",t&&"cursor-not-allowed"),children:[(0,b.jsx)("input",{type:"radio",name:n,className:"mt-1 h-4 w-4 shrink-0",checked:o,disabled:t,onChange:()=>{t||o||f(c)},"aria-label":`Set mode to ${j.title}`}),(0,b.jsxs)("div",{className:"flex-1 space-y-1",children:[(0,b.jsx)("p",{className:"text-sm font-medium text-foreground",children:j.title}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:j.brief}),r&&(0,b.jsx)("p",{className:"text-xs text-warning",children:"No backend connector is registered for this integration — Delegated mode cannot be activated."}),s&&q&&(0,b.jsx)("p",{className:"text-xs text-warning",children:q})]})]}),(0,b.jsxs)(m.Collapsible,{open:p,onOpenChange:a=>{l(b=>{let d=new Set(b);return a?d.add(c):d.delete(c),d})},children:[(0,b.jsxs)(m.CollapsibleTrigger,{type:"button",className:"group flex w-full items-center gap-1 border-t border-border/50 px-3 py-1.5 text-left text-[11px] font-medium text-muted-foreground hover:bg-muted/40 hover:text-foreground","aria-label":`Toggle details for ${j.title} mode`,children:[(0,b.jsx)(e.ChevronDown,{className:(0,u.cn)("h-3 w-3 transition-transform",p&&"rotate-180")}),p?"Hide details":"Show details"]}),(0,b.jsx)(m.CollapsibleContent,{children:(0,b.jsxs)("div",{className:"space-y-2 px-3 pb-3 pt-1 text-xs leading-relaxed",children:[(0,b.jsx)("ul",{className:"list-disc space-y-1.5 pl-5 text-muted-foreground",children:j.details.map((a,c)=>(0,b.jsx)("li",{children:a},c))}),j.footnote&&(0,b.jsx)("p",{className:"rounded bg-muted/50 px-2 py-1 text-[11px] italic text-foreground/80",children:j.footnote})]})})]})]},c)})})]})}var P=a.i(42732),Q=a.i(48033),R=a.i(869);function S(a){let b=new Set,c=[];for(let d of a.split(/\r?\n/)){let a=d.trim();a&&(b.has(a)||(b.add(a),c.push(a)))}return c}let T={gmail:{codex:{heading:"Gmail (delegated to Codex) — pre-populated entries:",entries:[{tool:"send_email",parenNote:"sending a freshly-composed message",verdict:"strictly destructive"},{tool:"delete_emails",parenNote:"move to Trash — the connector's only delete primitive",verdict:"strictly destructive"},{tool:"archive_emails",parenNote:"archive",verdict:'recoverable from "All Mail" but easy to lose track of'},{tool:"apply_labels_to_emails",verdict:"mutating; can hide threads"}]},claude:{heading:"Gmail (delegated to Claude) — the hosted Gmail connector is draft-only (no send / delete / archive). The only mutating ops are label changes:",entries:[{tool:"label_message",verdict:"mutating"},{tool:"label_thread",verdict:"mutating"}]}},google_calendar:{codex:{heading:"Google Calendar — pre-populated entries:",entries:[{tool:"delete_event",verdict:"strictly destructive"},{tool:"update_event",parenNote:"edits to existing events",verdict:"mutating; not strictly destructive but easy to undo wrong"}]},claude:{heading:"Google Calendar — pre-populated entries:",entries:[{tool:"delete_event",verdict:"strictly destructive"},{tool:"update_event",parenNote:"edits to existing events",verdict:"mutating; not strictly destructive but easy to undo wrong"}]}}};function U({integrationKey:a,delegatedBackend:c}){let d=T[a]?.[c];return(0,b.jsxs)(k.Card,{className:"bg-warning/5",children:[(0,b.jsx)("h4",{className:"text-sm font-semibold",children:"Your destructive-action floor"}),(0,b.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"By default, the wizard pre-populated the destructive tools below into your deny list. The agent can still read, search, and draft — it just can't send, archive, or delete unless you remove the corresponding entry."}),d&&(0,b.jsxs)("div",{className:"mt-3 space-y-2 text-xs",children:[(0,b.jsx)("p",{className:"font-medium text-foreground",children:d.heading}),d.preamble&&(0,b.jsx)("p",{className:"text-muted-foreground",children:d.preamble}),(0,b.jsx)("ul",{className:"ml-4 list-disc space-y-1 text-muted-foreground",children:d.entries.map(a=>(0,b.jsxs)("li",{children:[(0,b.jsx)("code",{className:"font-mono text-[11px] text-foreground",children:a.tool}),a.parenNote&&(0,b.jsxs)("span",{children:[" (",a.parenNote,")"]}),(0,b.jsx)("span",{children:" — "}),(0,b.jsx)("em",{children:a.verdict})]},a.tool))})]}),(0,b.jsxs)("div",{className:"mt-3 space-y-2 text-xs text-muted-foreground",children:[(0,b.jsxs)("p",{children:[(0,b.jsx)("span",{className:"font-medium text-foreground",children:"Why these defaults?"})," ","The list errs conservative on purpose: the floor here is what keeps the CLAUDE.md"," ",(0,b.jsx)("em",{children:'"destructive ops require user confirmation"'})," ","invariant intact on a fresh install. If you want the agent to archive freely, remove ",(0,b.jsx)("code",{className:"font-mono",children:"archive_emails"}),". If you trust it to update calendar events, remove"," ",(0,b.jsx)("code",{className:"font-mono",children:"update_event"}),". The strictly-destructive entries (",(0,b.jsx)("code",{className:"font-mono",children:"send_email"}),","," ",(0,b.jsx)("code",{className:"font-mono",children:"delete_emails"}),","," ",(0,b.jsx)("code",{className:"font-mono",children:"delete_event"}),") are the ones we recommend keeping."]}),(0,b.jsxs)("p",{children:["Tool names are bare — no ",(0,b.jsx)("code",{className:"font-mono",children:"mcp__*"})," ","prefix, no leading underscore (the daemon prepends the connector's namespace before forwarding). They match the connector you've delegated to: Codex Gmail uses ",(0,b.jsx)("code",{className:"font-mono",children:"send_email"}),"/",(0,b.jsx)("code",{className:"font-mono",children:"delete_emails"}),"/etc., Claude Gmail uses ",(0,b.jsx)("code",{className:"font-mono",children:"label_message"}),"/",(0,b.jsx)("code",{className:"font-mono",children:"label_thread"}),"/etc. Patterns support ",(0,b.jsx)("code",{className:"font-mono",children:"*"})," as a suffix — for example, ",(0,b.jsx)("code",{className:"font-mono",children:"delete_*"})," matches everything that starts with ",(0,b.jsx)("code",{className:"font-mono",children:"delete_"}),"."]}),(0,b.jsx)("p",{children:"Anything you deny here is rejected at the daemon, regardless of which path the agent takes (direct API, cross-backend proxy, or same-backend native MCP)."})]})]})}function V({integrationKey:a,descriptor:e,delegatedBackend:f,deniedTools:g,currentMode:l}){let[m,n]=(0,c.useState)(g??[]),[o,p]=(0,c.useState)(!1),[r,s]=(0,c.useState)(null),[u,v]=(0,c.useState)(!1),w=(0,q.usePatchIntegration)();(0,c.useEffect)(()=>{let a=[...g??[]];n(b=>!function(a,b){if(a.length!==b.length)return!1;let c=new Set(a);for(let a of b)if(!c.has(a))return!1;return!0}(b,a)?o?b:a:(p(!1),b))},[g,f]),(0,c.useEffect)(()=>{s(null),v(!1)},[f]);let x=(0,c.useMemo)(()=>(function(a,b,c){if(!b)return null;let d=a.backendConnectors[b];if(!d)return null;let e=new Set(c??[]),f=new Set(d.requiredCapabilities),g=new Set,h=[];for(let a of d.optionalCapabilities){if(g.has(a))continue;g.add(a);let b=[...d.capabilityTools[a]??[]],c=b.length>0&&b.every(a=>e.has(a));h.push({capability:a,label:y(a),tools:b,required:f.has(a),denied:c})}for(let a of d.requiredCapabilities){if(g.has(a))continue;g.add(a);let b=[...d.capabilityTools[a]??[]];h.push({capability:a,label:y(a),tools:b,required:!0,denied:!1})}let i=new Set;for(let a of Object.values(d.capabilityTools))for(let b of a)i.add(b);return{rows:h,staleDeniedTools:(c??[]).filter(a=>!i.has(a)),softEnforcement:"claude"!==b}})(e,f,m),[e,f,m]);if("delegated"!==l||!x)return null;let z=x.rows.filter(a=>!a.required),A=x.rows.filter(a=>a.required),B=async()=>{s(null),v(!1);try{await w.mutateAsync({key:a,body:{mode:"delegated",delegatedBackend:f,deniedTools:[...m]}}),p(!1),v(!0),window.setTimeout(()=>v(!1),1500)}catch(a){s(function(a){if(a instanceof t.ApiError){let b=a.body;if(b?.error==="unknown_tool")return b.message??`Unknown tool: ${b.tool??"?"}`;if(b?.error==="denial_breaks_required_capability"){let a=b.remainingTools?.join(", ")??"?";return b.message??`Denying these tools breaks required capability '${b.capability??"?"}'. Keep at least one of: ${a}.`}return b?.message??a.message}return a instanceof Error?a.message:"Unexpected error"}(a))}},C="codex"===f?"codex":null,D=z.filter(a=>a.denied).length;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(U,{integrationKey:a,delegatedBackend:f}),(0,b.jsxs)(k.Card,{children:[(0,b.jsxs)("div",{className:"mb-2 flex flex-wrap items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("h4",{className:"text-sm font-medium",children:"Tool permissions"}),D>0&&(0,b.jsxs)(h.Badge,{variant:"amber",className:"h-5 px-1.5 text-[10px]",children:[D," off"]})]}),C&&(0,b.jsx)(R.TooltipProvider,{children:(0,b.jsxs)(R.Tooltip,{children:[(0,b.jsx)(R.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)(h.Badge,{variant:"amber",className:"cursor-help gap-1",children:["Limited enforcement (",C,")"]})}),(0,b.jsx)(R.TooltipContent,{children:(0,b.jsx)("p",{className:"max-w-xs text-xs",children:'Codex doesn\'t expose a per-tool block at the binary level. The agent reads a "denied tools" note in its prompt and is asked to obey it — weaker than the SDK-level block Claude and Gemini provide. Switch to a Claude- or Gemini-backed delegation if you need hard enforcement.'})})]})})]}),(0,b.jsx)("p",{className:"mb-3 text-xs text-muted-foreground",children:"Turn off connector tools the agent should never use for this integration. Required capabilities (search, read, …) can't be disabled — to drop them, switch the integration out of delegated mode."}),0===z.length?(0,b.jsx)("p",{className:"text-xs italic text-muted-foreground",children:"This connector has no optional capabilities to manage."}):(0,b.jsx)("div",{className:"space-y-1",children:z.map(a=>(0,b.jsx)(X,{row:a,onToggle:()=>{a.required||(n(function(a,b,c){let d=new Set(a);if(c)for(let a of b.tools)d.add(a);else for(let a of b.tools)d.delete(a);return[...d]}(m,a,!a.denied)),p(!0),s(null),v(!1))}},a.capability))}),A.length>0&&(0,b.jsx)(Y,{rows:A}),x.staleDeniedTools.length>0&&(0,b.jsx)(j.Alert,{variant:"warning",className:"mt-3",children:(0,b.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("p",{className:"text-xs font-medium",children:[x.staleDeniedTools.length," stale entr",1===x.staleDeniedTools.length?"y":"ies"," from a previous backend"]}),(0,b.jsx)("ul",{className:"font-mono text-[11px]",children:x.staleDeniedTools.map(a=>(0,b.jsx)("li",{className:"break-all",children:a},a))}),(0,b.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:[`These names don't match any tool in ${f}'s`,"connector. The agent ignores them already; click Clean up to drop them from the saved list."]})]}),(0,b.jsx)(i.Button,{variant:"outline",size:"sm",className:"h-7 shrink-0 px-2 text-xs",onClick:()=>{if(0===x.staleDeniedTools.length)return;let a=new Set(x.staleDeniedTools);n(m.filter(b=>!a.has(b))),p(!0),s(null),v(!1)},children:"Clean up"})]})}),r&&(0,b.jsx)(j.Alert,{variant:"error",className:"mt-3 whitespace-pre-line",children:(0,b.jsx)("p",{className:"text-xs",children:r})}),(o||u)&&(0,b.jsxs)("div",{className:"mt-3 flex items-center justify-end gap-2",children:[u&&!o&&(0,b.jsxs)("span",{className:"flex items-center gap-1 text-xs text-success",children:[(0,b.jsx)(d.Check,{className:"h-3 w-3"})," Saved"]}),o&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 text-xs",onClick:()=>{n(g??[]),p(!1),s(null),v(!1)},disabled:w.isPending,children:"Revert"}),(0,b.jsx)(i.Button,{size:"sm",className:"h-7 px-3 text-xs",onClick:()=>void B(),disabled:w.isPending,children:w.isPending?"Applying…":"Apply"})]})]}),(0,b.jsx)(W,{draft:m,onChange:a=>{n(a),p(!0),s(null),v(!1)}})]})]})}function W({draft:a,onChange:d}){let[f,g]=(0,c.useState)(!1),[h,i]=(0,c.useState)(a.join("\n"));return(0,c.useEffect)(()=>{let b=S(h);b.length===a.length&&b.every((b,c)=>b===a[c])||i(a.join("\n"))},[a]),(0,b.jsxs)("div",{className:"mt-4 border-t pt-3",children:[(0,b.jsxs)("button",{type:"button",className:"flex w-full items-center justify-between text-xs text-muted-foreground hover:text-foreground",onClick:()=>g(a=>!a),"aria-expanded":f,children:[(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)("span",{className:"font-medium",children:"Advanced — raw deny list"}),(0,b.jsxs)("span",{className:"text-[10px]",children:["(",a.length," ",1===a.length?"entry":"entries",")"]})]}),f?(0,b.jsx)(e.ChevronDown,{className:"h-3 w-3"}):(0,b.jsx)(P.ChevronRight,{className:"h-3 w-3"})]}),f&&(0,b.jsxs)("div",{className:"mt-2 space-y-2",children:[(0,b.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:["One tool pattern per line. Suffix glob support: ",(0,b.jsx)("code",{className:"font-mono",children:"delete_*"})," ","matches every tool starting with ",(0,b.jsx)("code",{className:"font-mono",children:"delete_"}),". The list is enforced uniformly across direct, cross-backend proxy, and same-backend native MCP paths."]}),(0,b.jsx)("textarea",{value:h,onChange:a=>{var b;i(b=a.target.value),d(S(b))},spellCheck:!1,rows:Math.max(4,Math.min(12,h.split("\n").length+1)),className:"w-full rounded-md border border-input bg-background p-2 font-mono text-[11px] text-foreground focus:outline-none focus:ring-2 focus:ring-ring",placeholder:"send_email\ndelete_emails\narchive_*"})]})]})}function X({row:a,onToggle:d}){let[f,g]=(0,c.useState)(!1),i=!a.denied;return(0,b.jsxs)("div",{className:(0,u.cn)("rounded-md border p-2 text-xs transition",i?"border-border":"border-dashed border-border/70 bg-muted/20"),children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{id:`perm-${a.capability}`,type:"checkbox",className:"cursor-pointer",checked:i,onChange:d}),(0,b.jsxs)("label",{htmlFor:`perm-${a.capability}`,className:"flex-1 cursor-pointer",children:[(0,b.jsx)("span",{className:"font-medium text-foreground",children:a.label}),a.denied&&(0,b.jsx)(h.Badge,{variant:"amber",className:"ml-2 h-4 px-1 text-[10px]",children:"off"})]}),a.tools.length>0&&(0,b.jsxs)("button",{type:"button",className:"flex shrink-0 items-center gap-0.5 rounded px-1 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/40 hover:text-foreground",onClick:()=>g(a=>!a),"aria-expanded":f,"aria-label":f?`Hide tools for ${a.label}`:`Show tools for ${a.label}`,children:[f?(0,b.jsx)(e.ChevronDown,{className:"h-3 w-3"}):(0,b.jsx)(P.ChevronRight,{className:"h-3 w-3"}),a.tools.length," tool",1===a.tools.length?"":"s"]})]}),f&&a.tools.length>0&&(0,b.jsx)("ul",{className:"ml-6 mt-1 font-mono text-[10px] text-muted-foreground",children:a.tools.map(a=>(0,b.jsx)("li",{className:"break-all",children:a},a))})]})}function Y({rows:a}){let[f,g]=(0,c.useState)(!1);return(0,b.jsxs)("div",{className:"mt-3 border-t pt-2",children:[(0,b.jsxs)("button",{type:"button",className:"flex w-full items-center justify-between text-xs text-muted-foreground hover:text-foreground",onClick:()=>g(a=>!a),"aria-expanded":f,children:[(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)(Q.Lock,{className:"h-3 w-3"})," Required capabilities (",a.length,")"]}),f?(0,b.jsx)(e.ChevronDown,{className:"h-3 w-3"}):(0,b.jsx)(P.ChevronRight,{className:"h-3 w-3"})]}),f&&(0,b.jsxs)("ul",{className:"mt-2 space-y-1",children:[a.map(a=>(0,b.jsxs)("li",{className:"flex items-center gap-1.5 text-[11px] text-muted-foreground",children:[(0,b.jsx)(d.Check,{className:"h-3 w-3 text-muted-foreground/70"}),(0,b.jsx)("span",{className:"font-medium text-foreground",children:a.label}),a.tools.length>0&&(0,b.jsxs)("span",{className:"font-mono text-[10px]",children:["· ",a.tools.join(", ")]})]},a.capability)),(0,b.jsx)("li",{className:"pt-1 text-[10px] italic text-muted-foreground",children:"To drop these, switch this integration out of delegated mode."})]})]})}function Z({name:a,badge:c,children:d}){return(0,b.jsxs)(k.Card,{children:[(0,b.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,b.jsx)("h3",{className:"text-sm font-medium",children:a}),c]}),d]})}function $(a){if(a instanceof t.ApiError){let b=a.body;if(b?.error==="missing_variants"){let a=[...b.missingSkills??[],...b.missingTaskFlows??[]],c="native"===b.mode?"native":"delegated";return`Missing variant file(s) for ${c} mode:
2
+ ${a.join("\n")}`}if(b?.error==="backend_not_supported_native"){let a=b.supportedNativeBackends?.join(", ")??"—";return`${b.message??"Backend has no native connector."} Supported native backends: ${a}.`}return b?.error==="native_backend_mismatches_main"?b.message??`Native mode must bind to the current main backend (${b.mainBackend??"?"}).`:b?.message??a.message}return a instanceof Error?a.message:"Unexpected error"}function _({descriptor:a,backend:c,mode:d}){let e=c?function(a,b){switch(a){case"claude":return`Claude Code: register an MCP server via \`claude mcp add\` or wire up a connector at claude.ai/connections that exposes ${b}.`;case"codex":return`Codex: add an MCP server entry to your Codex configuration that exposes ${b} so the connector surfaces in Codex's tool list.`;case"gemini":return`Gemini CLI: install an MCP extension that exposes ${b} (e.g. \`gemini mcp add\` or a \`~/.gemini/extensions/<name>/\` directory).`;case"opencode":return`OpenCode: configure an MCP server for ${b} once OpenCode runtime support is enabled.`}}(c,a.displayName):null;return(0,b.jsxs)(j.Alert,{variant:"info",children:[(0,b.jsxs)("p",{className:"text-xs font-medium",children:["User-managed connector — the daemon does not poll, proxy, or store credentials for ",a.displayName,"."]}),(0,b.jsxs)("p",{className:"mt-1 text-xs",children:["native"===d?"Native":"Delegated"," mode requires you to register an MCP server or connector on the ",c??"selected"," backend that gives it access to"," ",a.displayName,". The agent uses those tools directly; no capability probe runs and no daemon-side proxy is exposed."]}),e&&(0,b.jsx)("p",{className:"mt-1 text-[11px] text-muted-foreground",children:e})]})}function aa({integrationKey:a,entry:k,descriptor:l,featureMatrix:n}){let o=n.filter(a=>a.present).length,p=n.length,r=k.lastProbeAt?new Date(k.lastProbeAt).toLocaleString():null,s=k.delegatedBackend;s&&l.backendConnectors[s];let v=(0,q.useIntegrationProbeLive)(),[w,x]=(0,c.useState)(null);if(l.userManagedConnector)return(0,b.jsx)(_,{descriptor:l,backend:s,mode:"delegated"});let y=async()=>{if(s){x(null);try{await v.mutateAsync({key:a,backend:s,liveProbe:!0})}catch(a){if(a instanceof t.ApiError){let b=a.body;b?.error==="live_probe_unsupported"?x(b.message??"Live probe not yet supported on this backend."):x(b?.message??a.message)}else x(a instanceof Error?a.message:"Unexpected error")}}};return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground",children:[(0,b.jsxs)("span",{children:["Tool namespace"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:k.toolNamespace??"?"})]}),(0,b.jsxs)("span",{children:["Capabilities"," ",(0,b.jsxs)("span",{className:"text-foreground",children:[o,"/",p]})]}),(0,b.jsxs)("span",{children:["Probe"," ",(0,b.jsx)("span",{className:"text-foreground",children:r??"defaults (no live probe yet)"})]}),(0,b.jsxs)(i.Button,{variant:"ghost",size:"sm",className:"h-6 gap-1 px-2 text-[11px]",onClick:()=>void y(),disabled:v.isPending||!s,"aria-label":"Re-probe connector",children:[(0,b.jsx)(f.RefreshCw,{className:(0,u.cn)("h-3 w-3",v.isPending&&"animate-spin")}),v.isPending?"Probing…":"Re-probe"]})]}),w&&(0,b.jsx)(j.Alert,{variant:"error",children:(0,b.jsx)("p",{className:"text-xs",children:w})}),p>0&&(0,b.jsxs)(m.Collapsible,{children:[(0,b.jsxs)(m.CollapsibleTrigger,{className:"group flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",children:[(0,b.jsx)(e.ChevronDown,{className:"h-3 w-3 transition-transform group-data-[state=open]:rotate-180"}),"Feature matrix"]}),(0,b.jsx)(m.CollapsibleContent,{children:(0,b.jsx)("ul",{className:"mt-2 grid grid-cols-1 gap-0.5 sm:grid-cols-2",children:n.map(a=>(0,b.jsxs)("li",{className:(0,u.cn)("flex items-center gap-1.5 text-xs",!a.present&&"text-muted-foreground/70"),children:[a.present?(0,b.jsx)(d.Check,{className:"h-3 w-3 text-success"}):(0,b.jsx)(g.X,{className:"h-3 w-3 text-muted-foreground"}),(0,b.jsx)("span",{children:a.label}),a.required&&!a.present&&(0,b.jsx)(h.Badge,{variant:"red",className:"h-4 px-1 text-[10px]",children:"required"})]},a.capability))})})]})]})}function ab({integrationKey:a,entry:k,descriptor:l,featureMatrix:n,mainBackend:o}){let p=n.filter(a=>a.present).length,r=n.length,s=k.lastProbeAt?new Date(k.lastProbeAt).toLocaleString():null,v=k.nativeBackend,w=(0,q.useIntegrationProbeLive)(),[x,y]=(0,c.useState)(null);if(l.userManagedConnector)return(0,b.jsx)(_,{descriptor:l,backend:v,mode:"native"});let z=null!==v&&null!==o&&v!==o,A=async()=>{if(v){y(null);try{await w.mutateAsync({key:a,backend:v,liveProbe:!0})}catch(a){if(a instanceof t.ApiError){let b=a.body;b?.error==="live_probe_unsupported"?y(b.message??"Live probe not yet supported on this backend."):y(b?.message??a.message)}else y(a instanceof Error?a.message:"Unexpected error")}}};return(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(j.Alert,{variant:"info",children:(0,b.jsxs)("p",{className:"text-xs",children:["Native mode — the agent fetches ",l.displayName," via"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:v??"?"}),"'s connector during DM and activity_scan turns. The daemon does not poll, does not proxy, and does not store"," ",l.displayName," credentials. Destructive operations still require user confirmation via the absolute-block layer."]})}),z&&(0,b.jsx)(j.Alert,{variant:"warning",children:(0,b.jsxs)("p",{className:"text-xs",children:["This row is bound to"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:v})," ","but the current main backend is"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:o}),". The next session refresh will cascade this row to disabled — re-configure on the new main backend."]})}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground",children:[(0,b.jsxs)("span",{children:["Tool namespace"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:k.toolNamespace??"?"})]}),r>0&&(0,b.jsxs)("span",{children:["Capabilities"," ",(0,b.jsxs)("span",{className:"text-foreground",children:[p,"/",r]})]}),(0,b.jsxs)("span",{children:["Probe"," ",(0,b.jsx)("span",{className:"text-foreground",children:s??"defaults (no live probe yet)"})]}),(0,b.jsxs)(i.Button,{variant:"ghost",size:"sm",className:"h-6 gap-1 px-2 text-[11px]",onClick:()=>void A(),disabled:w.isPending||!v,"aria-label":"Re-probe connector",children:[(0,b.jsx)(f.RefreshCw,{className:(0,u.cn)("h-3 w-3",w.isPending&&"animate-spin")}),w.isPending?"Probing…":"Re-probe"]})]}),x&&(0,b.jsx)(j.Alert,{variant:"error",children:(0,b.jsx)("p",{className:"text-xs",children:x})}),r>0&&(0,b.jsxs)(m.Collapsible,{children:[(0,b.jsxs)(m.CollapsibleTrigger,{className:"group flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",children:[(0,b.jsx)(e.ChevronDown,{className:"h-3 w-3 transition-transform group-data-[state=open]:rotate-180"}),"Feature matrix"]}),(0,b.jsx)(m.CollapsibleContent,{children:(0,b.jsx)("ul",{className:"mt-2 grid grid-cols-1 gap-0.5 sm:grid-cols-2",children:n.map(a=>(0,b.jsxs)("li",{className:(0,u.cn)("flex items-center gap-1.5 text-xs",!a.present&&"text-muted-foreground/70"),children:[a.present?(0,b.jsx)(d.Check,{className:"h-3 w-3 text-success"}):(0,b.jsx)(g.X,{className:"h-3 w-3 text-muted-foreground"}),(0,b.jsx)("span",{children:a.label}),a.required&&!a.present&&(0,b.jsx)(h.Badge,{variant:"red",className:"h-4 px-1 text-[10px]",children:"required"})]},a.capability))})})]})]})}function ac({integrationKey:a,delegatedBackend:d,delegatedModel:e,currentMode:f}){var g,k;let m=(0,q.useProxyModels)(d),n=(0,q.usePatchIntegration)(),[o,p]=(0,c.useState)(null),r=m.data?.options??[],s=m.data?.canonical??null,t=e??B,u=null!==e&&r.length>0&&!r.some(a=>a.modelId===e),v=e?r.find(a=>a.modelId===e):r.find(a=>a.modelId===s)??r.find(a=>"lite"===a.tier)??r[0],w=v?(g=v.usdPer1kIn,k=v.usdPer1kOut,null===g||null===k?null:800*g/1e3+200*k/1e3):null,x=async b=>{p(null);let c=b===B?null:b;if(c!==e)try{await n.mutateAsync({key:a,body:{mode:"delegated",delegatedBackend:d,delegatedModel:c}})}catch(a){p($(a))}};return"delegated"!==f?null:(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("label",{className:"text-xs font-medium text-muted-foreground",htmlFor:`proxy-model-${a}`,children:"Proxy model"}),(0,b.jsxs)(l.Select,{value:t,onValueChange:a=>void x(a),children:[(0,b.jsx)(l.SelectTrigger,{id:`proxy-model-${a}`,className:"h-8 w-auto min-w-[16rem] text-xs",disabled:m.isLoading||n.isPending,children:(0,b.jsx)(l.SelectValue,{})}),(0,b.jsxs)(l.SelectContent,{children:[(0,b.jsxs)(l.SelectItem,{value:B,children:["Auto (light tier",s?` — ${s}`:"",")"]}),r.map(a=>(0,b.jsxs)(l.SelectItem,{value:a.modelId,children:[a.displayName,"lite"!==a.tier?` \xb7 ${a.tier}`:"",a.deprecated?" · deprecated":""]},a.modelId)),u&&e&&(0,b.jsxs)(l.SelectItem,{value:e,children:[e," · stale"]})]})]}),null!==w&&(0,b.jsxs)(h.Badge,{variant:"gray",title:"Estimate based on a typical proxy call (≈800 in / 200 out tokens). Actual costs vary by tool.",children:["≈ ",w<.001?"<$0.001":w<.01?`$${w.toFixed(4)}`:`$${w.toFixed(3)}`," / call"]})]}),u&&(0,b.jsxs)(j.Alert,{variant:"warning",children:[(0,b.jsxs)("p",{className:"text-xs",children:["Pinned model ",(0,b.jsx)("code",{children:e})," is not registered for backend ",(0,b.jsx)("code",{children:d}),". Calls fall back to the canonical light-tier model until you reset."]}),(0,b.jsx)(i.Button,{variant:"ghost",size:"sm",className:"mt-1 h-6 px-2 text-[11px]",onClick:()=>void x(B),disabled:n.isPending,children:"Reset to default"})]}),o&&(0,b.jsx)(j.Alert,{variant:"error",children:(0,b.jsx)("p",{className:"text-xs",children:o})})]})}function ad({integrationKey:a,credentialsPresent:c}){let d=ae[a].present,e=ae[a].absent;return(0,b.jsx)(j.Alert,{variant:c?"success":"warning",children:(0,b.jsx)("p",{className:"text-xs",children:c?d:e})})}let ae={gmail:{present:"Google OAuth credentials present. The daemon is polling Gmail directly.",absent:"Direct mode requires a Google Cloud OAuth credential. Complete the credential upload + authorize step below."},google_calendar:{present:"Google OAuth credentials present. The daemon is polling Calendar directly.",absent:"Direct mode requires a Google Cloud OAuth credential. Complete the credential upload + authorize step below."},notion:{present:"Notion API key present. The daemon is polling configured databases directly.",absent:"Direct mode requires a Notion internal-integration API key. Paste it below and share each target database with the integration."},git:{present:"Direct mode active. The daemon polls watched repositories with the local git CLI.",absent:"Direct mode uses the local git CLI and watched repository list; no daemon-managed credential is required."},github:{present:"Direct mode active. The daemon polls GitHub through the local gh CLI.",absent:"Direct mode uses gh auth login outside the daemon keychain; no daemon-managed credential is required."},outlook_mail:{present:"Outlook BYOA client config present. The unified mail poller covers authenticated Outlook mailboxes.",absent:"Direct mode requires a Microsoft Identity (BYOA) client config. Register an Azure app and paste the client id below."},outlook_calendar:{present:"Outlook BYOA client config present. Calendar reads are on-demand and reuse the MSAL token from Outlook Mail; no background poller in v1.",absent:"Direct mode requires the BYOA client config used by Outlook Mail. Configure it via the Outlook Mail card; calendar reads reuse the same authenticated session."},browser_history:{present:"Browser history ingest is active. The daemon reads local browser history databases on the configured cadence.",absent:"Direct mode requires accepting the on-device browser history consent latch. No external credentials are required."}};function af({integrationKey:a}){let c=(0,q.useRecentProxyCalls)(a),d=c.data?.calls??[],f=d.some(a=>"failed"===a.result);return(0,b.jsxs)(m.Collapsible,{children:[(0,b.jsxs)(m.CollapsibleTrigger,{className:"group flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",children:[(0,b.jsx)(e.ChevronDown,{className:"h-3 w-3 transition-transform group-data-[state=open]:rotate-180"}),"Recent proxy calls",!c.isLoading&&(0,b.jsxs)("span",{className:"text-muted-foreground/70",children:["(",d.length,f&&(0,b.jsx)("span",{className:"ml-1 text-warning",children:"· failures"}),")"]})]}),(0,b.jsxs)(m.CollapsibleContent,{className:"pt-2",children:[c.isLoading&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Loading…"}),c.error&&(0,b.jsx)(j.Alert,{variant:"error",children:(0,b.jsxs)("p",{className:"text-xs",children:["Could not load recent calls:"," ",c.error instanceof Error?c.error.message:"Unexpected error"]})}),!c.isLoading&&!c.error&&0===d.length&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"No proxy calls have been recorded for this integration yet. They land here as the agent invokes the connector."}),(0,b.jsxs)("p",{className:"mb-2 text-[11px] text-muted-foreground",children:["Only ",(0,b.jsx)("strong",{children:"cross-backend"}),"delegated calls show up here — calls where your DM session runs on a different backend than the connector's owner. Same-backend delegated calls (for example, a Codex DM session using Codex's own Gmail connector) skip the proxy and roll up under the parent session's totals. Per-tool cost isn't measurable in those cases."]}),d.length>0&&(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"w-full min-w-[42rem] border-separate border-spacing-0 text-[11px]",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{className:"text-left text-muted-foreground",children:[(0,b.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Time"}),(0,b.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Tool"}),(0,b.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Model"}),(0,b.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Duration"}),(0,b.jsx)("th",{className:"pb-1 pr-3 font-medium",children:"Cost"}),(0,b.jsx)("th",{className:"pb-1 font-medium",children:"Result"})]})}),(0,b.jsx)("tbody",{children:d.map(a=>{var c,d;return(0,b.jsxs)("tr",{className:"border-t border-border/50 align-top",children:[(0,b.jsx)("td",{className:"py-1 pr-3 text-muted-foreground",children:function(a,b=new Date){if(null===a)return"—";let c=new Date(a);return Number.isNaN(c.getTime())?a:c.getFullYear()===b.getFullYear()&&c.getMonth()===b.getMonth()&&c.getDate()===b.getDate()?c.toLocaleTimeString():c.toLocaleString()}(a.startedAt)}),(0,b.jsx)("td",{className:"py-1 pr-3 font-mono",children:function(a){if(!a)return"—";let b=a.split("__"),c=b[b.length-1];return c&&c.length>0?c:a}(a.toolName)}),(0,b.jsx)("td",{className:"py-1 pr-3 text-muted-foreground",children:a.modelId??"—"}),(0,b.jsx)("td",{className:"py-1 pr-3 text-muted-foreground",children:null===(c=a.durationMs)?"—":c<1e3?`${c}ms`:`${(c/1e3).toFixed(1)}s`}),(0,b.jsx)("td",{className:"py-1 pr-3 text-muted-foreground",children:null===(d=a.costUsd)?"—":0===d?"$0":d<.001?"<$0.001":d<.01?`$${d.toFixed(4)}`:`$${d.toFixed(3)}`}),(0,b.jsx)("td",{className:"py-1",children:"success"===a.result?(0,b.jsx)(h.Badge,{variant:"green",className:"h-4 px-1 text-[10px]",children:"ok"}):(0,b.jsx)("span",{className:"text-warning",title:a.errorMessage??void 0,children:a.errorClass??a.result??"failed"})})]},a.id)})})]})})]})]})}a.s(["IntegrationCard",0,function({integrationKey:a,gmailAccountCount:d=0,children:e}){var f,g,k,m,u;let v=(0,q.useIntegrations)(),w=(0,p.useHealth)(),x=(0,o.useConfig)(),B=(0,n.useBackends)(),D=(0,q.useNativeUnboundActions)(),E=(0,q.usePatchIntegration)(),F=(0,q.useIntegrationProbeLive)(),H=(0,r.useConfirm)(),I=(0,s.useQueryClient)(),[L,M]=(0,c.useState)(null),[N,P]=(0,c.useState)("keep"),[Q,R]=(0,c.useState)(null),[S,T]=(0,c.useState)(null),[U,W]=(0,c.useState)(!1),X=(0,c.useMemo)(()=>v.data?.integrations.find(b=>b.key===a),[v.data,a]),Y=w.data?.integrationModes?.[a],_=B.data?.defaultBackend??null;if(v.isLoading||w.isLoading)return(0,b.jsx)(Z,{name:a,children:"Loading…"});if(!X||!Y)return(0,b.jsx)(Z,{name:a,children:(0,b.jsx)(j.Alert,{variant:"error",children:"Could not load integration metadata. The daemon may be offline."})});let ae=z(X),ag=A(X),ah=!!(f=x.data)&&("gmail"===a||"google_calendar"===a?f.googleCalendarCredentialsConfigured&&f.googleCalendarTokenConfigured:"notion"===a?f.notionConfigured:"git"===a||"github"===a||("outlook_mail"===a||"outlook_calendar"===a)&&!!f.outlookClientConfigConfigured),ai=G(X),aj=(D.data??[]).find(b=>b.key===a),ak=function(a){let{mode:b,unboundEntry:c,stateLastChangedAt:d,dismissedLocally:e}=a;if(e||void 0===c||"disabled"!==b)return!1;if(null===c.startedAt)return!0;let f=C(d),g=C(c.startedAt);return null===f||null===g||f<=g}({mode:Y.mode,unboundEntry:aj,stateLastChangedAt:X.state.lastChangedAt,dismissedLocally:U}),al="delegated"===Y.mode&&null!==_&&Y.delegatedBackend===_&&!!X.supportedModes.includes("native")&&!!_&&A(X).includes(_),am=function(a,b,c){if(null===a||null===c)return[];let d=b.backendConnectors[c];if(!d)return[];let e=new Set(d.requiredCapabilities),f=new Set,g=[];for(let b of[...d.requiredCapabilities,...d.optionalCapabilities])f.has(b)||(f.add(b),g.push({capability:b,label:y(b),present:!0===a[b],required:e.has(b)}));return g.sort((a,b)=>{let c=a=>a.present&&a.required?0:a.present?1:a.required?2:3,d=c(a)-c(b);return 0!==d?d:a.label.localeCompare(b.label)})}(Y.features,X,"native"===Y.mode?Y.nativeBackend:Y.delegatedBackend),an=async b=>{if("delegated"===Y.mode&&b!==Y.delegatedBackend){T(null);try{await E.mutateAsync({key:a,body:{mode:"delegated",delegatedBackend:b}}),F.mutateAsync({key:a,backend:b,liveProbe:!0}).catch(()=>void 0)}catch(a){T($(a))}}},ao=async()=>{if(!L)return;if(R(null),"direct"===Y.mode&&"delegated"===L.targetMode&&"purge"===N&&ai&&!await H({title:ai.confirmTitle,description:ai.confirmDescription,confirmLabel:"Purge",cancelLabel:"Keep dormant",variant:"destructive",requireText:"purge"}))return void P("keep");let b={mode:L.targetMode,..."delegated"===L.targetMode&&L.targetBackend?{delegatedBackend:L.targetBackend}:{},..."native"===L.targetMode&&L.targetBackend?{nativeBackend:L.targetBackend}:{}};try{await E.mutateAsync({key:a,body:b}),("delegated"===L.targetMode||"native"===L.targetMode)&&L.targetBackend&&F.mutateAsync({key:a,backend:L.targetBackend,liveProbe:!0}).catch(()=>void 0),"direct"===Y.mode&&"delegated"===L.targetMode&&"purge"===N&&ai&&(await Promise.all(ai.secretKeys.map(a=>t.api.delete(`/secrets/${a}`).catch(()=>{}))),I.invalidateQueries({queryKey:["config"]})),M(null)}catch(a){R($(a))}};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(Z,{name:X.displayName,badge:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[Y.subTier&&(0,b.jsx)(h.Badge,{variant:"blue",children:"draft-only"===(g=Y.subTier)?"Draft-Only":"full-auto"===g?"Full-Auto":null}),(0,b.jsx)(h.Badge,{variant:"direct"===(k=Y.mode)?"green":"delegated"===k?"amber":"native"===k?"blue":"gray",children:(m=Y.mode,u="native"===Y.mode?Y.nativeBackend:Y.delegatedBackend,"direct"===m?"Direct":"disabled"===m?"Disabled":"native"===m?null===u?"Native":`Native — ${u}`:null===u?"Delegated":`Delegated — ${u}`)})]}),children:(0,b.jsxs)("div",{className:"space-y-3",children:[ak&&aj&&(0,b.jsxs)(j.Alert,{variant:"error",children:[(0,b.jsxs)("p",{className:"text-sm font-medium",children:["Native binding lost — re-configure ",X.displayName,"."]}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:[X.displayName," was set to native mode on"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:aj.priorNativeBackend??"?"})," ","but you switched the main backend to"," ",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:aj.newMainBackend??_??"?"}),". Native bindings are explicit — pick a mode below to restore agent awareness."]}),(0,b.jsx)(i.Button,{variant:"ghost",size:"sm",className:"mt-2 h-6 px-2 text-[11px]",onClick:()=>W(!0),children:"Dismiss"})]}),al&&_&&(0,b.jsxs)(j.Alert,{variant:"info",children:[X.userManagedConnector?(0,b.jsxs)("p",{className:"text-sm",children:["You're delegated to your main backend (",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:_}),"). Switching to ",(0,b.jsx)("strong",{children:"Native"})," swaps the row to an explicit binding against ",_," — the user-installed"," ",X.displayName," MCP is reached the same way, but the mode label honestly reflects that the daemon never proxies this integration, and a future main-backend change will prompt you to re-confirm the binding instead of silently moving the delegation."]}):(0,b.jsxs)("p",{className:"text-sm",children:["You're delegated to your main backend (",(0,b.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:_}),"). Switching to ",(0,b.jsx)("strong",{children:"Native"})," stops the background worker cadence and lets the agent fetch"," ",X.displayName," in-turn through ",_,"'s own connector — fewer moving parts, no proxy hop."]}),(0,b.jsx)("div",{className:"mt-2 flex items-center gap-2",children:(0,b.jsx)(i.Button,{variant:"outline",size:"sm",className:"h-7 px-2 text-xs",disabled:E.isPending,onClick:()=>{R(null),P("keep"),M({open:!0,targetMode:"native",targetBackend:_})},children:"Switch to native"})})]}),(0,b.jsx)(O,{currentMode:Y.mode,descriptor:X,delegatedBackendCount:ae.length,mainBackend:_,disabled:E.isPending,onSelectMode:a=>{if(a!==Y.mode){if(R(null),P("keep"),"delegated"===a){let a=ae[0];if(!a)return;M({open:!0,targetMode:"delegated",targetBackend:a});return}if("native"===a){if(!_||!ag.includes(_))return;M({open:!0,targetMode:"native",targetBackend:_});return}M({open:!0,targetMode:a})}}}),"delegated"===Y.mode&&ae.length>0&&(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:"Backend"}),(0,b.jsxs)(l.Select,{value:Y.delegatedBackend??ae[0],onValueChange:a=>void an(a),disabled:E.isPending,children:[(0,b.jsx)(l.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(l.SelectValue,{})}),(0,b.jsx)(l.SelectContent,{children:ae.map(a=>{let c=(0,J.isUiPreviewOnlyBackend)(a);return(0,b.jsxs)(l.SelectItem,{value:a,disabled:c,children:[a,c?J.UI_PREVIEW_ONLY_BADGE_SUFFIX:""]},a)})})]}),S&&(0,b.jsx)(j.Alert,{variant:"error",className:"mt-2",children:(0,b.jsx)("p",{className:"text-xs",children:S})})]}),Y.variantsMissing&&Y.variantsMissing.length>0&&(0,b.jsxs)(j.Alert,{variant:"error",children:[(0,b.jsxs)("p",{className:"font-medium",children:["Missing ","native"===Y.mode?"native":"delegated"," ","variant file(s) — agent will silently fall back to the direct- mode skill body."]}),(0,b.jsx)("ul",{className:"mt-1 space-y-0.5 font-mono text-[11px]",children:Y.variantsMissing.map(a=>(0,b.jsx)("li",{className:"break-all",children:a},a))})]}),"delegated"===Y.mode&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(aa,{integrationKey:a,entry:Y,descriptor:X,featureMatrix:am}),Y.delegatedBackend&&!X.userManagedConnector&&(0,b.jsx)(ac,{integrationKey:a,delegatedBackend:Y.delegatedBackend,delegatedModel:X.state.delegatedModel??null,currentMode:Y.mode}),Y.delegatedBackend&&!X.userManagedConnector&&(0,b.jsx)(V,{integrationKey:a,descriptor:X,delegatedBackend:Y.delegatedBackend,deniedTools:X.state.deniedTools,currentMode:Y.mode}),!X.userManagedConnector&&(0,b.jsx)(af,{integrationKey:a})]}),"native"===Y.mode&&(0,b.jsx)(ab,{integrationKey:a,entry:Y,descriptor:X,featureMatrix:am,mainBackend:_}),"direct"===Y.mode&&(0,b.jsx)(ad,{integrationKey:a,credentialsPresent:ah}),"disabled"===Y.mode&&(0,b.jsx)(j.Alert,{variant:"info",children:(0,b.jsx)("p",{children:"Disabled. The agent does not observe or act on this integration. Flip the mode above to re-enable."})}),e]})}),L&&(0,b.jsx)(K,{open:L.open,onOpenChange:a=>{M(b=>b?{...b,open:a}:null),a||R(null)},descriptor:X,currentMode:Y.mode,currentBackend:"native"===Y.mode?Y.nativeBackend:Y.delegatedBackend,targetMode:L.targetMode,targetBackend:L.targetBackend,onTargetBackendChange:a=>M(b=>b?{...b,targetBackend:a}:null),directCredentialsPresent:ah,gmailAccountCount:d,tokenHandling:N,onTokenHandlingChange:P,onConfirm:ao,isPending:E.isPending,error:Q})]})}],36581)}];
3
3
 
4
4
  //# sourceMappingURL=packages_dashboard_src_components_connections_integration-card_tsx_0yh1a-~._.js.map