@arbidocs/blocks 0.4.141 → 0.4.143

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 (222) hide show
  1. package/dist/agents/index.cjs +440 -436
  2. package/dist/agents/index.js +12 -8
  3. package/dist/chat/index.cjs +139 -138
  4. package/dist/chat/index.js +4 -3
  5. package/dist/{chunk-S24XEVPS.cjs → chunk-464YPRAE.cjs} +33 -2
  6. package/dist/chunk-464YPRAE.cjs.map +1 -0
  7. package/dist/{chunk-7YLJHTDC.cjs → chunk-5A2QQAF5.cjs} +11 -11
  8. package/dist/{chunk-7YLJHTDC.cjs.map → chunk-5A2QQAF5.cjs.map} +1 -1
  9. package/dist/{chunk-ON3TKY5Y.js → chunk-5YHEHEJT.js} +242 -4
  10. package/dist/chunk-5YHEHEJT.js.map +1 -0
  11. package/dist/chunk-76L6LOP3.cjs +308 -0
  12. package/dist/chunk-76L6LOP3.cjs.map +1 -0
  13. package/dist/chunk-AHDJXIUB.cjs +25 -0
  14. package/dist/chunk-AHDJXIUB.cjs.map +1 -0
  15. package/dist/chunk-AOSUHWIL.js +98 -0
  16. package/dist/chunk-AOSUHWIL.js.map +1 -0
  17. package/dist/{chunk-YFF3GTJQ.js → chunk-C44TDH54.js} +14 -1613
  18. package/dist/chunk-C44TDH54.js.map +1 -0
  19. package/dist/{chunk-GFRQG36Y.cjs → chunk-COCGRJLA.cjs} +213 -57
  20. package/dist/chunk-COCGRJLA.cjs.map +1 -0
  21. package/dist/chunk-CQCC7LE7.js +210 -0
  22. package/dist/chunk-CQCC7LE7.js.map +1 -0
  23. package/dist/{chunk-UGCKUXRV.js → chunk-CSI2B2H5.js} +3 -3
  24. package/dist/{chunk-UGCKUXRV.js.map → chunk-CSI2B2H5.js.map} +1 -1
  25. package/dist/{chunk-R26BK7YL.cjs → chunk-DTROMMDX.cjs} +4 -4
  26. package/dist/{chunk-R26BK7YL.cjs.map → chunk-DTROMMDX.cjs.map} +1 -1
  27. package/dist/{chunk-65THHQVB.cjs → chunk-ECW2R2KF.cjs} +27 -27
  28. package/dist/{chunk-65THHQVB.cjs.map → chunk-ECW2R2KF.cjs.map} +1 -1
  29. package/dist/{chunk-RI6DZA5X.js → chunk-EF4ZLKRM.js} +3 -3
  30. package/dist/{chunk-RI6DZA5X.js.map → chunk-EF4ZLKRM.js.map} +1 -1
  31. package/dist/{chunk-WS5EX7DN.cjs → chunk-EYKISBDO.cjs} +5 -5
  32. package/dist/{chunk-WS5EX7DN.cjs.map → chunk-EYKISBDO.cjs.map} +1 -1
  33. package/dist/chunk-FJETR2AS.js +561 -0
  34. package/dist/chunk-FJETR2AS.js.map +1 -0
  35. package/dist/{chunk-JO3EMZ4X.js → chunk-GWSGIZQ5.js} +3 -3
  36. package/dist/{chunk-JO3EMZ4X.js.map → chunk-GWSGIZQ5.js.map} +1 -1
  37. package/dist/{chunk-O6W6RW3B.js → chunk-H4D7WKDY.js} +207 -54
  38. package/dist/chunk-H4D7WKDY.js.map +1 -0
  39. package/dist/{chunk-OAQEUTNJ.cjs → chunk-HAOKT4LC.cjs} +5 -5
  40. package/dist/{chunk-OAQEUTNJ.cjs.map → chunk-HAOKT4LC.cjs.map} +1 -1
  41. package/dist/{chunk-YWY2KIX2.js → chunk-IJST4EBM.js} +13 -9
  42. package/dist/chunk-IJST4EBM.js.map +1 -0
  43. package/dist/{chunk-3RJN2VTL.js → chunk-IXWJGOM2.js} +3 -3
  44. package/dist/{chunk-3RJN2VTL.js.map → chunk-IXWJGOM2.js.map} +1 -1
  45. package/dist/{chunk-CYNF5PZI.js → chunk-J5CWKFSC.js} +3 -3
  46. package/dist/{chunk-CYNF5PZI.js.map → chunk-J5CWKFSC.js.map} +1 -1
  47. package/dist/{chunk-OWCEQKAR.cjs → chunk-JSTKEZBS.cjs} +21 -318
  48. package/dist/chunk-JSTKEZBS.cjs.map +1 -0
  49. package/dist/{chunk-TP6PLDNM.cjs → chunk-KMZWKSKO.cjs} +8 -8
  50. package/dist/{chunk-TP6PLDNM.cjs.map → chunk-KMZWKSKO.cjs.map} +1 -1
  51. package/dist/{chunk-C4WSHRR6.cjs → chunk-KPZZ5FHE.cjs} +32 -12
  52. package/dist/chunk-KPZZ5FHE.cjs.map +1 -0
  53. package/dist/{chunk-CKCBBYTA.js → chunk-KSHKTOY2.js} +5 -205
  54. package/dist/chunk-KSHKTOY2.js.map +1 -0
  55. package/dist/chunk-LJJJ6CYH.cjs +62 -0
  56. package/dist/chunk-LJJJ6CYH.cjs.map +1 -0
  57. package/dist/chunk-LPYEUD2D.cjs +1627 -0
  58. package/dist/chunk-LPYEUD2D.cjs.map +1 -0
  59. package/dist/chunk-MHFF5N65.cjs +101 -0
  60. package/dist/chunk-MHFF5N65.cjs.map +1 -0
  61. package/dist/{chunk-GYAUJ4KT.js → chunk-MTSKK3BN.js} +32 -3
  62. package/dist/chunk-MTSKK3BN.js.map +1 -0
  63. package/dist/chunk-NHZK64TQ.js +75 -0
  64. package/dist/chunk-NHZK64TQ.js.map +1 -0
  65. package/dist/{chunk-BPBSSMRB.js → chunk-NRFAWUVD.js} +3 -3
  66. package/dist/{chunk-BPBSSMRB.js.map → chunk-NRFAWUVD.js.map} +1 -1
  67. package/dist/chunk-NWNVWO6L.cjs +80 -0
  68. package/dist/chunk-NWNVWO6L.cjs.map +1 -0
  69. package/dist/{chunk-CQ4MFKFC.cjs → chunk-O2GW5IY6.cjs} +90 -86
  70. package/dist/chunk-O2GW5IY6.cjs.map +1 -0
  71. package/dist/{chunk-3BFGL2JL.cjs → chunk-ODRHHWHY.cjs} +4 -4
  72. package/dist/{chunk-3BFGL2JL.cjs.map → chunk-ODRHHWHY.cjs.map} +1 -1
  73. package/dist/{chunk-Y3KA6X7B.js → chunk-OVR3XMYL.js} +4 -4
  74. package/dist/{chunk-Y3KA6X7B.js.map → chunk-OVR3XMYL.js.map} +1 -1
  75. package/dist/{chunk-Y5KTM3V5.js → chunk-PDKM27DF.js} +17 -295
  76. package/dist/chunk-PDKM27DF.js.map +1 -0
  77. package/dist/{chunk-OAL3B2ZU.cjs → chunk-PLJ7PHWU.cjs} +5 -5
  78. package/dist/{chunk-OAL3B2ZU.cjs.map → chunk-PLJ7PHWU.cjs.map} +1 -1
  79. package/dist/{chunk-2UUNSHDI.cjs → chunk-RB7GX2VT.cjs} +59 -1682
  80. package/dist/chunk-RB7GX2VT.cjs.map +1 -0
  81. package/dist/chunk-RFIBUWLF.cjs +232 -0
  82. package/dist/chunk-RFIBUWLF.cjs.map +1 -0
  83. package/dist/chunk-RLWIUUQ5.js +23 -0
  84. package/dist/chunk-RLWIUUQ5.js.map +1 -0
  85. package/dist/{chunk-MIDXCYZB.cjs → chunk-RQ2Y7USX.cjs} +15 -235
  86. package/dist/chunk-RQ2Y7USX.cjs.map +1 -0
  87. package/dist/chunk-SV65E4QW.js +58 -0
  88. package/dist/chunk-SV65E4QW.js.map +1 -0
  89. package/dist/{chunk-LYUO3E6V.js → chunk-SZOFGU7W.js} +3 -3
  90. package/dist/{chunk-LYUO3E6V.js.map → chunk-SZOFGU7W.js.map} +1 -1
  91. package/dist/chunk-T5B7FM7S.js +1602 -0
  92. package/dist/chunk-T5B7FM7S.js.map +1 -0
  93. package/dist/{chunk-YNIBUKV5.js → chunk-TBEVGWY3.js} +32 -14
  94. package/dist/chunk-TBEVGWY3.js.map +1 -0
  95. package/dist/{chunk-MJCCBMM5.cjs → chunk-TC3RQNEX.cjs} +6 -80
  96. package/dist/chunk-TC3RQNEX.cjs.map +1 -0
  97. package/dist/chunk-TZGBRLPK.js +288 -0
  98. package/dist/chunk-TZGBRLPK.js.map +1 -0
  99. package/dist/chunk-U6YVZDOV.cjs +574 -0
  100. package/dist/chunk-U6YVZDOV.cjs.map +1 -0
  101. package/dist/{chunk-QIMVTGKS.cjs → chunk-U73KPFYH.cjs} +255 -2
  102. package/dist/chunk-U73KPFYH.cjs.map +1 -0
  103. package/dist/{chunk-HFGXA5CL.cjs → chunk-UTTTJSQU.cjs} +4 -4
  104. package/dist/{chunk-HFGXA5CL.cjs.map → chunk-UTTTJSQU.cjs.map} +1 -1
  105. package/dist/{chunk-DLBUFHLY.js → chunk-VTTZZ4FN.js} +4 -74
  106. package/dist/chunk-VTTZZ4FN.js.map +1 -0
  107. package/dist/{chunk-5FTIHRZH.cjs → chunk-XVUOMWMD.cjs} +4 -4
  108. package/dist/{chunk-5FTIHRZH.cjs.map → chunk-XVUOMWMD.cjs.map} +1 -1
  109. package/dist/{chunk-3ZYOASAX.js → chunk-Y4ATWQGV.js} +3 -3
  110. package/dist/{chunk-3ZYOASAX.js.map → chunk-Y4ATWQGV.js.map} +1 -1
  111. package/dist/{chunk-444XKG46.js → chunk-YKQ2DPIP.js} +3 -3
  112. package/dist/{chunk-444XKG46.js.map → chunk-YKQ2DPIP.js.map} +1 -1
  113. package/dist/{chunk-HEMU73OP.cjs → chunk-YSHIC4NJ.cjs} +4 -4
  114. package/dist/{chunk-HEMU73OP.cjs.map → chunk-YSHIC4NJ.cjs.map} +1 -1
  115. package/dist/{chunk-5BXEYYH6.js → chunk-ZM26YEOT.js} +3 -3
  116. package/dist/{chunk-5BXEYYH6.js.map → chunk-ZM26YEOT.js.map} +1 -1
  117. package/dist/citations/index.cjs +12 -12
  118. package/dist/citations/index.js +3 -3
  119. package/dist/connect/docx.cjs +36 -7
  120. package/dist/connect/docx.cjs.map +1 -1
  121. package/dist/connect/docx.d.ts +9 -2
  122. package/dist/connect/docx.js +30 -6
  123. package/dist/connect/docx.js.map +1 -1
  124. package/dist/connect/index.cjs +805 -630
  125. package/dist/connect/index.cjs.map +1 -1
  126. package/dist/connect/index.d.ts +2 -0
  127. package/dist/connect/index.js +639 -509
  128. package/dist/connect/index.js.map +1 -1
  129. package/dist/connection/ConnectedSettings.d.ts +3 -2
  130. package/dist/connection/docx/ConnectedNativeDocxComparison.d.ts +5 -0
  131. package/dist/connection/docx/ConnectedNativeDocxEditor.d.ts +16 -0
  132. package/dist/connection/{ConnectedStreamedWordArtifact.d.ts → docx/ConnectedStreamedWordArtifact.d.ts} +1 -1
  133. package/dist/connection/docx/support.d.ts +27 -0
  134. package/dist/connection/docx/useConnectedDocxReferences.d.ts +2 -0
  135. package/dist/connection/docx/useConnectedHouseTemplate.d.ts +2 -0
  136. package/dist/connection/settings-page/ConnectedAccountSettings.d.ts +35 -0
  137. package/dist/connection/settings-page/ConnectedMailSettings.d.ts +13 -0
  138. package/dist/connection/settings-page/ConnectedPremiumModels.d.ts +1 -0
  139. package/dist/connection/settings-page/ConnectedPrivacySettings.d.ts +12 -0
  140. package/dist/connection/settings-page/ConnectedSettingsPage.d.ts +29 -0
  141. package/dist/connection/settings-page/SessionStatusIcon.d.ts +7 -0
  142. package/dist/connection/settings-page/index.d.ts +6 -0
  143. package/dist/docx/index.cjs +17 -63
  144. package/dist/docx/index.cjs.map +1 -1
  145. package/dist/docx/index.d.ts +1 -0
  146. package/dist/docx/index.js +2 -64
  147. package/dist/docx/index.js.map +1 -1
  148. package/dist/docx/template/candidates.d.ts +16 -0
  149. package/dist/facts/index.cjs +4 -4
  150. package/dist/facts/index.js +3 -3
  151. package/dist/files/index.cjs +3 -3
  152. package/dist/files/index.js +2 -2
  153. package/dist/home/index.cjs +20 -20
  154. package/dist/home/index.js +4 -4
  155. package/dist/index.cjs +793 -755
  156. package/dist/index.cjs.map +1 -1
  157. package/dist/index.d.ts +2 -0
  158. package/dist/index.js +25 -19
  159. package/dist/index.js.map +1 -1
  160. package/dist/lib/deep-link.d.ts +46 -0
  161. package/dist/lib/sidebar-mode.d.ts +1 -3
  162. package/dist/lib/use-close-on-escape.d.ts +6 -0
  163. package/dist/provider/BlocksProvider.d.ts +5 -1
  164. package/dist/provider/settings-section.d.ts +9 -0
  165. package/dist/retrieval/index.cjs +4 -4
  166. package/dist/retrieval/index.js +2 -2
  167. package/dist/settings/AppearanceSettings.d.ts +18 -0
  168. package/dist/settings/ServerConnectionControls.d.ts +16 -0
  169. package/dist/settings/SettingsPage.d.ts +31 -0
  170. package/dist/settings/index.cjs +189 -251
  171. package/dist/settings/index.cjs.map +1 -1
  172. package/dist/settings/index.d.ts +3 -1
  173. package/dist/settings/index.js +89 -200
  174. package/dist/settings/index.js.map +1 -1
  175. package/dist/shell/ShellSidebar.d.ts +37 -0
  176. package/dist/shell/Sidebar.d.ts +6 -6
  177. package/dist/shell/index.cjs +63 -50
  178. package/dist/shell/index.d.ts +4 -1
  179. package/dist/shell/index.js +5 -4
  180. package/dist/shell/types.d.ts +18 -0
  181. package/dist/shell/use-sidebar-controller.d.ts +59 -0
  182. package/dist/site/index.cjs +74 -73
  183. package/dist/site/index.js +3 -2
  184. package/dist/studio/index.cjs +80 -78
  185. package/dist/studio/index.cjs.map +1 -1
  186. package/dist/studio/index.js +10 -8
  187. package/dist/studio/index.js.map +1 -1
  188. package/dist/workflow-canvas/index.cjs +64 -60
  189. package/dist/workflow-canvas/index.cjs.map +1 -1
  190. package/dist/workflow-canvas/index.js +12 -8
  191. package/dist/workflow-canvas/index.js.map +1 -1
  192. package/dist/workspaces/index.cjs +3 -3
  193. package/dist/workspaces/index.js +2 -2
  194. package/node_modules/@arbidocs/coedit/package.json +1 -1
  195. package/package.json +4 -4
  196. package/dist/chunk-2UUNSHDI.cjs.map +0 -1
  197. package/dist/chunk-4TR5QCCX.cjs +0 -43
  198. package/dist/chunk-4TR5QCCX.cjs.map +0 -1
  199. package/dist/chunk-7NDW4KF4.cjs +0 -112
  200. package/dist/chunk-7NDW4KF4.cjs.map +0 -1
  201. package/dist/chunk-C4WSHRR6.cjs.map +0 -1
  202. package/dist/chunk-CKCBBYTA.js.map +0 -1
  203. package/dist/chunk-CQ4MFKFC.cjs.map +0 -1
  204. package/dist/chunk-DLBUFHLY.js.map +0 -1
  205. package/dist/chunk-ETXYVO6E.js +0 -109
  206. package/dist/chunk-ETXYVO6E.js.map +0 -1
  207. package/dist/chunk-GFRQG36Y.cjs.map +0 -1
  208. package/dist/chunk-GYAUJ4KT.js.map +0 -1
  209. package/dist/chunk-MCKOZACC.js +0 -41
  210. package/dist/chunk-MCKOZACC.js.map +0 -1
  211. package/dist/chunk-MIDXCYZB.cjs.map +0 -1
  212. package/dist/chunk-MJCCBMM5.cjs.map +0 -1
  213. package/dist/chunk-O6W6RW3B.js.map +0 -1
  214. package/dist/chunk-ON3TKY5Y.js.map +0 -1
  215. package/dist/chunk-OWCEQKAR.cjs.map +0 -1
  216. package/dist/chunk-QIMVTGKS.cjs.map +0 -1
  217. package/dist/chunk-S24XEVPS.cjs.map +0 -1
  218. package/dist/chunk-Y5KTM3V5.js.map +0 -1
  219. package/dist/chunk-YFF3GTJQ.js.map +0 -1
  220. package/dist/chunk-YNIBUKV5.js.map +0 -1
  221. package/dist/chunk-YWY2KIX2.js.map +0 -1
  222. package/dist/connection/ConnectedNativeDocxEditor.d.ts +0 -6
