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