@aitne/dashboard 0.1.0 → 0.1.2

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 (495) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/diagnostics/route-bundle-stats.json +210 -247
  5. package/.next/fallback-build-manifest.json +3 -3
  6. package/.next/server/app/_global-error.html +1 -1
  7. package/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  14. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/_not-found.html +1 -1
  16. package/.next/server/app/_not-found.rsc +14 -14
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +9 -9
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  21. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  23. package/.next/server/app/activity/page.js.nft.json +1 -1
  24. package/.next/server/app/activity/page_client-reference-manifest.js +1 -1
  25. package/.next/server/app/activity.html +1 -1
  26. package/.next/server/app/activity.rsc +27 -26
  27. package/.next/server/app/activity.segments/_full.segment.rsc +27 -26
  28. package/.next/server/app/activity.segments/_head.segment.rsc +4 -4
  29. package/.next/server/app/activity.segments/_index.segment.rsc +9 -9
  30. package/.next/server/app/activity.segments/_tree.segment.rsc +1 -1
  31. package/.next/server/app/activity.segments/activity/__PAGE__.segment.rsc +4 -4
  32. package/.next/server/app/activity.segments/activity.segment.rsc +4 -4
  33. package/.next/server/app/analytics/page.js.nft.json +1 -1
  34. package/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/analytics.html +1 -1
  36. package/.next/server/app/analytics.rsc +22 -23
  37. package/.next/server/app/analytics.segments/_full.segment.rsc +22 -23
  38. package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
  39. package/.next/server/app/analytics.segments/_index.segment.rsc +9 -9
  40. package/.next/server/app/analytics.segments/_tree.segment.rsc +1 -1
  41. package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +4 -4
  42. package/.next/server/app/analytics.segments/analytics.segment.rsc +4 -4
  43. package/.next/server/app/api/[...path]/route.js +1 -1
  44. package/.next/server/app/api/[...path]/route.js.nft.json +1 -1
  45. package/.next/server/app/chat/page.js.nft.json +1 -1
  46. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/chat.html +1 -1
  48. package/.next/server/app/chat.rsc +16 -16
  49. package/.next/server/app/chat.segments/_full.segment.rsc +16 -16
  50. package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
  51. package/.next/server/app/chat.segments/_index.segment.rsc +9 -9
  52. package/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
  53. package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +4 -4
  54. package/.next/server/app/chat.segments/chat.segment.rsc +3 -3
  55. package/.next/server/app/connections/calendar/page.js.nft.json +1 -1
  56. package/.next/server/app/connections/calendar/page_client-reference-manifest.js +1 -1
  57. package/.next/server/app/connections/calendar.html +1 -1
  58. package/.next/server/app/connections/calendar.rsc +17 -17
  59. package/.next/server/app/connections/calendar.segments/_full.segment.rsc +17 -17
  60. package/.next/server/app/connections/calendar.segments/_head.segment.rsc +4 -4
  61. package/.next/server/app/connections/calendar.segments/_index.segment.rsc +9 -9
  62. package/.next/server/app/connections/calendar.segments/_tree.segment.rsc +1 -1
  63. package/.next/server/app/connections/calendar.segments/connections/calendar/__PAGE__.segment.rsc +4 -4
  64. package/.next/server/app/connections/calendar.segments/connections/calendar.segment.rsc +3 -3
  65. package/.next/server/app/connections/calendar.segments/connections.segment.rsc +4 -4
  66. package/.next/server/app/connections/journal/page.js.nft.json +1 -1
  67. package/.next/server/app/connections/journal/page_client-reference-manifest.js +1 -1
  68. package/.next/server/app/connections/journal.html +1 -1
  69. package/.next/server/app/connections/journal.rsc +15 -15
  70. package/.next/server/app/connections/journal.segments/_full.segment.rsc +15 -15
  71. package/.next/server/app/connections/journal.segments/_head.segment.rsc +4 -4
  72. package/.next/server/app/connections/journal.segments/_index.segment.rsc +9 -9
  73. package/.next/server/app/connections/journal.segments/_tree.segment.rsc +1 -1
  74. package/.next/server/app/connections/journal.segments/connections/journal/__PAGE__.segment.rsc +2 -2
  75. package/.next/server/app/connections/journal.segments/connections/journal.segment.rsc +3 -3
  76. package/.next/server/app/connections/journal.segments/connections.segment.rsc +4 -4
  77. package/.next/server/app/connections/knowledge/page.js.nft.json +1 -1
  78. package/.next/server/app/connections/knowledge/page_client-reference-manifest.js +1 -1
  79. package/.next/server/app/connections/knowledge.html +1 -1
  80. package/.next/server/app/connections/knowledge.rsc +17 -17
  81. package/.next/server/app/connections/knowledge.segments/_full.segment.rsc +17 -17
  82. package/.next/server/app/connections/knowledge.segments/_head.segment.rsc +4 -4
  83. package/.next/server/app/connections/knowledge.segments/_index.segment.rsc +9 -9
  84. package/.next/server/app/connections/knowledge.segments/_tree.segment.rsc +1 -1
  85. package/.next/server/app/connections/knowledge.segments/connections/knowledge/__PAGE__.segment.rsc +4 -4
  86. package/.next/server/app/connections/knowledge.segments/connections/knowledge.segment.rsc +3 -3
  87. package/.next/server/app/connections/knowledge.segments/connections.segment.rsc +4 -4
  88. package/.next/server/app/connections/mail/page.js.nft.json +1 -1
  89. package/.next/server/app/connections/mail/page_client-reference-manifest.js +1 -1
  90. package/.next/server/app/connections/mail.html +1 -1
  91. package/.next/server/app/connections/mail.rsc +17 -17
  92. package/.next/server/app/connections/mail.segments/_full.segment.rsc +17 -17
  93. package/.next/server/app/connections/mail.segments/_head.segment.rsc +4 -4
  94. package/.next/server/app/connections/mail.segments/_index.segment.rsc +9 -9
  95. package/.next/server/app/connections/mail.segments/_tree.segment.rsc +1 -1
  96. package/.next/server/app/connections/mail.segments/connections/mail/__PAGE__.segment.rsc +4 -4
  97. package/.next/server/app/connections/mail.segments/connections/mail.segment.rsc +3 -3
  98. package/.next/server/app/connections/mail.segments/connections.segment.rsc +4 -4
  99. package/.next/server/app/connections/mcp/page.js.nft.json +1 -1
  100. package/.next/server/app/connections/mcp/page_client-reference-manifest.js +1 -1
  101. package/.next/server/app/connections/mcp.html +1 -1
  102. package/.next/server/app/connections/mcp.rsc +17 -17
  103. package/.next/server/app/connections/mcp.segments/_full.segment.rsc +17 -17
  104. package/.next/server/app/connections/mcp.segments/_head.segment.rsc +4 -4
  105. package/.next/server/app/connections/mcp.segments/_index.segment.rsc +9 -9
  106. package/.next/server/app/connections/mcp.segments/_tree.segment.rsc +1 -1
  107. package/.next/server/app/connections/mcp.segments/connections/mcp/__PAGE__.segment.rsc +4 -4
  108. package/.next/server/app/connections/mcp.segments/connections/mcp.segment.rsc +3 -3
  109. package/.next/server/app/connections/mcp.segments/connections.segment.rsc +4 -4
  110. package/.next/server/app/connections/messaging/page.js.nft.json +1 -1
  111. package/.next/server/app/connections/messaging/page_client-reference-manifest.js +1 -1
  112. package/.next/server/app/connections/messaging.html +1 -1
  113. package/.next/server/app/connections/messaging.rsc +17 -17
  114. package/.next/server/app/connections/messaging.segments/_full.segment.rsc +17 -17
  115. package/.next/server/app/connections/messaging.segments/_head.segment.rsc +4 -4
  116. package/.next/server/app/connections/messaging.segments/_index.segment.rsc +9 -9
  117. package/.next/server/app/connections/messaging.segments/_tree.segment.rsc +1 -1
  118. package/.next/server/app/connections/messaging.segments/connections/messaging/__PAGE__.segment.rsc +4 -4
  119. package/.next/server/app/connections/messaging.segments/connections/messaging.segment.rsc +3 -3
  120. package/.next/server/app/connections/messaging.segments/connections.segment.rsc +4 -4
  121. package/.next/server/app/connections/page.js.nft.json +1 -1
  122. package/.next/server/app/connections/page_client-reference-manifest.js +1 -1
  123. package/.next/server/app/connections/repositories/page.js.nft.json +1 -1
  124. package/.next/server/app/connections/repositories/page_client-reference-manifest.js +1 -1
  125. package/.next/server/app/connections/repositories.html +1 -1
  126. package/.next/server/app/connections/repositories.rsc +17 -17
  127. package/.next/server/app/connections/repositories.segments/_full.segment.rsc +17 -17
  128. package/.next/server/app/connections/repositories.segments/_head.segment.rsc +4 -4
  129. package/.next/server/app/connections/repositories.segments/_index.segment.rsc +9 -9
  130. package/.next/server/app/connections/repositories.segments/_tree.segment.rsc +1 -1
  131. package/.next/server/app/connections/repositories.segments/connections/repositories/__PAGE__.segment.rsc +4 -4
  132. package/.next/server/app/connections/repositories.segments/connections/repositories.segment.rsc +3 -3
  133. package/.next/server/app/connections/repositories.segments/connections.segment.rsc +4 -4
  134. package/.next/server/app/connections/routines/page.js.nft.json +1 -1
  135. package/.next/server/app/connections/routines/page_client-reference-manifest.js +1 -1
  136. package/.next/server/app/connections/routines.html +1 -1
  137. package/.next/server/app/connections/routines.rsc +15 -15
  138. package/.next/server/app/connections/routines.segments/_full.segment.rsc +15 -15
  139. package/.next/server/app/connections/routines.segments/_head.segment.rsc +4 -4
  140. package/.next/server/app/connections/routines.segments/_index.segment.rsc +9 -9
  141. package/.next/server/app/connections/routines.segments/_tree.segment.rsc +1 -1
  142. package/.next/server/app/connections/routines.segments/connections/routines/__PAGE__.segment.rsc +2 -2
  143. package/.next/server/app/connections/routines.segments/connections/routines.segment.rsc +3 -3
  144. package/.next/server/app/connections/routines.segments/connections.segment.rsc +4 -4
  145. package/.next/server/app/connections.html +1 -1
  146. package/.next/server/app/connections.rsc +15 -15
  147. package/.next/server/app/connections.segments/_full.segment.rsc +15 -15
  148. package/.next/server/app/connections.segments/_head.segment.rsc +4 -4
  149. package/.next/server/app/connections.segments/_index.segment.rsc +9 -9
  150. package/.next/server/app/connections.segments/_tree.segment.rsc +1 -1
  151. package/.next/server/app/connections.segments/connections/__PAGE__.segment.rsc +2 -2
  152. package/.next/server/app/connections.segments/connections.segment.rsc +4 -4
  153. package/.next/server/app/conversations/[id]/page.js.nft.json +1 -1
  154. package/.next/server/app/conversations/[id]/page_client-reference-manifest.js +1 -1
  155. package/.next/server/app/conversations/page.js.nft.json +1 -1
  156. package/.next/server/app/conversations/page_client-reference-manifest.js +1 -1
  157. package/.next/server/app/conversations.html +1 -1
  158. package/.next/server/app/conversations.rsc +14 -14
  159. package/.next/server/app/conversations.segments/_full.segment.rsc +14 -14
  160. package/.next/server/app/conversations.segments/_head.segment.rsc +4 -4
  161. package/.next/server/app/conversations.segments/_index.segment.rsc +9 -9
  162. package/.next/server/app/conversations.segments/_tree.segment.rsc +1 -1
  163. package/.next/server/app/conversations.segments/conversations/__PAGE__.segment.rsc +2 -2
  164. package/.next/server/app/conversations.segments/conversations.segment.rsc +3 -3
  165. package/.next/server/app/docs/[[...slug]]/page.js.nft.json +1 -1
  166. package/.next/server/app/docs/[[...slug]]/page_client-reference-manifest.js +1 -1
  167. package/.next/server/app/finance/page.js.nft.json +1 -1
  168. package/.next/server/app/finance/page_client-reference-manifest.js +1 -1
  169. package/.next/server/app/finance.html +1 -1
  170. package/.next/server/app/finance.rsc +16 -16
  171. package/.next/server/app/finance.segments/_full.segment.rsc +16 -16
  172. package/.next/server/app/finance.segments/_head.segment.rsc +4 -4
  173. package/.next/server/app/finance.segments/_index.segment.rsc +9 -9
  174. package/.next/server/app/finance.segments/_tree.segment.rsc +1 -1
  175. package/.next/server/app/finance.segments/finance/__PAGE__.segment.rsc +4 -4
  176. package/.next/server/app/finance.segments/finance.segment.rsc +3 -3
  177. package/.next/server/app/git/page.js.nft.json +1 -1
  178. package/.next/server/app/git/page_client-reference-manifest.js +1 -1
  179. package/.next/server/app/git.html +1 -1
  180. package/.next/server/app/git.rsc +16 -16
  181. package/.next/server/app/git.segments/_full.segment.rsc +16 -16
  182. package/.next/server/app/git.segments/_head.segment.rsc +4 -4
  183. package/.next/server/app/git.segments/_index.segment.rsc +9 -9
  184. package/.next/server/app/git.segments/_tree.segment.rsc +1 -1
  185. package/.next/server/app/git.segments/git/__PAGE__.segment.rsc +4 -4
  186. package/.next/server/app/git.segments/git.segment.rsc +3 -3
  187. package/.next/server/app/health/page.js.nft.json +1 -1
  188. package/.next/server/app/health/page_client-reference-manifest.js +1 -1
  189. package/.next/server/app/health.html +1 -1
  190. package/.next/server/app/health.rsc +16 -16
  191. package/.next/server/app/health.segments/_full.segment.rsc +16 -16
  192. package/.next/server/app/health.segments/_head.segment.rsc +4 -4
  193. package/.next/server/app/health.segments/_index.segment.rsc +9 -9
  194. package/.next/server/app/health.segments/_tree.segment.rsc +1 -1
  195. package/.next/server/app/health.segments/health/__PAGE__.segment.rsc +4 -4
  196. package/.next/server/app/health.segments/health.segment.rsc +3 -3
  197. package/.next/server/app/index.html +1 -1
  198. package/.next/server/app/index.rsc +16 -16
  199. package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  200. package/.next/server/app/index.segments/_full.segment.rsc +16 -16
  201. package/.next/server/app/index.segments/_head.segment.rsc +4 -4
  202. package/.next/server/app/index.segments/_index.segment.rsc +9 -9
  203. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  204. package/.next/server/app/knowledge/page.js.nft.json +1 -1
  205. package/.next/server/app/knowledge/page_client-reference-manifest.js +1 -1
  206. package/.next/server/app/knowledge.html +1 -1
  207. package/.next/server/app/knowledge.rsc +17 -17
  208. package/.next/server/app/knowledge.segments/_full.segment.rsc +17 -17
  209. package/.next/server/app/knowledge.segments/_head.segment.rsc +4 -4
  210. package/.next/server/app/knowledge.segments/_index.segment.rsc +9 -9
  211. package/.next/server/app/knowledge.segments/_tree.segment.rsc +1 -1
  212. package/.next/server/app/knowledge.segments/knowledge/__PAGE__.segment.rsc +4 -4
  213. package/.next/server/app/knowledge.segments/knowledge.segment.rsc +4 -4
  214. package/.next/server/app/page.js.nft.json +1 -1
  215. package/.next/server/app/page_client-reference-manifest.js +1 -1
  216. package/.next/server/app/reading/page.js.nft.json +1 -1
  217. package/.next/server/app/reading/page_client-reference-manifest.js +1 -1
  218. package/.next/server/app/reading.html +1 -1
  219. package/.next/server/app/reading.rsc +16 -16
  220. package/.next/server/app/reading.segments/_full.segment.rsc +16 -16
  221. package/.next/server/app/reading.segments/_head.segment.rsc +4 -4
  222. package/.next/server/app/reading.segments/_index.segment.rsc +9 -9
  223. package/.next/server/app/reading.segments/_tree.segment.rsc +1 -1
  224. package/.next/server/app/reading.segments/reading/__PAGE__.segment.rsc +4 -4
  225. package/.next/server/app/reading.segments/reading.segment.rsc +3 -3
  226. package/.next/server/app/schedule/page.js.nft.json +1 -1
  227. package/.next/server/app/schedule/page_client-reference-manifest.js +1 -1
  228. package/.next/server/app/schedule.html +1 -1
  229. package/.next/server/app/schedule.rsc +16 -16
  230. package/.next/server/app/schedule.segments/_full.segment.rsc +16 -16
  231. package/.next/server/app/schedule.segments/_head.segment.rsc +4 -4
  232. package/.next/server/app/schedule.segments/_index.segment.rsc +9 -9
  233. package/.next/server/app/schedule.segments/_tree.segment.rsc +1 -1
  234. package/.next/server/app/schedule.segments/schedule/__PAGE__.segment.rsc +4 -4
  235. package/.next/server/app/schedule.segments/schedule.segment.rsc +3 -3
  236. package/.next/server/app/settings/advanced/page.js.nft.json +1 -1
  237. package/.next/server/app/settings/advanced/page_client-reference-manifest.js +1 -1
  238. package/.next/server/app/settings/advanced.html +1 -1
  239. package/.next/server/app/settings/advanced.rsc +17 -17
  240. package/.next/server/app/settings/advanced.segments/_full.segment.rsc +17 -17
  241. package/.next/server/app/settings/advanced.segments/_head.segment.rsc +4 -4
  242. package/.next/server/app/settings/advanced.segments/_index.segment.rsc +9 -9
  243. package/.next/server/app/settings/advanced.segments/_tree.segment.rsc +1 -1
  244. package/.next/server/app/settings/advanced.segments/settings/advanced/__PAGE__.segment.rsc +4 -4
  245. package/.next/server/app/settings/advanced.segments/settings/advanced.segment.rsc +3 -3
  246. package/.next/server/app/settings/advanced.segments/settings.segment.rsc +4 -4
  247. package/.next/server/app/settings/backends/page.js.nft.json +1 -1
  248. package/.next/server/app/settings/backends/page_client-reference-manifest.js +1 -1
  249. package/.next/server/app/settings/backends.html +1 -1
  250. package/.next/server/app/settings/backends.rsc +15 -15
  251. package/.next/server/app/settings/backends.segments/_full.segment.rsc +15 -15
  252. package/.next/server/app/settings/backends.segments/_head.segment.rsc +4 -4
  253. package/.next/server/app/settings/backends.segments/_index.segment.rsc +9 -9
  254. package/.next/server/app/settings/backends.segments/_tree.segment.rsc +1 -1
  255. package/.next/server/app/settings/backends.segments/settings/backends/__PAGE__.segment.rsc +2 -2
  256. package/.next/server/app/settings/backends.segments/settings/backends.segment.rsc +3 -3
  257. package/.next/server/app/settings/backends.segments/settings.segment.rsc +4 -4
  258. package/.next/server/app/settings/commands/page.js.nft.json +1 -1
  259. package/.next/server/app/settings/commands/page_client-reference-manifest.js +1 -1
  260. package/.next/server/app/settings/commands.html +1 -1
  261. package/.next/server/app/settings/commands.rsc +17 -17
  262. package/.next/server/app/settings/commands.segments/_full.segment.rsc +17 -17
  263. package/.next/server/app/settings/commands.segments/_head.segment.rsc +4 -4
  264. package/.next/server/app/settings/commands.segments/_index.segment.rsc +9 -9
  265. package/.next/server/app/settings/commands.segments/_tree.segment.rsc +1 -1
  266. package/.next/server/app/settings/commands.segments/settings/commands/__PAGE__.segment.rsc +4 -4
  267. package/.next/server/app/settings/commands.segments/settings/commands.segment.rsc +3 -3
  268. package/.next/server/app/settings/commands.segments/settings.segment.rsc +4 -4
  269. package/.next/server/app/settings/connections/page.js.nft.json +1 -1
  270. package/.next/server/app/settings/connections/page_client-reference-manifest.js +1 -1
  271. package/.next/server/app/settings/connections.html +1 -1
  272. package/.next/server/app/settings/connections.rsc +15 -15
  273. package/.next/server/app/settings/connections.segments/_full.segment.rsc +15 -15
  274. package/.next/server/app/settings/connections.segments/_head.segment.rsc +4 -4
  275. package/.next/server/app/settings/connections.segments/_index.segment.rsc +9 -9
  276. package/.next/server/app/settings/connections.segments/_tree.segment.rsc +1 -1
  277. package/.next/server/app/settings/connections.segments/settings/connections/__PAGE__.segment.rsc +2 -2
  278. package/.next/server/app/settings/connections.segments/settings/connections.segment.rsc +3 -3
  279. package/.next/server/app/settings/connections.segments/settings.segment.rsc +4 -4
  280. package/.next/server/app/settings/journal/page.js.nft.json +1 -1
  281. package/.next/server/app/settings/journal/page_client-reference-manifest.js +1 -1
  282. package/.next/server/app/settings/journal.html +1 -1
  283. package/.next/server/app/settings/journal.rsc +17 -17
  284. package/.next/server/app/settings/journal.segments/_full.segment.rsc +17 -17
  285. package/.next/server/app/settings/journal.segments/_head.segment.rsc +4 -4
  286. package/.next/server/app/settings/journal.segments/_index.segment.rsc +9 -9
  287. package/.next/server/app/settings/journal.segments/_tree.segment.rsc +1 -1
  288. package/.next/server/app/settings/journal.segments/settings/journal/__PAGE__.segment.rsc +4 -4
  289. package/.next/server/app/settings/journal.segments/settings/journal.segment.rsc +3 -3
  290. package/.next/server/app/settings/journal.segments/settings.segment.rsc +4 -4
  291. package/.next/server/app/settings/management/page.js.nft.json +1 -1
  292. package/.next/server/app/settings/management/page_client-reference-manifest.js +1 -1
  293. package/.next/server/app/settings/management.html +1 -1
  294. package/.next/server/app/settings/management.rsc +17 -17
  295. package/.next/server/app/settings/management.segments/_full.segment.rsc +17 -17
  296. package/.next/server/app/settings/management.segments/_head.segment.rsc +4 -4
  297. package/.next/server/app/settings/management.segments/_index.segment.rsc +9 -9
  298. package/.next/server/app/settings/management.segments/_tree.segment.rsc +1 -1
  299. package/.next/server/app/settings/management.segments/settings/management/__PAGE__.segment.rsc +4 -4
  300. package/.next/server/app/settings/management.segments/settings/management.segment.rsc +3 -3
  301. package/.next/server/app/settings/management.segments/settings.segment.rsc +4 -4
  302. package/.next/server/app/settings/messaging/page.js.nft.json +1 -1
  303. package/.next/server/app/settings/messaging/page_client-reference-manifest.js +1 -1
  304. package/.next/server/app/settings/messaging.html +1 -1
  305. package/.next/server/app/settings/messaging.rsc +15 -15
  306. package/.next/server/app/settings/messaging.segments/_full.segment.rsc +15 -15
  307. package/.next/server/app/settings/messaging.segments/_head.segment.rsc +4 -4
  308. package/.next/server/app/settings/messaging.segments/_index.segment.rsc +9 -9
  309. package/.next/server/app/settings/messaging.segments/_tree.segment.rsc +1 -1
  310. package/.next/server/app/settings/messaging.segments/settings/messaging/__PAGE__.segment.rsc +2 -2
  311. package/.next/server/app/settings/messaging.segments/settings/messaging.segment.rsc +3 -3
  312. package/.next/server/app/settings/messaging.segments/settings.segment.rsc +4 -4
  313. package/.next/server/app/settings/models/page.js.nft.json +1 -1
  314. package/.next/server/app/settings/models/page_client-reference-manifest.js +1 -1
  315. package/.next/server/app/settings/models.html +1 -1
  316. package/.next/server/app/settings/models.rsc +17 -17
  317. package/.next/server/app/settings/models.segments/_full.segment.rsc +17 -17
  318. package/.next/server/app/settings/models.segments/_head.segment.rsc +4 -4
  319. package/.next/server/app/settings/models.segments/_index.segment.rsc +9 -9
  320. package/.next/server/app/settings/models.segments/_tree.segment.rsc +1 -1
  321. package/.next/server/app/settings/models.segments/settings/models/__PAGE__.segment.rsc +4 -4
  322. package/.next/server/app/settings/models.segments/settings/models.segment.rsc +3 -3
  323. package/.next/server/app/settings/models.segments/settings.segment.rsc +4 -4
  324. package/.next/server/app/settings/page.js.nft.json +1 -1
  325. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  326. package/.next/server/app/settings/processes/page.js.nft.json +1 -1
  327. package/.next/server/app/settings/processes/page_client-reference-manifest.js +1 -1
  328. package/.next/server/app/settings/processes.html +1 -1
  329. package/.next/server/app/settings/processes.rsc +15 -15
  330. package/.next/server/app/settings/processes.segments/_full.segment.rsc +15 -15
  331. package/.next/server/app/settings/processes.segments/_head.segment.rsc +4 -4
  332. package/.next/server/app/settings/processes.segments/_index.segment.rsc +9 -9
  333. package/.next/server/app/settings/processes.segments/_tree.segment.rsc +1 -1
  334. package/.next/server/app/settings/processes.segments/settings/processes/__PAGE__.segment.rsc +2 -2
  335. package/.next/server/app/settings/processes.segments/settings/processes.segment.rsc +3 -3
  336. package/.next/server/app/settings/processes.segments/settings.segment.rsc +4 -4
  337. package/.next/server/app/settings/routines/page.js.nft.json +1 -1
  338. package/.next/server/app/settings/routines/page_client-reference-manifest.js +1 -1
  339. package/.next/server/app/settings/routines.html +1 -1
  340. package/.next/server/app/settings/routines.rsc +17 -17
  341. package/.next/server/app/settings/routines.segments/_full.segment.rsc +17 -17
  342. package/.next/server/app/settings/routines.segments/_head.segment.rsc +4 -4
  343. package/.next/server/app/settings/routines.segments/_index.segment.rsc +9 -9
  344. package/.next/server/app/settings/routines.segments/_tree.segment.rsc +1 -1
  345. package/.next/server/app/settings/routines.segments/settings/routines/__PAGE__.segment.rsc +4 -4
  346. package/.next/server/app/settings/routines.segments/settings/routines.segment.rsc +3 -3
  347. package/.next/server/app/settings/routines.segments/settings.segment.rsc +4 -4
  348. package/.next/server/app/settings/schedule/page.js.nft.json +1 -1
  349. package/.next/server/app/settings/schedule/page_client-reference-manifest.js +1 -1
  350. package/.next/server/app/settings/schedule.html +1 -1
  351. package/.next/server/app/settings/schedule.rsc +17 -17
  352. package/.next/server/app/settings/schedule.segments/_full.segment.rsc +17 -17
  353. package/.next/server/app/settings/schedule.segments/_head.segment.rsc +4 -4
  354. package/.next/server/app/settings/schedule.segments/_index.segment.rsc +9 -9
  355. package/.next/server/app/settings/schedule.segments/_tree.segment.rsc +1 -1
  356. package/.next/server/app/settings/schedule.segments/settings/schedule/__PAGE__.segment.rsc +4 -4
  357. package/.next/server/app/settings/schedule.segments/settings/schedule.segment.rsc +3 -3
  358. package/.next/server/app/settings/schedule.segments/settings.segment.rsc +4 -4
  359. package/.next/server/app/settings/self-learning/page.js.nft.json +1 -1
  360. package/.next/server/app/settings/self-learning/page_client-reference-manifest.js +1 -1
  361. package/.next/server/app/settings/self-learning.html +1 -1
  362. package/.next/server/app/settings/self-learning.rsc +17 -17
  363. package/.next/server/app/settings/self-learning.segments/_full.segment.rsc +17 -17
  364. package/.next/server/app/settings/self-learning.segments/_head.segment.rsc +4 -4
  365. package/.next/server/app/settings/self-learning.segments/_index.segment.rsc +9 -9
  366. package/.next/server/app/settings/self-learning.segments/_tree.segment.rsc +1 -1
  367. package/.next/server/app/settings/self-learning.segments/settings/self-learning/__PAGE__.segment.rsc +4 -4
  368. package/.next/server/app/settings/self-learning.segments/settings/self-learning.segment.rsc +3 -3
  369. package/.next/server/app/settings/self-learning.segments/settings.segment.rsc +4 -4
  370. package/.next/server/app/settings.html +1 -1
  371. package/.next/server/app/settings.rsc +17 -17
  372. package/.next/server/app/settings.segments/_full.segment.rsc +17 -17
  373. package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  374. package/.next/server/app/settings.segments/_index.segment.rsc +9 -9
  375. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  376. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  377. package/.next/server/app/settings.segments/settings.segment.rsc +4 -4
  378. package/.next/server/app/setup/page.js.nft.json +1 -1
  379. package/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  380. package/.next/server/app/setup.html +1 -1
  381. package/.next/server/app/setup.rsc +16 -16
  382. package/.next/server/app/setup.segments/_full.segment.rsc +16 -16
  383. package/.next/server/app/setup.segments/_head.segment.rsc +4 -4
  384. package/.next/server/app/setup.segments/_index.segment.rsc +9 -9
  385. package/.next/server/app/setup.segments/_tree.segment.rsc +1 -1
  386. package/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +4 -4
  387. package/.next/server/app/setup.segments/setup.segment.rsc +3 -3
  388. package/.next/server/app/trip/page.js.nft.json +1 -1
  389. package/.next/server/app/trip/page_client-reference-manifest.js +1 -1
  390. package/.next/server/app/trip.html +1 -1
  391. package/.next/server/app/trip.rsc +16 -16
  392. package/.next/server/app/trip.segments/_full.segment.rsc +16 -16
  393. package/.next/server/app/trip.segments/_head.segment.rsc +4 -4
  394. package/.next/server/app/trip.segments/_index.segment.rsc +9 -9
  395. package/.next/server/app/trip.segments/_tree.segment.rsc +1 -1
  396. package/.next/server/app/trip.segments/trip/__PAGE__.segment.rsc +4 -4
  397. package/.next/server/app/trip.segments/trip.segment.rsc +3 -3
  398. package/.next/server/chunks/05w9_next_dist_esm_build_templates_app-route_0~eezk6.js +3 -3
  399. package/.next/server/chunks/05w9_next_dist_esm_build_templates_app-route_0~eezk6.js.map +1 -1
  400. package/.next/server/chunks/{[root-of-the-server]__0j~awob._.js → [root-of-the-server]__0dwxuh7._.js} +1 -1
  401. package/.next/server/chunks/{[root-of-the-server]__04-hp3j._.js → [root-of-the-server]__0k7lkv6._.js} +2 -2
  402. package/.next/server/chunks/ssr/{[root-of-the-server]__0t26ngg._.js → [root-of-the-server]__0ngitfo._.js} +2 -2
  403. package/.next/server/chunks/ssr/{[root-of-the-server]__0t26ngg._.js.map → [root-of-the-server]__0ngitfo._.js.map} +1 -1
  404. package/.next/server/chunks/ssr/{_0pvc7ao._.js → _0370l.6._.js} +2 -2
  405. package/.next/server/chunks/ssr/{_0pvc7ao._.js.map → _0370l.6._.js.map} +1 -1
  406. package/.next/server/chunks/ssr/_04kt9.8._.js +3 -0
  407. package/.next/server/chunks/ssr/_04kt9.8._.js.map +1 -0
  408. package/.next/server/chunks/ssr/_060itkv._.js +3 -0
  409. package/.next/server/chunks/ssr/_060itkv._.js.map +1 -0
  410. package/.next/server/chunks/ssr/{_0pydxc8._.js → _083cqy.._.js} +2 -2
  411. package/.next/server/chunks/ssr/_083cqy.._.js.map +1 -0
  412. package/.next/server/chunks/ssr/{_0lm8td~._.js → _08mbdt1._.js} +2 -2
  413. package/.next/server/chunks/ssr/_08mbdt1._.js.map +1 -0
  414. package/.next/server/chunks/ssr/_0938p.1._.js +3 -0
  415. package/.next/server/chunks/ssr/_0938p.1._.js.map +1 -0
  416. package/.next/server/chunks/ssr/_0ff5qav._.js +3 -0
  417. package/.next/server/chunks/ssr/_0ff5qav._.js.map +1 -0
  418. package/.next/server/chunks/ssr/_0g2e834._.js +3 -0
  419. package/.next/server/chunks/ssr/_0g2e834._.js.map +1 -0
  420. package/.next/server/chunks/ssr/_0gp8d.p._.js +3 -0
  421. package/.next/server/chunks/ssr/_0gp8d.p._.js.map +1 -0
  422. package/.next/server/chunks/ssr/_0k2j6-t._.js +3 -0
  423. package/.next/server/chunks/ssr/_0k2j6-t._.js.map +1 -0
  424. package/.next/server/chunks/ssr/_0kq5x2k._.js +3 -0
  425. package/.next/server/chunks/ssr/_0kq5x2k._.js.map +1 -0
  426. package/.next/server/chunks/ssr/_0mk7dqt._.js +3 -0
  427. package/.next/server/chunks/ssr/_0mk7dqt._.js.map +1 -0
  428. package/.next/server/chunks/ssr/_0qgn2wv._.js +3 -0
  429. package/.next/server/chunks/ssr/_0qgn2wv._.js.map +1 -0
  430. package/.next/server/chunks/ssr/_0t-2u_i._.js +3 -0
  431. package/.next/server/chunks/ssr/_0t-2u_i._.js.map +1 -0
  432. package/.next/server/chunks/ssr/_0vn5_62._.js +5 -0
  433. package/.next/server/chunks/ssr/_0vn5_62._.js.map +1 -0
  434. package/.next/server/chunks/ssr/{_01aim8_._.js → _0z1gdb3._.js} +2 -2
  435. package/.next/server/chunks/ssr/{_01aim8_._.js.map → _0z1gdb3._.js.map} +1 -1
  436. package/.next/server/chunks/ssr/_0~4ta0s._.js +3 -0
  437. package/.next/server/chunks/ssr/_0~4ta0s._.js.map +1 -0
  438. package/.next/server/chunks/ssr/_0~5r_8s._.js +3 -0
  439. package/.next/server/chunks/ssr/_0~5r_8s._.js.map +1 -0
  440. package/.next/server/chunks/ssr/_13mk_9n._.js.map +1 -1
  441. package/.next/server/chunks/ssr/packages_dashboard_src_0uxs9-.._.js +1 -1
  442. package/.next/server/chunks/ssr/packages_dashboard_src_0uxs9-.._.js.map +1 -1
  443. package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_advanced_page_tsx_0o~_885._.js +1 -1
  444. package/.next/server/chunks/ssr/packages_dashboard_src_app_settings_advanced_page_tsx_0o~_885._.js.map +1 -1
  445. package/.next/server/chunks/ssr/packages_shared_dist_index_0kuvow-.js +2 -2
  446. package/.next/server/chunks/ssr/packages_shared_dist_index_0kuvow-.js.map +1 -1
  447. package/.next/server/middleware/middleware-manifest.json +1 -1
  448. package/.next/server/middleware-build-manifest.js +3 -3
  449. package/.next/server/middleware-manifest.json +1 -1
  450. package/.next/server/pages/404.html +1 -1
  451. package/.next/server/pages/500.html +1 -1
  452. package/.next/static/chunks/00qqwuw5id.21.js +1 -0
  453. package/.next/static/chunks/0_yam4jvco3~t.js +1 -0
  454. package/.next/static/chunks/{107sryfaib58g.js → 0kjwfju1fsjkk.js} +1 -1
  455. package/.next/static/chunks/0yt4prt55bas4.js +11 -0
  456. package/.next/static/chunks/{0v2k5twh.h_g2.js → 10_4_2h602xzk.js} +3 -3
  457. package/.next/trace +2 -2
  458. package/.next/trace-build +1 -1
  459. package/package.json +11 -11
  460. package/.next/server/chunks/ssr/_0-v4eqm._.js +0 -3
  461. package/.next/server/chunks/ssr/_0-v4eqm._.js.map +0 -1
  462. package/.next/server/chunks/ssr/_03ay~a6._.js +0 -3
  463. package/.next/server/chunks/ssr/_03ay~a6._.js.map +0 -1
  464. package/.next/server/chunks/ssr/_05ul8c5._.js +0 -3
  465. package/.next/server/chunks/ssr/_05ul8c5._.js.map +0 -1
  466. package/.next/server/chunks/ssr/_0_1u-~q._.js +0 -3
  467. package/.next/server/chunks/ssr/_0_1u-~q._.js.map +0 -1
  468. package/.next/server/chunks/ssr/_0ax_-cr._.js +0 -3
  469. package/.next/server/chunks/ssr/_0ax_-cr._.js.map +0 -1
  470. package/.next/server/chunks/ssr/_0czapf~._.js +0 -3
  471. package/.next/server/chunks/ssr/_0czapf~._.js.map +0 -1
  472. package/.next/server/chunks/ssr/_0dlwb-j._.js +0 -3
  473. package/.next/server/chunks/ssr/_0dlwb-j._.js.map +0 -1
  474. package/.next/server/chunks/ssr/_0dvtdxd._.js +0 -3
  475. package/.next/server/chunks/ssr/_0dvtdxd._.js.map +0 -1
  476. package/.next/server/chunks/ssr/_0h-sc1p._.js +0 -3
  477. package/.next/server/chunks/ssr/_0h-sc1p._.js.map +0 -1
  478. package/.next/server/chunks/ssr/_0k_zx~4._.js +0 -3
  479. package/.next/server/chunks/ssr/_0k_zx~4._.js.map +0 -1
  480. package/.next/server/chunks/ssr/_0kqlqn5._.js +0 -5
  481. package/.next/server/chunks/ssr/_0kqlqn5._.js.map +0 -1
  482. package/.next/server/chunks/ssr/_0lm8td~._.js.map +0 -1
  483. package/.next/server/chunks/ssr/_0pydxc8._.js.map +0 -1
  484. package/.next/server/chunks/ssr/_115_o9h._.js +0 -3
  485. package/.next/server/chunks/ssr/_115_o9h._.js.map +0 -1
  486. package/.next/static/chunks/07k3fjq54671q.js +0 -1
  487. package/.next/static/chunks/0o6q9amhembht.js +0 -1
  488. package/.next/static/chunks/0pbah5-djvzuh.js +0 -11
  489. package/.next/static/chunks/0sz8178y9b-~6.js +0 -1
  490. package/LICENSE +0 -21
  491. /package/.next/server/chunks/{[root-of-the-server]__0j~awob._.js.map → [root-of-the-server]__0dwxuh7._.js.map} +0 -0
  492. /package/.next/server/chunks/{[root-of-the-server]__04-hp3j._.js.map → [root-of-the-server]__0k7lkv6._.js.map} +0 -0
  493. /package/.next/static/{BS7xnS8j09zEzTFQ8HuEd → BoJYg5-EvFL480WsH6xGD}/_buildManifest.js +0 -0
  494. /package/.next/static/{BS7xnS8j09zEzTFQ8HuEd → BoJYg5-EvFL480WsH6xGD}/_clientMiddlewareManifest.js +0 -0
  495. /package/.next/static/{BS7xnS8j09zEzTFQ8HuEd → BoJYg5-EvFL480WsH6xGD}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-collapsible%401.1.12_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14__%40types_10a2c6d0ac3bcc7422bd3020fe61e076/node_modules/%40radix-ui/react-collapsible/dist/index.mjs","../../../../../../packages/dashboard/src/components/ui/collapsible.tsx","../../../../../../node_modules/.pnpm/%40tanstack%2Bquery-core%405.96.2/node_modules/%40tanstack/query-core/build/modern/infiniteQueryObserver.js","../../../../../../node_modules/.pnpm/%40tanstack%2Breact-query%405.96.2_react%4019.2.4/node_modules/%40tanstack/react-query/build/modern/useInfiniteQuery.js","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/activity.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/hash.ts","../../../../../../packages/dashboard/src/lib/hooks/use-conversations.ts","../../../../../../packages/dashboard/src/components/docs/docs-learn-more.tsx","../../../../../../packages/dashboard/src/lib/hooks/use-metrics.ts","../../../../../../packages/dashboard/src/lib/hooks/use-events.ts","../../../../../../packages/dashboard/src/lib/constants.ts"],"sourcesContent":["\"use client\";\n\n// src/collapsible.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar COLLAPSIBLE_NAME = \"Collapsible\";\nvar [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\nvar [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME);\nvar Collapsible = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCollapsible,\n open: openProp,\n defaultOpen,\n disabled,\n onOpenChange,\n ...collapsibleProps\n } = props;\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: COLLAPSIBLE_NAME\n });\n return /* @__PURE__ */ jsx(\n CollapsibleProvider,\n {\n scope: __scopeCollapsible,\n disabled,\n contentId: useId(),\n open,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(open),\n \"data-disabled\": disabled ? \"\" : void 0,\n ...collapsibleProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nCollapsible.displayName = COLLAPSIBLE_NAME;\nvar TRIGGER_NAME = \"CollapsibleTrigger\";\nvar CollapsibleTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCollapsible, ...triggerProps } = props;\n const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open || false,\n \"data-state\": getState(context.open),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n disabled: context.disabled,\n ...triggerProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nCollapsibleTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"CollapsibleContent\";\nvar CollapsibleContent = React.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: ({ present }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, { ...contentProps, ref: forwardedRef, present }) });\n }\n);\nCollapsibleContent.displayName = CONTENT_NAME;\nvar CollapsibleContentImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeCollapsible, present, children, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = React.useState(present);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef(0);\n const height = heightRef.current;\n const widthRef = React.useRef(0);\n const width = widthRef.current;\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = React.useRef(isOpen);\n const originalStylesRef = React.useRef(void 0);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n useLayoutEffect(() => {\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName\n };\n node.style.transitionDuration = \"0s\";\n node.style.animationName = \"none\";\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration;\n node.style.animationName = originalStylesRef.current.animationName;\n }\n setIsPresent(present);\n }\n }, [context.open, present]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n id: context.contentId,\n hidden: !isOpen,\n ...contentProps,\n ref: composedRefs,\n style: {\n [`--radix-collapsible-content-height`]: height ? `${height}px` : void 0,\n [`--radix-collapsible-content-width`]: width ? `${width}px` : void 0,\n ...props.style\n },\n children: isOpen && children\n }\n );\n});\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root = Collapsible;\nvar Trigger = CollapsibleTrigger;\nvar Content = CollapsibleContent;\nexport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n Content,\n Root,\n Trigger,\n createCollapsibleScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nexport const Collapsible = CollapsiblePrimitive.Root;\nexport const CollapsibleTrigger = CollapsiblePrimitive.Trigger;\nexport const CollapsibleContent = CollapsiblePrimitive.Content;\n","// src/infiniteQueryObserver.ts\nimport { QueryObserver } from \"./queryObserver.js\";\nimport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n} from \"./infiniteQueryBehavior.js\";\nvar InfiniteQueryObserver = class extends QueryObserver {\n constructor(client, options) {\n super(client, options);\n }\n bindMethods() {\n super.bindMethods();\n this.fetchNextPage = this.fetchNextPage.bind(this);\n this.fetchPreviousPage = this.fetchPreviousPage.bind(this);\n }\n setOptions(options) {\n super.setOptions({\n ...options,\n behavior: infiniteQueryBehavior()\n });\n }\n getOptimisticResult(options) {\n options.behavior = infiniteQueryBehavior();\n return super.getOptimisticResult(options);\n }\n fetchNextPage(options) {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: \"forward\" }\n }\n });\n }\n fetchPreviousPage(options) {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: \"backward\" }\n }\n });\n }\n createResult(query, options) {\n const { state } = query;\n const parentResult = super.createResult(query, options);\n const { isFetching, isRefetching, isError, isRefetchError } = parentResult;\n const fetchDirection = state.fetchMeta?.fetchMore?.direction;\n const isFetchNextPageError = isError && fetchDirection === \"forward\";\n const isFetchingNextPage = isFetching && fetchDirection === \"forward\";\n const isFetchPreviousPageError = isError && fetchDirection === \"backward\";\n const isFetchingPreviousPage = isFetching && fetchDirection === \"backward\";\n const result = {\n ...parentResult,\n fetchNextPage: this.fetchNextPage,\n fetchPreviousPage: this.fetchPreviousPage,\n hasNextPage: hasNextPage(options, state.data),\n hasPreviousPage: hasPreviousPage(options, state.data),\n isFetchNextPageError,\n isFetchingNextPage,\n isFetchPreviousPageError,\n isFetchingPreviousPage,\n isRefetchError: isRefetchError && !isFetchNextPageError && !isFetchPreviousPageError,\n isRefetching: isRefetching && !isFetchingNextPage && !isFetchingPreviousPage\n };\n return result;\n }\n};\nexport {\n InfiniteQueryObserver\n};\n//# sourceMappingURL=infiniteQueryObserver.js.map","\"use client\";\n\n// src/useInfiniteQuery.ts\nimport { InfiniteQueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useInfiniteQuery(options, queryClient) {\n return useBaseQuery(\n options,\n InfiniteQueryObserver,\n queryClient\n );\n}\nexport {\n useInfiniteQuery\n};\n//# sourceMappingURL=useInfiniteQuery.js.map","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Activity\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjIgMTJoLTIuNDhhMiAyIDAgMCAwLTEuOTMgMS40NmwtMi4zNSA4LjM2YS4yNS4yNSAwIDAgMS0uNDggMEw5LjI0IDIuMThhLjI1LjI1IDAgMCAwLS40OCAwbC0yLjM1IDguMzZBMiAyIDAgMCAxIDQuNDkgMTJIMiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/activity\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Activity = createLucideIcon('Activity', [\n [\n 'path',\n {\n d: 'M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2',\n key: '169zse',\n },\n ],\n]);\n\nexport default Activity;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Hash\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8bGluZSB4MT0iNCIgeDI9IjIwIiB5MT0iOSIgeTI9IjkiIC8+CiAgPGxpbmUgeDE9IjQiIHgyPSIyMCIgeTE9IjE1IiB5Mj0iMTUiIC8+CiAgPGxpbmUgeDE9IjEwIiB4Mj0iOCIgeTE9IjMiIHkyPSIyMSIgLz4KICA8bGluZSB4MT0iMTYiIHgyPSIxNCIgeTE9IjMiIHkyPSIyMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/hash\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Hash = createLucideIcon('Hash', [\n ['line', { x1: '4', x2: '20', y1: '9', y2: '9', key: '4lhtct' }],\n ['line', { x1: '4', x2: '20', y1: '15', y2: '15', key: 'vyu0kd' }],\n ['line', { x1: '10', x2: '8', y1: '3', y2: '21', key: '1ggp8o' }],\n ['line', { x1: '16', x2: '14', y1: '3', y2: '21', key: 'weycgp' }],\n]);\n\nexport default Hash;\n","\"use client\";\n\nimport { useInfiniteQuery } from \"@tanstack/react-query\";\nimport { api } from \"@/lib/api-client\";\nimport type { ConversationsResponse } from \"@/lib/api-types\";\n\nexport function useConversations(\n filters?: { platform?: string; status?: string; scope?: string },\n options?: { enabled?: boolean },\n) {\n return useInfiniteQuery({\n queryKey: [\"conversations\", filters],\n queryFn: ({ pageParam = 1 }) =>\n api.get<ConversationsResponse>(\"/conversations\", {\n page: pageParam,\n limit: 20,\n platform: filters?.platform,\n status: filters?.status,\n scope: filters?.scope,\n }),\n getNextPageParam: (lastPage) =>\n lastPage.pagination.page < lastPage.pagination.totalPages\n ? lastPage.pagination.page + 1\n : undefined,\n initialPageParam: 1,\n enabled: options?.enabled ?? true,\n });\n}\n","\"use client\";\n\nimport { ArrowUpRight } from \"lucide-react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { openDocsHelpSlideover } from \"@/lib/docs/slideover-cache\";\nimport { cn } from \"@/lib/utils\";\n\ninterface DocsLearnMoreProps {\n /** Doc to load when clicked. */\n docId: string;\n /** Optional anchor id (slugified heading) to deep-link into. */\n anchor?: string | null;\n /** Visible label. Default: \"What is this?\". */\n label?: string;\n className?: string;\n}\n\n/**\n * Text+arrow CTA used inside empty states, error toasts, and other\n * unobtrusive \"operator might want context here\" surfaces (DOCS_QA_DESIGN.md\n * §8.4 E7/E8). Opens the docs slide-over rather than navigating to /docs\n * so the operator does not lose place on the current screen.\n */\nexport function DocsLearnMore({\n docId,\n anchor = null,\n label = \"What is this?\",\n className,\n}: DocsLearnMoreProps) {\n const queryClient = useQueryClient();\n return (\n <button\n type=\"button\"\n onClick={() =>\n openDocsHelpSlideover(queryClient, {\n docId,\n anchor,\n autoFocusComposer: false,\n })\n }\n className={cn(\n \"inline-flex items-center gap-1 rounded-md border border-border bg-card px-2.5 py-1 text-xs text-muted-foreground transition hover:bg-accent hover:text-foreground\",\n className,\n )}\n data-testid=\"docs-learn-more\"\n >\n <span>{label}</span>\n <ArrowUpRight className=\"h-3 w-3\" aria-hidden=\"true\" />\n </button>\n );\n}\n","\"use client\";\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport { api } from \"@/lib/api-client\";\nimport type { MetricsResponse } from \"@/lib/api-types\";\n\nexport function useMetrics(options?: { enabled?: boolean }) {\n return useQuery({\n queryKey: [\"metrics\"],\n queryFn: () => api.get<MetricsResponse>(\"/metrics\"),\n refetchInterval: 30_000,\n enabled: options?.enabled ?? true,\n });\n}\n","\"use client\";\n\nimport { useInfiniteQuery } from \"@tanstack/react-query\";\nimport { api } from \"@/lib/api-client\";\nimport type { EventsResponse } from \"@/lib/api-types\";\n\nexport function useEvents(\n filters?: { type?: string; result?: string; days?: string },\n options?: { enabled?: boolean },\n) {\n return useInfiniteQuery({\n queryKey: [\"events\", filters],\n queryFn: ({ pageParam = 1 }) =>\n api.get<EventsResponse>(\"/events\", {\n page: pageParam,\n limit: 50,\n type: filters?.type,\n result: filters?.result,\n days: filters?.days,\n }),\n getNextPageParam: (lastPage) =>\n lastPage.pagination.page < lastPage.pagination.totalPages\n ? lastPage.pagination.page + 1\n : undefined,\n initialPageParam: 1,\n enabled: options?.enabled,\n });\n}\n","export const EVENT_TYPE_COLORS: Record<string, string> = {\n \"message.received\": \"blue\",\n \"routine.morning_routine\": \"green\",\n \"routine.evening_review\": \"green\",\n \"routine.hourly_check\": \"teal\",\n \"scheduled.task\": \"purple\",\n \"git.push\": \"gray\",\n \"schedule.approaching\": \"amber\",\n};\n\nexport const RESULT_COLORS: Record<string, string> = {\n success: \"green\",\n failed: \"red\",\n partial: \"amber\",\n skipped: \"gray\",\n};\n\n"],"names":["COLLAPSIBLE_NAME","createCollapsibleContext","createCollapsibleScope","CollapsibleProvider","useCollapsibleContext","Collapsible","props","forwardedRef","__scopeCollapsible","open","openProp","defaultOpen","disabled","onOpenChange","collapsibleProps","setOpen","prop","defaultProp","onChange","caller","scope","contentId","onOpenToggle","prevOpen","children","div","getState","ref","displayName","TRIGGER_NAME","CollapsibleTrigger","triggerProps","context","button","type","onClick","CONTENT_NAME","CollapsibleContent","forceMount","contentProps","present","CollapsibleContentImpl","isPresent","setIsPresent","composedRefs","heightRef","height","current","widthRef","width","isOpen","isMountAnimationPreventedRef","originalStylesRef","rAF","requestAnimationFrame","cancelAnimationFrame","node","transitionDuration","style","animationName","rect","getBoundingClientRect","id","hidden","Root","Trigger","Content","InfiniteQueryObserver","client","options","bindMethods","fetchNextPage","bind","fetchPreviousPage","setOptions","behavior","getOptimisticResult","fetch","meta","fetchMore","direction","createResult","query","state","parentResult","isFetching","isRefetching","isError","isRefetchError","fetchDirection","fetchMeta","isFetchNextPageError","isFetchingNextPage","isFetchPreviousPageError","isFetchingPreviousPage","result","hasNextPage","data","hasPreviousPage","useConversations","filters","queryKey","queryFn","pageParam","get","page","limit","platform","status","getNextPageParam","lastPage","pagination","totalPages","undefined","initialPageParam","enabled","DocsLearnMore","docId","anchor","label","className","queryClient","autoFocusComposer","useMetrics","refetchInterval","useEvents","days","EVENT_TYPE_COLORS","RESULT_COLORS","success","failed","partial","skipped"],"mappings":"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","ignoreList":[0,2,3,4,5]}