@@ -1,27 +1,31 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkQIMVTGKS_cjs = require('../chunk-QIMVTGKS.cjs');
5
- var chunk3BFGL2JL_cjs = require('../chunk-3BFGL2JL.cjs');
4
+ var chunkU73KPFYH_cjs = require('../chunk-U73KPFYH.cjs');
5
+ var chunkODRHHWHY_cjs = require('../chunk-ODRHHWHY.cjs');
6
+ var chunkU6YVZDOV_cjs = require('../chunk-U6YVZDOV.cjs');
6
7
  var chunkJZNXRMLH_cjs = require('../chunk-JZNXRMLH.cjs');
7
- var chunk7NDW4KF4_cjs = require('../chunk-7NDW4KF4.cjs');
8
8
  var chunkGFNELPDP_cjs = require('../chunk-GFNELPDP.cjs');
9
9
  var chunkJH6JTI76_cjs = require('../chunk-JH6JTI76.cjs');
10
- require('../chunk-S24XEVPS.cjs');
10
+ require('../chunk-464YPRAE.cjs');
11
11
  require('../chunk-V5OAXIBN.cjs');
12
12
  require('../chunk-5FYU7ZIU.cjs');
13
13
  var chunkO4YPVYPO_cjs = require('../chunk-O4YPVYPO.cjs');
14
- var chunkOAQEUTNJ_cjs = require('../chunk-OAQEUTNJ.cjs');
14
+ var chunkHAOKT4LC_cjs = require('../chunk-HAOKT4LC.cjs');
15
15
  var chunkV46W7YLI_cjs = require('../chunk-V46W7YLI.cjs');
16
16
  var chunkO6IEZDRC_cjs = require('../chunk-O6IEZDRC.cjs');
17
+ require('../chunk-LJJJ6CYH.cjs');
17
18
  var chunkI2QSDQQV_cjs = require('../chunk-I2QSDQQV.cjs');
18
19
  require('../chunk-RC25WMVB.cjs');
19
- var chunk2UUNSHDI_cjs = require('../chunk-2UUNSHDI.cjs');
20
- require('../chunk-WS5EX7DN.cjs');
21
- var chunkMIDXCYZB_cjs = require('../chunk-MIDXCYZB.cjs');
20
+ var chunkRB7GX2VT_cjs = require('../chunk-RB7GX2VT.cjs');
21
+ var chunkRFIBUWLF_cjs = require('../chunk-RFIBUWLF.cjs');
22
+ var chunkLPYEUD2D_cjs = require('../chunk-LPYEUD2D.cjs');
23
+ require('../chunk-EYKISBDO.cjs');
24
+ require('../chunk-AHDJXIUB.cjs');
25
+ var chunkRQ2Y7USX_cjs = require('../chunk-RQ2Y7USX.cjs');
22
26
  require('../chunk-ZW6FPIFC.cjs');
23
27
  require('../chunk-DETZZBG2.cjs');
24
- require('../chunk-R26BK7YL.cjs');
28
+ require('../chunk-DTROMMDX.cjs');
25
29
  var chunkV4ISCZJ7_cjs = require('../chunk-V4ISCZJ7.cjs');
26
30
  var chunk2EI7NCUA_cjs = require('../chunk-2EI7NCUA.cjs');
27
31
  var chunkC2CWWEHO_cjs = require('../chunk-C2CWWEHO.cjs');
@@ -29,19 +33,20 @@ var chunkQVBZESYQ_cjs = require('../chunk-QVBZESYQ.cjs');
29
33
  require('../chunk-ADOKTJHV.cjs');
30
34
  var chunk6YTHQ73P_cjs = require('../chunk-6YTHQ73P.cjs');
31
35
  var chunkBIXHB4LV_cjs = require('../chunk-BIXHB4LV.cjs');
32
- var chunk7YLJHTDC_cjs = require('../chunk-7YLJHTDC.cjs');
36
+ var chunkDWZXSPMB_cjs = require('../chunk-DWZXSPMB.cjs');
37
+ var chunk7RGLTF76_cjs = require('../chunk-7RGLTF76.cjs');
38
+ var chunk5A2QQAF5_cjs = require('../chunk-5A2QQAF5.cjs');
33
39
  require('../chunk-B6MVQCXW.cjs');
34
40
  var chunkJKB7WT7L_cjs = require('../chunk-JKB7WT7L.cjs');
35
- var chunkOWCEQKAR_cjs = require('../chunk-OWCEQKAR.cjs');
41
+ var chunkJSTKEZBS_cjs = require('../chunk-JSTKEZBS.cjs');
42
+ require('../chunk-76L6LOP3.cjs');
36
43
  require('../chunk-7UTB4PHM.cjs');
37
44
  require('../chunk-32HW2Q33.cjs');
38
45
  require('../chunk-FX3K6LNZ.cjs');
39
- var chunkDWZXSPMB_cjs = require('../chunk-DWZXSPMB.cjs');
40
- var chunk7RGLTF76_cjs = require('../chunk-7RGLTF76.cjs');
41
46
  require('../chunk-PPCATBOY.cjs');
42
47
  require('../chunk-MHVNT4J3.cjs');
43
- var chunk5FTIHRZH_cjs = require('../chunk-5FTIHRZH.cjs');
44
- var chunkC4WSHRR6_cjs = require('../chunk-C4WSHRR6.cjs');
48
+ var chunkXVUOMWMD_cjs = require('../chunk-XVUOMWMD.cjs');
49
+ var chunkKPZZ5FHE_cjs = require('../chunk-KPZZ5FHE.cjs');
45
50
  var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
46
51
  var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
47
52
  require('../chunk-DES3K4SD.cjs');
@@ -135,7 +140,7 @@ function ConnectedWorkspaceActivity({
135
140
  [feed.data]
136
141
  );
137
142
  return /* @__PURE__ */ jsxRuntime.jsx(
138
- chunkOAQEUTNJ_cjs.WorkspaceActivityList,
143
+ chunkHAOKT4LC_cjs.WorkspaceActivityList,
139
144
  {
140
145
  ...listProps,
141
146
  items,
@@ -545,7 +550,7 @@ function NotificationCenter({
545
550
  // Filter-aware: the filtered total whenever a filter applies.
546
551
  count: filtered.length,
547
552
  actions: /* @__PURE__ */ jsxRuntime.jsx(
548
- chunkMIDXCYZB_cjs.TriStateFilterMenu,
553
+ chunkRQ2Y7USX_cjs.TriStateFilterMenu,
549
554
  {
550
555
  testId: "notifications-filter-button",
551
556
  title: "Filter",
@@ -563,7 +568,7 @@ function NotificationCenter({
563
568
  }
564
569
  ];
565
570
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-full bg-background", "data-testid": "notifications-page", children: [
566
- /* @__PURE__ */ jsxRuntime.jsx(chunkQIMVTGKS_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
571
+ /* @__PURE__ */ jsxRuntime.jsx(chunkU73KPFYH_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
567
572
  chunk7RGLTF76_cjs.TabHeader,
568
573
  {
569
574
  tabs,
@@ -808,7 +813,7 @@ function ConnectedWorkspaceNotificationMenu({
808
813
  });
809
814
  if (!workspaceId) return null;
810
815
  return /* @__PURE__ */ jsxRuntime.jsx(
811
- chunkOAQEUTNJ_cjs.WorkspaceNotificationMenu,
816
+ chunkHAOKT4LC_cjs.WorkspaceNotificationMenu,
812
817
  {
813
818
  ...menuProps,
814
819
  level,
@@ -827,7 +832,7 @@ function ConnectedThreadFollow({
827
832
  enabled: status === "authenticated"
828
833
  });
829
834
  if (!conversationId) return null;
830
- const Control = as === "menu-item" ? chunkOAQEUTNJ_cjs.ThreadFollowMenuItem : chunkOAQEUTNJ_cjs.ThreadFollowButton;
835
+ const Control = as === "menu-item" ? chunkHAOKT4LC_cjs.ThreadFollowMenuItem : chunkHAOKT4LC_cjs.ThreadFollowButton;
831
836
  return /* @__PURE__ */ jsxRuntime.jsx(
832
837
  Control,
833
838
  {
@@ -838,255 +843,6 @@ function ConnectedThreadFollow({
838
843
  }
839
844
  );
840
845
  }
841
- function useConnectedWorkspaceRole() {
842
- const { workspaceId, live, userId, ensureWorkspaceOpen } = chunkGFNELPDP_cjs.useConnectedWorkspace();
843
- const { data: members = [] } = react$1.useWorkspaceUsers(workspaceId ?? void 0, {
844
- enabled: live && !!workspaceId,
845
- beforeFetch: ensureWorkspaceOpen
846
- });
847
- const role = members.find((m) => m.user.external_id === userId)?.role;
848
- return {
849
- members,
850
- role,
851
- /** An owner or a collaborator edits, pauses, resumes and runs what is shared with the workspace. */
852
- canEditShared: role === "owner" || role === "collaborator",
853
- /** With an item's creator, the only one who deletes it. */
854
- isWorkspaceOwner: role === "owner"
855
- };
856
- }
857
- var DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS = {
858
- updateFailed: "Could not update the workflow",
859
- deleteTitle: "Delete workflow",
860
- deleteOne: (name) => `Delete \u201C${name}\u201D? Threads it already created stay.`,
861
- deleteMany: (count) => `Delete ${count} workflows? Threads they already created stay.`,
862
- runFailed: "The workflow failed. You can send an error report from its history.",
863
- noThread: "The workflow did not create a thread.",
864
- documentAction: (workflow) => workflow.action?.type === "email_documents" ? "Preparing your document email" : "Reviewing documents",
865
- untitledTask: "Untitled thread"
866
- };
867
- var messageOf = (error) => error instanceof Error ? error.message : "";
868
- function ConnectedWorkflowsTable({
869
- filter,
870
- describeTrigger = (w) => chunk2UUNSHDI_cjs.workflowTriggerType(w).replaceAll("_", " "),
871
- formatDate: formatDate2 = chunkKDG6FER6_cjs.fmtDate,
872
- onViewRuns,
873
- connectedLabels,
874
- ...tableProps
875
- }) {
876
- const l = { ...DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, ...connectedLabels };
877
- const { notify, confirm, openConversation } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
878
- const { canEditShared, isWorkspaceOwner } = useConnectedWorkspaceRole();
879
- const { data: saved = [], isLoading } = react$1.useWorkflows({ live: true });
880
- const { data: conversations, refetch } = chunkJZNXRMLH_cjs.useConnectedConversations({ live: true });
881
- const { data: agents = [] } = react$1.useAgents();
882
- const update = react$1.useUpdateWorkflow();
883
- const remove = react$1.useDeleteWorkflow();
884
- const run = react$1.useRunWorkflow();
885
- const [busyId, setBusyId] = react.useState(null);
886
- const workflows = react.useMemo(() => filter ? saved.filter(filter) : saved, [saved, filter]);
887
- const firingStamp = saved.map((w) => `${w.external_id}:${w.last_fired_at ?? ""}`).join("|");
888
- react.useEffect(() => {
889
- void refetch?.();
890
- }, [firingStamp, refetch]);
891
- const lastRuns = react.useMemo(() => {
892
- const out = {};
893
- for (const c of conversations) {
894
- const id = c.workflow_ext_id;
895
- if (id && (!out[id] || Date.parse(c.created_at) > Date.parse(out[id].at)))
896
- out[id] = { conversationId: c.external_id, at: c.created_at, threadStatus: c.status };
897
- }
898
- return out;
899
- }, [conversations]);
900
- const agentNames = react.useMemo(
901
- () => Object.fromEntries(agents.map((a) => [a.external_id, a.given_name || a.email])),
902
- [agents]
903
- );
904
- const taskNames = react.useMemo(
905
- () => Object.fromEntries(
906
- conversations.filter((c) => c.status != null).map((c) => [c.external_id, c.title || l.untitledTask])
907
- ),
908
- [conversations, l.untitledTask]
909
- );
910
- const act = async (workflow, action) => {
911
- setBusyId(workflow.external_id);
912
- try {
913
- await action();
914
- } catch (error) {
915
- notify(messageOf(error) || l.updateFailed, "error");
916
- } finally {
917
- setBusyId(null);
918
- }
919
- };
920
- const setActive = (workflow, active) => act(workflow, () => update.mutateAsync({ workflowId: workflow.external_id, patch: { active } }));
921
- const deleteAll = async (items) => {
922
- if (!items.length) return;
923
- const ok = await confirm({
924
- title: l.deleteTitle,
925
- message: items.length === 1 ? l.deleteOne(items[0].name) : l.deleteMany(items.length)
926
- });
927
- if (!ok) return;
928
- for (const workflow of items)
929
- await act(workflow, () => remove.mutateAsync(workflow.external_id));
930
- };
931
- return /* @__PURE__ */ jsxRuntime.jsx(
932
- chunk2UUNSHDI_cjs.WorkflowsTable,
933
- {
934
- ...tableProps,
935
- workflows,
936
- isLoading,
937
- busyId,
938
- describeTrigger,
939
- formatDate: formatDate2,
940
- agentNames,
941
- taskNames,
942
- lastRuns,
943
- canEditShared,
944
- isWorkspaceOwner,
945
- onOpenThread: (conversationId) => openConversation(conversationId),
946
- onViewRuns,
947
- onToggleActive: (workflow, active) => void setActive(workflow, active),
948
- onToggleActiveMany: (items, active) => {
949
- void (async () => {
950
- for (const workflow of items) await setActive(workflow, active);
951
- })();
952
- },
953
- onToggleShared: (workflow, shared) => void act(
954
- workflow,
955
- () => update.mutateAsync({ workflowId: workflow.external_id, patch: { shared } })
956
- ),
957
- onDelete: (workflow) => void deleteAll([workflow]),
958
- onDeleteMany: (items) => void deleteAll(items),
959
- onRun: (workflow) => void act(workflow, async () => {
960
- const result = await run.mutateAsync(workflow.external_id);
961
- if (result.conversation_ext_id) openConversation(result.conversation_ext_id);
962
- if (result.error) {
963
- onViewRuns?.(workflow);
964
- notify(l.runFailed, "error");
965
- return;
966
- }
967
- if (result.execution_id && !result.conversation_ext_id) {
968
- onViewRuns?.(workflow);
969
- notify(l.documentAction(workflow), "success");
970
- return;
971
- }
972
- if (!result.conversation_ext_id) throw new Error(l.noThread);
973
- })
974
- }
975
- );
976
- }
977
- var IMAGE_FILE_TYPES = /* @__PURE__ */ new Set(["png", "jpg", "jpeg", "gif", "bmp", "tiff", "webp"]);
978
- function toWorkflowFieldDocument(doc) {
979
- const isImage = IMAGE_FILE_TYPES.has((doc.file_type ?? "").toLowerCase());
980
- return {
981
- id: doc.external_id,
982
- title: doc.doc_metadata?.title || doc.file_name || doc.external_id,
983
- fileName: doc.file_name,
984
- pages: isImage ? null : doc.n_pages ?? null,
985
- tokens: isImage ? null : doc.tokens ?? null,
986
- status: doc.status,
987
- isImage
988
- };
989
- }
990
- function useConnectedWorkflowScopeSource() {
991
- const { data: docs } = chunkJZNXRMLH_cjs.useConnectedDocuments();
992
- const { data: tags } = chunkJZNXRMLH_cjs.useConnectedTags();
993
- return react.useMemo(() => chunk2UUNSHDI_cjs.buildWorkflowScopeSource(docs, chunk2UUNSHDI_cjs.documentScopeLabels(tags)), [docs, tags]);
994
- }
995
- function useConnectedAgentOptions() {
996
- const { data: agents } = react$1.useAgents();
997
- return react.useMemo(
998
- () => (agents ?? []).map((a) => ({ id: a.external_id, label: a.given_name || a.email })),
999
- [agents]
1000
- );
1001
- }
1002
- function ConnectedWorkflowDocumentsField({
1003
- field,
1004
- value,
1005
- onChange,
1006
- onAddFiles,
1007
- labels
1008
- }) {
1009
- const arbi = react$1.useArbi();
1010
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
1011
- const { ensureWorkspaceOpen } = chunkGFNELPDP_cjs.useConnectedWorkspace();
1012
- const { data: docs, loaded, refetch } = chunkJZNXRMLH_cjs.useConnectedDocuments();
1013
- const documents = react.useMemo(() => docs.map(toWorkflowFieldDocument), [docs]);
1014
- const chosen = value.documents ?? [];
1015
- const { data: thumbnails } = react$1.useThumbnails(chosen, { enabled: (field.max ?? 1) > 1 });
1016
- const input = react.useRef(null);
1017
- const [adding, setAdding] = react.useState(false);
1018
- const upload = react.useCallback(
1019
- async (files) => {
1020
- setAdding(true);
1021
- try {
1022
- await ensureWorkspaceOpen();
1023
- for (const file of files) await arbi.documents.uploadFile(file, file.name);
1024
- } catch (error) {
1025
- notify(error instanceof Error && error.message ? error.message : String(error), "error");
1026
- } finally {
1027
- setAdding(false);
1028
- await refetch?.();
1029
- }
1030
- },
1031
- [arbi, ensureWorkspaceOpen, notify, refetch]
1032
- );
1033
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1034
- !onAddFiles && /* @__PURE__ */ jsxRuntime.jsx(
1035
- "input",
1036
- {
1037
- ref: input,
1038
- type: "file",
1039
- multiple: true,
1040
- className: "hidden",
1041
- "aria-label": "Add files",
1042
- "data-testid": "workflow-add-files-input",
1043
- onChange: (e) => {
1044
- const files = Array.from(e.target.files ?? []);
1045
- e.target.value = "";
1046
- if (files.length) void upload(files);
1047
- }
1048
- }
1049
- ),
1050
- /* @__PURE__ */ jsxRuntime.jsx(
1051
- chunk2UUNSHDI_cjs.WorkflowDocumentsField,
1052
- {
1053
- field,
1054
- value,
1055
- onChange,
1056
- documents,
1057
- loaded,
1058
- thumbnailOf: (id) => thumbnails?.[id],
1059
- onAddFiles: onAddFiles ?? ((files) => files?.length ? void upload(files) : input.current?.click()),
1060
- adding,
1061
- labels
1062
- }
1063
- )
1064
- ] });
1065
- }
1066
- function ConnectedWorkflowLauncher({
1067
- onAddFiles,
1068
- ...props
1069
- }) {
1070
- const scopeSource = useConnectedWorkflowScopeSource();
1071
- const agents = useConnectedAgentOptions();
1072
- return /* @__PURE__ */ jsxRuntime.jsx(
1073
- chunk2UUNSHDI_cjs.WorkflowLauncher,
1074
- {
1075
- ...props,
1076
- scopeSource,
1077
- agents,
1078
- renderDocuments: (field, value, onChange) => /* @__PURE__ */ jsxRuntime.jsx(
1079
- ConnectedWorkflowDocumentsField,
1080
- {
1081
- field,
1082
- value,
1083
- onChange,
1084
- onAddFiles
1085
- }
1086
- )
1087
- }
1088
- );
1089
- }
1090
846
  var DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS = {
1091
847
  title: "Add a skill",
1092
848
  description: "Bring in a skill someone sent you, from a file or a link.",
@@ -1101,7 +857,7 @@ var DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS = {
1101
857
  };
1102
858
  function ConnectedSkillUpload({ onDone, labels, className }) {
1103
859
  const l = { ...DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS, ...labels };
1104
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
860
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
1105
861
  const upload = react$1.useUploadSkillFiles();
1106
862
  const fileRef = react.useRef(null);
1107
863
  const [url, setUrl] = react.useState("");
@@ -1149,7 +905,7 @@ function ConnectedSkillUpload({ onDone, labels, className }) {
1149
905
  onChange: (e) => {
1150
906
  const file = e.target.files?.[0];
1151
907
  e.target.value = "";
1152
- if (file) void add(() => chunk2UUNSHDI_cjs.importSkillFile(file));
908
+ if (file) void add(() => chunkRB7GX2VT_cjs.importSkillFile(file));
1153
909
  }
1154
910
  }
1155
911
  ),
@@ -1174,7 +930,7 @@ function ConnectedSkillUpload({ onDone, labels, className }) {
1174
930
  className: "space-y-2",
1175
931
  onSubmit: (e) => {
1176
932
  e.preventDefault();
1177
- if (url.trim()) void add(() => chunk2UUNSHDI_cjs.importSkillFromUrl(url));
933
+ if (url.trim()) void add(() => chunkRB7GX2VT_cjs.importSkillFromUrl(url));
1178
934
  },
1179
935
  children: [
1180
936
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "skills-add-url", children: l.fromLink }),
@@ -1226,7 +982,7 @@ function ConnectedSkillsLibrary({
1226
982
  renderEditor
1227
983
  }) {
1228
984
  const arbi = react$1.useArbi();
1229
- const { confirm, notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
985
+ const { confirm, notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
1230
986
  const { data: listings } = react$1.useSkills();
1231
987
  const upload = react$1.useUploadSkillFiles();
1232
988
  const setVisibility = react$1.useSetSkillVisibility();
@@ -1238,9 +994,9 @@ function ConnectedSkillsLibrary({
1238
994
  const [type, setType] = react.useState("all");
1239
995
  const [view, setView] = react.useState("gallery");
1240
996
  const [isBusy, setIsBusy] = react.useState(false);
1241
- const all = react.useMemo(() => chunk2UUNSHDI_cjs.buildLibrarySkills(builtins, listings ?? []), [builtins, listings]);
997
+ const all = react.useMemo(() => chunkRB7GX2VT_cjs.buildLibrarySkills(builtins, listings ?? []), [builtins, listings]);
1242
998
  const shown = react.useMemo(
1243
- () => chunk2UUNSHDI_cjs.filterLibrarySkills(all, { query, source, type }),
999
+ () => chunkRB7GX2VT_cjs.filterLibrarySkills(all, { query, source, type }),
1244
1000
  [all, query, source, type]
1245
1001
  );
1246
1002
  const current = all.find((s) => s.slug === selected) ?? null;
@@ -1251,21 +1007,21 @@ function ConnectedSkillsLibrary({
1251
1007
  const count = (s) => all.filter((x) => x.source === s).length;
1252
1008
  const sourceOptions = [
1253
1009
  { id: "all", label: "All", count: all.length },
1254
- { id: "builtin", label: chunk2UUNSHDI_cjs.SKILL_SOURCE_LABELS.builtin, count: count("builtin") },
1255
- { id: "mine", label: chunk2UUNSHDI_cjs.SKILL_SOURCE_LABELS.mine, count: count("mine") },
1256
- { id: "shared", label: chunk2UUNSHDI_cjs.SKILL_SOURCE_LABELS.shared, count: count("shared") }
1010
+ { id: "builtin", label: chunkRB7GX2VT_cjs.SKILL_SOURCE_LABELS.builtin, count: count("builtin") },
1011
+ { id: "mine", label: chunkRB7GX2VT_cjs.SKILL_SOURCE_LABELS.mine, count: count("mine") },
1012
+ { id: "shared", label: chunkRB7GX2VT_cjs.SKILL_SOURCE_LABELS.shared, count: count("shared") }
1257
1013
  ];
1258
1014
  const types = [...new Set(all.map((s) => s.type))];
1259
1015
  const typeOptions = [
1260
1016
  { id: "all", label: "Any kind" },
1261
- ...types.map((t) => ({ id: t, label: chunk2UUNSHDI_cjs.SKILL_TYPE_LABELS[t] ?? t }))
1017
+ ...types.map((t) => ({ id: t, label: chunkRB7GX2VT_cjs.SKILL_TYPE_LABELS[t] ?? t }))
1262
1018
  ];
1263
1019
  const pick = (slug) => {
1264
1020
  setSelected(slug);
1265
1021
  setMode("detail");
1266
1022
  };
1267
1023
  const markdownOf = async (skill) => {
1268
- if (!skill.docExtId) return chunk2UUNSHDI_cjs.workflowToSkillMarkdown(skill.workflow);
1024
+ if (!skill.docExtId) return chunkRB7GX2VT_cjs.workflowToSkillMarkdown(skill.workflow);
1269
1025
  const response = await arbi.documents.download(skill.docExtId);
1270
1026
  if (!response.ok) throw new Error(`Could not read the skill (${response.status})`);
1271
1027
  return response.text();
@@ -1273,7 +1029,7 @@ function ConnectedSkillsLibrary({
1273
1029
  const saveAs = (slug, markdown, shared = false) => upload.mutateAsync([
1274
1030
  {
1275
1031
  folder: `${SKILL_FOLDER}${slug}`,
1276
- fileName: chunk2UUNSHDI_cjs.SKILL_MAIN_FILENAME,
1032
+ fileName: chunkRB7GX2VT_cjs.SKILL_MAIN_FILENAME,
1277
1033
  content: new Blob([markdown], { type: "text/markdown" }),
1278
1034
  shared
1279
1035
  }
@@ -1336,7 +1092,7 @@ function ConnectedSkillsLibrary({
1336
1092
  try {
1337
1093
  documentTools.downloadBlob(
1338
1094
  new Blob([await markdownOf(skill)], { type: "text/markdown" }),
1339
- chunk2UUNSHDI_cjs.SKILL_MAIN_FILENAME
1095
+ chunkRB7GX2VT_cjs.SKILL_MAIN_FILENAME
1340
1096
  );
1341
1097
  } catch (error) {
1342
1098
  notify(errorText(error, "Could not export the skill"), "error");
@@ -1377,10 +1133,10 @@ function ConnectedSkillsLibrary({
1377
1133
  }
1378
1134
  )
1379
1135
  ] }),
1380
- /* @__PURE__ */ jsxRuntime.jsx(chunk2UUNSHDI_cjs.SkillViewToggle, { value: view, onChange: setView })
1136
+ /* @__PURE__ */ jsxRuntime.jsx(chunkRB7GX2VT_cjs.SkillViewToggle, { value: view, onChange: setView })
1381
1137
  ] }),
1382
1138
  /* @__PURE__ */ jsxRuntime.jsx(
1383
- chunk2UUNSHDI_cjs.SkillFilterChips,
1139
+ chunkRB7GX2VT_cjs.SkillFilterChips,
1384
1140
  {
1385
1141
  label: "Show",
1386
1142
  value: source,
@@ -1389,7 +1145,7 @@ function ConnectedSkillsLibrary({
1389
1145
  }
1390
1146
  ),
1391
1147
  types.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
1392
- chunk2UUNSHDI_cjs.SkillFilterChips,
1148
+ chunkRB7GX2VT_cjs.SkillFilterChips,
1393
1149
  {
1394
1150
  label: "Kind",
1395
1151
  value: type,
@@ -1436,12 +1192,12 @@ function ConnectedSkillsLibrary({
1436
1192
  view === "gallery" ? "grid grid-cols-[repeat(auto-fill,minmax(9.5rem,1fr))]" : "flex flex-col"
1437
1193
  ),
1438
1194
  children: shown.map((skill) => /* @__PURE__ */ jsxRuntime.jsx(
1439
- chunk2UUNSHDI_cjs.SkillTile,
1195
+ chunkRB7GX2VT_cjs.SkillTile,
1440
1196
  {
1441
1197
  name: skill.title,
1442
1198
  testId: `skill-tile-${skill.slug}`,
1443
1199
  description: skill.description,
1444
- sourceLabel: skill.isShared ? `${chunk2UUNSHDI_cjs.SKILL_SOURCE_LABELS.mine}, shared` : chunk2UUNSHDI_cjs.SKILL_SOURCE_LABELS[skill.source],
1200
+ sourceLabel: skill.isShared ? `${chunkRB7GX2VT_cjs.SKILL_SOURCE_LABELS.mine}, shared` : chunkRB7GX2VT_cjs.SKILL_SOURCE_LABELS[skill.source],
1445
1201
  type: skill.type,
1446
1202
  icon,
1447
1203
  layout: view,
@@ -1476,7 +1232,7 @@ function ConnectedSkillsLibrary({
1476
1232
  }
1477
1233
  ),
1478
1234
  mode === "new" && /* @__PURE__ */ jsxRuntime.jsx(
1479
- chunk2UUNSHDI_cjs.SkillGenerateForm,
1235
+ chunkRB7GX2VT_cjs.SkillGenerateForm,
1480
1236
  {
1481
1237
  icon,
1482
1238
  onGenerate: (desc) => {
@@ -1503,11 +1259,11 @@ function ConnectedSkillsLibrary({
1503
1259
  ),
1504
1260
  mode === "add" && /* @__PURE__ */ jsxRuntime.jsx(ConnectedSkillUpload, { onDone: done }),
1505
1261
  mode === "detail" && current && /* @__PURE__ */ jsxRuntime.jsx(
1506
- chunk2UUNSHDI_cjs.SkillLibraryDetail,
1262
+ chunkRB7GX2VT_cjs.SkillLibraryDetail,
1507
1263
  {
1508
1264
  skill: current,
1509
1265
  icon,
1510
- instructions: current.docExtId ? currentText ? chunk2UUNSHDI_cjs.parseSkillFrontmatter(currentText, chunk2UUNSHDI_cjs.SKILL_MAIN_FILENAME).content : "" : current.workflow.run.kind === "prompt" ? current.workflow.run.promptTemplate : "",
1266
+ instructions: current.docExtId ? currentText ? chunkRB7GX2VT_cjs.parseSkillFrontmatter(currentText, chunkRB7GX2VT_cjs.SKILL_MAIN_FILENAME).content : "" : current.workflow.run.kind === "prompt" ? current.workflow.run.promptTemplate : "",
1511
1267
  isLoading: !!current.docExtId && textLoading,
1512
1268
  actions: {
1513
1269
  onRun: () => onRun(current.slug),
@@ -1534,7 +1290,7 @@ function SkillEditor({
1534
1290
  onCancel,
1535
1291
  isSaving
1536
1292
  }) {
1537
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
1293
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
1538
1294
  const isEditing = !!skill;
1539
1295
  const [name, setName] = react.useState(skill?.slug ?? "");
1540
1296
  const [description, setDescription] = react.useState("");
@@ -1542,7 +1298,7 @@ function SkillEditor({
1542
1298
  const [seeded, setSeeded] = react.useState(!isEditing);
1543
1299
  const [nameError, setNameError] = react.useState(null);
1544
1300
  if (isEditing && !seeded && text !== void 0) {
1545
- const parsed = chunk2UUNSHDI_cjs.parseSkillFrontmatter(text, chunk2UUNSHDI_cjs.SKILL_MAIN_FILENAME);
1301
+ const parsed = chunkRB7GX2VT_cjs.parseSkillFrontmatter(text, chunkRB7GX2VT_cjs.SKILL_MAIN_FILENAME);
1546
1302
  setDescription(parsed.description ?? "");
1547
1303
  setBody(parsed.content ?? "");
1548
1304
  setSeeded(true);
@@ -1556,15 +1312,15 @@ function SkillEditor({
1556
1312
  notify("Add a short description.", "error");
1557
1313
  return;
1558
1314
  }
1559
- const slug = chunk2UUNSHDI_cjs.skillSlug(name);
1315
+ const slug = chunkRB7GX2VT_cjs.skillSlug(name);
1560
1316
  try {
1561
- await onSave(slug, chunk2UUNSHDI_cjs.serializeSkill({ name: slug, description, body }), isEditing);
1317
+ await onSave(slug, chunkRB7GX2VT_cjs.serializeSkill({ name: slug, description, body }), isEditing);
1562
1318
  } catch (err) {
1563
1319
  notify(errorText(err, "Could not save the skill"), "error");
1564
1320
  }
1565
1321
  };
1566
1322
  return /* @__PURE__ */ jsxRuntime.jsx(
1567
- chunk2UUNSHDI_cjs.SkillEditForm,
1323
+ chunkRB7GX2VT_cjs.SkillEditForm,
1568
1324
  {
1569
1325
  name,
1570
1326
  onNameChange: setName,
@@ -1600,13 +1356,13 @@ function ConnectedAgentCreator({
1600
1356
  agent,
1601
1357
  initialName,
1602
1358
  onSaved,
1603
- capabilities = chunk2UUNSHDI_cjs.DEFAULT_AGENT_CAPABILITIES,
1604
- templates = chunk2UUNSHDI_cjs.DEFAULT_AGENT_TEMPLATES,
1605
- types = chunk2UUNSHDI_cjs.DEFAULT_AGENT_TYPES,
1359
+ capabilities = chunkRB7GX2VT_cjs.DEFAULT_AGENT_CAPABILITIES,
1360
+ templates = chunkRB7GX2VT_cjs.DEFAULT_AGENT_TEMPLATES,
1361
+ types = chunkRB7GX2VT_cjs.DEFAULT_AGENT_TYPES,
1606
1362
  canRevokeWorkspaces = false,
1607
1363
  labels
1608
1364
  }) {
1609
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
1365
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
1610
1366
  const isEdit = !!agent;
1611
1367
  const [saving, setSaving] = react.useState(false);
1612
1368
  const [skills, setSkills] = react.useState([]);
@@ -1644,7 +1400,7 @@ function ConnectedAgentCreator({
1644
1400
  const initialValues = react.useMemo(
1645
1401
  () => ({
1646
1402
  name: agent?.given_name ?? initialName ?? "",
1647
- persona: isEdit ? chunk2UUNSHDI_cjs.stripPersonaPreamble(String(agents.PERSONA ?? "")) : "",
1403
+ persona: isEdit ? chunkRB7GX2VT_cjs.stripPersonaPreamble(String(agents.PERSONA ?? "")) : "",
1648
1404
  modelName: String(agents.AGENT_MODEL_NAME ?? ""),
1649
1405
  capabilities: Object.fromEntries(capabilities.map(({ key }) => [key, Boolean(agents[key])])),
1650
1406
  type: "builtin",
@@ -1663,7 +1419,7 @@ function ConnectedAgentCreator({
1663
1419
  try {
1664
1420
  let agentExtId = agent?.external_id ?? early?.id ?? "";
1665
1421
  if (!agentExtId) {
1666
- if (!chunk2UUNSHDI_cjs.isValidAgentName(values.name)) {
1422
+ if (!chunkRB7GX2VT_cjs.isValidAgentName(values.name)) {
1667
1423
  notify("Give the agent a name first.", "error");
1668
1424
  return;
1669
1425
  }
@@ -1699,7 +1455,7 @@ function ConnectedAgentCreator({
1699
1455
  title: `agent-${name}`,
1700
1456
  sections: {
1701
1457
  Agents: {
1702
- PERSONA: chunk2UUNSHDI_cjs.composePersona(name, values.persona),
1458
+ PERSONA: chunkRB7GX2VT_cjs.composePersona(name, values.persona),
1703
1459
  ...values.modelName ? { AGENT_MODEL_NAME: values.modelName } : {},
1704
1460
  ...Object.fromEntries(capabilities.map(({ key }) => [key, !!values.capabilities[key]])),
1705
1461
  ENABLED_SKILLS: values.capabilities.SKILLS_ENABLED && skills.length ? skills : null,
@@ -1722,7 +1478,7 @@ function ConnectedAgentCreator({
1722
1478
  };
1723
1479
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1724
1480
  /* @__PURE__ */ jsxRuntime.jsx(
1725
- chunk2UUNSHDI_cjs.AgentCreator,
1481
+ chunkRB7GX2VT_cjs.AgentCreator,
1726
1482
  {
1727
1483
  open: ready,
1728
1484
  onOpenChange,
@@ -1738,11 +1494,11 @@ function ConnectedAgentCreator({
1738
1494
  ) : void 0,
1739
1495
  revokingWorkspaceId: revokeAccess.isPending ? revokeAccess.variables?.workspaceId : void 0,
1740
1496
  avatar: (values) => /* @__PURE__ */ jsxRuntime.jsx(
1741
- chunk2UUNSHDI_cjs.AgentAvatarField,
1497
+ chunkRB7GX2VT_cjs.AgentAvatarField,
1742
1498
  {
1743
1499
  picture,
1744
1500
  isBusy: avatarBusy,
1745
- canGenerate: isEdit || chunk2UUNSHDI_cjs.isValidAgentName(values.name),
1501
+ canGenerate: isEdit || chunkRB7GX2VT_cjs.isValidAgentName(values.name),
1746
1502
  onGenerate: () => handleGenerateAvatar(values)
1747
1503
  }
1748
1504
  ),
@@ -1756,7 +1512,7 @@ function ConnectedAgentCreator({
1756
1512
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: "Connected tools" }),
1757
1513
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: "Extra tools from services you have connected. Pick which this agent may use." }),
1758
1514
  /* @__PURE__ */ jsxRuntime.jsx(
1759
- chunkMIDXCYZB_cjs.MultiSelect,
1515
+ chunkRFIBUWLF_cjs.MultiSelect,
1760
1516
  {
1761
1517
  data: mcpOptions,
1762
1518
  value: mcpTools,
@@ -1770,7 +1526,7 @@ function ConnectedAgentCreator({
1770
1526
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: "Skills" }),
1771
1527
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: "Skills are instructions the agent may follow. Leave empty to allow all of yours." }),
1772
1528
  /* @__PURE__ */ jsxRuntime.jsx(
1773
- chunkMIDXCYZB_cjs.MultiSelect,
1529
+ chunkRFIBUWLF_cjs.MultiSelect,
1774
1530
  {
1775
1531
  data: skillOptions,
1776
1532
  value: skills,
@@ -1794,7 +1550,7 @@ function ConnectedAgentCreator({
1794
1550
  /* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { children: "Connect your agent" }),
1795
1551
  /* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { children: "This key is shown once. Run the script on the machine that will host the agent." })
1796
1552
  ] }),
1797
- connect && /* @__PURE__ */ jsxRuntime.jsx(chunk2UUNSHDI_cjs.AgentConnectInstructions, { email: connect.email, signingKey: connect.signingKey })
1553
+ connect && /* @__PURE__ */ jsxRuntime.jsx(chunkRB7GX2VT_cjs.AgentConnectInstructions, { email: connect.email, signingKey: connect.signingKey })
1798
1554
  ]
1799
1555
  }
1800
1556
  ) })
@@ -1828,10 +1584,10 @@ function ConnectedWorkflowHistory({
1828
1584
  renderErrorReport,
1829
1585
  labels
1830
1586
  }) {
1831
- const { openConversation } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
1587
+ const { openConversation } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
1832
1588
  const { data: runs = [], isLoading } = react$1.useWorkflowRuns(workflow?.external_id);
1833
1589
  return /* @__PURE__ */ jsxRuntime.jsx(
1834
- chunk2UUNSHDI_cjs.TaskRunsDialog,
1590
+ chunkRB7GX2VT_cjs.TaskRunsDialog,
1835
1591
  {
1836
1592
  inline,
1837
1593
  hideHeader,
@@ -1867,14 +1623,14 @@ function ConnectedTaskActivityDialog({
1867
1623
  const activity = react$1.useConversationActivity(conversationId, { live });
1868
1624
  const { data: agents = [] } = react$1.useAgents();
1869
1625
  const { userId } = chunkGFNELPDP_cjs.useConnectedWorkspace();
1870
- const { members } = useConnectedWorkspaceRole();
1626
+ const { members } = chunkU6YVZDOV_cjs.useConnectedWorkspaceRole();
1871
1627
  const renderPerson = react.useCallback(
1872
1628
  (id) => {
1873
1629
  const isMe = !!id && id === userId;
1874
1630
  const member = members.find((m) => m.user.external_id === id)?.user;
1875
1631
  const name = member && [member.given_name, member.family_name].filter(Boolean).join(" ") || member?.email;
1876
1632
  const person = { id, label: isMe ? "You" : name || "Someone", isMe };
1877
- return renderTaskPerson ? renderTaskPerson(person) : /* @__PURE__ */ jsxRuntime.jsx(chunk2UUNSHDI_cjs.PersonPill, { person });
1633
+ return renderTaskPerson ? renderTaskPerson(person) : /* @__PURE__ */ jsxRuntime.jsx(chunkLPYEUD2D_cjs.PersonPill, { person });
1878
1634
  },
1879
1635
  [renderTaskPerson, userId, members]
1880
1636
  );
@@ -1883,7 +1639,7 @@ function ConnectedTaskActivityDialog({
1883
1639
  [agents]
1884
1640
  );
1885
1641
  return /* @__PURE__ */ jsxRuntime.jsx(
1886
- chunk2UUNSHDI_cjs.TaskActivityDialog,
1642
+ chunkRB7GX2VT_cjs.TaskActivityDialog,
1887
1643
  {
1888
1644
  open: true,
1889
1645
  onOpenChange: (open) => !open && onClose(),
@@ -1971,7 +1727,7 @@ function StreamedArtifact({
1971
1727
  }
1972
1728
  var STARTING = /* @__PURE__ */ new Set(["pending", "running"]);
1973
1729
  function formValues(step, inputs) {
1974
- const fields = chunkOWCEQKAR_cjs.stepFields(step);
1730
+ const fields = chunkJSTKEZBS_cjs.stepFields(step);
1975
1731
  if (!fields.length) return void 0;
1976
1732
  if (step.kind === "form")
1977
1733
  return Object.fromEntries(fields.map((f) => [f.name, inputs[f.name] ?? ""]));
@@ -2009,7 +1765,7 @@ function useWorkflowThread(workflow, options = {}) {
2009
1765
  const wsId = workspaceId ?? void 0;
2010
1766
  const [threadId, setThreadId] = react.useState(options.conversationId);
2011
1767
  const [localInputs, setLocalInputs] = react.useState(
2012
- () => chunkOWCEQKAR_cjs.initialRunInputs(workflow, options.initialInputs)
1768
+ () => chunkJSTKEZBS_cjs.initialRunInputs(workflow, options.initialInputs)
2013
1769
  );
2014
1770
  const [edits, setEdits] = react.useState({});
2015
1771
  const [localStates, setLocalStates] = react.useState({});
@@ -2029,12 +1785,12 @@ function useWorkflowThread(workflow, options = {}) {
2029
1785
  );
2030
1786
  const conversation = conversations.data?.find((c) => c.external_id === threadId);
2031
1787
  const steps = react.useMemo(
2032
- () => chunkOWCEQKAR_cjs.workflowSteps(workflow).length > 0 ? chunkOWCEQKAR_cjs.workflowSteps(workflow) : chunk2UUNSHDI_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
1788
+ () => chunkJSTKEZBS_cjs.workflowSteps(workflow).length > 0 ? chunkJSTKEZBS_cjs.workflowSteps(workflow) : chunkRB7GX2VT_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
2033
1789
  [workflow, conversation?.plan?.steps]
2034
1790
  );
2035
1791
  const activity = react$1.useConversationActivity(threadId, { live: !!threadId });
2036
1792
  const serverStates = react.useMemo(
2037
- () => chunkOWCEQKAR_cjs.stepStatesFromActivity(activity.data ?? []),
1793
+ () => chunkJSTKEZBS_cjs.stepStatesFromActivity(activity.data ?? []),
2038
1794
  [activity.data]
2039
1795
  );
2040
1796
  const working = steps.some(
@@ -2077,7 +1833,7 @@ function useWorkflowThread(workflow, options = {}) {
2077
1833
  async (values, done) => {
2078
1834
  await ensureWorkspaceOpen();
2079
1835
  const created = await createWork.mutateAsync({
2080
- title: chunkOWCEQKAR_cjs.runThreadTitle(workflow, values).slice(0, 60),
1836
+ title: chunkJSTKEZBS_cjs.runThreadTitle(workflow, values).slice(0, 60),
2081
1837
  description: workflow.description || null,
2082
1838
  prompt: null,
2083
1839
  skill_ref: null,
@@ -2089,7 +1845,7 @@ function useWorkflowThread(workflow, options = {}) {
2089
1845
  criteria: [],
2090
1846
  max_passes: 3,
2091
1847
  documents: [],
2092
- steps: chunk2UUNSHDI_cjs.toPlanSteps(workflow, {
1848
+ steps: chunkRB7GX2VT_cjs.toPlanSteps(workflow, {
2093
1849
  inputs: values,
2094
1850
  resolveWorkflow: options.resolveWorkflow,
2095
1851
  compose: options.compose
@@ -2176,7 +1932,7 @@ function useWorkflowThread(workflow, options = {}) {
2176
1932
  const anyRunning = Object.values(states).some((s) => s.status === "running");
2177
1933
  const needsStart = !threadId || idle && !anyRunning;
2178
1934
  const runError = idle ? conversation?.last_error ?? null : null;
2179
- const view = chunk2UUNSHDI_cjs.useWorkflowView({
1935
+ const view = chunkRB7GX2VT_cjs.useWorkflowView({
2180
1936
  steps,
2181
1937
  states,
2182
1938
  inputs,
@@ -2219,7 +1975,7 @@ function WorkflowRunThread({
2219
1975
  if (listed && activeThreadId !== conversationId) selectThread(conversationId);
2220
1976
  }, [listed, activeThreadId, conversationId, selectThread]);
2221
1977
  return /* @__PURE__ */ jsxRuntime.jsx(
2222
- chunk7YLJHTDC_cjs.ChatPage,
1978
+ chunk5A2QQAF5_cjs.ChatPage,
2223
1979
  {
2224
1980
  chat: { ...chat, threads: chat.threads.filter((t) => t.id === conversationId) },
2225
1981
  singleThread: true,
@@ -2257,7 +2013,7 @@ function WorkflowSignDialog({
2257
2013
  const arbi = react$1.useArbi();
2258
2014
  const { user, ensureWorkspaceOpen } = chunkGFNELPDP_cjs.useConnectedWorkspace();
2259
2015
  const tools = documentTools.useOptionalDocumentTools();
2260
- const { id, version: stepVersion } = chunkOWCEQKAR_cjs.splitDocRef(docRef);
2016
+ const { id, version: stepVersion } = chunkJSTKEZBS_cjs.splitDocRef(docRef);
2261
2017
  const [version, setVersion] = react.useState(stepVersion);
2262
2018
  const [pdf, setPdf] = react.useState(null);
2263
2019
  const [preparing, setPreparing] = react.useState(false);
@@ -2335,7 +2091,7 @@ function WorkflowWordDialog({
2335
2091
  onClose,
2336
2092
  labels
2337
2093
  }) {
2338
- const { id } = chunkOWCEQKAR_cjs.splitDocRef(docRef);
2094
+ const { id } = chunkJSTKEZBS_cjs.splitDocRef(docRef);
2339
2095
  return /* @__PURE__ */ jsxRuntime.jsx(
2340
2096
  chunkULWRNGGE_cjs.ModalScaffold,
2341
2097
  {
@@ -2344,7 +2100,7 @@ function WorkflowWordDialog({
2344
2100
  title: title ?? labels.wordTitle,
2345
2101
  size: "xl",
2346
2102
  testId: "workflow-word-dialog",
2347
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunk7NDW4KF4_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
2103
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkU6YVZDOV_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
2348
2104
  }
2349
2105
  );
2350
2106
  }
@@ -2507,7 +2263,7 @@ function ConnectedWorkflowRunner({
2507
2263
  () => ({
2508
2264
  me: userId,
2509
2265
  openDocument: onOpenDocument && ((ref) => {
2510
- const { id, version } = chunkOWCEQKAR_cjs.splitDocRef(ref);
2266
+ const { id, version } = chunkJSTKEZBS_cjs.splitDocRef(ref);
2511
2267
  onOpenDocument(id, version);
2512
2268
  }),
2513
2269
  openDraft: onOpenDraft && ((draftId) => onOpenDraft(draftId)),
@@ -2517,7 +2273,7 @@ function ConnectedWorkflowRunner({
2517
2273
  const w = state.waiting;
2518
2274
  if (w?.doc_ext_id) setDialog({ kind: "sign", docRef: w.doc_ext_id });
2519
2275
  }),
2520
- openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(chunkOWCEQKAR_cjs.splitDocRef(ref).id) ?? "" })),
2276
+ openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(chunkJSTKEZBS_cjs.splitDocRef(ref).id) ?? "" })),
2521
2277
  openReview: hostActions?.openReview ?? ((tags, documents) => setDialog({ kind: "review", tags, documents }))
2522
2278
  }),
2523
2279
  [userId, onOpenDocument, onOpenDraft, onOpenMessage, hostActions, nameOfDoc, inThread]
@@ -2653,7 +2409,7 @@ function ConnectedWorkflowRunner({
2653
2409
  );
2654
2410
  };
2655
2411
  const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
2656
- chunk2UUNSHDI_cjs.WorkflowRunner,
2412
+ chunkRB7GX2VT_cjs.WorkflowRunner,
2657
2413
  {
2658
2414
  people,
2659
2415
  ...runnerProps,
@@ -2699,10 +2455,10 @@ function ConnectedWorkflowRunner({
2699
2455
  ) }),
2700
2456
  inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2701
2457
  /* @__PURE__ */ jsxRuntime.jsx(
2702
- chunk2UUNSHDI_cjs.WorkflowStepBar,
2458
+ chunkRB7GX2VT_cjs.WorkflowStepBar,
2703
2459
  {
2704
2460
  run: view,
2705
- levels: chunkOWCEQKAR_cjs.stepLevels(view.steps),
2461
+ levels: chunkJSTKEZBS_cjs.stepLevels(view.steps),
2706
2462
  doneTitle: (workflow.run.kind === "steps" ? workflow.run.completion?.title : void 0) ?? runnerProps.labels?.complete ?? "Done",
2707
2463
  icon: (key) => key && runnerProps.renderIcon ? runnerProps.renderIcon(key) : void 0,
2708
2464
  tid: (suffix) => `${testIdPrefix}-${suffix}`
@@ -2722,13 +2478,13 @@ function ConnectedWorkflowRunner({
2722
2478
  return state ? [[s.id, state]] : [];
2723
2479
  })
2724
2480
  );
2725
- const ref = chunkOWCEQKAR_cjs.stepDocuments(view.steps, states, id).at(-1);
2481
+ const ref = chunkJSTKEZBS_cjs.stepDocuments(view.steps, states, id).at(-1);
2726
2482
  const open = actions.openDocument ?? actions.openRedline;
2727
2483
  return {
2728
2484
  title: step.title,
2729
- kind: chunkOWCEQKAR_cjs.stepKindOf(step),
2485
+ kind: chunkJSTKEZBS_cjs.stepKindOf(step),
2730
2486
  phase: view.phaseOf(id),
2731
- document: ref && open ? { name: nameOfDoc(chunkOWCEQKAR_cjs.splitDocRef(ref).id) ?? ref, onOpen: () => open(ref) } : void 0
2487
+ document: ref && open ? { name: nameOfDoc(chunkJSTKEZBS_cjs.splitDocRef(ref).id) ?? ref, onOpen: () => open(ref) } : void 0
2732
2488
  };
2733
2489
  },
2734
2490
  targetMessageId: target,
@@ -2900,7 +2656,7 @@ function ConnectedTagTable({
2900
2656
  const fail = (e) => setError(e instanceof Error ? e.message : String(e));
2901
2657
  const snapshot = (data) => {
2902
2658
  const title = exportTitle ?? KIND_TITLES[kind];
2903
- const bytes = chunkOAQEUTNJ_cjs.tagTableDocx(data, {
2659
+ const bytes = chunkHAOKT4LC_cjs.tagTableDocx(data, {
2904
2660
  title,
2905
2661
  nameOf: (id) => people.find((p) => p.value === id)?.label
2906
2662
  });
@@ -2910,7 +2666,7 @@ function ConnectedTagTable({
2910
2666
  };
2911
2667
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
2912
2668
  /* @__PURE__ */ jsxRuntime.jsx(
2913
- chunkOAQEUTNJ_cjs.TagTable,
2669
+ chunkHAOKT4LC_cjs.TagTable,
2914
2670
  {
2915
2671
  ...props,
2916
2672
  table,
@@ -2987,6 +2743,11 @@ function useConnectedShellWorkspaces(options = {}) {
2987
2743
  select: (workspace) => setWorkspace(workspace.id)
2988
2744
  });
2989
2745
  }
2746
+ function SessionStatusIcon({ status, className }) {
2747
+ if (status === "agent") return /* @__PURE__ */ jsxRuntime.jsx(react$1.ArbiBotHeadIcon, { className: className ?? "w-4 h-4" });
2748
+ return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Monitor, { className: className ?? "w-4 h-4 text-muted-foreground" });
2749
+ }
2750
+ var renderSessionStatusIcon = (status) => /* @__PURE__ */ jsxRuntime.jsx(SessionStatusIcon, { status });
2990
2751
  function errorText2(error, fallback) {
2991
2752
  const body = error?.apiError;
2992
2753
  return typeof body?.detail === "string" ? body.detail : fallback;
@@ -3001,7 +2762,7 @@ function ConnectedProfileCard({
3001
2762
  avatarClassName = "bg-primary text-primary-foreground",
3002
2763
  children
3003
2764
  }) {
3004
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
2765
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
3005
2766
  const { data: profile } = react$1.useProfile();
3006
2767
  const updateProfile = react$1.useUpdateProfile();
3007
2768
  const requestEmailChange = react$1.useRequestEmailChange();
@@ -3052,13 +2813,13 @@ function ConnectedProfileCard({
3052
2813
  }
3053
2814
  });
3054
2815
  const display = profile?.fullName || "Unnamed";
3055
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkQIMVTGKS_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserCircle, {}), title, children: [
2816
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkU73KPFYH_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserCircle, {}), title, children: [
3056
2817
  /* @__PURE__ */ jsxRuntime.jsx(
3057
- chunkQIMVTGKS_cjs.ProfileCard,
2818
+ chunkU73KPFYH_cjs.ProfileCard,
3058
2819
  {
3059
2820
  avatar: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3060
2821
  /* @__PURE__ */ jsxRuntime.jsx(
3061
- chunkQIMVTGKS_cjs.AvatarPicker,
2822
+ chunkU73KPFYH_cjs.AvatarPicker,
3062
2823
  {
3063
2824
  pictureUrl: profile?.picture,
3064
2825
  initials: chunkKDG6FER6_cjs.initials(display),
@@ -3097,7 +2858,7 @@ function ConnectedIdentityVerification({
3097
2858
  onManageBilling,
3098
2859
  formatPrice
3099
2860
  }) {
3100
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
2861
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
3101
2862
  const { data: profile } = react$1.useProfile();
3102
2863
  const flow = react$1.useIdentityVerification({
3103
2864
  formatPrice,
@@ -3105,9 +2866,9 @@ function ConnectedIdentityVerification({
3105
2866
  onNameAccepted: () => notify("Name updated to match your ID", "success")
3106
2867
  });
3107
2868
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3108
- /* @__PURE__ */ jsxRuntime.jsx(chunkQIMVTGKS_cjs.IdentityVerificationCard, { flow, labels, onManageBilling }),
2869
+ /* @__PURE__ */ jsxRuntime.jsx(chunkU73KPFYH_cjs.IdentityVerificationCard, { flow, labels, onManageBilling }),
3109
2870
  /* @__PURE__ */ jsxRuntime.jsx(
3110
- chunkQIMVTGKS_cjs.IdentityVerificationDialog,
2871
+ chunkU73KPFYH_cjs.IdentityVerificationDialog,
3111
2872
  {
3112
2873
  flow,
3113
2874
  accountName: profile?.fullName ?? "",
@@ -3120,7 +2881,7 @@ function ConnectedIdentityVerification({
3120
2881
  function ConnectedRequireVerified({ children, labels }) {
3121
2882
  const { data: profile } = react$1.useProfile();
3122
2883
  const flow = react$1.useIdentityVerification();
3123
- return /* @__PURE__ */ jsxRuntime.jsx(chunkQIMVTGKS_cjs.RequireVerified, { flow, accountName: profile?.fullName ?? "", labels, children });
2884
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkU73KPFYH_cjs.RequireVerified, { flow, accountName: profile?.fullName ?? "", labels, children });
3124
2885
  }
3125
2886
  function defaultUnmetPasswordRequirement(password) {
3126
2887
  if (password.length < 8) return "Minimum 8 characters";
@@ -3137,7 +2898,7 @@ function ConnectedPasswordChangeDialog({
3137
2898
  recoveryMode = false,
3138
2899
  onRecoveryComplete
3139
2900
  }) {
3140
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
2901
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
3141
2902
  const change = react$1.usePasswordChange();
3142
2903
  const form = react$1.usePasswordChangeForm({
3143
2904
  recoveryMode,
@@ -3153,7 +2914,7 @@ function ConnectedPasswordChangeDialog({
3153
2914
  onRecoveryComplete
3154
2915
  });
3155
2916
  return /* @__PURE__ */ jsxRuntime.jsx(
3156
- chunkQIMVTGKS_cjs.PasswordChangeDialog,
2917
+ chunkU73KPFYH_cjs.PasswordChangeDialog,
3157
2918
  {
3158
2919
  open,
3159
2920
  onClose: form.onCancel,
@@ -3179,10 +2940,10 @@ function ConnectedSecuritySection({
3179
2940
  children
3180
2941
  }) {
3181
2942
  const [open, setOpen] = react.useState(false);
3182
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkQIMVTGKS_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.KeyRound, {}), title: "Security", children: [
3183
- /* @__PURE__ */ jsxRuntime.jsxs(chunkQIMVTGKS_cjs.SettingsCard, { padding: "sm", children: [
2943
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkU73KPFYH_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.KeyRound, {}), title: "Security", children: [
2944
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkU73KPFYH_cjs.SettingsCard, { padding: "sm", children: [
3184
2945
  /* @__PURE__ */ jsxRuntime.jsx(
3185
- chunkQIMVTGKS_cjs.SettingsActionRow,
2946
+ chunkU73KPFYH_cjs.SettingsActionRow,
3186
2947
  {
3187
2948
  title: "Change password",
3188
2949
  description: "Used to sign in and to unlock your account key. Changing it keeps everything readable and re-encrypts nothing.",
@@ -3203,41 +2964,43 @@ function ConnectedSecuritySection({
3203
2964
  ] });
3204
2965
  }
3205
2966
  function ConnectedNotificationPreferences({
3206
- categories = chunkQIMVTGKS_cjs.EMAIL_NOTIFICATION_CATEGORIES,
2967
+ categories = chunkU73KPFYH_cjs.EMAIL_NOTIFICATION_CATEGORIES,
3207
2968
  title = "Notifications"
3208
2969
  }) {
3209
2970
  const keys = react.useMemo(
3210
- () => categories === chunkQIMVTGKS_cjs.EMAIL_NOTIFICATION_CATEGORIES ? chunkQIMVTGKS_cjs.EMAIL_NOTIFICATION_KEYS : categories.map((c) => c.key),
2971
+ () => categories === chunkU73KPFYH_cjs.EMAIL_NOTIFICATION_CATEGORIES ? chunkU73KPFYH_cjs.EMAIL_NOTIFICATION_KEYS : categories.map((c) => c.key),
3211
2972
  [categories]
3212
2973
  );
3213
2974
  const prefs = react$1.useNotificationPreferences(keys);
3214
- return /* @__PURE__ */ jsxRuntime.jsx(chunkQIMVTGKS_cjs.SettingsSection, { title, children: /* @__PURE__ */ jsxRuntime.jsx(chunkQIMVTGKS_cjs.SettingsCard, { className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx(
3215
- chunkQIMVTGKS_cjs.NotificationCategoryList,
2975
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkU73KPFYH_cjs.SettingsSection, { title, children: /* @__PURE__ */ jsxRuntime.jsx(chunkU73KPFYH_cjs.SettingsCard, { className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx(
2976
+ chunkU73KPFYH_cjs.NotificationCategoryList,
3216
2977
  {
3217
2978
  masterId: "emailNotifications",
3218
2979
  masterTitle: "Email Notifications",
3219
2980
  masterDescription: "Email me about activity when I\u2019m away",
3220
2981
  masterChecked: prefs.masterChecked,
3221
2982
  onMasterChange: prefs.setAll,
3222
- categories: chunkQIMVTGKS_cjs.toNotificationCategories(prefs.checked, categories),
2983
+ categories: chunkU73KPFYH_cjs.toNotificationCategories(prefs.checked, categories),
3223
2984
  onCategoryChange: prefs.setCategory
3224
2985
  }
3225
2986
  ) }) });
3226
2987
  }
3227
- function ConnectedSessionsRow({ renderSessionIcon }) {
3228
- const { notify, confirm } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
2988
+ function ConnectedSessionsRow({
2989
+ renderSessionIcon = renderSessionStatusIcon
2990
+ }) {
2991
+ const { notify, confirm } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
3229
2992
  const [open, setOpen] = react.useState(false);
3230
2993
  const sessions = react$1.useSessions({ enabled: open });
3231
2994
  const currentSessionId = react$1.useCurrentSessionId();
3232
2995
  const terminate = react$1.useTerminateSession();
3233
- const views = chunkQIMVTGKS_cjs.toActiveSessionViews(sessions.data ?? [], {
2996
+ const views = chunkU73KPFYH_cjs.toActiveSessionViews(sessions.data ?? [], {
3234
2997
  currentSessionId,
3235
2998
  terminatingId: terminate.isPending ? terminate.variables : null,
3236
2999
  renderIcon: renderSessionIcon
3237
3000
  });
3238
3001
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3239
3002
  /* @__PURE__ */ jsxRuntime.jsx(
3240
- chunkQIMVTGKS_cjs.SettingsRow,
3003
+ chunkU73KPFYH_cjs.SettingsRow,
3241
3004
  {
3242
3005
  label: "Active sessions",
3243
3006
  description: "Devices and agents currently signed in to your account.",
@@ -3259,7 +3022,7 @@ function ConnectedSessionsRow({ renderSessionIcon }) {
3259
3022
  }
3260
3023
  ),
3261
3024
  /* @__PURE__ */ jsxRuntime.jsx(
3262
- chunkQIMVTGKS_cjs.ActiveSessionsDialog,
3025
+ chunkU73KPFYH_cjs.ActiveSessionsDialog,
3263
3026
  {
3264
3027
  open,
3265
3028
  onOpenChange: setOpen,
@@ -3290,7 +3053,7 @@ function ConnectedLogoutDialog({
3290
3053
  onClose,
3291
3054
  canLogoutAll = true,
3292
3055
  confirmSignOut,
3293
- renderSessionIcon
3056
+ renderSessionIcon = renderSessionStatusIcon
3294
3057
  }) {
3295
3058
  const sessions = react$1.useSessions({ enabled: open });
3296
3059
  const signOut = react$1.useSignOut();
@@ -3301,7 +3064,7 @@ function ConnectedLogoutDialog({
3301
3064
  signOut.mutate({ everywhere, reason: "manual" });
3302
3065
  };
3303
3066
  return /* @__PURE__ */ jsxRuntime.jsx(
3304
- chunkQIMVTGKS_cjs.LogoutDialog,
3067
+ chunkU73KPFYH_cjs.LogoutDialog,
3305
3068
  {
3306
3069
  open,
3307
3070
  onClose,
@@ -3309,13 +3072,13 @@ function ConnectedLogoutDialog({
3309
3072
  onLogoutAll: () => void run(true),
3310
3073
  canLogoutAll,
3311
3074
  isOnline,
3312
- sessions: chunkQIMVTGKS_cjs.toLogoutSessionViews(sessions.data ?? []),
3075
+ sessions: chunkU73KPFYH_cjs.toLogoutSessionViews(sessions.data ?? []),
3313
3076
  renderSessionIcon
3314
3077
  }
3315
3078
  );
3316
3079
  }
3317
3080
  function ConnectedDangerZone({ renderSubscriptionLink }) {
3318
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
3081
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
3319
3082
  const [zoneOpen, setZoneOpen] = react.useState(false);
3320
3083
  const [dialogOpen, setDialogOpen] = react.useState(false);
3321
3084
  const { data: profile } = react$1.useProfile();
@@ -3331,7 +3094,7 @@ function ConnectedDangerZone({ renderSubscriptionLink }) {
3331
3094
  });
3332
3095
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3333
3096
  /* @__PURE__ */ jsxRuntime.jsx(
3334
- chunkQIMVTGKS_cjs.SettingsDangerZone,
3097
+ chunkU73KPFYH_cjs.SettingsDangerZone,
3335
3098
  {
3336
3099
  isOpen: zoneOpen,
3337
3100
  onToggle: () => setZoneOpen((o) => !o),
@@ -3351,12 +3114,12 @@ function ConnectedDangerZone({ renderSubscriptionLink }) {
3351
3114
  }
3352
3115
  ),
3353
3116
  /* @__PURE__ */ jsxRuntime.jsx(
3354
- chunkQIMVTGKS_cjs.DeleteAccountDialog,
3117
+ chunkU73KPFYH_cjs.DeleteAccountDialog,
3355
3118
  {
3356
3119
  open: dialogOpen,
3357
3120
  onClose: flow.onClose,
3358
3121
  step: flow.step,
3359
- blockers: chunkQIMVTGKS_cjs.toDeleteBlockerViews(flow.blockers, renderSubscriptionLink),
3122
+ blockers: chunkU73KPFYH_cjs.toDeleteBlockerViews(flow.blockers, renderSubscriptionLink),
3360
3123
  onContinue: flow.onContinue,
3361
3124
  onBack: flow.onBack,
3362
3125
  userEmail,
@@ -3365,13 +3128,603 @@ function ConnectedDangerZone({ renderSubscriptionLink }) {
3365
3128
  isDeleting: flow.isDeleting,
3366
3129
  onSubmit: flow.onSubmit
3367
3130
  }
3368
- )
3369
- ] });
3131
+ )
3132
+ ] });
3133
+ }
3134
+ function ServerConnectionRow({ onRefresh, ...status }) {
3135
+ const { runtimeConfig } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
3136
+ const [isRefreshing, setIsRefreshing] = react.useState(false);
3137
+ const view = chunkU73KPFYH_cjs.serverConnectionView(status, runtimeConfig.deploymentDomain || "server");
3138
+ const refresh = async () => {
3139
+ setIsRefreshing(true);
3140
+ try {
3141
+ await onRefresh();
3142
+ } finally {
3143
+ setIsRefreshing(false);
3144
+ }
3145
+ };
3146
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkU73KPFYH_cjs.SettingsRow, { label: "Server connection", description: view.description, children: /* @__PURE__ */ jsxRuntime.jsx(
3147
+ chunkU73KPFYH_cjs.ServerConnectionButton,
3148
+ {
3149
+ state: view.state,
3150
+ label: view.label,
3151
+ isRefreshing,
3152
+ onRefresh: () => void refresh()
3153
+ }
3154
+ ) });
3155
+ }
3156
+ function ConnectedAccountSettings({
3157
+ avatarClassName,
3158
+ onManageBilling,
3159
+ formatIdentityPrice,
3160
+ afterProfile,
3161
+ getUnmetPasswordRequirement,
3162
+ securityRows,
3163
+ connection,
3164
+ onLogout,
3165
+ renderSessionIcon,
3166
+ renderSubscriptionLink
3167
+ }) {
3168
+ const [logoutOpen, setLogoutOpen] = react.useState(false);
3169
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkU73KPFYH_cjs.SettingsPanel, { className: "max-w-2xl", children: [
3170
+ /* @__PURE__ */ jsxRuntime.jsx(ConnectedProfileCard, { avatarClassName, children: /* @__PURE__ */ jsxRuntime.jsx(
3171
+ ConnectedIdentityVerification,
3172
+ {
3173
+ onManageBilling,
3174
+ formatPrice: formatIdentityPrice
3175
+ }
3176
+ ) }),
3177
+ afterProfile,
3178
+ /* @__PURE__ */ jsxRuntime.jsx(ConnectedSecuritySection, { getUnmetRequirement: getUnmetPasswordRequirement, children: securityRows }),
3179
+ /* @__PURE__ */ jsxRuntime.jsx(chunkU73KPFYH_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wifi, {}), title: "Session", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkU73KPFYH_cjs.SettingsCard, { children: [
3180
+ connection && /* @__PURE__ */ jsxRuntime.jsx(ServerConnectionRow, { ...connection }),
3181
+ /* @__PURE__ */ jsxRuntime.jsx(ConnectedSessionsRow, { renderSessionIcon }),
3182
+ /* @__PURE__ */ jsxRuntime.jsx(chunkU73KPFYH_cjs.SettingsRow, { label: "Logout", description: "Sign out of your account on this device.", children: /* @__PURE__ */ jsxRuntime.jsxs(
3183
+ ui.Button,
3184
+ {
3185
+ type: "button",
3186
+ variant: "secondary",
3187
+ size: "sm",
3188
+ onClick: onLogout ?? (() => setLogoutOpen(true)),
3189
+ className: "flex items-center gap-2",
3190
+ "data-testid": "logout-button",
3191
+ children: [
3192
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LogOut, { className: "w-4 h-4" }),
3193
+ "Logout"
3194
+ ]
3195
+ }
3196
+ ) })
3197
+ ] }) }),
3198
+ /* @__PURE__ */ jsxRuntime.jsx(ConnectedDangerZone, { renderSubscriptionLink }),
3199
+ !onLogout && /* @__PURE__ */ jsxRuntime.jsx(
3200
+ ConnectedLogoutDialog,
3201
+ {
3202
+ open: logoutOpen,
3203
+ onClose: () => setLogoutOpen(false),
3204
+ renderSessionIcon
3205
+ }
3206
+ )
3207
+ ] });
3208
+ }
3209
+ function ConnectedMailAccounts({
3210
+ policy,
3211
+ accounts,
3212
+ onClose,
3213
+ embedded = false,
3214
+ user,
3215
+ oauthReturnPath,
3216
+ settings
3217
+ }) {
3218
+ const { client } = react$1.useMailClient();
3219
+ const [profileId, setProfileId] = react.useState(policy.server_profiles[0]?.id ?? "");
3220
+ const [email, setEmail] = react.useState("");
3221
+ const [username, setUsername] = react.useState("");
3222
+ const [password, setPassword] = react.useState("");
3223
+ const [error, setError] = react.useState("");
3224
+ const [alias, setAlias] = react.useState(() => react$1.defaultMailAlias(user));
3225
+ const native = react$1.useClaimNativeAlias(onClose);
3226
+ const isOnline = react$1.useMailOnline();
3227
+ const offline = !isOnline;
3228
+ const onNativeError = (err) => {
3229
+ if (!react$1.isAliasTakenError(err)) return setError(err.message);
3230
+ const suggestion = react$1.nextAliasSuggestion(alias);
3231
+ setAlias(suggestion);
3232
+ setError(react$1.aliasTakenMessage(alias, suggestion, policy.native_domain));
3233
+ };
3234
+ const connect = react$1.useConnectMailAccount();
3235
+ const disconnect = react$1.useDisconnectMailAccount();
3236
+ const authorizeOAuth = client.authorizeOAuth;
3237
+ const oauth = async (vendor) => {
3238
+ if (!authorizeOAuth) return;
3239
+ try {
3240
+ window.location.assign(
3241
+ await authorizeOAuth(
3242
+ vendor,
3243
+ oauthReturnPath ?? `${window.location.pathname}${window.location.search}`
3244
+ )
3245
+ );
3246
+ } catch (err) {
3247
+ setError(err instanceof Error ? err.message : "Could not connect account");
3248
+ }
3249
+ };
3250
+ const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3251
+ offline && /* @__PURE__ */ jsxRuntime.jsx(
3252
+ "p",
3253
+ {
3254
+ role: "status",
3255
+ className: "mb-4 rounded bg-muted/40 px-3 py-2 text-sm text-muted-foreground",
3256
+ children: "You're offline. Creating, connecting or removing accounts needs a connection."
3257
+ }
3258
+ ),
3259
+ policy.native_enabled && !accounts.some((a) => a.provider === "native") && /* @__PURE__ */ jsxRuntime.jsxs(
3260
+ "form",
3261
+ {
3262
+ className: "mb-5 grid gap-3",
3263
+ onSubmit: (e) => {
3264
+ e.preventDefault();
3265
+ native.mutate(alias, { onError: onNativeError });
3266
+ },
3267
+ children: [
3268
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "grid gap-1 text-sm", children: [
3269
+ "Choose your email address",
3270
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3271
+ /* @__PURE__ */ jsxRuntime.jsx(
3272
+ "input",
3273
+ {
3274
+ "aria-label": "Email alias",
3275
+ required: true,
3276
+ pattern: "[a-z0-9][a-z0-9._\\-]{0,62}",
3277
+ className: "min-w-0 flex-1 rounded border bg-background p-2",
3278
+ value: alias,
3279
+ onChange: (e) => setAlias(e.target.value.toLowerCase())
3280
+ }
3281
+ ),
3282
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
3283
+ "@",
3284
+ policy.native_domain
3285
+ ] })
3286
+ ] })
3287
+ ] }),
3288
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { disabled: native.isPending || offline, type: "submit", children: "Create inbox" })
3289
+ ]
3290
+ }
3291
+ ),
3292
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4 text-sm text-muted-foreground", children: "Connect an account using the providers enabled by your administrator." }),
3293
+ authorizeOAuth && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4 flex flex-wrap gap-2", children: policy.oauth_providers.map((vendor) => /* @__PURE__ */ jsxRuntime.jsxs(
3294
+ ui.Button,
3295
+ {
3296
+ variant: "outline",
3297
+ disabled: offline,
3298
+ onClick: () => void oauth(vendor),
3299
+ children: [
3300
+ "Connect ",
3301
+ vendor === "microsoft" ? "Outlook" : "Gmail"
3302
+ ]
3303
+ },
3304
+ vendor
3305
+ )) }),
3306
+ accounts.map((account) => /* @__PURE__ */ jsxRuntime.jsxs(
3307
+ "div",
3308
+ {
3309
+ className: "mb-2 flex items-center justify-between gap-2 rounded border p-3 text-sm",
3310
+ children: [
3311
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3312
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: account.email }),
3313
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: account.display_name })
3314
+ ] }),
3315
+ account.profile_id ? /* @__PURE__ */ jsxRuntime.jsx(
3316
+ ui.Button,
3317
+ {
3318
+ variant: "ghost",
3319
+ disabled: disconnect.isPending || offline,
3320
+ onClick: () => disconnect.mutate(account.id, { onError: (err) => setError(err.message) }),
3321
+ children: "Disconnect"
3322
+ }
3323
+ ) : account.provider !== "native" ? authorizeOAuth && /* @__PURE__ */ jsxRuntime.jsx(
3324
+ ui.Button,
3325
+ {
3326
+ variant: "ghost",
3327
+ disabled: offline,
3328
+ onClick: () => void oauth(account.provider),
3329
+ children: "Reconnect"
3330
+ }
3331
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Native inbox" })
3332
+ ]
3333
+ },
3334
+ account.id
3335
+ )),
3336
+ policy.server_profiles.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
3337
+ "form",
3338
+ {
3339
+ className: "mt-5 grid gap-3",
3340
+ onSubmit: (event) => {
3341
+ event.preventDefault();
3342
+ setError("");
3343
+ connect.mutate(
3344
+ { profileId, email, username, password },
3345
+ {
3346
+ onSuccess: () => {
3347
+ setPassword("");
3348
+ onClose();
3349
+ },
3350
+ onError: (err) => setError(err.message)
3351
+ }
3352
+ );
3353
+ },
3354
+ children: [
3355
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "grid gap-1 text-sm", children: [
3356
+ "Mail server",
3357
+ /* @__PURE__ */ jsxRuntime.jsx(
3358
+ "select",
3359
+ {
3360
+ "aria-label": "Mail server",
3361
+ className: "rounded border bg-background p-2",
3362
+ value: profileId,
3363
+ onChange: (e) => setProfileId(e.target.value),
3364
+ children: policy.server_profiles.map((profile) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: profile.id, children: profile.name }, profile.id))
3365
+ }
3366
+ )
3367
+ ] }),
3368
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "grid gap-1 text-sm", children: [
3369
+ "Email address",
3370
+ /* @__PURE__ */ jsxRuntime.jsx(
3371
+ "input",
3372
+ {
3373
+ required: true,
3374
+ type: "email",
3375
+ autoComplete: "email",
3376
+ className: "rounded border bg-background p-2",
3377
+ value: email,
3378
+ onChange: (e) => setEmail(e.target.value)
3379
+ }
3380
+ )
3381
+ ] }),
3382
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "grid gap-1 text-sm", children: [
3383
+ "Username",
3384
+ /* @__PURE__ */ jsxRuntime.jsx(
3385
+ "input",
3386
+ {
3387
+ placeholder: "Same as email address",
3388
+ autoComplete: "username",
3389
+ className: "rounded border bg-background p-2",
3390
+ value: username,
3391
+ onChange: (e) => setUsername(e.target.value)
3392
+ }
3393
+ )
3394
+ ] }),
3395
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "grid gap-1 text-sm", children: [
3396
+ "Password or app password",
3397
+ /* @__PURE__ */ jsxRuntime.jsx(
3398
+ "input",
3399
+ {
3400
+ required: true,
3401
+ type: "password",
3402
+ autoComplete: "current-password",
3403
+ className: "rounded border bg-background p-2",
3404
+ value: password,
3405
+ onChange: (e) => setPassword(e.target.value)
3406
+ }
3407
+ )
3408
+ ] }),
3409
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { type: "submit", disabled: connect.isPending || offline, children: connect.isPending ? "Connecting\u2026" : "Connect mailbox" })
3410
+ ]
3411
+ }
3412
+ ),
3413
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "mt-3 text-sm text-destructive", children: error }),
3414
+ accounts.length > 0 && settings
3415
+ ] });
3416
+ if (embedded) return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-2xl", children: content });
3417
+ return /* @__PURE__ */ jsxRuntime.jsx(
3418
+ ui.Dialog,
3419
+ {
3420
+ open: true,
3421
+ onOpenChange: (open) => {
3422
+ if (!open) onClose();
3423
+ },
3424
+ children: /* @__PURE__ */ jsxRuntime.jsxs(ui.DialogContent, { className: "max-h-[90dvh] max-w-lg overflow-auto", children: [
3425
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { children: "Mail accounts" }),
3426
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { children: "Choose your email address or connect an external mailbox." }),
3427
+ content
3428
+ ] })
3429
+ }
3430
+ );
3431
+ }
3432
+ var noop = () => {
3433
+ };
3434
+ function ConnectedMailSettings({ oauthReturnPath, settings }) {
3435
+ const { data: policy } = react$1.useMailPolicy();
3436
+ const accounts = react$1.useMailAccounts({ enabled: !!policy?.enabled });
3437
+ const { data: profile } = react$1.useProfile();
3438
+ if (accounts.isError) {
3439
+ return /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: accounts.error.message });
3440
+ }
3441
+ if (!policy || !accounts.isSuccess) return /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Loading mail accounts\u2026" });
3442
+ return /* @__PURE__ */ jsxRuntime.jsx(
3443
+ ConnectedMailAccounts,
3444
+ {
3445
+ embedded: true,
3446
+ policy,
3447
+ accounts: accounts.data,
3448
+ user: profile && { given_name: profile.givenName, family_name: profile.familyName },
3449
+ oauthReturnPath,
3450
+ settings,
3451
+ onClose: noop
3452
+ },
3453
+ profile ? "named" : "unnamed"
3454
+ );
3455
+ }
3456
+ function ConnectedPrivacySettings({
3457
+ rows,
3458
+ showTipsReset = false
3459
+ }) {
3460
+ const { data: settings } = react$1.useUserSettings();
3461
+ const update = react$1.useUpdateUserSettings();
3462
+ const hideOnlineStatus = settings?.hide_online_status ?? false;
3463
+ const dismissedTips = settings?.dismissed_tips ?? [];
3464
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkU73KPFYH_cjs.SettingsPanel, { className: "max-w-2xl", children: [
3465
+ /* @__PURE__ */ jsxRuntime.jsx(chunkU73KPFYH_cjs.SettingsSection, { title: "Privacy and tips", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkU73KPFYH_cjs.SettingsCard, { children: [
3466
+ /* @__PURE__ */ jsxRuntime.jsx(
3467
+ chunkU73KPFYH_cjs.SettingsRow,
3468
+ {
3469
+ label: "Show Online Status",
3470
+ labelFor: "showOnlineStatus",
3471
+ description: "When on, other users can see when you're online",
3472
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3473
+ ui.Switch,
3474
+ {
3475
+ id: "showOnlineStatus",
3476
+ checked: !hideOnlineStatus,
3477
+ onCheckedChange: (value) => update.mutate({ hide_online_status: !value }),
3478
+ "data-testid": "toggle-show-online-status"
3479
+ }
3480
+ )
3481
+ }
3482
+ ),
3483
+ rows,
3484
+ showTipsReset && /* @__PURE__ */ jsxRuntime.jsx(
3485
+ chunkU73KPFYH_cjs.SettingsRow,
3486
+ {
3487
+ label: "Hidden tips",
3488
+ description: "Restore any Smart Tips you\u2019ve hidden with \u201Cdon\u2019t show again\u201D.",
3489
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
3490
+ ui.Button,
3491
+ {
3492
+ type: "button",
3493
+ variant: "outline",
3494
+ size: "sm",
3495
+ onClick: () => update.mutate({ dismissed_tips: [] }),
3496
+ disabled: dismissedTips.length === 0,
3497
+ className: "gap-1.5",
3498
+ "data-testid": "reset-tips-button",
3499
+ children: [
3500
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RotateCcw, { className: "h-4 w-4" }),
3501
+ "Reset tips"
3502
+ ]
3503
+ }
3504
+ )
3505
+ }
3506
+ )
3507
+ ] }) }),
3508
+ /* @__PURE__ */ jsxRuntime.jsx(ConnectedNotificationPreferences, {})
3509
+ ] });
3510
+ }
3511
+ var PROVIDER_NAMES = {
3512
+ openai: "OpenAI",
3513
+ fireworks_ai: "Fireworks AI",
3514
+ "vertex_ai-language-models": "Google",
3515
+ vertex_ai: "Google",
3516
+ gemini: "Google",
3517
+ anthropic: "Anthropic"
3518
+ };
3519
+ var isStandard = (model) => !!model?.tags?.includes("Standard");
3520
+ function PremiumCostHeader() {
3521
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center gap-0.5", children: "\xA3/MT in-out" });
3522
+ }
3523
+ function cheapest(models) {
3524
+ return [...models].sort((a, b) => {
3525
+ const ao = a.output_cost_per_token;
3526
+ const bo = b.output_cost_per_token;
3527
+ if (ao == null && bo == null) return 0;
3528
+ if (ao == null) return 1;
3529
+ if (bo == null) return -1;
3530
+ return ao - bo;
3531
+ })[0];
3532
+ }
3533
+ var COLUMNS = [
3534
+ {
3535
+ colId: "model_name",
3536
+ headerName: "Model",
3537
+ field: "model_name",
3538
+ flex: 2,
3539
+ minWidth: 130,
3540
+ tooltipField: "model_name"
3541
+ },
3542
+ {
3543
+ colId: "provider",
3544
+ headerName: "Provider",
3545
+ field: "provider",
3546
+ flex: 1,
3547
+ minWidth: 120,
3548
+ cellRenderer: (params) => isStandard(params.data) ? /* @__PURE__ */ jsxRuntime.jsx(
3549
+ chunkU73KPFYH_cjs.ModelProviderLabel,
3550
+ {
3551
+ logo: /* @__PURE__ */ jsxRuntime.jsx("img", { src: "/favicon.svg", alt: "ARBI", className: "size-3.5 flex-shrink-0 rounded-sm" }),
3552
+ children: "ARBI CITY"
3553
+ }
3554
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
3555
+ chunkU73KPFYH_cjs.ModelProviderLabel,
3556
+ {
3557
+ logo: /* @__PURE__ */ jsxRuntime.jsx(react$1.ProviderIcon, { modelName: params.data?.model_name, provider: params.value, size: 14 }),
3558
+ children: PROVIDER_NAMES[params.value ?? ""] || params.value || "\u2014"
3559
+ }
3560
+ )
3561
+ },
3562
+ {
3563
+ // Input and output cost in one column so the table fits the panel; sorted by output cost.
3564
+ colId: "cost",
3565
+ headerName: "Cost / MTok",
3566
+ headerComponentParams: { innerHeaderComponent: PremiumCostHeader },
3567
+ headerTooltip: "\xA3 per million tokens \u2014 input then output",
3568
+ field: "output_cost_per_token",
3569
+ flex: 1,
3570
+ minWidth: 120,
3571
+ type: "rightAligned",
3572
+ cellRenderer: (params) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "tabular-nums", children: [
3573
+ react$1.formatGbpPerMillionTokens(params.data?.input_cost_per_token) ?? "\xA30",
3574
+ "-",
3575
+ react$1.formatGbpPerMillionTokens(params.data?.output_cost_per_token) ?? "\xA30"
3576
+ ] })
3577
+ }
3578
+ ];
3579
+ function ConnectedPremiumModels() {
3580
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
3581
+ const { data: settings } = react$1.useUserSettings();
3582
+ const update = react$1.useUpdateUserSettings();
3583
+ const { data: available } = react$1.useAvailableModels();
3584
+ const isDeveloper = settings?.developer === true;
3585
+ const premiumModel = settings?.premium_model;
3586
+ const premiumModels = react.useMemo(
3587
+ () => (available?.models ?? []).filter(
3588
+ (m) => m.tags?.includes("Premium") && (isDeveloper || !m.model_name.includes("@"))
3589
+ ),
3590
+ [available, isDeveloper]
3591
+ );
3592
+ const rows = react.useMemo(() => {
3593
+ const standards = (available?.models ?? []).filter(isStandard);
3594
+ if (standards.length === 0) return premiumModels;
3595
+ const reference = {
3596
+ ...standards[0],
3597
+ model_name: `Standard (${standards.map((m) => m.model_name).join(", ")})`
3598
+ };
3599
+ return [reference, ...premiumModels];
3600
+ }, [available, premiumModels]);
3601
+ const current = premiumModel ?? available?.premium_default ?? "";
3602
+ const save = react.useCallback(
3603
+ (model) => update.mutate(
3604
+ { premium_model: model },
3605
+ {
3606
+ onError: (err) => notify(`Failed to update Premium setting: ${String(err)}`, "error")
3607
+ }
3608
+ ),
3609
+ [update, notify]
3610
+ );
3611
+ const currentRef = react.useRef(current);
3612
+ currentRef.current = current;
3613
+ const [selected, setSelected] = react.useState([]);
3614
+ react.useEffect(() => {
3615
+ const match = premiumModels.filter((m) => m.model_name === current);
3616
+ setSelected(
3617
+ (prev) => prev.length === match.length && prev[0]?.model_name === match[0]?.model_name ? prev : match
3618
+ );
3619
+ }, [current, premiumModels]);
3620
+ const onSelectionChange = react.useCallback(
3621
+ (items) => {
3622
+ const picked = items.filter((m) => !isStandard(m));
3623
+ const next = picked[0]?.model_name;
3624
+ if (!next || next === currentRef.current) return;
3625
+ setSelected(picked);
3626
+ save(next);
3627
+ },
3628
+ [save]
3629
+ );
3630
+ if (premiumModels.length === 0) return null;
3631
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkU73KPFYH_cjs.SettingsPanel, { className: "max-w-2xl space-y-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkU73KPFYH_cjs.SettingsSection, { title: "Premium models", children: /* @__PURE__ */ jsxRuntime.jsx(chunkU73KPFYH_cjs.SettingsCard, { className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx(
3632
+ chunkU73KPFYH_cjs.PremiumModelsFrame,
3633
+ {
3634
+ enabled: premiumModel !== "",
3635
+ onEnabledChange: (enabled) => {
3636
+ const target = enabled ? cheapest(premiumModels)?.model_name : "";
3637
+ if (target !== void 0) save(target);
3638
+ },
3639
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3640
+ chunkC2CWWEHO_cjs.GridView,
3641
+ {
3642
+ items: rows,
3643
+ columnDefs: COLUMNS,
3644
+ getItemId: (m) => m.model_name,
3645
+ selection: { mode: "single", selected, onSelectionChange },
3646
+ gridOptions: {
3647
+ rowClassRules: { "opacity-60 italic": (p) => isStandard(p.data) }
3648
+ },
3649
+ height: Math.min(rows.length * 40 + 48, 320),
3650
+ testId: "premium-model-grid"
3651
+ }
3652
+ )
3653
+ }
3654
+ ) }) }) });
3655
+ }
3656
+ var SETTINGS_SECTION_IDS = {
3657
+ account: "account",
3658
+ mail: "mail",
3659
+ privacy: "privacy",
3660
+ chat: "chat"
3661
+ };
3662
+ function accountSettingsSection(props) {
3663
+ return {
3664
+ id: SETTINGS_SECTION_IDS.account,
3665
+ label: "Account",
3666
+ icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.User, { className: "w-6 h-6" }),
3667
+ render: () => /* @__PURE__ */ jsxRuntime.jsx(ConnectedAccountSettings, { ...props })
3668
+ };
3669
+ }
3670
+ function mailSettingsSection(props) {
3671
+ return {
3672
+ id: SETTINGS_SECTION_IDS.mail,
3673
+ label: "Mail",
3674
+ icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mail, { className: "w-6 h-6" }),
3675
+ render: () => /* @__PURE__ */ jsxRuntime.jsx(ConnectedMailSettings, { ...props })
3676
+ };
3677
+ }
3678
+ function privacySettingsSection(props) {
3679
+ return {
3680
+ id: SETTINGS_SECTION_IDS.privacy,
3681
+ label: "Privacy",
3682
+ icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.HatGlasses, { className: "w-6 h-6" }),
3683
+ render: () => /* @__PURE__ */ jsxRuntime.jsx(ConnectedPrivacySettings, { ...props })
3684
+ };
3685
+ }
3686
+ function chatSettingsSection() {
3687
+ return {
3688
+ id: SETTINGS_SECTION_IDS.chat,
3689
+ label: "Chat",
3690
+ icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessageSquare, { className: "w-6 h-6" }),
3691
+ render: () => /* @__PURE__ */ jsxRuntime.jsx(ConnectedPremiumModels, {})
3692
+ };
3693
+ }
3694
+ var DEFAULT_SETTINGS_SECTIONS = [
3695
+ accountSettingsSection(),
3696
+ privacySettingsSection(),
3697
+ chatSettingsSection()
3698
+ ];
3699
+ function ConnectedSettingsPage({
3700
+ sections = DEFAULT_SETTINGS_SECTIONS,
3701
+ section,
3702
+ onSectionChange,
3703
+ ...page
3704
+ }) {
3705
+ const requested = chunkKPZZ5FHE_cjs.useRequestedSettingsSection();
3706
+ const [local, setLocal] = react.useState(requested?.section);
3707
+ react.useEffect(() => {
3708
+ if (requested) setLocal(requested.section);
3709
+ }, [requested]);
3710
+ const controlled = section !== void 0;
3711
+ return /* @__PURE__ */ jsxRuntime.jsx(
3712
+ chunkU73KPFYH_cjs.SettingsPage,
3713
+ {
3714
+ ...page,
3715
+ sections,
3716
+ activeSectionId: controlled ? section : local,
3717
+ onSectionChange: (id) => {
3718
+ if (!controlled) setLocal(id);
3719
+ onSectionChange?.(id);
3720
+ }
3721
+ }
3722
+ );
3370
3723
  }
3371
3724
  function useConnectedDocxNotifications(onOpen) {
3372
3725
  const arbi = react$1.useArbi();
3373
3726
  const { status, user, apiUrl } = chunkGFNELPDP_cjs.useConnection();
3374
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
3727
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
3375
3728
  const queries = reactQuery.useQueryClient();
3376
3729
  const source = `docx-mentions:${apiUrl}:${user?.externalId || ""}`;
3377
3730
  const queryKey = ["docx-mentions", apiUrl, user?.externalId];
@@ -3437,7 +3790,7 @@ function useConnectedDocxNotifications(onOpen) {
3437
3790
  }
3438
3791
  function useConnectedWorkNotifications(onOpen) {
3439
3792
  const { status, user, apiUrl } = chunkGFNELPDP_cjs.useConnection();
3440
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
3793
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
3441
3794
  const source = `work-notifications:${apiUrl}:${user?.externalId || ""}`;
3442
3795
  const { data = [], markRead: persistRead } = react$1.useWorkNotifications({
3443
3796
  apiUrl,
@@ -3574,229 +3927,6 @@ function hydrateMailAttachments(client$1, account, messageId, attachments, { isO
3574
3927
  })
3575
3928
  );
3576
3929
  }
3577
- function ConnectedMailAccounts({
3578
- policy,
3579
- accounts,
3580
- onClose,
3581
- embedded = false,
3582
- user,
3583
- oauthReturnPath,
3584
- settings
3585
- }) {
3586
- const { client } = react$1.useMailClient();
3587
- const [profileId, setProfileId] = react.useState(policy.server_profiles[0]?.id ?? "");
3588
- const [email, setEmail] = react.useState("");
3589
- const [username, setUsername] = react.useState("");
3590
- const [password, setPassword] = react.useState("");
3591
- const [error, setError] = react.useState("");
3592
- const [alias, setAlias] = react.useState(() => react$1.defaultMailAlias(user));
3593
- const native = react$1.useClaimNativeAlias(onClose);
3594
- const isOnline = react$1.useMailOnline();
3595
- const offline = !isOnline;
3596
- const onNativeError = (err) => {
3597
- if (!react$1.isAliasTakenError(err)) return setError(err.message);
3598
- const suggestion = react$1.nextAliasSuggestion(alias);
3599
- setAlias(suggestion);
3600
- setError(react$1.aliasTakenMessage(alias, suggestion, policy.native_domain));
3601
- };
3602
- const connect = react$1.useConnectMailAccount();
3603
- const disconnect = react$1.useDisconnectMailAccount();
3604
- const authorizeOAuth = client.authorizeOAuth;
3605
- const oauth = async (vendor) => {
3606
- if (!authorizeOAuth) return;
3607
- try {
3608
- window.location.assign(
3609
- await authorizeOAuth(
3610
- vendor,
3611
- oauthReturnPath ?? `${window.location.pathname}${window.location.search}`
3612
- )
3613
- );
3614
- } catch (err) {
3615
- setError(err instanceof Error ? err.message : "Could not connect account");
3616
- }
3617
- };
3618
- const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3619
- offline && /* @__PURE__ */ jsxRuntime.jsx(
3620
- "p",
3621
- {
3622
- role: "status",
3623
- className: "mb-4 rounded bg-muted/40 px-3 py-2 text-sm text-muted-foreground",
3624
- children: "You're offline. Creating, connecting or removing accounts needs a connection."
3625
- }
3626
- ),
3627
- policy.native_enabled && !accounts.some((a) => a.provider === "native") && /* @__PURE__ */ jsxRuntime.jsxs(
3628
- "form",
3629
- {
3630
- className: "mb-5 grid gap-3",
3631
- onSubmit: (e) => {
3632
- e.preventDefault();
3633
- native.mutate(alias, { onError: onNativeError });
3634
- },
3635
- children: [
3636
- /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "grid gap-1 text-sm", children: [
3637
- "Choose your email address",
3638
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3639
- /* @__PURE__ */ jsxRuntime.jsx(
3640
- "input",
3641
- {
3642
- "aria-label": "Email alias",
3643
- required: true,
3644
- pattern: "[a-z0-9][a-z0-9._\\-]{0,62}",
3645
- className: "min-w-0 flex-1 rounded border bg-background p-2",
3646
- value: alias,
3647
- onChange: (e) => setAlias(e.target.value.toLowerCase())
3648
- }
3649
- ),
3650
- /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
3651
- "@",
3652
- policy.native_domain
3653
- ] })
3654
- ] })
3655
- ] }),
3656
- /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { disabled: native.isPending || offline, type: "submit", children: "Create inbox" })
3657
- ]
3658
- }
3659
- ),
3660
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4 text-sm text-muted-foreground", children: "Connect an account using the providers enabled by your administrator." }),
3661
- authorizeOAuth && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4 flex flex-wrap gap-2", children: policy.oauth_providers.map((vendor) => /* @__PURE__ */ jsxRuntime.jsxs(
3662
- ui.Button,
3663
- {
3664
- variant: "outline",
3665
- disabled: offline,
3666
- onClick: () => void oauth(vendor),
3667
- children: [
3668
- "Connect ",
3669
- vendor === "microsoft" ? "Outlook" : "Gmail"
3670
- ]
3671
- },
3672
- vendor
3673
- )) }),
3674
- accounts.map((account) => /* @__PURE__ */ jsxRuntime.jsxs(
3675
- "div",
3676
- {
3677
- className: "mb-2 flex items-center justify-between gap-2 rounded border p-3 text-sm",
3678
- children: [
3679
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3680
- /* @__PURE__ */ jsxRuntime.jsx("div", { children: account.email }),
3681
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: account.display_name })
3682
- ] }),
3683
- account.profile_id ? /* @__PURE__ */ jsxRuntime.jsx(
3684
- ui.Button,
3685
- {
3686
- variant: "ghost",
3687
- disabled: disconnect.isPending || offline,
3688
- onClick: () => disconnect.mutate(account.id, { onError: (err) => setError(err.message) }),
3689
- children: "Disconnect"
3690
- }
3691
- ) : account.provider !== "native" ? authorizeOAuth && /* @__PURE__ */ jsxRuntime.jsx(
3692
- ui.Button,
3693
- {
3694
- variant: "ghost",
3695
- disabled: offline,
3696
- onClick: () => void oauth(account.provider),
3697
- children: "Reconnect"
3698
- }
3699
- ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Native inbox" })
3700
- ]
3701
- },
3702
- account.id
3703
- )),
3704
- policy.server_profiles.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
3705
- "form",
3706
- {
3707
- className: "mt-5 grid gap-3",
3708
- onSubmit: (event) => {
3709
- event.preventDefault();
3710
- setError("");
3711
- connect.mutate(
3712
- { profileId, email, username, password },
3713
- {
3714
- onSuccess: () => {
3715
- setPassword("");
3716
- onClose();
3717
- },
3718
- onError: (err) => setError(err.message)
3719
- }
3720
- );
3721
- },
3722
- children: [
3723
- /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "grid gap-1 text-sm", children: [
3724
- "Mail server",
3725
- /* @__PURE__ */ jsxRuntime.jsx(
3726
- "select",
3727
- {
3728
- "aria-label": "Mail server",
3729
- className: "rounded border bg-background p-2",
3730
- value: profileId,
3731
- onChange: (e) => setProfileId(e.target.value),
3732
- children: policy.server_profiles.map((profile) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: profile.id, children: profile.name }, profile.id))
3733
- }
3734
- )
3735
- ] }),
3736
- /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "grid gap-1 text-sm", children: [
3737
- "Email address",
3738
- /* @__PURE__ */ jsxRuntime.jsx(
3739
- "input",
3740
- {
3741
- required: true,
3742
- type: "email",
3743
- autoComplete: "email",
3744
- className: "rounded border bg-background p-2",
3745
- value: email,
3746
- onChange: (e) => setEmail(e.target.value)
3747
- }
3748
- )
3749
- ] }),
3750
- /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "grid gap-1 text-sm", children: [
3751
- "Username",
3752
- /* @__PURE__ */ jsxRuntime.jsx(
3753
- "input",
3754
- {
3755
- placeholder: "Same as email address",
3756
- autoComplete: "username",
3757
- className: "rounded border bg-background p-2",
3758
- value: username,
3759
- onChange: (e) => setUsername(e.target.value)
3760
- }
3761
- )
3762
- ] }),
3763
- /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "grid gap-1 text-sm", children: [
3764
- "Password or app password",
3765
- /* @__PURE__ */ jsxRuntime.jsx(
3766
- "input",
3767
- {
3768
- required: true,
3769
- type: "password",
3770
- autoComplete: "current-password",
3771
- className: "rounded border bg-background p-2",
3772
- value: password,
3773
- onChange: (e) => setPassword(e.target.value)
3774
- }
3775
- )
3776
- ] }),
3777
- /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { type: "submit", disabled: connect.isPending || offline, children: connect.isPending ? "Connecting\u2026" : "Connect mailbox" })
3778
- ]
3779
- }
3780
- ),
3781
- error && /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "mt-3 text-sm text-destructive", children: error }),
3782
- accounts.length > 0 && settings
3783
- ] });
3784
- if (embedded) return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-2xl", children: content });
3785
- return /* @__PURE__ */ jsxRuntime.jsx(
3786
- ui.Dialog,
3787
- {
3788
- open: true,
3789
- onOpenChange: (open) => {
3790
- if (!open) onClose();
3791
- },
3792
- children: /* @__PURE__ */ jsxRuntime.jsxs(ui.DialogContent, { className: "max-h-[90dvh] max-w-lg overflow-auto", children: [
3793
- /* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { children: "Mail accounts" }),
3794
- /* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { children: "Choose your email address or connect an external mailbox." }),
3795
- content
3796
- ] })
3797
- }
3798
- );
3799
- }
3800
3930
  var sessionRooms = /* @__PURE__ */ new Map();
3801
3931
  function useWordBody({
3802
3932
  word,
@@ -3916,7 +4046,7 @@ function MailComposerForm({
3916
4046
  headerSlot
3917
4047
  }) {
3918
4048
  const { client } = react$1.useMailClient();
3919
- const { notify, confirm } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
4049
+ const { notify, confirm } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
3920
4050
  const [to, setTo] = react.useState(initial.to.map((r) => r.email).join("; "));
3921
4051
  const [cc, setCc] = react.useState(initial.cc.map((r) => r.email).join("; "));
3922
4052
  const [showCc, setShowCc] = react.useState(initial.cc.length > 0);
@@ -4764,7 +4894,7 @@ function ConnectedMailbox({
4764
4894
  onGridStateChange,
4765
4895
  initialMessageId = null
4766
4896
  }) {
4767
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
4897
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
4768
4898
  const cache = react$1.useMailCache();
4769
4899
  const { client } = react$1.useMailClient();
4770
4900
  const [savingToWorkspace, setSavingToWorkspace] = react.useState(false);
@@ -5051,7 +5181,7 @@ function ConnectedMailbox({
5051
5181
  testIds: { root: "mail-search", input: "mail-filter-input" },
5052
5182
  className: "min-w-28 flex-1 sm:max-w-72",
5053
5183
  filter: /* @__PURE__ */ jsxRuntime.jsx(
5054
- chunkMIDXCYZB_cjs.TriStateFilterMenu,
5184
+ chunkRQ2Y7USX_cjs.TriStateFilterMenu,
5055
5185
  {
5056
5186
  testId: "mail-bar-filter-button",
5057
5187
  open: filterMenuOpen,
@@ -5439,7 +5569,7 @@ function SubscribeDialog({
5439
5569
  timeZone,
5440
5570
  onClose
5441
5571
  }) {
5442
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
5572
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
5443
5573
  const subscribe = react$1.useSubscribeCalendar();
5444
5574
  const [url, setUrl] = react.useState("");
5445
5575
  const [name, setName] = react.useState("");
@@ -5534,7 +5664,7 @@ function SubscribeDialog({
5534
5664
  }
5535
5665
  function HolidaysDialog({ open, onClose }) {
5536
5666
  const { data: countries = [], isLoading } = react$1.useHolidayCountries(open);
5537
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
5667
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
5538
5668
  const add = react$1.useAddHolidayCalendar();
5539
5669
  const [country, setCountry] = react.useState("");
5540
5670
  const [subdivision, setSubdivision] = react.useState("");
@@ -5657,7 +5787,7 @@ function StatusBadge({ account }) {
5657
5787
  );
5658
5788
  }
5659
5789
  function AccountRow({ account }) {
5660
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
5790
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
5661
5791
  const startOAuth = react$1.useStartCalendarAccountOAuth();
5662
5792
  const sync = react$1.useSyncCalendarAccount();
5663
5793
  const update = react$1.useUpdateCalendarAccount();
@@ -5775,7 +5905,7 @@ function AccountRow({ account }) {
5775
5905
  );
5776
5906
  }
5777
5907
  function CalDavForm({ onDone }) {
5778
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
5908
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
5779
5909
  const { data: profiles = [] } = react$1.useCalDavProfiles();
5780
5910
  const connect = react$1.useConnectCalDavAccount();
5781
5911
  const [profileId, setProfileId] = react.useState("");
@@ -5891,7 +6021,7 @@ function CalDavForm({ onDone }) {
5891
6021
  );
5892
6022
  }
5893
6023
  function CalendarAccountsPanel({ className }) {
5894
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
6024
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
5895
6025
  const { connectors } = react$1.useCalendarSupport();
5896
6026
  const startOAuth = react$1.useStartCalendarAccountOAuth();
5897
6027
  const { data: accounts = [], isLoading, error } = react$1.useCalendarAccounts();
@@ -5978,7 +6108,7 @@ function CalendarAccountsPanel({ className }) {
5978
6108
 
5979
6109
  // src/connection/calendar/copy.ts
5980
6110
  function useCalendarCopy() {
5981
- const copy = chunk5FTIHRZH_cjs.useCopyText({ copyFailed: "Could not copy. Select the text and copy it manually." });
6111
+ const copy = chunkXVUOMWMD_cjs.useCopyText({ copyFailed: "Could not copy. Select the text and copy it manually." });
5982
6112
  return (value, what = "Copied") => copy(value, `${what} to clipboard`);
5983
6113
  }
5984
6114
  function CopyField({ label, value, mono = true, testId, className }) {
@@ -6027,7 +6157,7 @@ function calendarNames(ids, calendars) {
6027
6157
  return names.length ? names.join(", ") : `${ids.length} calendar${ids.length === 1 ? "" : "s"}`;
6028
6158
  }
6029
6159
  function RevokeButton({ row }) {
6030
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
6160
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
6031
6161
  const revoke = react$1.useRevokeAppPassword();
6032
6162
  const [confirming, setConfirming] = react.useState(false);
6033
6163
  if (!confirming)
@@ -6346,7 +6476,7 @@ function summarizeWeekly(page) {
6346
6476
  return days.map((d) => chunk6YTHQ73P_cjs.WEEKDAY_NAMES[d]?.slice(0, 3)).join(", ");
6347
6477
  }
6348
6478
  function BookingPageForm({ page, defaultTimeZone, onDone }) {
6349
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
6479
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
6350
6480
  const copyText = useCalendarCopy();
6351
6481
  const [form, setForm] = react.useState(
6352
6482
  () => page ? chunk6YTHQ73P_cjs.bookingToForm(page) : chunk6YTHQ73P_cjs.emptyBookingForm(defaultTimeZone)
@@ -6529,7 +6659,7 @@ function BookingPageForm({ page, defaultTimeZone, onDone }) {
6529
6659
  );
6530
6660
  }
6531
6661
  function BookingPagesPanel({ defaultTimeZone, className }) {
6532
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
6662
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
6533
6663
  const copyText = useCalendarCopy();
6534
6664
  const { data: pages = [], isLoading, error } = react$1.useBookingPages();
6535
6665
  const { data: settings } = react$1.useCalendarSettings(!defaultTimeZone);
@@ -6639,7 +6769,7 @@ function BookingPagesPanel({ defaultTimeZone, className }) {
6639
6769
  }
6640
6770
  var selectClass5 = "h-9 w-full rounded-md border border-input bg-background px-2 text-sm text-foreground shadow-sm";
6641
6771
  function CreateRoomForm({ zone, onDone }) {
6642
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
6772
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
6643
6773
  const create2 = react$1.useCreateRoom();
6644
6774
  const [name, setName] = react.useState("");
6645
6775
  const [type, setType] = react.useState("room");
@@ -6969,7 +7099,7 @@ function CalendarSettingsDialog({
6969
7099
  initialTab = "general",
6970
7100
  onClose
6971
7101
  }) {
6972
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
7102
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
6973
7103
  const save = react$1.useSaveCalendarSettings();
6974
7104
  const [value, setValue] = react.useState(() => chunk6YTHQ73P_cjs.toSettingsValue(settings));
6975
7105
  const [tab, setTab] = react.useState(initialTab);
@@ -7042,7 +7172,7 @@ function EventScheduling({
7042
7172
  workingStartHour = 7
7043
7173
  }) {
7044
7174
  const [open, setOpen] = react.useState(false);
7045
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
7175
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
7046
7176
  const arbi = react$1.useArbi();
7047
7177
  const me = arbi.isLoggedIn ? arbi.user.identity()?.email ?? null : null;
7048
7178
  const allDay = chunk6YTHQ73P_cjs.isAllDayDraft(draft);
@@ -7283,7 +7413,7 @@ function proposed(inv, zone) {
7283
7413
  return `${chunkBIXHB4LV_cjs.formatInZone(su, zone, { weekday: "short", day: "numeric", month: "short", hour: "numeric", minute: "2-digit" })} \u2013 ${chunkBIXHB4LV_cjs.formatInZone(eu, zone, { hour: "numeric", minute: "2-digit" })}`;
7284
7414
  }
7285
7415
  function InvitationsPanel({ timeZone, onOpenEvent }) {
7286
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
7416
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
7287
7417
  const { data: items = [], refetch } = react$1.useCalendarInvitations();
7288
7418
  const respond = react$1.useRespondToEvent();
7289
7419
  const decide = react$1.useDecideCounter();
@@ -7470,7 +7600,7 @@ function PublishCalendarDialog({
7470
7600
  onClose,
7471
7601
  onConnectAccount
7472
7602
  }) {
7473
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
7603
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
7474
7604
  const { data: accounts = [], isLoading } = react$1.useCalendarAccounts(!!calendarId);
7475
7605
  const publish = react$1.usePublishCalendar();
7476
7606
  const [accountId, setAccountId] = react.useState("");
@@ -7547,7 +7677,7 @@ function ShareCalendarDialog({
7547
7677
  calendarName,
7548
7678
  onClose
7549
7679
  }) {
7550
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
7680
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
7551
7681
  const { data: shares = [], isLoading } = react$1.useCalendarShares(calendarId);
7552
7682
  const share = react$1.useShareCalendar();
7553
7683
  const unshare = react$1.useUnshareCalendar();
@@ -7851,7 +7981,7 @@ function ConnectedCalendar({
7851
7981
  onOpenOverlay,
7852
7982
  syncAccountsOnOpen = true
7853
7983
  } = {}) {
7854
- const { confirm, notify, openConversation } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
7984
+ const { confirm, notify, openConversation } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
7855
7985
  const arbi = react$1.useArbi();
7856
7986
  const fetchEvent = react$1.useFetchCalendarEvent();
7857
7987
  const notifyError = (prefix, err) => notify(`${prefix}: ${errorText3(err)}`, "error");
@@ -8604,7 +8734,7 @@ function ConnectedMailInviteCard({
8604
8734
  isOnline,
8605
8735
  onOpenEvent
8606
8736
  }) {
8607
- const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
8737
+ const { notify } = chunkKPZZ5FHE_cjs.useBlocksEnvironment();
8608
8738
  const part = attachments.find(chunk6YTHQ73P_cjs.isCalendarAttachment);
8609
8739
  const { data: settings } = react$1.useCalendarSettings(!!part);
8610
8740
  const zone = chunkBIXHB4LV_cjs.safeZone(settings?.time_zone, chunkBIXHB4LV_cjs.detectTimeZone());
@@ -8735,7 +8865,7 @@ function Shell({ children, wide = false }) {
8735
8865
  ) });
8736
8866
  }
8737
8867
  function CancelView({ slug, token }) {
8738
- const { apiBaseUrl } = chunkC4WSHRR6_cjs.useBlocksEnvironment().runtimeConfig;
8868
+ const { apiBaseUrl } = chunkKPZZ5FHE_cjs.useBlocksEnvironment().runtimeConfig;
8739
8869
  const [state, setState] = react.useState("idle");
8740
8870
  const [error, setError] = react.useState(null);
8741
8871
  return /* @__PURE__ */ jsxRuntime.jsx(Shell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-4", "data-testid": "book-cancel", children: [
@@ -8813,7 +8943,7 @@ function Confirmation({
8813
8943
  ] }) });
8814
8944
  }
8815
8945
  function ConnectedPublicBooking({ slug, cancelToken }) {
8816
- const { apiBaseUrl } = chunkC4WSHRR6_cjs.useBlocksEnvironment().runtimeConfig;
8946
+ const { apiBaseUrl } = chunkKPZZ5FHE_cjs.useBlocksEnvironment().runtimeConfig;
8817
8947
  const [zone, setZone] = react.useState(chunkBIXHB4LV_cjs.detectTimeZone);
8818
8948
  const [duration, setDuration] = react.useState(void 0);
8819
8949
  const [offset, setOffset] = react.useState(0);
@@ -9077,7 +9207,7 @@ function ActiveChat({ agentId, workspaceId }) {
9077
9207
  activeArtifact: () => chunkJKB7WT7L_cjs.takeOpenDocumentForTurn({ workspaceId })
9078
9208
  });
9079
9209
  return /* @__PURE__ */ jsxRuntime.jsx(
9080
- chunk7YLJHTDC_cjs.ChatPage,
9210
+ chunk5A2QQAF5_cjs.ChatPage,
9081
9211
  {
9082
9212
  chat: { ...chat, assistantMode: void 0, setAssistantMode: void 0 },
9083
9213
  documentsRequired: false,
@@ -9139,35 +9269,75 @@ function ConnectedAgentChatPanel({
9139
9269
 
9140
9270
  Object.defineProperty(exports, "ConnectedAssistantDock", {
9141
9271
  enumerable: true,
9142
- get: function () { return chunk3BFGL2JL_cjs.ConnectedAssistantDock; }
9272
+ get: function () { return chunkODRHHWHY_cjs.ConnectedAssistantDock; }
9143
9273
  });
9144
9274
  Object.defineProperty(exports, "redlineStats", {
9145
9275
  enumerable: true,
9146
- get: function () { return chunk3BFGL2JL_cjs.redlineStats; }
9276
+ get: function () { return chunkODRHHWHY_cjs.redlineStats; }
9147
9277
  });
9148
9278
  Object.defineProperty(exports, "textToArtifact", {
9149
9279
  enumerable: true,
9150
- get: function () { return chunk3BFGL2JL_cjs.textToArtifact; }
9280
+ get: function () { return chunkODRHHWHY_cjs.textToArtifact; }
9151
9281
  });
9152
9282
  Object.defineProperty(exports, "toRedlineMarkdown", {
9153
9283
  enumerable: true,
9154
- get: function () { return chunk3BFGL2JL_cjs.toRedlineMarkdown; }
9284
+ get: function () { return chunkODRHHWHY_cjs.toRedlineMarkdown; }
9155
9285
  });
9156
9286
  Object.defineProperty(exports, "useConnectedAiTask", {
9157
9287
  enumerable: true,
9158
- get: function () { return chunk3BFGL2JL_cjs.useConnectedAiTask; }
9288
+ get: function () { return chunkODRHHWHY_cjs.useConnectedAiTask; }
9159
9289
  });
9160
9290
  Object.defineProperty(exports, "useConnectedChat", {
9161
9291
  enumerable: true,
9162
- get: function () { return chunk3BFGL2JL_cjs.useConnectedChat; }
9292
+ get: function () { return chunkODRHHWHY_cjs.useConnectedChat; }
9163
9293
  });
9164
9294
  Object.defineProperty(exports, "useSemanticSearch", {
9165
9295
  enumerable: true,
9166
- get: function () { return chunk3BFGL2JL_cjs.useSemanticSearch; }
9296
+ get: function () { return chunkODRHHWHY_cjs.useSemanticSearch; }
9167
9297
  });
9168
9298
  Object.defineProperty(exports, "useWorkspaceDocs", {
9169
9299
  enumerable: true,
9170
- get: function () { return chunk3BFGL2JL_cjs.useWorkspaceDocs; }
9300
+ get: function () { return chunkODRHHWHY_cjs.useWorkspaceDocs; }
9301
+ });
9302
+ Object.defineProperty(exports, "ConnectedWorkflowDocumentsField", {
9303
+ enumerable: true,
9304
+ get: function () { return chunkU6YVZDOV_cjs.ConnectedWorkflowDocumentsField; }
9305
+ });
9306
+ Object.defineProperty(exports, "ConnectedWorkflowLauncher", {
9307
+ enumerable: true,
9308
+ get: function () { return chunkU6YVZDOV_cjs.ConnectedWorkflowLauncher; }
9309
+ });
9310
+ Object.defineProperty(exports, "ConnectedWorkflowsTable", {
9311
+ enumerable: true,
9312
+ get: function () { return chunkU6YVZDOV_cjs.ConnectedWorkflowsTable; }
9313
+ });
9314
+ Object.defineProperty(exports, "DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS", {
9315
+ enumerable: true,
9316
+ get: function () { return chunkU6YVZDOV_cjs.DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS; }
9317
+ });
9318
+ Object.defineProperty(exports, "NativeDocxSupportProvider", {
9319
+ enumerable: true,
9320
+ get: function () { return chunkU6YVZDOV_cjs.NativeDocxSupportProvider; }
9321
+ });
9322
+ Object.defineProperty(exports, "toWorkflowFieldDocument", {
9323
+ enumerable: true,
9324
+ get: function () { return chunkU6YVZDOV_cjs.toWorkflowFieldDocument; }
9325
+ });
9326
+ Object.defineProperty(exports, "useConnectedAgentOptions", {
9327
+ enumerable: true,
9328
+ get: function () { return chunkU6YVZDOV_cjs.useConnectedAgentOptions; }
9329
+ });
9330
+ Object.defineProperty(exports, "useConnectedWorkflowScopeSource", {
9331
+ enumerable: true,
9332
+ get: function () { return chunkU6YVZDOV_cjs.useConnectedWorkflowScopeSource; }
9333
+ });
9334
+ Object.defineProperty(exports, "useConnectedWorkspaceRole", {
9335
+ enumerable: true,
9336
+ get: function () { return chunkU6YVZDOV_cjs.useConnectedWorkspaceRole; }
9337
+ });
9338
+ Object.defineProperty(exports, "useNativeDocxSupport", {
9339
+ enumerable: true,
9340
+ get: function () { return chunkU6YVZDOV_cjs.useNativeDocxSupport; }
9171
9341
  });
9172
9342
  Object.defineProperty(exports, "ConnectedWorkspaceDataProvider", {
9173
9343
  enumerable: true,
@@ -9206,6 +9376,7 @@ Object.defineProperty(exports, "useConnection", {
9206
9376
  get: function () { return chunkGFNELPDP_cjs.useConnection; }
9207
9377
  });
9208
9378
  exports.ArbiAppProvider = ArbiAppProvider;
9379
+ exports.ConnectedAccountSettings = ConnectedAccountSettings;
9209
9380
  exports.ConnectedAgentChatPanel = ConnectedAgentChatPanel;
9210
9381
  exports.ConnectedAgentCreator = ConnectedAgentCreator;
9211
9382
  exports.ConnectedCalendar = ConnectedCalendar;
@@ -9216,16 +9387,20 @@ exports.ConnectedMailAccounts = ConnectedMailAccounts;
9216
9387
  exports.ConnectedMailComposer = ConnectedMailComposer;
9217
9388
  exports.ConnectedMailInviteCard = ConnectedMailInviteCard;
9218
9389
  exports.ConnectedMailMessage = ConnectedMailMessage;
9390
+ exports.ConnectedMailSettings = ConnectedMailSettings;
9219
9391
  exports.ConnectedMailSetup = ConnectedMailSetup;
9220
9392
  exports.ConnectedMailbox = ConnectedMailbox;
9221
9393
  exports.ConnectedNotificationCenter = ConnectedNotificationCenter;
9222
9394
  exports.ConnectedNotificationPreferences = ConnectedNotificationPreferences;
9223
9395
  exports.ConnectedPasswordChangeDialog = ConnectedPasswordChangeDialog;
9396
+ exports.ConnectedPremiumModels = ConnectedPremiumModels;
9397
+ exports.ConnectedPrivacySettings = ConnectedPrivacySettings;
9224
9398
  exports.ConnectedProfileCard = ConnectedProfileCard;
9225
9399
  exports.ConnectedPublicBooking = ConnectedPublicBooking;
9226
9400
  exports.ConnectedRequireVerified = ConnectedRequireVerified;
9227
9401
  exports.ConnectedSecuritySection = ConnectedSecuritySection;
9228
9402
  exports.ConnectedSessionsRow = ConnectedSessionsRow;
9403
+ exports.ConnectedSettingsPage = ConnectedSettingsPage;
9229
9404
  exports.ConnectedSkillUpload = ConnectedSkillUpload;
9230
9405
  exports.ConnectedSkillsLibrary = ConnectedSkillsLibrary;
9231
9406
  exports.ConnectedTagTable = ConnectedTagTable;
@@ -9233,37 +9408,37 @@ exports.ConnectedTaskAccessRequest = ConnectedTaskAccessRequest;
9233
9408
  exports.ConnectedTaskActivityDialog = ConnectedTaskActivityDialog;
9234
9409
  exports.ConnectedThreadFollow = ConnectedThreadFollow;
9235
9410
  exports.ConnectedUpcomingEvents = ConnectedUpcomingEvents;
9236
- exports.ConnectedWorkflowDocumentsField = ConnectedWorkflowDocumentsField;
9237
9411
  exports.ConnectedWorkflowHistory = ConnectedWorkflowHistory;
9238
- exports.ConnectedWorkflowLauncher = ConnectedWorkflowLauncher;
9239
9412
  exports.ConnectedWorkflowRunner = ConnectedWorkflowRunner;
9240
- exports.ConnectedWorkflowsTable = ConnectedWorkflowsTable;
9241
9413
  exports.ConnectedWorkspaceActivity = ConnectedWorkspaceActivity;
9242
9414
  exports.ConnectedWorkspaceNotificationMenu = ConnectedWorkspaceNotificationMenu;
9243
9415
  exports.DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS = DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS;
9244
- exports.DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS = DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS;
9245
9416
  exports.DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS = DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS;
9417
+ exports.DEFAULT_SETTINGS_SECTIONS = DEFAULT_SETTINGS_SECTIONS;
9246
9418
  exports.NotificationCenter = NotificationCenter;
9247
9419
  exports.NotificationEvent = NotificationEvent;
9420
+ exports.SETTINGS_SECTION_IDS = SETTINGS_SECTION_IDS;
9421
+ exports.SessionStatusIcon = SessionStatusIcon;
9248
9422
  exports.StreamedArtifact = StreamedArtifact;
9249
9423
  exports.WorkflowRunThread = WorkflowRunThread;
9424
+ exports.accountSettingsSection = accountSettingsSection;
9250
9425
  exports.bookingCancelLink = bookingCancelLink;
9251
9426
  exports.buildNotificationCenterItems = buildNotificationCenterItems;
9427
+ exports.chatSettingsSection = chatSettingsSection;
9252
9428
  exports.countNotificationTypes = countNotificationTypes;
9253
9429
  exports.defaultUnmetPasswordRequirement = defaultUnmetPasswordRequirement;
9254
9430
  exports.filterNotificationCenterItems = filterNotificationCenterItems;
9431
+ exports.mailSettingsSection = mailSettingsSection;
9255
9432
  exports.openMeetingLink = openMeetingLink;
9433
+ exports.privacySettingsSection = privacySettingsSection;
9434
+ exports.renderSessionStatusIcon = renderSessionStatusIcon;
9256
9435
  exports.requestCalendarComposer = requestCalendarComposer;
9257
9436
  exports.requestCalendarEvent = requestCalendarEvent;
9258
9437
  exports.resolveMailbox = resolveMailbox;
9259
- exports.toWorkflowFieldDocument = toWorkflowFieldDocument;
9260
9438
  exports.useCalendarViewStore = useCalendarViewStore;
9261
- exports.useConnectedAgentOptions = useConnectedAgentOptions;
9262
9439
  exports.useConnectedDocxNotifications = useConnectedDocxNotifications;
9263
9440
  exports.useConnectedShellWorkspaces = useConnectedShellWorkspaces;
9264
9441
  exports.useConnectedWorkNotifications = useConnectedWorkNotifications;
9265
- exports.useConnectedWorkflowScopeSource = useConnectedWorkflowScopeSource;
9266
- exports.useConnectedWorkspaceRole = useConnectedWorkspaceRole;
9267
9442
  exports.workflowRunView = workflowRunView;
9268
9443
  //# sourceMappingURL=index.cjs.map
9269
9444
  //# sourceMappingURL=index.cjs.map