@@ -1,3 +0,0 @@
1
- module.exports=[11307,a=>{"use strict";let b=(0,a.i(5423).default)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);a.s(["FolderOpen",0,b],11307)},20090,a=>{"use strict";var b=a.i(59974);async function c({title:a,defaultPath:d}){let e=await b.api.post("/system/pick-directory",{title:a,...d?{defaultPath:d}:{}});if("selected"===e.status&&e.path)return e.path;if("cancelled"===e.status)return null;throw Error(e.message??"Folder picker is unavailable.")}a.s(["pickDirectoryFromDesktop",0,c])},91534,a=>{"use strict";var b=a.i(81673),c=a.i(76015),d=a.i(11307),e=a.i(92241),f=a.i(21218),g=a.i(8212),h=a.i(20090),i=a.i(48558);a.s(["DirectoryPickerField",0,function({id:a,value:j,onChange:k,title:l,placeholder:m="Choose a folder...",defaultPath:n,disabled:o=!1,className:p,inputClassName:q,buttonLabel:r="Choose"}){let[s,t]=(0,c.useState)(!1),[u,v]=(0,c.useState)(null),w=async()=>{t(!0),v(null);try{let a=await (0,h.pickDirectoryFromDesktop)({title:l,defaultPath:j.trim()||n});a&&k(a)}catch(a){v(a instanceof Error?a.message:"Folder picker is unavailable.")}finally{t(!1)}};return(0,b.jsxs)("div",{className:(0,i.cn)("space-y-1",p),children:[(0,b.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row",children:[(0,b.jsx)(g.Input,{id:a,value:j,onChange:a=>{k(a.target.value),v(null)},placeholder:m,className:(0,i.cn)("font-mono text-sm",q),disabled:o||s}),(0,b.jsxs)(f.Button,{type:"button",variant:"outline",onClick:w,disabled:o||s,className:"shrink-0 gap-2",children:[s?(0,b.jsx)(e.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(d.FolderOpen,{className:"h-4 w-4"}),s?"Opening...":r]})]}),u&&(0,b.jsx)("p",{className:"text-xs text-destructive",children:u})]})}])},86807,a=>{"use strict";var b=a.i(81673),c=a.i(48558);a.s(["ConnectionsSectionHeader",0,function({title:a,description:d,healthy:e,total:f,attention:g,actions:h}){let i=f>0&&e===f,j=f>0&&0===e;return(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("div",{className:"flex items-baseline justify-between gap-3",children:[(0,b.jsx)("h1",{className:"text-2xl font-semibold text-foreground",children:a}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[f>0&&(0,b.jsxs)("span",{className:(0,c.cn)("text-xs font-medium tabular-nums",i?"text-emerald-600 dark:text-emerald-400":j?"text-muted-foreground":"text-amber-600 dark:text-amber-400"),children:[e,"/",f," connected"]}),h]})]}),d&&(0,b.jsx)("p",{className:"max-w-3xl text-sm text-muted-foreground",children:d}),g&&(0,b.jsx)("p",{className:"text-xs text-amber-600 dark:text-amber-400",children:g})]})}])},95827,a=>{"use strict";var b=a.i(81673),c=a.i(7384),d=a.i(30400),e=a.i(48558);let f={connected:{variant:"green",label:"Connected"},configured:{variant:"amber",label:"Configured"},connecting:{variant:"amber",label:"Connecting…"},"needs-setup":{variant:"gray",label:"Not Configured"},error:{variant:"red",label:"Error"},disabled:{variant:"gray",label:"Disabled"}};a.s(["ConnectionCard",0,function({name:a,icon:g,status:h,error:i,metadata:j,children:k,className:l}){let m=f[h];return(0,b.jsxs)(d.Card,{tone:"connected"===h?"success":"error"===h?"error":"default",className:(0,e.cn)("relative",l),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:g}),(0,b.jsx)("h3",{className:"text-sm font-medium text-foreground",children:a})]}),(0,b.jsx)(c.Badge,{variant:m.variant,children:m.label})]}),i&&"connecting"!==h&&(0,b.jsx)("p",{className:"mb-2 text-xs text-red-600 dark:text-red-400",children:i}),j&&j.length>0&&(0,b.jsx)("div",{className:"mb-3 space-y-0.5",children:j.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,b.jsx)("span",{className:"text-muted-foreground",children:a.label}),(0,b.jsx)("span",{className:"text-foreground",children:a.value})]},a.label))}),k]})},"deriveConfiguredStatus",0,function(a){return a?"configured":"needs-setup"},"deriveIntegrationStatus",0,function(a){return a&&a.configured?a.error?"error":a.connected?"connected":"configured":"needs-setup"},"deriveMessagingStatus",0,function(a){return a&&"not_configured"!==a.runtimeState?"connecting"===a.runtimeState?"connecting":"error"===a.runtimeState?"error":"ok"===a.runtimeState?"connected":"configured":"needs-setup"},"messagingMetadata",0,function(a){if(a)return[{label:"Owner configured",value:a.ownerConfigured?"yes":"no"},{label:"Owner channel known",value:a.ownerChannelKnown?"yes":"no"},{label:"Reminder eligible",value:a.notificationEligible?"yes":"no"},{label:"Last inbound",value:a.lastInboundAt??"—"}]}])},78933,a=>{"use strict";var b=a.i(76015),c=a.i(81130),d=a.i(59974);a.s(["useSaveConfig",0,function(){let a=(0,c.useQueryClient)(),[e,f]=(0,b.useState)(null),g=(0,b.useCallback)((a,b)=>{f({type:a,message:b}),setTimeout(()=>f(null),4e3)},[]),h=(0,b.useCallback)((a,b)=>{let c=Object.values(a.errors??{});c.length>0?g("warning",c.join(" ")):a.requiresRestart?.length>0?g("warning",`Updated. Restart daemon for: ${a.requiresRestart.join(", ")}`):g("success",b)},[g]),i=(0,b.useCallback)(async(b,c)=>{try{let e=await d.api.patch("/config",{[b]:c});a.invalidateQueries({queryKey:["config"]}),h(e,"Setting updated")}catch(a){throw g("error",`Failed to save: ${a instanceof Error?a.message:"Unknown error"}`),a}},[a,h,g]),j=(0,b.useCallback)(async b=>{try{let c=await d.api.patch("/config",b);a.invalidateQueries({queryKey:["config"]}),h(c,"Settings updated")}catch(a){throw g("error",`Failed to save: ${a instanceof Error?a.message:"Unknown error"}`),a}},[a,h,g]);return{toast:e,showToast:g,saveField:i,saveMultipleFields:j,patchConfig:(0,b.useCallback)(async b=>{let c=await d.api.patch("/config",b);return a.invalidateQueries({queryKey:["config"]}),c},[a])}}])},35571,a=>{"use strict";let b=(0,a.i(5423).default)("BookText",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}],["path",{d:"M8 11h8",key:"vwpz6n"}],["path",{d:"M8 7h6",key:"1f0q6e"}]]);a.s(["BookText",0,b],35571)},57216,a=>{"use strict";var b=a.i(76015),c=a.i(59653),d=a.i(95819),e=a.i(47427),f=a.i(18867),g=a.i(80303),h=a.i(30419),i=a.i(73490),j=a.i(55277),k=a.i(81673),l="Collapsible",[m,n]=(0,d.createContextScope)(l),[o,p]=m(l),q=b.forwardRef((a,c)=>{let{__scopeCollapsible:d,open:f,defaultOpen:g,disabled:i,onOpenChange:m,...n}=a,[p,q]=(0,e.useControllableState)({prop:f,defaultProp:g??!1,onChange:m,caller:l});return(0,k.jsx)(o,{scope:d,disabled:i,contentId:(0,j.useId)(),open:p,onOpenToggle:b.useCallback(()=>q(a=>!a),[q]),children:(0,k.jsx)(h.Primitive.div,{"data-state":w(p),"data-disabled":i?"":void 0,...n,ref:c})})});q.displayName=l;var r="CollapsibleTrigger",s=b.forwardRef((a,b)=>{let{__scopeCollapsible:d,...e}=a,f=p(r,d);return(0,k.jsx)(h.Primitive.button,{type:"button","aria-controls":f.contentId,"aria-expanded":f.open||!1,"data-state":w(f.open),"data-disabled":f.disabled?"":void 0,disabled:f.disabled,...e,ref:b,onClick:(0,c.composeEventHandlers)(a.onClick,f.onOpenToggle)})});s.displayName=r;var t="CollapsibleContent",u=b.forwardRef((a,b)=>{let{forceMount:c,...d}=a,e=p(t,a.__scopeCollapsible);return(0,k.jsx)(i.Presence,{present:c||e.open,children:({present:a})=>(0,k.jsx)(v,{...d,ref:b,present:a})})});u.displayName=t;var v=b.forwardRef((a,c)=>{let{__scopeCollapsible:d,present:e,children:i,...j}=a,l=p(t,d),[m,n]=b.useState(e),o=b.useRef(null),q=(0,g.useComposedRefs)(c,o),r=b.useRef(0),s=r.current,u=b.useRef(0),v=u.current,x=l.open||m,y=b.useRef(x),z=b.useRef(void 0);return b.useEffect(()=>{let a=requestAnimationFrame(()=>y.current=!1);return()=>cancelAnimationFrame(a)},[]),(0,f.useLayoutEffect)(()=>{let a=o.current;if(a){z.current=z.current||{transitionDuration:a.style.transitionDuration,animationName:a.style.animationName},a.style.transitionDuration="0s",a.style.animationName="none";let b=a.getBoundingClientRect();r.current=b.height,u.current=b.width,y.current||(a.style.transitionDuration=z.current.transitionDuration,a.style.animationName=z.current.animationName),n(e)}},[l.open,e]),(0,k.jsx)(h.Primitive.div,{"data-state":w(l.open),"data-disabled":l.disabled?"":void 0,id:l.contentId,hidden:!x,...j,ref:q,style:{"--radix-collapsible-content-height":s?`${s}px`:void 0,"--radix-collapsible-content-width":v?`${v}px`:void 0,...a.style},children:x&&i})});function w(a){return a?"open":"closed"}a.s(["Collapsible",0,q,"CollapsibleContent",0,u,"CollapsibleTrigger",0,s],57216)},39293,a=>{"use strict";let b=(0,a.i(5423).default)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);a.s(["RefreshCw",0,b],39293)},48033,a=>{"use strict";let b=(0,a.i(5423).default)("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);a.s(["Lock",0,b],48033)},7385,a=>{"use strict";let b=(0,a.i(5423).default)("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);a.s(["XCircle",0,b],7385)},82740,a=>{"use strict";let b=(0,a.i(5423).default)("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);a.s(["ExternalLink",0,b],82740)},60380,a=>{"use strict";var b=a.i(76015);a.i(81673);var c=b.createContext(void 0);a.s(["useDirection",0,function(a){let d=b.useContext(c);return a||d||"ltr"}])},69471,a=>{"use strict";var b=a.i(76015),c=a.i(95819),d=a.i(80303),e=a.i(92274),f=a.i(81673),g=new WeakMap;function h(a,b){var c,d;let e,f,g;if("at"in Array.prototype)return Array.prototype.at.call(a,b);let h=(c=a,d=b,e=c.length,(g=(f=i(d))>=0?f:e+f)<0||g>=e?-1:g);return -1===h?void 0:a[h]}function i(a){return a!=a||0===a?0:Math.trunc(a)}(class a extends Map{#a;constructor(a){super(a),this.#a=[...super.keys()],g.set(this,!0)}set(a,b){return g.get(this)&&(this.has(a)?this.#a[this.#a.indexOf(a)]=a:this.#a.push(a)),super.set(a,b),this}insert(a,b,c){let d,e=this.has(b),f=this.#a.length,g=i(a),h=g>=0?g:f+g,j=h<0||h>=f?-1:h;if(j===this.size||e&&j===this.size-1||-1===j)return this.set(b,c),this;let k=this.size+ +!e;g<0&&h++;let l=[...this.#a],m=!1;for(let a=h;a<k;a++)if(h===a){let f=l[a];l[a]===b&&(f=l[a+1]),e&&this.delete(b),d=this.get(f),this.set(b,c)}else{m||l[a-1]!==b||(m=!0);let c=l[m?a:a-1],e=d;d=this.get(c),this.delete(c),this.set(c,e)}return this}with(b,c,d){let e=new a(this);return e.insert(b,c,d),e}before(a){let b=this.#a.indexOf(a)-1;if(!(b<0))return this.entryAt(b)}setBefore(a,b,c){let d=this.#a.indexOf(a);return -1===d?this:this.insert(d,b,c)}after(a){let b=this.#a.indexOf(a);if(-1!==(b=-1===b||b===this.size-1?-1:b+1))return this.entryAt(b)}setAfter(a,b,c){let d=this.#a.indexOf(a);return -1===d?this:this.insert(d+1,b,c)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#a=[],super.clear()}delete(a){let b=super.delete(a);return b&&this.#a.splice(this.#a.indexOf(a),1),b}deleteAt(a){let b=this.keyAt(a);return void 0!==b&&this.delete(b)}at(a){let b=h(this.#a,a);if(void 0!==b)return this.get(b)}entryAt(a){let b=h(this.#a,a);if(void 0!==b)return[b,this.get(b)]}indexOf(a){return this.#a.indexOf(a)}keyAt(a){return h(this.#a,a)}from(a,b){let c=this.indexOf(a);if(-1===c)return;let d=c+b;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.at(d)}keyFrom(a,b){let c=this.indexOf(a);if(-1===c)return;let d=c+b;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.keyAt(d)}find(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return d;c++}}findIndex(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return c;c++}return -1}filter(b,c){let d=[],e=0;for(let a of this)Reflect.apply(b,c,[a,e,this])&&d.push(a),e++;return new a(d)}map(b,c){let d=[],e=0;for(let a of this)d.push([a[0],Reflect.apply(b,c,[a,e,this])]),e++;return new a(d)}reduce(...a){let[b,c]=a,d=0,e=c??this.at(0);for(let c of this)e=0===d&&1===a.length?c:Reflect.apply(b,this,[e,c,d,this]),d++;return e}reduceRight(...a){let[b,c]=a,d=c??this.at(-1);for(let c=this.size-1;c>=0;c--){let e=this.at(c);d=c===this.size-1&&1===a.length?e:Reflect.apply(b,this,[d,e,c,this])}return d}toSorted(b){return new a([...this.entries()].sort(b))}toReversed(){let b=new a;for(let a=this.size-1;a>=0;a--){let c=this.keyAt(a),d=this.get(c);b.set(c,d)}return b}toSpliced(...b){let c=[...this.entries()];return c.splice(...b),new a(c)}slice(b,c){let d=new a,e=this.size-1;if(void 0===b)return d;b<0&&(b+=this.size),void 0!==c&&c>0&&(e=c-1);for(let a=b;a<=e;a++){let b=this.keyAt(a),c=this.get(b);d.set(b,c)}return d}every(a,b){let c=0;for(let d of this){if(!Reflect.apply(a,b,[d,c,this]))return!1;c++}return!0}some(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return!0;c++}return!1}}),a.s(["createCollection",0,function(a){let g=a+"CollectionProvider",[h,i]=(0,c.createContextScope)(g),[j,k]=h(g,{collectionRef:{current:null},itemMap:new Map}),l=a=>{let{scope:c,children:d}=a,e=b.default.useRef(null),g=b.default.useRef(new Map).current;return(0,f.jsx)(j,{scope:c,itemMap:g,collectionRef:e,children:d})};l.displayName=g;let m=a+"CollectionSlot",n=(0,e.createSlot)(m),o=b.default.forwardRef((a,b)=>{let{scope:c,children:e}=a,g=k(m,c),h=(0,d.useComposedRefs)(b,g.collectionRef);return(0,f.jsx)(n,{ref:h,children:e})});o.displayName=m;let p=a+"CollectionItemSlot",q="data-radix-collection-item",r=(0,e.createSlot)(p),s=b.default.forwardRef((a,c)=>{let{scope:e,children:g,...h}=a,i=b.default.useRef(null),j=(0,d.useComposedRefs)(c,i),l=k(p,e);return b.default.useEffect(()=>(l.itemMap.set(i,{ref:i,...h}),()=>void l.itemMap.delete(i))),(0,f.jsx)(r,{...{[q]:""},ref:j,children:g})});return s.displayName=p,[{Provider:l,Slot:o,ItemSlot:s},function(c){let d=k(a+"CollectionConsumer",c);return b.default.useCallback(()=>{let a=d.collectionRef.current;if(!a)return[];let b=Array.from(a.querySelectorAll(`[${q}]`));return Array.from(d.itemMap.values()).sort((a,c)=>b.indexOf(a.ref.current)-b.indexOf(c.ref.current))},[d.collectionRef,d.itemMap])},i]}])},48972,a=>{"use strict";a.s(["clamp",0,function(a,[b,c]){return Math.min(c,Math.max(b,a))}])},30400,a=>{"use strict";var b=a.i(81673),c=a.i(48558);let d=(0,a.i(42261).cva)("rounded-xl border p-5 shadow-[0_1px_3px_rgb(0_0_0/0.04)]",{variants:{tone:{default:"border-border bg-card",warning:"border-amber-200 bg-amber-50/50 dark:border-amber-900 dark:bg-amber-950/30",success:"border-emerald-200 bg-emerald-50/50 dark:border-emerald-900 dark:bg-emerald-950/30",error:"border-red-200 bg-red-50/50 dark:border-red-900 dark:bg-red-950/30"},interactive:{true:"transition-shadow duration-150 hover:shadow-[0_4px_6px_rgb(0_0_0/0.06)]",false:""}},defaultVariants:{tone:"default",interactive:!1}});a.s(["Card",0,function({className:a,tone:e,interactive:f,...g}){return(0,b.jsx)("div",{className:(0,c.cn)(d({tone:e,interactive:f}),a),...g})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{className:(0,c.cn)("mb-3 flex items-center justify-between",a),...d})},"CardStatLabel",0,function({className:a,...d}){return(0,b.jsx)("h3",{className:(0,c.cn)("text-sm font-medium text-muted-foreground",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("h3",{className:(0,c.cn)("text-lg font-semibold text-foreground",a),...d})},"CardValue",0,function({className:a,...d}){return(0,b.jsx)("div",{className:(0,c.cn)("text-3xl font-bold text-foreground",a),...d})}])},96336,a=>{"use strict";let b=(0,a.i(5423).default)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);a.s(["Trash2",0,b],96336)},43179,a=>{"use strict";let b=(0,a.i(5423).default)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",0,b],43179)},54506,a=>{"use strict";let b=(0,a.i(5423).default)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["Check",0,b],54506)},50891,a=>{"use strict";let b=(0,a.i(5423).default)("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);a.s(["ShieldCheck",0,b],50891)},18093,40715,a=>{"use strict";var b=a.i(5423);let c=(0,b.default)("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["Eye",0,c],18093);let d=(0,b.default)("EyeOff",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);a.s(["EyeOff",0,d],40715)},91340,a=>{"use strict";var b=a.i(81673),c=a.i(76015),d=a.i(21218),e=a.i(8212),f=a.i(91534);a.s(["ExternalObsidianVaultSettings",0,function({vaultPath:a,vaultName:g,onSave:h}){let[i,j]=(0,c.useState)(a),[k,l]=(0,c.useState)(g),[m,n]=(0,c.useState)(null);(0,c.useEffect)(()=>{j(a)},[a]),(0,c.useEffect)(()=>{l(g)},[g]);let o=async()=>{n("save");try{let a=i.trim(),b=k.trim()||(a.split(/[\\/]+/).filter(Boolean).at(-1)??"");await h({externalObsidianVaultPath:a,externalObsidianVaultName:b})}finally{n(null)}},p=!!(a||g),q=async()=>{n("clear");try{await h({externalObsidianVaultPath:null,externalObsidianVaultName:null}),j(""),l("")}finally{n(null)}};return(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground shrink-0 min-w-[80px]",children:"Path"}),(0,b.jsx)(f.DirectoryPickerField,{value:i,onChange:j,title:"Choose external Obsidian vault directory",placeholder:"Choose an external Obsidian vault folder",defaultPath:a||void 0,inputClassName:"max-w-[480px]"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("label",{className:"text-sm text-muted-foreground shrink-0 min-w-[80px]",children:"Vault Name"}),(0,b.jsx)(e.Input,{value:k,onChange:a=>l(a.target.value),placeholder:"MyVault",className:"max-w-[240px]"})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Use Choose to pick a local folder. Absolute local paths still work, including cloud-synced locations such as iCloud Drive, Dropbox, OneDrive, or Google Drive. Use Clear to remove the integration; both fields are nulled together to avoid the “path set without a name” error state."})]}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(d.Button,{size:"sm",onClick:o,disabled:null!==m,children:"save"===m?"Saving...":"Save External Vault Settings"}),p&&(0,b.jsx)(d.Button,{size:"sm",variant:"outline",onClick:q,disabled:null!==m,children:"clear"===m?"Clearing...":"Clear"})]}),p&&(0,b.jsxs)("div",{className:"text-xs text-muted-foreground space-y-0.5 pt-1",children:[(0,b.jsxs)("p",{children:["Current path:"," ",(0,b.jsx)("code",{className:"text-foreground",children:a||"(not set)"})]}),(0,b.jsxs)("p",{children:["Current vault name:"," ",(0,b.jsx)("code",{className:"text-foreground",children:g||"(not set)"})]})]})]})},"PrimaryPlatformField",0,function({health:a,value:e,defaultValue:f,modified:g,onSave:h}){let i=Object.entries(a?.messaging??{}).filter(([a,b])=>"dashboard"!==a&&b.configured&&b.ownerConfigured).map(([a])=>a),[j,k]=(0,c.useState)(e),[l,m]=(0,c.useState)(!1);(0,c.useEffect)(()=>{k(e)},[e]);let n=j!==e,o=e&&!i.includes(e),p=async()=>{m(!0);try{await h("primaryPlatform",j)}finally{m(!1)}};return(0,b.jsxs)("div",{className:"space-y-2 py-2 border-b",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("label",{className:"text-sm font-medium",children:["Fallback Primary Platform",g&&(0,b.jsx)("span",{className:"ml-2 text-xs text-amber-600",children:"(unsaved)"})]}),void 0!==f&&(0,b.jsxs)("span",{className:"text-xs text-muted-foreground",children:["default: ",f||"(empty)"]})]}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[i.map(a=>(0,b.jsx)(d.Button,{variant:j===a?"default":"outline",size:"sm",disabled:l,onClick:()=>k(a),className:"capitalize",children:a},a)),o&&(0,b.jsxs)(d.Button,{variant:j===e?"default":"outline",size:"sm",disabled:l,onClick:()=>k(e),className:"capitalize opacity-60",title:"Current value — not currently configured with an owner ID",children:[e," (not configured)"]}),0===i.length&&!o&&(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:"Configure a messaging app with an owner ID first."})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Last-resort destination used when no default reminder destinations are selected above and no per-request override is supplied. Only messaging apps with a configured owner ID appear here."}),(0,b.jsx)("div",{children:(0,b.jsx)(d.Button,{size:"sm",variant:"outline",disabled:!n||l,onClick:p,children:l?"Applying...":"Apply"})})]})}])}];
2
-
3
- //# sourceMappingURL=_0dlwb-j._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/folder-open.ts","../../../../../../packages/dashboard/src/lib/directory-picker.ts","../../../../../../packages/dashboard/src/components/directory-picker-field.tsx","../../../../../../packages/dashboard/src/components/connections/section-header.tsx","../../../../../../packages/dashboard/src/components/connections/connection-card.tsx","../../../../../../packages/dashboard/src/lib/hooks/use-save-config.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/book-text.ts","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-collapsible%401.1.12_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14__%40types_10a2c6d0ac3bcc7422bd3020fe61e076/node_modules/%40radix-ui/react-collapsible/dist/index.mjs","../../../../../../packages/dashboard/src/components/ui/collapsible.tsx","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/refresh-cw.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/lock.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/circle-x.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/external-link.ts","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-direction%401.1.1_%40types%2Breact%4019.2.14_react%4019.2.4/node_modules/%40radix-ui/react-direction/src/direction.tsx","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-collection%401.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14__%40types%2Br_161926fa2509d0b7370b60b8bb4eb8b0/node_modules/%40radix-ui/react-collection/src/collection-legacy.tsx","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-collection%401.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14__%40types%2Br_161926fa2509d0b7370b60b8bb4eb8b0/node_modules/%40radix-ui/react-collection/src/collection.tsx","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-collection%401.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14__%40types%2Br_161926fa2509d0b7370b60b8bb4eb8b0/node_modules/%40radix-ui/react-collection/src/ordered-dictionary.ts","../../../../../../node_modules/.pnpm/%40radix-ui%2Bnumber%401.1.1/node_modules/%40radix-ui/number/src/number.ts","../../../../../../packages/dashboard/src/components/ui/card.tsx","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/trash-2.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/plus.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/check.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/shield-check.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/eye-off.ts","../../../../../../node_modules/.pnpm/lucide-react%400.468.0_react%4019.2.4/node_modules/lucide-react/src/icons/eye.ts","../../../../../../packages/dashboard/src/components/settings/composite-fields.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name FolderOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiAxNCAxLjUtMi45QTIgMiAwIDAgMSA5LjI0IDEwSDIwYTIgMiAwIDAgMSAxLjk0IDIuNWwtMS41NCA2YTIgMiAwIDAgMS0xLjk1IDEuNUg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDMuOWEyIDIgMCAwIDEgMS42OS45bC44MSAxLjJhMiAyIDAgMCAwIDEuNjcuOUgxOGEyIDIgMCAwIDEgMiAydjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/folder-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FolderOpen = createLucideIcon('FolderOpen', [\n [\n 'path',\n {\n d: 'm6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2',\n key: 'usdka0',\n },\n ],\n]);\n\nexport default FolderOpen;\n","import { api } from \"@/lib/api-client\";\nimport type { DirectoryPickerResponse } from \"@/lib/api-types\";\n\nexport async function pickDirectoryFromDesktop({\n title,\n defaultPath,\n}: {\n title: string;\n defaultPath?: string;\n}): Promise<string | null> {\n const response = await api.post<DirectoryPickerResponse>(\n \"/system/pick-directory\",\n {\n title,\n ...(defaultPath ? { defaultPath } : {}),\n },\n );\n\n if (response.status === \"selected\" && response.path) {\n return response.path;\n }\n if (response.status === \"cancelled\") {\n return null;\n }\n throw new Error(response.message ?? \"Folder picker is unavailable.\");\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { FolderOpen, Loader2 } from \"lucide-react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { pickDirectoryFromDesktop } from \"@/lib/directory-picker\";\nimport { cn } from \"@/lib/utils\";\n\nexport function DirectoryPickerField({\n id,\n value,\n onChange,\n title,\n placeholder = \"Choose a folder...\",\n defaultPath,\n disabled = false,\n className,\n inputClassName,\n buttonLabel = \"Choose\",\n}: {\n id?: string;\n value: string;\n onChange: (value: string) => void;\n title: string;\n placeholder?: string;\n defaultPath?: string;\n disabled?: boolean;\n className?: string;\n inputClassName?: string;\n buttonLabel?: string;\n}) {\n const [picking, setPicking] = useState(false);\n const [pickerError, setPickerError] = useState<string | null>(null);\n\n const handlePick = async () => {\n setPicking(true);\n setPickerError(null);\n try {\n const selected = await pickDirectoryFromDesktop({\n title,\n defaultPath: value.trim() || defaultPath,\n });\n if (selected) onChange(selected);\n } catch (err) {\n setPickerError(\n err instanceof Error ? err.message : \"Folder picker is unavailable.\",\n );\n } finally {\n setPicking(false);\n }\n };\n\n return (\n <div className={cn(\"space-y-1\", className)}>\n <div className=\"flex flex-col gap-2 sm:flex-row\">\n <Input\n id={id}\n value={value}\n onChange={(e) => {\n onChange(e.target.value);\n setPickerError(null);\n }}\n placeholder={placeholder}\n className={cn(\"font-mono text-sm\", inputClassName)}\n disabled={disabled || picking}\n />\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handlePick}\n disabled={disabled || picking}\n className=\"shrink-0 gap-2\"\n >\n {picking ? (\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n ) : (\n <FolderOpen className=\"h-4 w-4\" />\n )}\n {picking ? \"Opening...\" : buttonLabel}\n </Button>\n </div>\n {pickerError && (\n <p className=\"text-xs text-destructive\">{pickerError}</p>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface ConnectionsSectionHeaderProps {\n title: string;\n description?: ReactNode;\n /** Number of entries that are live/healthy. */\n healthy: number;\n /** Total entries in this section. */\n total: number;\n /** Optional short note about the remainder, e.g. \"WhatsApp needs re-pairing\". */\n attention?: string | null;\n /** Optional right-aligned action element (e.g. an \"Add\" button). */\n actions?: ReactNode;\n}\n\nexport function ConnectionsSectionHeader({\n title,\n description,\n healthy,\n total,\n attention,\n actions,\n}: ConnectionsSectionHeaderProps) {\n const allHealthy = total > 0 && healthy === total;\n const noneHealthy = total > 0 && healthy === 0;\n\n return (\n <div className=\"space-y-1\">\n <div className=\"flex items-baseline justify-between gap-3\">\n <h1 className=\"text-2xl font-semibold text-foreground\">{title}</h1>\n <div className=\"flex items-center gap-3\">\n {total > 0 && (\n <span\n className={cn(\n \"text-xs font-medium tabular-nums\",\n allHealthy\n ? \"text-emerald-600 dark:text-emerald-400\"\n : noneHealthy\n ? \"text-muted-foreground\"\n : \"text-amber-600 dark:text-amber-400\",\n )}\n >\n {healthy}/{total} connected\n </span>\n )}\n {actions}\n </div>\n </div>\n {description && (\n <p className=\"max-w-3xl text-sm text-muted-foreground\">{description}</p>\n )}\n {attention && (\n <p className=\"text-xs text-amber-600 dark:text-amber-400\">\n {attention}\n </p>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Card } from \"@/components/ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport type {\n IntegrationStatus as HealthIntegrationStatus,\n MessagingHealthStatus,\n} from \"@/lib/api-types\";\n\n// ── Status types ──\n\nexport type ConnectionStatus =\n | \"connected\"\n | \"configured\"\n | \"connecting\"\n | \"needs-setup\"\n | \"error\"\n | \"disabled\";\n\nconst STATUS_BADGE: Record<ConnectionStatus, { variant: \"green\" | \"red\" | \"gray\" | \"amber\"; label: string }> = {\n connected: { variant: \"green\", label: \"Connected\" },\n configured: { variant: \"amber\", label: \"Configured\" },\n connecting: { variant: \"amber\", label: \"Connecting…\" },\n \"needs-setup\": { variant: \"gray\", label: \"Not Configured\" },\n error: { variant: \"red\", label: \"Error\" },\n disabled: { variant: \"gray\", label: \"Disabled\" },\n};\n\nfunction cardTone(status: ConnectionStatus) {\n if (status === \"connected\") return \"success\" as const;\n if (status === \"error\") return \"error\" as const;\n return \"default\" as const;\n}\n\n// ── Status derivation helpers ──\n\n/** Derive card status from the health API's integration status object. */\nexport function deriveIntegrationStatus(\n s: HealthIntegrationStatus | undefined,\n): ConnectionStatus {\n if (!s) return \"needs-setup\";\n if (!s.configured) return \"needs-setup\";\n if (s.error) return \"error\";\n if (s.connected) return \"connected\";\n return \"configured\";\n}\n\n/** Derive card status from the health API's messaging status object. */\nexport function deriveMessagingStatus(\n s: MessagingHealthStatus | undefined,\n): ConnectionStatus {\n if (!s) return \"needs-setup\";\n if (s.runtimeState === \"not_configured\") return \"needs-setup\";\n if (s.runtimeState === \"connecting\") return \"connecting\";\n if (s.runtimeState === \"error\") return \"error\";\n if (s.runtimeState === \"ok\") return \"connected\";\n return \"configured\";\n}\n\n/** Derive card status from a simple boolean config flag (e.g. GitHub). */\nexport function deriveConfiguredStatus(configured: boolean): ConnectionStatus {\n return configured ? \"configured\" : \"needs-setup\";\n}\n\n/** Build the standard metadata lines for a messaging channel card. */\nexport function messagingMetadata(status: MessagingHealthStatus | undefined) {\n if (!status) return undefined;\n return [\n { label: \"Owner configured\", value: status.ownerConfigured ? \"yes\" : \"no\" },\n { label: \"Owner channel known\", value: status.ownerChannelKnown ? \"yes\" : \"no\" },\n { label: \"Reminder eligible\", value: status.notificationEligible ? \"yes\" : \"no\" },\n { label: \"Last inbound\", value: status.lastInboundAt ?? \"—\" },\n ];\n}\n\n// ── ConnectionCard component ──\n\nexport interface ConnectionCardProps {\n name: string;\n icon: ReactNode;\n status: ConnectionStatus;\n /** Error message from health API. */\n error?: string | null;\n /** Key-value metadata lines shown below the header. */\n metadata?: Array<{ label: string; value: string }>;\n /** Expandable config/setup content. */\n children?: ReactNode;\n className?: string;\n}\n\nexport function ConnectionCard({\n name,\n icon,\n status,\n error,\n metadata,\n children,\n className,\n}: ConnectionCardProps) {\n const badge = STATUS_BADGE[status];\n\n return (\n <Card tone={cardTone(status)} className={cn(\"relative\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between mb-2\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">{icon}</span>\n <h3 className=\"text-sm font-medium text-foreground\">{name}</h3>\n </div>\n <Badge variant={badge.variant}>{badge.label}</Badge>\n </div>\n\n {/* Error from health API — suppressed during in-progress connecting state so\n transient auth/pairing messages don't render as red errors. */}\n {error && status !== \"connecting\" && (\n <p className=\"mb-2 text-xs text-red-600 dark:text-red-400\">{error}</p>\n )}\n\n {/* Metadata */}\n {metadata && metadata.length > 0 && (\n <div className=\"mb-3 space-y-0.5\">\n {metadata.map((m) => (\n <div key={m.label} className=\"flex items-center justify-between text-xs\">\n <span className=\"text-muted-foreground\">{m.label}</span>\n <span className=\"text-foreground\">{m.value}</span>\n </div>\n ))}\n </div>\n )}\n\n {/* Children */}\n {children}\n </Card>\n );\n}\n","\"use client\";\n\nimport { useCallback, useState } from \"react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { api } from \"@/lib/api-client\";\nimport type { ConfigUpdateResponse } from \"@/lib/api-types\";\nimport type { SettingsToastState } from \"@/components/settings/settings-navigation\";\nimport type { EditableConfigKey } from \"@aitne/shared\";\n\nexport type ConfigValue =\n | string\n | number\n | boolean\n | string[]\n | Record<string, unknown>[]\n | null;\n\nexport type SaveFieldFn = (\n key: EditableConfigKey,\n value: ConfigValue,\n) => Promise<void>;\n\nexport function useSaveConfig() {\n const queryClient = useQueryClient();\n const [toast, setToast] = useState<SettingsToastState | null>(null);\n\n const showToast = useCallback(\n (type: SettingsToastState[\"type\"], message: string) => {\n setToast({ type, message });\n setTimeout(() => setToast(null), 4000);\n },\n [],\n );\n\n const interpret = useCallback(\n (res: ConfigUpdateResponse, successMessage: string) => {\n const warnings = Object.values(res.errors ?? {});\n if (warnings.length > 0) {\n showToast(\"warning\", warnings.join(\" \"));\n } else if (res.requiresRestart?.length > 0) {\n showToast(\n \"warning\",\n `Updated. Restart daemon for: ${res.requiresRestart.join(\", \")}`,\n );\n } else {\n showToast(\"success\", successMessage);\n }\n },\n [showToast],\n );\n\n const saveField = useCallback(\n async (key: EditableConfigKey, value: ConfigValue) => {\n try {\n const res = await api.patch<ConfigUpdateResponse>(\"/config\", {\n [key]: value,\n });\n queryClient.invalidateQueries({ queryKey: [\"config\"] });\n interpret(res, \"Setting updated\");\n } catch (e) {\n showToast(\n \"error\",\n `Failed to save: ${e instanceof Error ? e.message : \"Unknown error\"}`,\n );\n throw e;\n }\n },\n [queryClient, interpret, showToast],\n );\n\n const saveMultipleFields = useCallback(\n async (updates: Partial<Record<EditableConfigKey, ConfigValue>>) => {\n try {\n const res = await api.patch<ConfigUpdateResponse>(\"/config\", updates);\n queryClient.invalidateQueries({ queryKey: [\"config\"] });\n interpret(res, \"Settings updated\");\n } catch (e) {\n showToast(\n \"error\",\n `Failed to save: ${e instanceof Error ? e.message : \"Unknown error\"}`,\n );\n throw e;\n }\n },\n [queryClient, interpret, showToast],\n );\n\n /**\n * Lower-level PATCH /config — makes the API call and invalidates queries\n * but does NOT show a toast. Used by SettingsSaveBar which handles its\n * own feedback.\n */\n const patchConfig = useCallback(\n async (updates: Partial<Record<EditableConfigKey, ConfigValue>>) => {\n const res = await api.patch<ConfigUpdateResponse>(\"/config\", updates);\n queryClient.invalidateQueries({ queryKey: [\"config\"] });\n return res;\n },\n [queryClient],\n );\n\n return { toast, showToast, saveField, saveMultipleFields, patchConfig };\n}\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name BookText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAySDE5YTEgMSAwIDAgMSAxIDF2MThhMSAxIDAgMCAxLTEgMUg2LjVhMSAxIDAgMCAxIDAtNUgyMCIgLz4KICA8cGF0aCBkPSJNOCAxMWg4IiAvPgogIDxwYXRoIGQ9Ik04IDdoNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/book-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BookText = createLucideIcon('BookText', [\n [\n 'path',\n {\n d: 'M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20',\n key: 'k3hazp',\n },\n ],\n ['path', { d: 'M8 11h8', key: 'vwpz6n' }],\n ['path', { d: 'M8 7h6', key: '1f0q6e' }],\n]);\n\nexport default BookText;\n","\"use client\";\n\n// src/collapsible.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar COLLAPSIBLE_NAME = \"Collapsible\";\nvar [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\nvar [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME);\nvar Collapsible = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCollapsible,\n open: openProp,\n defaultOpen,\n disabled,\n onOpenChange,\n ...collapsibleProps\n } = props;\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: COLLAPSIBLE_NAME\n });\n return /* @__PURE__ */ jsx(\n CollapsibleProvider,\n {\n scope: __scopeCollapsible,\n disabled,\n contentId: useId(),\n open,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(open),\n \"data-disabled\": disabled ? \"\" : void 0,\n ...collapsibleProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nCollapsible.displayName = COLLAPSIBLE_NAME;\nvar TRIGGER_NAME = \"CollapsibleTrigger\";\nvar CollapsibleTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCollapsible, ...triggerProps } = props;\n const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open || false,\n \"data-state\": getState(context.open),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n disabled: context.disabled,\n ...triggerProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nCollapsibleTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"CollapsibleContent\";\nvar CollapsibleContent = React.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: ({ present }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, { ...contentProps, ref: forwardedRef, present }) });\n }\n);\nCollapsibleContent.displayName = CONTENT_NAME;\nvar CollapsibleContentImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeCollapsible, present, children, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = React.useState(present);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef(0);\n const height = heightRef.current;\n const widthRef = React.useRef(0);\n const width = widthRef.current;\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = React.useRef(isOpen);\n const originalStylesRef = React.useRef(void 0);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n useLayoutEffect(() => {\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName\n };\n node.style.transitionDuration = \"0s\";\n node.style.animationName = \"none\";\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration;\n node.style.animationName = originalStylesRef.current.animationName;\n }\n setIsPresent(present);\n }\n }, [context.open, present]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n id: context.contentId,\n hidden: !isOpen,\n ...contentProps,\n ref: composedRefs,\n style: {\n [`--radix-collapsible-content-height`]: height ? `${height}px` : void 0,\n [`--radix-collapsible-content-width`]: width ? `${width}px` : void 0,\n ...props.style\n },\n children: isOpen && children\n }\n );\n});\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root = Collapsible;\nvar Trigger = CollapsibleTrigger;\nvar Content = CollapsibleContent;\nexport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n Content,\n Root,\n Trigger,\n createCollapsibleScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nexport const Collapsible = CollapsiblePrimitive.Root;\nexport const CollapsibleTrigger = CollapsiblePrimitive.Trigger;\nexport const CollapsibleContent = CollapsiblePrimitive.Content;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name RefreshCw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMyAxMmE5IDkgMCAwIDEgOS05IDkuNzUgOS43NSAwIDAgMSA2Ljc0IDIuNzRMMjEgOCIgLz4KICA8cGF0aCBkPSJNMjEgM3Y1aC01IiAvPgogIDxwYXRoIGQ9Ik0yMSAxMmE5IDkgMCAwIDEtOSA5IDkuNzUgOS43NSAwIDAgMS02Ljc0LTIuNzRMMyAxNiIgLz4KICA8cGF0aCBkPSJNOCAxNkgzdjUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/refresh-cw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RefreshCw = createLucideIcon('RefreshCw', [\n ['path', { d: 'M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8', key: 'v9h5vc' }],\n ['path', { d: 'M21 3v5h-5', key: '1q7to0' }],\n ['path', { d: 'M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16', key: '3uifl3' }],\n ['path', { d: 'M8 16H3v5', key: '1cv678' }],\n]);\n\nexport default RefreshCw;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Lock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTEiIHg9IjMiIHk9IjExIiByeD0iMiIgcnk9IjIiIC8+CiAgPHBhdGggZD0iTTcgMTFWN2E1IDUgMCAwIDEgMTAgMHY0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/lock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lock = createLucideIcon('Lock', [\n ['rect', { width: '18', height: '11', x: '3', y: '11', rx: '2', ry: '2', key: '1w4ew1' }],\n ['path', { d: 'M7 11V7a5 5 0 0 1 10 0v4', key: 'fwvmzm' }],\n]);\n\nexport default Lock;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name CircleX\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJtMTUgOS02IDYiIC8+CiAgPHBhdGggZD0ibTkgOSA2IDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/circle-x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleX = createLucideIcon('CircleX', [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'm15 9-6 6', key: '1uzhvr' }],\n ['path', { d: 'm9 9 6 6', key: 'z0biqf' }],\n]);\n\nexport default CircleX;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgM2g2djYiIC8+CiAgPHBhdGggZD0iTTEwIDE0IDIxIDMiIC8+CiAgPHBhdGggZD0iTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon('ExternalLink', [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n]);\n\nexport default ExternalLink;\n","import * as React from 'react';\n\ntype Direction = 'ltr' | 'rtl';\nconst DirectionContext = React.createContext<Direction | undefined>(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Direction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DirectionProviderProps {\n children?: React.ReactNode;\n dir: Direction;\n}\nconst DirectionProvider: React.FC<DirectionProviderProps> = (props) => {\n const { dir, children } = props;\n return <DirectionContext.Provider value={dir}>{children}</DirectionContext.Provider>;\n};\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction useDirection(localDir?: Direction) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || 'ltr';\n}\n\nconst Provider = DirectionProvider;\n\nexport {\n useDirection,\n //\n Provider,\n //\n DirectionProvider,\n};\n","import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createSlot, type Slot } from '@radix-ui/react-slot';\n\ntype SlotProps = React.ComponentPropsWithoutRef<typeof Slot>;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\n// We have resorted to returning slots directly rather than exposing primitives that can then\n// be slotted like `<CollectionItem as={Slot}>\u2026</CollectionItem>`.\n// This is because we encountered issues with generic types that cannot be statically analysed\n// due to creating them dynamically via createCollection.\n\nfunction createCollection<ItemElement extends HTMLElement, ItemData = {}>(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionRef: React.RefObject<CollectionElement | null>;\n itemMap: Map<\n React.RefObject<ItemElement | null>,\n { ref: React.RefObject<ItemElement | null> } & ItemData\n >;\n };\n\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext<ContextValue>(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: new Map() }\n );\n\n const CollectionProvider: React.FC<{ children?: React.ReactNode; scope: any }> = (props) => {\n const { scope, children } = props;\n const ref = React.useRef<CollectionElement>(null);\n const itemMap = React.useRef<ContextValue['itemMap']>(new Map()).current;\n return (\n <CollectionProviderImpl scope={scope} itemMap={itemMap} collectionRef={ref}>\n {children}\n </CollectionProviderImpl>\n );\n };\n\n CollectionProvider.displayName = PROVIDER_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef<CollectionElement, CollectionProps>(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return <CollectionSlotImpl ref={composedRefs}>{children}</CollectionSlotImpl>;\n }\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef<ItemElement, CollectionItemSlotProps>(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef<ItemElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...(itemData as unknown as ItemData) });\n return () => void context.itemMap.delete(ref);\n });\n\n return (\n <CollectionItemSlotImpl {...{ [ITEM_DATA_ATTR]: '' }} ref={composedRefs}>\n {children}\n </CollectionItemSlotImpl>\n );\n }\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const context = useCollectionContext(name + 'CollectionConsumer', scope);\n\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current!) - orderedNodes.indexOf(b.ref.current!)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n\n return getItems;\n }\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n","import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createSlot, type Slot } from '@radix-ui/react-slot';\nimport type { EntryOf } from './ordered-dictionary';\nimport { OrderedDict } from './ordered-dictionary';\n\ntype SlotProps = React.ComponentPropsWithoutRef<typeof Slot>;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\ninterface BaseItemData {\n id?: string;\n}\n\ntype ItemDataWithElement<\n ItemData extends BaseItemData,\n ItemElement extends HTMLElement,\n> = ItemData & {\n element: ItemElement;\n};\n\ntype ItemMap<ItemElement extends HTMLElement, ItemData extends BaseItemData> = OrderedDict<\n ItemElement,\n ItemDataWithElement<ItemData, ItemElement>\n>;\n\nfunction createCollection<\n ItemElement extends HTMLElement,\n ItemData extends BaseItemData = BaseItemData,\n>(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionElement: CollectionElement | null;\n collectionRef: React.Ref<CollectionElement | null>;\n collectionRefObject: React.RefObject<CollectionElement | null>;\n itemMap: ItemMap<ItemElement, ItemData>;\n setItemMap: React.Dispatch<React.SetStateAction<ItemMap<ItemElement, ItemData>>>;\n };\n\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext<ContextValue>(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0,\n }\n );\n\n type CollectionState = [\n ItemMap: ItemMap<ItemElement, ItemData>,\n SetItemMap: React.Dispatch<React.SetStateAction<ItemMap<ItemElement, ItemData>>>,\n ];\n\n const CollectionProvider: React.FC<{\n children?: React.ReactNode;\n scope: any;\n state?: CollectionState;\n }> = ({ state, ...props }) => {\n return state ? (\n <CollectionProviderImpl {...props} state={state} />\n ) : (\n <CollectionInit {...props} />\n );\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n\n const CollectionInit: React.FC<{\n children?: React.ReactNode;\n scope: any;\n }> = (props) => {\n const state = useInitCollection();\n return <CollectionProviderImpl {...props} state={state} />;\n };\n CollectionInit.displayName = PROVIDER_NAME + 'Init';\n\n const CollectionProviderImpl: React.FC<{\n children?: React.ReactNode;\n scope: any;\n state: CollectionState;\n }> = (props) => {\n const { scope, children, state } = props;\n const ref = React.useRef<CollectionElement>(null);\n const [collectionElement, setCollectionElement] = React.useState<CollectionElement | null>(\n null\n );\n const composeRefs = useComposedRefs(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n\n React.useEffect(() => {\n if (!collectionElement) return;\n\n const observer = getChildListObserver(() => {\n // setItemMap((map) => {\n // const copy = new OrderedDict(map).toSorted(([, a], [, b]) =>\n // !a.element || !b.element ? 0 : isElementPreceding(a.element, b.element) ? -1 : 1\n // );\n // // check if the order has changed\n // let index = -1;\n // for (const entry of copy) {\n // index++;\n // const key = map.keyAt(index)!;\n // const [copyKey] = entry;\n // if (key !== copyKey) {\n // // order has changed!\n // return copy;\n // }\n // }\n // return map;\n // });\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true,\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n\n return (\n <CollectionContextProvider\n scope={scope}\n itemMap={itemMap}\n setItemMap={setItemMap}\n collectionRef={composeRefs}\n collectionRefObject={ref}\n collectionElement={collectionElement}\n >\n {children}\n </CollectionContextProvider>\n );\n };\n\n CollectionProviderImpl.displayName = PROVIDER_NAME + 'Impl';\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef<CollectionElement, CollectionProps>(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return <CollectionSlotImpl ref={composedRefs}>{children}</CollectionSlotImpl>;\n }\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef<ItemElement, CollectionItemSlotProps>(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef<ItemElement>(null);\n const [element, setElement] = React.useState<ItemElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n const { setItemMap } = context;\n\n const itemDataRef = React.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n\n React.useEffect(() => {\n const itemData = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n\n if (!map.has(element)) {\n map.set(element, { ...(itemData as unknown as ItemData), element });\n return map.toSorted(sortByDocumentPosition);\n }\n\n return map\n .set(element, { ...(itemData as unknown as ItemData), element })\n .toSorted(sortByDocumentPosition);\n });\n\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n\n return (\n <CollectionItemSlotImpl {...{ [ITEM_DATA_ATTR]: '' }} ref={composedRefs as any}>\n {children}\n </CollectionItemSlotImpl>\n );\n }\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useInitCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useInitCollection() {\n return React.useState<ItemMap<ItemElement, ItemData>>(new OrderedDict());\n }\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const { itemMap } = useCollectionContext(name + 'CollectionConsumer', scope);\n\n return itemMap;\n }\n\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection,\n };\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n\nfunction shallowEqual(a: any, b: any) {\n if (a === b) return true;\n if (typeof a !== 'object' || typeof b !== 'object') return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\n\nfunction isElementPreceding(a: Element, b: Element) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\n\nfunction sortByDocumentPosition<E extends HTMLElement, T extends BaseItemData>(\n a: EntryOf<ItemMap<E, T>>,\n b: EntryOf<ItemMap<E, T>>\n) {\n return !a[1].element || !b[1].element\n ? 0\n : isElementPreceding(a[1].element, b[1].element)\n ? -1\n : 1;\n}\n\nfunction getChildListObserver(callback: () => void) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n callback();\n return;\n }\n }\n });\n\n return observer;\n}\n","// Not a real member because it shouldn't be accessible, but the super class\n// calls `set` which needs to read the instanciation state, so it can't be a\n// private member.\nconst __instanciated = new WeakMap<OrderedDict<any, any>, boolean>();\nexport class OrderedDict<K, V> extends Map<K, V> {\n #keys: K[];\n\n constructor(iterable?: Iterable<readonly [K, V]> | null | undefined);\n constructor(entries?: readonly (readonly [K, V])[] | null) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n\n set(key: K, value: V) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n\n insert(index: number, key: K, value: V) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n\n if (safeIndex === this.size || (has && safeIndex === this.size - 1) || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n\n const size = this.size + (has ? 0 : 1);\n\n // If you insert at, say, -2, without this bit you'd replace the\n // second-to-last item and push the rest up one, which means the new item is\n // 3rd to last. This isn't very intuitive; inserting at -2 is more like\n // saying \"make this item the second to last\".\n if (relativeIndex < 0) {\n actualIndex++;\n }\n\n const keys = [...this.#keys];\n let nextValue: V | undefined;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i]!;\n if (keys[i] === key) {\n nextKey = keys[i + 1]!;\n }\n if (has) {\n // delete first to ensure that the item is moved to the end\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1]!;\n const currentValue = nextValue!;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n\n with(index: number, key: K, value: V) {\n const copy = new OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n\n before(key: K) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return undefined;\n }\n return this.entryAt(index);\n }\n\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key: K, newKey: K, value: V) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n\n after(key: K) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return undefined;\n }\n return this.entryAt(index);\n }\n\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key: K, newKey: K, value: V) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n\n first() {\n return this.entryAt(0);\n }\n\n last() {\n return this.entryAt(-1);\n }\n\n clear() {\n this.#keys = [];\n return super.clear();\n }\n\n delete(key: K) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n\n deleteAt(index: number) {\n const key = this.keyAt(index);\n if (key !== undefined) {\n return this.delete(key);\n }\n return false;\n }\n\n at(index: number) {\n const key = at(this.#keys, index);\n if (key !== undefined) {\n return this.get(key);\n }\n }\n\n entryAt(index: number): [K, V] | undefined {\n const key = at(this.#keys, index);\n if (key !== undefined) {\n return [key, this.get(key)!];\n }\n }\n\n indexOf(key: K) {\n return this.#keys.indexOf(key);\n }\n\n keyAt(index: number) {\n return at(this.#keys, index);\n }\n\n from(key: K, offset: number) {\n const index = this.indexOf(key);\n if (index === -1) {\n return undefined;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n\n keyFrom(key: K, offset: number) {\n const index = this.indexOf(key);\n if (index === -1) {\n return undefined;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n\n find(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => boolean,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return undefined;\n }\n\n findIndex(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => boolean,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n\n filter<KK extends K, VV extends V>(\n predicate: (entry: [K, V], index: number, dict: OrderedDict<K, V>) => entry is [KK, VV],\n thisArg?: any\n ): OrderedDict<KK, VV>;\n\n filter(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ): OrderedDict<K, V>;\n\n filter(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ) {\n const entries: Array<[K, V]> = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new OrderedDict(entries);\n }\n\n map<U>(\n callbackfn: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => U,\n thisArg?: any\n ): OrderedDict<K, U> {\n const entries: [K, U][] = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new OrderedDict(entries);\n }\n\n reduce(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V]\n ): [K, V];\n reduce(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V],\n initialValue: [K, V]\n ): [K, V];\n reduce<U>(\n callbackfn: (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n initialValue: U\n ): U;\n\n reduce<U>(\n ...args: [\n (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n U?,\n ]\n ) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0)!;\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry as any;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n\n reduceRight(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V]\n ): [K, V];\n reduceRight(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V],\n initialValue: [K, V]\n ): [K, V];\n reduceRight<U>(\n callbackfn: (\n previousValue: [K, V],\n currentValue: U,\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n initialValue: U\n ): U;\n\n reduceRight<U>(\n ...args: [\n (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n U?,\n ]\n ) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1)!;\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index)!;\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry as any;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n\n toSorted(compareFn?: (a: [K, V], b: [K, V]) => number): OrderedDict<K, V> {\n const entries = [...this.entries()].sort(compareFn);\n return new OrderedDict(entries);\n }\n\n toReversed(): OrderedDict<K, V> {\n const reversed = new OrderedDict<K, V>();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index)!;\n const element = this.get(key)!;\n reversed.set(key, element);\n }\n return reversed;\n }\n\n toSpliced(start: number, deleteCount?: number): OrderedDict<K, V>;\n toSpliced(start: number, deleteCount: number, ...items: [K, V][]): OrderedDict<K, V>;\n\n toSpliced(...args: [start: number, deleteCount: number, ...items: [K, V][]]) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new OrderedDict(entries);\n }\n\n slice(start?: number, end?: number) {\n const result = new OrderedDict<K, V>();\n let stop = this.size - 1;\n\n if (start === undefined) {\n return result;\n }\n\n if (start < 0) {\n start = start + this.size;\n }\n\n if (end !== undefined && end > 0) {\n stop = end - 1;\n }\n\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index)!;\n const element = this.get(key)!;\n result.set(key, element);\n }\n return result;\n }\n\n every(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n\n some(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n}\n\nexport type KeyOf<D extends OrderedDict<any, any>> =\n D extends OrderedDict<infer K, any> ? K : never;\nexport type ValueOf<D extends OrderedDict<any, any>> =\n D extends OrderedDict<any, infer V> ? V : never;\nexport type EntryOf<D extends OrderedDict<any, any>> = [KeyOf<D>, ValueOf<D>];\nexport type KeyFrom<E extends EntryOf<any>> = E[0];\nexport type ValueFrom<E extends EntryOf<any>> = E[1];\n\nfunction at<T>(array: ArrayLike<T>, index: number): T | undefined {\n if ('at' in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? undefined : array[actualIndex];\n}\n\nfunction toSafeIndex(array: ArrayLike<any>, index: number) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\n\nfunction toSafeInteger(number: number) {\n // eslint-disable-next-line no-self-compare\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n","function clamp(value: number, [min, max]: [number, number]): number {\n return Math.min(max, Math.max(min, value));\n}\n\nexport { clamp };\n","import { cn } from \"@/lib/utils\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport type { HTMLAttributes } from \"react\";\n\nconst cardVariants = cva(\n \"rounded-xl border p-5 shadow-[0_1px_3px_rgb(0_0_0/0.04)]\",\n {\n variants: {\n tone: {\n default: \"border-border bg-card\",\n warning:\n \"border-amber-200 bg-amber-50/50 dark:border-amber-900 dark:bg-amber-950/30\",\n success:\n \"border-emerald-200 bg-emerald-50/50 dark:border-emerald-900 dark:bg-emerald-950/30\",\n error:\n \"border-red-200 bg-red-50/50 dark:border-red-900 dark:bg-red-950/30\",\n },\n interactive: {\n true: \"transition-shadow duration-150 hover:shadow-[0_4px_6px_rgb(0_0_0/0.06)]\",\n false: \"\",\n },\n },\n defaultVariants: { tone: \"default\", interactive: false },\n },\n);\n\nexport interface CardProps\n extends HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {}\n\nexport function Card({ className, tone, interactive, ...props }: CardProps) {\n return (\n <div className={cn(cardVariants({ tone, interactive }), className)} {...props} />\n );\n}\n\nexport function CardHeader({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"mb-3 flex items-center justify-between\", className)} {...props} />;\n}\n\nexport function CardTitle({ className, ...props }: HTMLAttributes<HTMLHeadingElement>) {\n return (\n <h3\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport function CardStatLabel({\n className,\n ...props\n}: HTMLAttributes<HTMLHeadingElement>) {\n return (\n <h3\n className={cn(\"text-sm font-medium text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport function CardValue({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"text-3xl font-bold text-foreground\", className)} {...props} />;\n}\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Trash2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMyA2aDE4IiAvPgogIDxwYXRoIGQ9Ik0xOSA2djE0YzAgMS0xIDItMiAySDdjLTEgMC0yLTEtMi0yVjYiIC8+CiAgPHBhdGggZD0iTTggNlY0YzAtMSAxLTIgMi0yaDRjMSAwIDIgMSAyIDJ2MiIgLz4KICA8bGluZSB4MT0iMTAiIHgyPSIxMCIgeTE9IjExIiB5Mj0iMTciIC8+CiAgPGxpbmUgeDE9IjE0IiB4Mj0iMTQiIHkxPSIxMSIgeTI9IjE3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/trash-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Trash2 = createLucideIcon('Trash2', [\n ['path', { d: 'M3 6h18', key: 'd0wm0j' }],\n ['path', { d: 'M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6', key: '4alrt4' }],\n ['path', { d: 'M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2', key: 'v07s0e' }],\n ['line', { x1: '10', x2: '10', y1: '11', y2: '17', key: '1uufr5' }],\n ['line', { x1: '14', x2: '14', y1: '11', y2: '17', key: 'xtxkd' }],\n]);\n\nexport default Trash2;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('Plus', [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n]);\n\nexport default Plus;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon('Check', [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]]);\n\nexport default Check;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ShieldCheck\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoiIC8+CiAgPHBhdGggZD0ibTkgMTIgMiAyIDQtNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/shield-check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ShieldCheck = createLucideIcon('ShieldCheck', [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n ['path', { d: 'm9 12 2 2 4-4', key: 'dzmm74' }],\n]);\n\nexport default ShieldCheck;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name EyeOff\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTAuNzMzIDUuMDc2YTEwLjc0NCAxMC43NDQgMCAwIDEgMTEuMjA1IDYuNTc1IDEgMSAwIDAgMSAwIC42OTYgMTAuNzQ3IDEwLjc0NyAwIDAgMS0xLjQ0NCAyLjQ5IiAvPgogIDxwYXRoIGQ9Ik0xNC4wODQgMTQuMTU4YTMgMyAwIDAgMS00LjI0Mi00LjI0MiIgLz4KICA8cGF0aCBkPSJNMTcuNDc5IDE3LjQ5OWExMC43NSAxMC43NSAwIDAgMS0xNS40MTctNS4xNTEgMSAxIDAgMCAxIDAtLjY5NiAxMC43NSAxMC43NSAwIDAgMSA0LjQ0Ni01LjE0MyIgLz4KICA8cGF0aCBkPSJtMiAyIDIwIDIwIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/eye-off\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst EyeOff = createLucideIcon('EyeOff', [\n [\n 'path',\n {\n d: 'M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49',\n key: 'ct8e1f',\n },\n ],\n ['path', { d: 'M14.084 14.158a3 3 0 0 1-4.242-4.242', key: '151rxh' }],\n [\n 'path',\n {\n d: 'M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143',\n key: '13bj9a',\n },\n ],\n ['path', { d: 'm2 2 20 20', key: '1ooewy' }],\n]);\n\nexport default EyeOff;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Eye\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMi4wNjIgMTIuMzQ4YTEgMSAwIDAgMSAwLS42OTYgMTAuNzUgMTAuNzUgMCAwIDEgMTkuODc2IDAgMSAxIDAgMCAxIDAgLjY5NiAxMC43NSAxMC43NSAwIDAgMS0xOS44NzYgMCIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIzIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/eye\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Eye = createLucideIcon('Eye', [\n [\n 'path',\n {\n d: 'M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0',\n key: '1nclc0',\n },\n ],\n ['circle', { cx: '12', cy: '12', r: '3', key: '1v7zrd' }],\n]);\n\nexport default Eye;\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { DirectoryPickerField } from \"@/components/directory-picker-field\";\nimport type { HealthResponse } from \"@/lib/api-types\";\nimport type { SaveFieldFn } from \"@/lib/hooks/use-save-config\";\n\nfunction basenameFromPath(path: string): string {\n const parts = path.split(/[\\\\/]+/).filter(Boolean);\n return parts.at(-1) ?? \"\";\n}\n\nexport function PrimaryPlatformField({\n health,\n value,\n defaultValue,\n modified,\n onSave,\n}: {\n health: HealthResponse | undefined;\n value: string;\n defaultValue?: string;\n modified?: boolean;\n onSave: SaveFieldFn;\n}) {\n const available = Object.entries(health?.messaging ?? {})\n .filter(\n ([platform, status]) =>\n platform !== \"dashboard\" &&\n status.configured &&\n status.ownerConfigured,\n )\n .map(([platform]) => platform);\n\n const [draft, setDraft] = useState<string>(value);\n const [saving, setSaving] = useState(false);\n\n useEffect(() => {\n setDraft(value);\n }, [value]);\n\n const hasChanges = draft !== value;\n const currentUnavailable = value && !available.includes(value);\n\n const handleSave = async () => {\n setSaving(true);\n try {\n await onSave(\"primaryPlatform\", draft);\n } finally {\n setSaving(false);\n }\n };\n\n return (\n <div className=\"space-y-2 py-2 border-b\">\n <div className=\"flex items-center justify-between\">\n <label className=\"text-sm font-medium\">\n Fallback Primary Platform\n {modified && (\n <span className=\"ml-2 text-xs text-amber-600\">(unsaved)</span>\n )}\n </label>\n {defaultValue !== undefined && (\n <span className=\"text-xs text-muted-foreground\">\n default: {defaultValue || \"(empty)\"}\n </span>\n )}\n </div>\n <div className=\"flex flex-wrap gap-2\">\n {available.map((platform) => (\n <Button\n key={platform}\n variant={draft === platform ? \"default\" : \"outline\"}\n size=\"sm\"\n disabled={saving}\n onClick={() => setDraft(platform)}\n className=\"capitalize\"\n >\n {platform}\n </Button>\n ))}\n {currentUnavailable && (\n <Button\n variant={draft === value ? \"default\" : \"outline\"}\n size=\"sm\"\n disabled={saving}\n onClick={() => setDraft(value)}\n className=\"capitalize opacity-60\"\n title=\"Current value — not currently configured with an owner ID\"\n >\n {value} (not configured)\n </Button>\n )}\n {available.length === 0 && !currentUnavailable && (\n <span className=\"text-xs text-muted-foreground\">\n Configure a messaging app with an owner ID first.\n </span>\n )}\n </div>\n <p className=\"text-xs text-muted-foreground\">\n Last-resort destination used when no default reminder destinations are\n selected above and no per-request override is supplied. Only\n messaging apps with a configured owner ID appear here.\n </p>\n <div>\n <Button\n size=\"sm\"\n variant=\"outline\"\n disabled={!hasChanges || saving}\n onClick={handleSave}\n >\n {saving ? \"Applying...\" : \"Apply\"}\n </Button>\n </div>\n </div>\n );\n}\n\nexport function ExternalObsidianVaultSettings({\n vaultPath,\n vaultName,\n onSave,\n}: {\n vaultPath: string;\n vaultName: string;\n onSave: (updates: Record<string, string | null>) => Promise<void>;\n}) {\n const [path, setPath] = useState(vaultPath);\n const [name, setName] = useState(vaultName);\n const [saving, setSaving] = useState<\"save\" | \"clear\" | null>(null);\n\n useEffect(() => {\n setPath(vaultPath);\n }, [vaultPath]);\n useEffect(() => {\n setName(vaultName);\n }, [vaultName]);\n\n const handleSave = async () => {\n setSaving(\"save\");\n try {\n const trimmedPath = path.trim();\n const trimmedName =\n name.trim() || basenameFromPath(trimmedPath);\n await onSave({\n externalObsidianVaultPath: trimmedPath,\n externalObsidianVaultName: trimmedName,\n });\n } finally {\n setSaving(null);\n }\n };\n\n const configured = !!(vaultPath || vaultName);\n\n const handleClear = async () => {\n setSaving(\"clear\");\n try {\n await onSave({\n externalObsidianVaultPath: null,\n externalObsidianVaultName: null,\n });\n setPath(\"\");\n setName(\"\");\n } finally {\n setSaving(null);\n }\n };\n\n return (\n <div className=\"space-y-3\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2\">\n <label className=\"text-sm text-muted-foreground shrink-0 min-w-[80px]\">\n Path\n </label>\n <DirectoryPickerField\n value={path}\n onChange={setPath}\n title=\"Choose external Obsidian vault directory\"\n placeholder=\"Choose an external Obsidian vault folder\"\n defaultPath={vaultPath || undefined}\n inputClassName=\"max-w-[480px]\"\n />\n </div>\n <div className=\"flex items-center gap-2\">\n <label className=\"text-sm text-muted-foreground shrink-0 min-w-[80px]\">\n Vault Name\n </label>\n <Input\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder=\"MyVault\"\n className=\"max-w-[240px]\"\n />\n </div>\n <p className=\"text-xs text-muted-foreground\">\n Use Choose to pick a local folder. Absolute local paths still work,\n including cloud-synced locations\n such as iCloud Drive, Dropbox, OneDrive, or Google Drive. Use\n Clear to remove the integration; both fields are nulled together\n to avoid the &ldquo;path set without a name&rdquo; error state.\n </p>\n </div>\n\n <div className=\"flex flex-wrap gap-2\">\n <Button size=\"sm\" onClick={handleSave} disabled={saving !== null}>\n {saving === \"save\" ? \"Saving...\" : \"Save External Vault Settings\"}\n </Button>\n {configured && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={handleClear}\n disabled={saving !== null}\n >\n {saving === \"clear\" ? \"Clearing...\" : \"Clear\"}\n </Button>\n )}\n </div>\n\n {configured && (\n <div className=\"text-xs text-muted-foreground space-y-0.5 pt-1\">\n <p>\n Current path:{\" \"}\n <code className=\"text-foreground\">{vaultPath || \"(not set)\"}</code>\n </p>\n <p>\n Current vault name:{\" \"}\n <code className=\"text-foreground\">{vaultName || \"(not set)\"}</code>\n </p>\n </div>\n )}\n </div>\n );\n}\n"],"names":["pickDirectoryFromDesktop","title","defaultPath","response","post","status","path","Error","message","DirectoryPickerField","id","value","onChange","placeholder","disabled","className","inputClassName","buttonLabel","picking","setPicking","pickerError","setPickerError","handlePick","selected","trim","err","e","target","type","variant","onClick","ConnectionsSectionHeader","description","healthy","total","attention","actions","allHealthy","noneHealthy","STATUS_BADGE","connected","label","configured","connecting","error","cardTone","deriveIntegrationStatus","s","deriveMessagingStatus","runtimeState","deriveConfiguredStatus","messagingMetadata","undefined","ownerConfigured","ownerChannelKnown","notificationEligible","lastInboundAt","ConnectionCard","name","icon","metadata","children","badge","tone","length","map","m","useSaveConfig","queryClient","toast","setToast","showToast","setTimeout","interpret","res","successMessage","warnings","Object","values","errors","join","requiresRestart","saveField","key","patch","invalidateQueries","queryKey","saveMultipleFields","updates","patchConfig","COLLAPSIBLE_NAME","createCollapsibleContext","createCollapsibleScope","CollapsibleProvider","useCollapsibleContext","Collapsible","props","forwardedRef","__scopeCollapsible","open","openProp","defaultOpen","onOpenChange","collapsibleProps","setOpen","prop","defaultProp","caller","scope","contentId","onOpenToggle","prevOpen","div","getState","ref","displayName","TRIGGER_NAME","CollapsibleTrigger","triggerProps","context","button","CONTENT_NAME","CollapsibleContent","forceMount","contentProps","present","CollapsibleContentImpl","isPresent","setIsPresent","composedRefs","heightRef","height","current","widthRef","width","isOpen","isMountAnimationPreventedRef","originalStylesRef","rAF","requestAnimationFrame","cancelAnimationFrame","node","transitionDuration","style","animationName","rect","getBoundingClientRect","hidden","Root","Trigger","Content","React","createContextScope","useComposedRefs","createSlot","jsx","createCollection","itemData","cardVariants","variants","default","warning","success","interactive","true","false","defaultVariants","Card","CardHeader","CardTitle","CardStatLabel","CardValue","basenameFromPath","parts","split","filter","Boolean","at","PrimaryPlatformField","health","defaultValue","modified","onSave","available","entries","messaging","platform","draft","setDraft","saving","setSaving","hasChanges","currentUnavailable","includes","handleSave","size","ExternalObsidianVaultSettings","vaultPath","vaultName","setPath","setName","trimmedPath","trimmedName","externalObsidianVaultPath","externalObsidianVaultName","handleClear"],"mappings":"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AA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CAAA,ACAA,CAAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CAAA,ACAA,CAAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CAAA,ACAA,CDAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CAAA,ADAA,CAAA,ACAA,CDAA,ACAA,CAAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CCAA,ADAA,CAAA,ACAA,CDAA,ACAA,CAAA,ADAA,AACH,CCDG,AACH,ADAA,CCDG,AACH,ADAA,CCDG,AACE,ADAA,CCDF,ADCE,CCDF,AACE,ADAA,CCDF,AACE,ADAA,CCDF,AACE,ADAA,CAAA,ACAA,CDAA,ACAA,CAAA,ADAA,CAAA,ACAA,CAAA,ADAA,EAET,CCAA,ADAA,CACC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CCAE,ADAF,EAAK,CCAG,ADAqC,CCArC,ADAqC,qCAAA,IAAK,QAAA,CAAU,CAAA,CAAA,AACrE,CACE,AADF,ACAD,CDCG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACA,CAAA,AACE,CAAG,CAAA,CAAA,CAAA,CAAA,CA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","ignoreList":[0,6,7,9,10,11,12,19,20,21,22,23,24]}
@@ -1,3 +0,0 @@
1
- module.exports=[30400,a=>{"use strict";var b=a.i(81673),c=a.i(48558);let d=(0,a.i(42261).cva)("rounded-xl border p-5 shadow-[0_1px_3px_rgb(0_0_0/0.04)]",{variants:{tone:{default:"border-border bg-card",warning:"border-amber-200 bg-amber-50/50 dark:border-amber-900 dark:bg-amber-950/30",success:"border-emerald-200 bg-emerald-50/50 dark:border-emerald-900 dark:bg-emerald-950/30",error:"border-red-200 bg-red-50/50 dark:border-red-900 dark:bg-red-950/30"},interactive:{true:"transition-shadow duration-150 hover:shadow-[0_4px_6px_rgb(0_0_0/0.06)]",false:""}},defaultVariants:{tone:"default",interactive:!1}});a.s(["Card",0,function({className:a,tone:e,interactive:f,...g}){return(0,b.jsx)("div",{className:(0,c.cn)(d({tone:e,interactive:f}),a),...g})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{className:(0,c.cn)("mb-3 flex items-center justify-between",a),...d})},"CardStatLabel",0,function({className:a,...d}){return(0,b.jsx)("h3",{className:(0,c.cn)("text-sm font-medium text-muted-foreground",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("h3",{className:(0,c.cn)("text-lg font-semibold text-foreground",a),...d})},"CardValue",0,function({className:a,...d}){return(0,b.jsx)("div",{className:(0,c.cn)("text-3xl font-bold text-foreground",a),...d})}])},96336,a=>{"use strict";let b=(0,a.i(5423).default)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);a.s(["Trash2",0,b],96336)},43179,a=>{"use strict";let b=(0,a.i(5423).default)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",0,b],43179)},7037,a=>{"use strict";let b=(0,a.i(5423).default)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);a.s(["Pencil",0,b],7037)},11307,a=>{"use strict";let b=(0,a.i(5423).default)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);a.s(["FolderOpen",0,b],11307)},13925,a=>{"use strict";var b=a.i(70981),c=a.i(76584),d=class extends b.QueryObserver{constructor(a,b){super(a,b)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(a){super.setOptions({...a,behavior:(0,c.infiniteQueryBehavior)()})}getOptimisticResult(a){return a.behavior=(0,c.infiniteQueryBehavior)(),super.getOptimisticResult(a)}fetchNextPage(a){return this.fetch({...a,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(a){return this.fetch({...a,meta:{fetchMore:{direction:"backward"}}})}createResult(a,b){let{state:d}=a,e=super.createResult(a,b),{isFetching:f,isRefetching:g,isError:h,isRefetchError:i}=e,j=d.fetchMeta?.fetchMore?.direction,k=h&&"forward"===j,l=f&&"forward"===j,m=h&&"backward"===j,n=f&&"backward"===j;return{...e,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:(0,c.hasNextPage)(b,d.data),hasPreviousPage:(0,c.hasPreviousPage)(b,d.data),isFetchNextPageError:k,isFetchingNextPage:l,isFetchPreviousPageError:m,isFetchingPreviousPage:n,isRefetchError:i&&!k&&!m,isRefetching:g&&!l&&!n}}},e=a.i(62149);a.s(["useInfiniteQuery",0,function(a,b){return(0,e.useBaseQuery)(a,d,b)}],13925)},57216,a=>{"use strict";var b=a.i(76015),c=a.i(59653),d=a.i(95819),e=a.i(47427),f=a.i(18867),g=a.i(80303),h=a.i(30419),i=a.i(73490),j=a.i(55277),k=a.i(81673),l="Collapsible",[m,n]=(0,d.createContextScope)(l),[o,p]=m(l),q=b.forwardRef((a,c)=>{let{__scopeCollapsible:d,open:f,defaultOpen:g,disabled:i,onOpenChange:m,...n}=a,[p,q]=(0,e.useControllableState)({prop:f,defaultProp:g??!1,onChange:m,caller:l});return(0,k.jsx)(o,{scope:d,disabled:i,contentId:(0,j.useId)(),open:p,onOpenToggle:b.useCallback(()=>q(a=>!a),[q]),children:(0,k.jsx)(h.Primitive.div,{"data-state":w(p),"data-disabled":i?"":void 0,...n,ref:c})})});q.displayName=l;var r="CollapsibleTrigger",s=b.forwardRef((a,b)=>{let{__scopeCollapsible:d,...e}=a,f=p(r,d);return(0,k.jsx)(h.Primitive.button,{type:"button","aria-controls":f.contentId,"aria-expanded":f.open||!1,"data-state":w(f.open),"data-disabled":f.disabled?"":void 0,disabled:f.disabled,...e,ref:b,onClick:(0,c.composeEventHandlers)(a.onClick,f.onOpenToggle)})});s.displayName=r;var t="CollapsibleContent",u=b.forwardRef((a,b)=>{let{forceMount:c,...d}=a,e=p(t,a.__scopeCollapsible);return(0,k.jsx)(i.Presence,{present:c||e.open,children:({present:a})=>(0,k.jsx)(v,{...d,ref:b,present:a})})});u.displayName=t;var v=b.forwardRef((a,c)=>{let{__scopeCollapsible:d,present:e,children:i,...j}=a,l=p(t,d),[m,n]=b.useState(e),o=b.useRef(null),q=(0,g.useComposedRefs)(c,o),r=b.useRef(0),s=r.current,u=b.useRef(0),v=u.current,x=l.open||m,y=b.useRef(x),z=b.useRef(void 0);return b.useEffect(()=>{let a=requestAnimationFrame(()=>y.current=!1);return()=>cancelAnimationFrame(a)},[]),(0,f.useLayoutEffect)(()=>{let a=o.current;if(a){z.current=z.current||{transitionDuration:a.style.transitionDuration,animationName:a.style.animationName},a.style.transitionDuration="0s",a.style.animationName="none";let b=a.getBoundingClientRect();r.current=b.height,u.current=b.width,y.current||(a.style.transitionDuration=z.current.transitionDuration,a.style.animationName=z.current.animationName),n(e)}},[l.open,e]),(0,k.jsx)(h.Primitive.div,{"data-state":w(l.open),"data-disabled":l.disabled?"":void 0,id:l.contentId,hidden:!x,...j,ref:q,style:{"--radix-collapsible-content-height":s?`${s}px`:void 0,"--radix-collapsible-content-width":v?`${v}px`:void 0,...a.style},children:x&&i})});function w(a){return a?"open":"closed"}a.s(["Collapsible",0,q,"CollapsibleContent",0,u,"CollapsibleTrigger",0,s],57216)},48033,a=>{"use strict";let b=(0,a.i(5423).default)("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);a.s(["Lock",0,b],48033)},6236,a=>{"use strict";let b=(0,a.i(5423).default)("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);a.s(["Activity",0,b],6236)},8735,a=>{"use strict";let b=(0,a.i(5423).default)("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);a.s(["Upload",0,b],8735)},7437,a=>{"use strict";var b=a.i(8753),c=a.i(62588),d=a.i(81130),e=a.i(59974);class f extends Error{conflict;constructor(a){super("context_conflict"),this.conflict=a,this.name="ContextConflictError"}}a.s(["ContextConflictError",0,f,"useContextFile",0,function(a,b){return(0,c.useQuery)({queryKey:["context",a],queryFn:()=>e.api.get(`/context/${a}`),enabled:!!a&&b?.enabled!==!1,refetchOnWindowFocus:b?.enabled!==!1})},"useContextList",0,function(a){return(0,c.useQuery)({queryKey:["context-list",a],queryFn:()=>e.api.get(`/context/list/${a}`)})},"useDeleteContextFile",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:async({path:a})=>e.api.delete(`/context/${a}`),onSuccess:(b,{path:c})=>{a.removeQueries({queryKey:["context",c]}),a.invalidateQueries({queryKey:["snapshots",c]});let d=c.includes("/")?c.split("/")[0]:null;d&&a.invalidateQueries({queryKey:["context-list",d]}),c.startsWith("routines/custom/")&&a.invalidateQueries({queryKey:["context-list","routines"]})}})},"useUpdateContextFile",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:async({path:a,content:b,expectedMtime:c})=>{try{return await e.api.put(`/context/${a}`,{content:b,...void 0!==c?{expectedMtime:c}:{}})}catch(a){if(a instanceof e.ApiError&&409===a.status&&a.body?.error==="conflict"){let b=a.body;throw new f({currentMtime:b.currentMtime??"",currentContent:b.currentContent??""})}throw a}},onSuccess:(b,{path:c,content:d})=>{a.setQueryData(["context",c],a=>a?{...a,content:d,lastModified:b.lastModified}:{content:d,lastModified:b.lastModified,editable:!0}),a.invalidateQueries({queryKey:["snapshots",c]});let e=c.includes("/")?c.split("/")[0]:null;e&&a.invalidateQueries({queryKey:["context-list",e]})}})}])},69481,a=>{"use strict";var b=a.i(81673),c=a.i(32307),d=a.i(21218),e=a.i(48558);a.s(["FileConflictBanner",0,function({onReload:a,onOverwrite:f,isPending:g=!1,reloadLabel:h="Reload latest",className:i}){return(0,b.jsxs)("div",{role:"alert","aria-live":"assertive",className:(0,e.cn)("rounded-md border border-amber-500/50 bg-amber-500/10 p-3 text-xs",i),children:[(0,b.jsxs)("div",{className:"mb-2 flex items-center gap-2 font-semibold text-amber-900 dark:text-amber-200",children:[(0,b.jsx)(c.AlertTriangle,{className:"h-3.5 w-3.5"}),"File was modified by another process"]}),(0,b.jsx)("p",{className:"mb-3 text-amber-900/90 dark:text-amber-100/90",children:"The agent or another tab wrote to this file after you started editing. Your unsaved draft is preserved — choose how to proceed."}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(d.Button,{size:"sm",variant:"outline",onClick:a,disabled:g,className:"h-7",children:h}),(0,b.jsx)(d.Button,{size:"sm",variant:"destructive",onClick:f,disabled:g,className:"h-7",children:g?"Overwriting…":"Overwrite with my edits"})]})]})}])},84478,a=>{"use strict";var b=a.i(13925),c=a.i(8753),d=a.i(62588),e=a.i(81130),f=a.i(59974);let g=["managed-tasks"],h=["management-history"];function i(a){a.invalidateQueries({queryKey:g}),a.invalidateQueries({queryKey:h}),a.invalidateQueries({queryKey:["managed-task"]}),a.invalidateQueries({queryKey:["recurring-schedules"]}),a.invalidateQueries({queryKey:["schedule-list"]}),a.invalidateQueries({queryKey:["schedule-next"]})}a.s(["useDeleteManagedTask",0,function(){let a=(0,e.useQueryClient)();return(0,c.useMutation)({mutationFn:a=>f.api.delete(`/managed-tasks/${a}`),onSuccess:()=>i(a)})},"useManagedTask",0,function(a){return(0,d.useQuery)({queryKey:["managed-task",a],queryFn:()=>f.api.get(`/managed-tasks/${a}`),enabled:!!a,staleTime:15e3})},"useManagedTaskRuns",0,function(a,b=25){return(0,d.useQuery)({queryKey:["managed-task-runs",a,b],queryFn:()=>f.api.get(`/managed-tasks/${a}/runs`,{limit:b}),enabled:!!a,staleTime:15e3})},"useManagedTasks",0,function(){return(0,d.useQuery)({queryKey:g,queryFn:()=>f.api.get("/managed-tasks"),staleTime:3e4})},"useManagementHistory",0,function(a=50){return(0,b.useInfiniteQuery)({queryKey:[...h,a],queryFn:({pageParam:b})=>f.api.get("/management-history",{limit:a,...b?{before_id:b}:{}}),initialPageParam:void 0,getNextPageParam:a=>a.nextCursor??void 0,staleTime:15e3})},"useRenameManagedTaskApp",0,function(){let a=(0,e.useQueryClient)();return(0,c.useMutation)({mutationFn:({id:a,newApp:b})=>f.api.post(`/managed-tasks/${a}/rename-app`,{newApp:b}),onSuccess:(b,c)=>{i(a),a.invalidateQueries({queryKey:["managed-task-runs",c.id]}),a.invalidateQueries({queryKey:["entities"]}),a.invalidateQueries({queryKey:["entities-by-source"]})}})},"useRunManagedTaskNow",0,function(){let a=(0,e.useQueryClient)();return(0,c.useMutation)({mutationFn:({id:a,reason:b})=>f.api.post(`/managed-tasks/${a}/run-now`,{reason:b}),onSuccess:(b,c)=>{a.invalidateQueries({queryKey:h}),a.invalidateQueries({queryKey:["managed-task-runs",c.id]}),a.invalidateQueries({queryKey:["schedule-list"]})}})},"useUpdateManagedTask",0,function(){let a=(0,e.useQueryClient)();return(0,c.useMutation)({mutationFn:({id:a,...b})=>f.api.patch(`/managed-tasks/${a}`,b),onSuccess:(b,c)=>{i(a),a.invalidateQueries({queryKey:["managed-task-runs",c.id]})}})}])},40294,93929,a=>{"use strict";var b=a.i(76015),c=a.i(81130),d=a.i(59974);a.s(["useRegenerate",0,function(){let[a,e]=(0,b.useState)(null),[f,g]=(0,b.useState)("idle"),[h,i]=(0,b.useState)(null),j=(0,c.useQueryClient)(),k=(0,b.useRef)(null),l=(0,b.useRef)(null),m=(0,b.useRef)(0);(0,b.useEffect)(()=>()=>{k.current&&clearInterval(k.current)},[]);let n=(0,b.useCallback)(()=>{k.current&&(clearInterval(k.current),k.current=null)},[]);return{regenerate:(0,b.useCallback)(async a=>{if("triggered"===f||"running"===f)return;e(a),g("triggered"),i(null),m.current=Date.now();let b=await d.api.get(`/context/${a}`).catch(()=>null);l.current=b?.lastModified??null;try{await d.api.post("/agent/regenerate",{target:a}),g("running"),k.current=setInterval(async()=>{if(Date.now()-m.current>3e5){n(),g("error"),i("Timeout — agent may still be processing");return}try{let b=await d.api.get(`/context/${a}`);(null===l.current||b.lastModified!==l.current)&&(n(),g("done"),j.invalidateQueries({queryKey:["context",a]}),j.invalidateQueries({queryKey:["calendar"]}),setTimeout(()=>{g("idle"),e(null)},5e3))}catch{}},3e3)}catch(a){g("error"),i(a instanceof Error?a.message:"Failed to trigger")}},[f,j,n]),target:a,status:f,error:h,dismiss:(0,b.useCallback)(()=>{n(),g("idle"),e(null),i(null)},[n])}}],40294);var e=a.i(81673),f=a.i(21218),g=a.i(48558),h=a.i(39293),i=a.i(54506),j=a.i(91092),k=a.i(92241);a.s(["RegenerateButton",0,function({target:a,label:b,currentTarget:c,status:d,error:l,onRegenerate:m,onDismiss:n,variant:o="outline",size:p="sm",className:q}){let r=c===a;return r&&"done"===d?(0,e.jsxs)(f.Button,{variant:o,size:p,className:(0,g.cn)("text-emerald-600 dark:text-emerald-400",q),onClick:n,children:[(0,e.jsx)(i.Check,{className:"h-3.5 w-3.5 mr-1.5"}),"Updated"]}):r&&"error"===d?(0,e.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,e.jsxs)(f.Button,{variant:o,size:p,className:(0,g.cn)("text-red-600 dark:text-red-400",q),onClick:n,children:[(0,e.jsx)(j.AlertCircle,{className:"h-3.5 w-3.5 mr-1.5"}),"Failed"]}),l&&(0,e.jsx)("span",{className:"text-xs text-red-600 dark:text-red-400 max-w-48 truncate",children:l})]}):(0,e.jsxs)(f.Button,{variant:o,size:p,onClick:()=>m(a),disabled:"triggered"===d||"running"===d,className:q,children:[r&&"idle"!==d?(0,e.jsx)(k.Loader2,{className:"h-3.5 w-3.5 mr-1.5 animate-spin"}):(0,e.jsx)(h.RefreshCw,{className:"h-3.5 w-3.5 mr-1.5"}),r&&"triggered"===d?"Triggering...":r&&"running"===d?"Running...":b]})}],93929)},96459,a=>{"use strict";var b=a.i(62588),c=a.i(59974);a.s(["useSetupStatus",0,function(){return(0,b.useQuery)({queryKey:["setup-status"],queryFn:()=>c.api.get("/setup/status"),staleTime:3e4})}])}];
2
-
3
- //# sourceMappingURL=_0dvtdxd._.js.map