@arbidocs/blocks 0.5.29 → 0.5.30

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 (202) hide show
  1. package/dist/{ConnectedCallDock-FDGMFTS5.js → ConnectedCallDock-AWSOPETT.js} +12 -12
  2. package/dist/{ConnectedCallDock-FDGMFTS5.js.map → ConnectedCallDock-AWSOPETT.js.map} +1 -1
  3. package/dist/{ConnectedCallDock-ZIX2ZJCD.cjs → ConnectedCallDock-GM4KOBBS.cjs} +13 -13
  4. package/dist/{ConnectedCallDock-ZIX2ZJCD.cjs.map → ConnectedCallDock-GM4KOBBS.cjs.map} +1 -1
  5. package/dist/{ConnectedCallRoom-VJIHEJ4X.js → ConnectedCallRoom-JMB74KTV.js} +12 -12
  6. package/dist/{ConnectedCallRoom-VJIHEJ4X.js.map → ConnectedCallRoom-JMB74KTV.js.map} +1 -1
  7. package/dist/{ConnectedCallRoom-WZQVXDDW.cjs → ConnectedCallRoom-QE2MMJ6M.cjs} +13 -13
  8. package/dist/{ConnectedCallRoom-WZQVXDDW.cjs.map → ConnectedCallRoom-QE2MMJ6M.cjs.map} +1 -1
  9. package/dist/{ConnectedNativeDocxComparison-KSLSDAAP.cjs → ConnectedNativeDocxComparison-P7IHRMCS.cjs} +17 -17
  10. package/dist/{ConnectedNativeDocxComparison-KSLSDAAP.cjs.map → ConnectedNativeDocxComparison-P7IHRMCS.cjs.map} +1 -1
  11. package/dist/{ConnectedNativeDocxComparison-7ZC7BRY4.js → ConnectedNativeDocxComparison-T6JRDIMR.js} +16 -16
  12. package/dist/{ConnectedNativeDocxComparison-7ZC7BRY4.js.map → ConnectedNativeDocxComparison-T6JRDIMR.js.map} +1 -1
  13. package/dist/{ConnectedNativeDocxEditor-5E64Q7FX.cjs → ConnectedNativeDocxEditor-HBV5EJ63.cjs} +17 -17
  14. package/dist/{ConnectedNativeDocxEditor-5E64Q7FX.cjs.map → ConnectedNativeDocxEditor-HBV5EJ63.cjs.map} +1 -1
  15. package/dist/{ConnectedNativeDocxEditor-B5KDDPRY.js → ConnectedNativeDocxEditor-X6YNPGRL.js} +15 -15
  16. package/dist/{ConnectedNativeDocxEditor-B5KDDPRY.js.map → ConnectedNativeDocxEditor-X6YNPGRL.js.map} +1 -1
  17. package/dist/{ConnectedStreamedWordArtifact-RLU5VYGO.cjs → ConnectedStreamedWordArtifact-GYJEQO4M.cjs} +17 -17
  18. package/dist/ConnectedStreamedWordArtifact-GYJEQO4M.cjs.map +1 -0
  19. package/dist/{ConnectedStreamedWordArtifact-YCQSIGXL.js → ConnectedStreamedWordArtifact-X7R6PBRT.js} +16 -16
  20. package/dist/ConnectedStreamedWordArtifact-X7R6PBRT.js.map +1 -0
  21. package/dist/{WorkspaceTableView-BUWRSR42.cjs → WorkspaceTableView-FTQZJDRB.cjs} +10 -10
  22. package/dist/{WorkspaceTableView-BUWRSR42.cjs.map → WorkspaceTableView-FTQZJDRB.cjs.map} +1 -1
  23. package/dist/{WorkspaceTableView-62PJLX7V.js → WorkspaceTableView-NWRVACJL.js} +8 -8
  24. package/dist/{WorkspaceTableView-62PJLX7V.js.map → WorkspaceTableView-NWRVACJL.js.map} +1 -1
  25. package/dist/agents/index.cjs +373 -373
  26. package/dist/agents/index.js +11 -11
  27. package/dist/calls/index.cjs +39 -39
  28. package/dist/calls/index.js +7 -7
  29. package/dist/chat/index.cjs +167 -167
  30. package/dist/chat/index.js +9 -9
  31. package/dist/{chunk-CPJ2B3QQ.cjs → chunk-24Y36OK6.cjs} +9 -9
  32. package/dist/{chunk-CPJ2B3QQ.cjs.map → chunk-24Y36OK6.cjs.map} +1 -1
  33. package/dist/{chunk-XDFH6ONO.cjs → chunk-2DO5YPDH.cjs} +16 -16
  34. package/dist/{chunk-XDFH6ONO.cjs.map → chunk-2DO5YPDH.cjs.map} +1 -1
  35. package/dist/{chunk-GJI5PEGR.js → chunk-2JARBDEK.js} +4 -4
  36. package/dist/{chunk-GJI5PEGR.js.map → chunk-2JARBDEK.js.map} +1 -1
  37. package/dist/{chunk-HT62K3UO.cjs → chunk-3YVWAYXU.cjs} +4 -4
  38. package/dist/{chunk-HT62K3UO.cjs.map → chunk-3YVWAYXU.cjs.map} +1 -1
  39. package/dist/{chunk-EJSVRT3G.js → chunk-5VSMJ674.js} +56 -66
  40. package/dist/chunk-5VSMJ674.js.map +1 -0
  41. package/dist/{chunk-XGUN44A4.js → chunk-5XG7YD4V.js} +8 -8
  42. package/dist/{chunk-XGUN44A4.js.map → chunk-5XG7YD4V.js.map} +1 -1
  43. package/dist/{chunk-EVV32AXB.cjs → chunk-62G4HK7C.cjs} +6 -6
  44. package/dist/{chunk-EVV32AXB.cjs.map → chunk-62G4HK7C.cjs.map} +1 -1
  45. package/dist/{chunk-7U2DNPMZ.cjs → chunk-63FOCF46.cjs} +12 -12
  46. package/dist/{chunk-7U2DNPMZ.cjs.map → chunk-63FOCF46.cjs.map} +1 -1
  47. package/dist/{chunk-NIS5TLOM.cjs → chunk-6LVVW6VB.cjs} +4 -4
  48. package/dist/{chunk-NIS5TLOM.cjs.map → chunk-6LVVW6VB.cjs.map} +1 -1
  49. package/dist/{chunk-JS7KJRKG.js → chunk-75Z5AUMM.js} +3 -3
  50. package/dist/{chunk-JS7KJRKG.js.map → chunk-75Z5AUMM.js.map} +1 -1
  51. package/dist/{chunk-CRUCMRFC.cjs → chunk-76G2DAOF.cjs} +18 -18
  52. package/dist/{chunk-CRUCMRFC.cjs.map → chunk-76G2DAOF.cjs.map} +1 -1
  53. package/dist/{chunk-AHYSHKPL.cjs → chunk-7THRBD42.cjs} +57 -16
  54. package/dist/chunk-7THRBD42.cjs.map +1 -0
  55. package/dist/{chunk-SBHWRN2D.js → chunk-BBSXBABG.js} +3 -3
  56. package/dist/{chunk-SBHWRN2D.js.map → chunk-BBSXBABG.js.map} +1 -1
  57. package/dist/{chunk-WG2VDUEI.cjs → chunk-BVMPP574.cjs} +4 -4
  58. package/dist/{chunk-WG2VDUEI.cjs.map → chunk-BVMPP574.cjs.map} +1 -1
  59. package/dist/{chunk-3IRIITUW.cjs → chunk-BVXI7W7Z.cjs} +9 -9
  60. package/dist/{chunk-3IRIITUW.cjs.map → chunk-BVXI7W7Z.cjs.map} +1 -1
  61. package/dist/{chunk-EVYUYVH2.cjs → chunk-C5J74Y6N.cjs} +5 -5
  62. package/dist/{chunk-EVYUYVH2.cjs.map → chunk-C5J74Y6N.cjs.map} +1 -1
  63. package/dist/{chunk-WY626DNG.cjs → chunk-CGUDTSGI.cjs} +10 -10
  64. package/dist/{chunk-WY626DNG.cjs.map → chunk-CGUDTSGI.cjs.map} +1 -1
  65. package/dist/{chunk-WBCGVEJX.js → chunk-CMTAOVUX.js} +3 -3
  66. package/dist/{chunk-WBCGVEJX.js.map → chunk-CMTAOVUX.js.map} +1 -1
  67. package/dist/{chunk-OGADWN5L.js → chunk-DHTBHALC.js} +4 -4
  68. package/dist/{chunk-OGADWN5L.js.map → chunk-DHTBHALC.js.map} +1 -1
  69. package/dist/{chunk-UXIMEFEF.js → chunk-DWERY33L.js} +8 -8
  70. package/dist/{chunk-UXIMEFEF.js.map → chunk-DWERY33L.js.map} +1 -1
  71. package/dist/{chunk-A634VUNB.js → chunk-EPNJOP2M.js} +5 -5
  72. package/dist/{chunk-A634VUNB.js.map → chunk-EPNJOP2M.js.map} +1 -1
  73. package/dist/{chunk-4RMI6D64.cjs → chunk-EZLZ3MDU.cjs} +3 -3
  74. package/dist/{chunk-4RMI6D64.cjs.map → chunk-EZLZ3MDU.cjs.map} +1 -1
  75. package/dist/{chunk-3OKBEVP3.js → chunk-FAILAFD6.js} +3 -3
  76. package/dist/{chunk-3OKBEVP3.js.map → chunk-FAILAFD6.js.map} +1 -1
  77. package/dist/{chunk-OZSAQJO4.js → chunk-FODIZWMX.js} +3 -3
  78. package/dist/{chunk-OZSAQJO4.js.map → chunk-FODIZWMX.js.map} +1 -1
  79. package/dist/{chunk-V2GEULRG.cjs → chunk-GK35JEWW.cjs} +4 -4
  80. package/dist/{chunk-V2GEULRG.cjs.map → chunk-GK35JEWW.cjs.map} +1 -1
  81. package/dist/{chunk-52GITM4V.cjs → chunk-GNWQS6S4.cjs} +144 -154
  82. package/dist/{chunk-EJSVRT3G.js.map → chunk-GNWQS6S4.cjs.map} +1 -1
  83. package/dist/{chunk-R3HZBTE3.cjs → chunk-HMEP4EZ3.cjs} +4 -4
  84. package/dist/{chunk-R3HZBTE3.cjs.map → chunk-HMEP4EZ3.cjs.map} +1 -1
  85. package/dist/{chunk-5ETT7ZIO.js → chunk-IYKGI2DQ.js} +3 -3
  86. package/dist/{chunk-5ETT7ZIO.js.map → chunk-IYKGI2DQ.js.map} +1 -1
  87. package/dist/{chunk-3PQPA5K6.cjs → chunk-J4VP2PQJ.cjs} +28 -28
  88. package/dist/{chunk-3PQPA5K6.cjs.map → chunk-J4VP2PQJ.cjs.map} +1 -1
  89. package/dist/{chunk-TY76UEFK.js → chunk-JLJVEQFN.js} +6 -6
  90. package/dist/{chunk-TY76UEFK.js.map → chunk-JLJVEQFN.js.map} +1 -1
  91. package/dist/{chunk-G3MZ5S2Q.js → chunk-KYHDMUPW.js} +3 -3
  92. package/dist/{chunk-G3MZ5S2Q.js.map → chunk-KYHDMUPW.js.map} +1 -1
  93. package/dist/{chunk-DF2GSH4D.js → chunk-L2MMIC3S.js} +3 -3
  94. package/dist/{chunk-DF2GSH4D.js.map → chunk-L2MMIC3S.js.map} +1 -1
  95. package/dist/{chunk-46XON6PW.js → chunk-L4Q7FWBQ.js} +3 -3
  96. package/dist/{chunk-46XON6PW.js.map → chunk-L4Q7FWBQ.js.map} +1 -1
  97. package/dist/{chunk-OQCUIN6Z.cjs → chunk-M6N7XJH7.cjs} +5 -5
  98. package/dist/{chunk-OQCUIN6Z.cjs.map → chunk-M6N7XJH7.cjs.map} +1 -1
  99. package/dist/{chunk-MTHAQGJB.js → chunk-MNLMPH45.js} +3 -3
  100. package/dist/{chunk-MTHAQGJB.js.map → chunk-MNLMPH45.js.map} +1 -1
  101. package/dist/{chunk-W43S7COD.js → chunk-NBQNDHOW.js} +4 -4
  102. package/dist/{chunk-W43S7COD.js.map → chunk-NBQNDHOW.js.map} +1 -1
  103. package/dist/{chunk-7YGUUUL7.cjs → chunk-NF7CGYZF.cjs} +4 -4
  104. package/dist/{chunk-7YGUUUL7.cjs.map → chunk-NF7CGYZF.cjs.map} +1 -1
  105. package/dist/{chunk-DNGA25ZA.js → chunk-NI3O4UZL.js} +5 -5
  106. package/dist/{chunk-DNGA25ZA.js.map → chunk-NI3O4UZL.js.map} +1 -1
  107. package/dist/{chunk-T3JW5BYG.cjs → chunk-OSCWFBRD.cjs} +4 -4
  108. package/dist/{chunk-T3JW5BYG.cjs.map → chunk-OSCWFBRD.cjs.map} +1 -1
  109. package/dist/{chunk-TKOP6WMD.js → chunk-OYKITGTK.js} +4 -4
  110. package/dist/{chunk-TKOP6WMD.js.map → chunk-OYKITGTK.js.map} +1 -1
  111. package/dist/{chunk-2TB4UDBH.js → chunk-PKDGP6ZH.js} +3 -3
  112. package/dist/{chunk-2TB4UDBH.js.map → chunk-PKDGP6ZH.js.map} +1 -1
  113. package/dist/{chunk-AKW4JLHQ.cjs → chunk-PO2QI2OI.cjs} +4 -4
  114. package/dist/{chunk-AKW4JLHQ.cjs.map → chunk-PO2QI2OI.cjs.map} +1 -1
  115. package/dist/{chunk-4UREQY5X.js → chunk-Q56LAJRP.js} +4 -4
  116. package/dist/{chunk-4UREQY5X.js.map → chunk-Q56LAJRP.js.map} +1 -1
  117. package/dist/{chunk-SQAVWMGV.cjs → chunk-R6GIDWEH.cjs} +59 -59
  118. package/dist/{chunk-SQAVWMGV.cjs.map → chunk-R6GIDWEH.cjs.map} +1 -1
  119. package/dist/{chunk-KKBYWVEL.js → chunk-SLGRQMHW.js} +5 -5
  120. package/dist/{chunk-KKBYWVEL.js.map → chunk-SLGRQMHW.js.map} +1 -1
  121. package/dist/{chunk-LXB756TN.cjs → chunk-SN5VHPF4.cjs} +3 -3
  122. package/dist/{chunk-LXB756TN.cjs.map → chunk-SN5VHPF4.cjs.map} +1 -1
  123. package/dist/{chunk-CJWZYK5K.cjs → chunk-SVL2OM7T.cjs} +5 -5
  124. package/dist/{chunk-CJWZYK5K.cjs.map → chunk-SVL2OM7T.cjs.map} +1 -1
  125. package/dist/{chunk-SSRFSSIT.js → chunk-TGVBLXLV.js} +52 -17
  126. package/dist/chunk-TGVBLXLV.js.map +1 -0
  127. package/dist/{chunk-DV25UPJ7.js → chunk-THNTNAYI.js} +3 -3
  128. package/dist/{chunk-DV25UPJ7.js.map → chunk-THNTNAYI.js.map} +1 -1
  129. package/dist/{chunk-AYAWG2CM.js → chunk-TNWJPTDG.js} +3 -3
  130. package/dist/{chunk-AYAWG2CM.js.map → chunk-TNWJPTDG.js.map} +1 -1
  131. package/dist/{chunk-SN7X7C7H.cjs → chunk-UAMY7KHW.cjs} +5 -5
  132. package/dist/{chunk-SN7X7C7H.cjs.map → chunk-UAMY7KHW.cjs.map} +1 -1
  133. package/dist/{chunk-H72SWOUS.js → chunk-VTGRCJLP.js} +3 -3
  134. package/dist/{chunk-H72SWOUS.js.map → chunk-VTGRCJLP.js.map} +1 -1
  135. package/dist/{chunk-W5PKYJX5.cjs → chunk-W6DDSZUD.cjs} +14 -14
  136. package/dist/{chunk-W5PKYJX5.cjs.map → chunk-W6DDSZUD.cjs.map} +1 -1
  137. package/dist/{chunk-ZXXXLYZY.cjs → chunk-WG2IPVLA.cjs} +7 -7
  138. package/dist/{chunk-ZXXXLYZY.cjs.map → chunk-WG2IPVLA.cjs.map} +1 -1
  139. package/dist/{chunk-RWU3C4MK.js → chunk-WLWY43FR.js} +3 -3
  140. package/dist/{chunk-RWU3C4MK.js.map → chunk-WLWY43FR.js.map} +1 -1
  141. package/dist/{chunk-OZRGYS3J.js → chunk-X3LM4KRW.js} +3 -3
  142. package/dist/{chunk-OZRGYS3J.js.map → chunk-X3LM4KRW.js.map} +1 -1
  143. package/dist/{chunk-IZJ3BOJO.js → chunk-XMDIXNLW.js} +3 -3
  144. package/dist/{chunk-IZJ3BOJO.js.map → chunk-XMDIXNLW.js.map} +1 -1
  145. package/dist/{chunk-7FKVJUR4.js → chunk-Y6F6UF2W.js} +3 -3
  146. package/dist/{chunk-7FKVJUR4.js.map → chunk-Y6F6UF2W.js.map} +1 -1
  147. package/dist/{chunk-F72ZD5Q2.cjs → chunk-YD3RN2FY.cjs} +3 -3
  148. package/dist/{chunk-F72ZD5Q2.cjs.map → chunk-YD3RN2FY.cjs.map} +1 -1
  149. package/dist/{chunk-QHWDV2VB.cjs → chunk-YJJNDKA3.cjs} +6 -6
  150. package/dist/{chunk-QHWDV2VB.cjs.map → chunk-YJJNDKA3.cjs.map} +1 -1
  151. package/dist/{chunk-NZCAWWV4.cjs → chunk-YP643FYT.cjs} +4 -4
  152. package/dist/{chunk-NZCAWWV4.cjs.map → chunk-YP643FYT.cjs.map} +1 -1
  153. package/dist/{chunk-BBTHGWZO.cjs → chunk-ZUOU54X3.cjs} +5 -5
  154. package/dist/{chunk-BBTHGWZO.cjs.map → chunk-ZUOU54X3.cjs.map} +1 -1
  155. package/dist/citations/index.cjs +10 -10
  156. package/dist/citations/index.js +2 -2
  157. package/dist/collaboration/index.cjs +9 -9
  158. package/dist/collaboration/index.js +1 -1
  159. package/dist/connect/docx.cjs +19 -19
  160. package/dist/connect/docx.js +15 -15
  161. package/dist/connect/index.cjs +1885 -1856
  162. package/dist/connect/index.cjs.map +1 -1
  163. package/dist/connect/index.d.ts +1 -0
  164. package/dist/connect/index.js +686 -659
  165. package/dist/connect/index.js.map +1 -1
  166. package/dist/connect/viewer.cjs +83 -83
  167. package/dist/connect/viewer.js +18 -18
  168. package/dist/connection/ConnectedSettings.d.ts +1 -1
  169. package/dist/connection/dialogs/ConnectedGlobalDialogs.d.ts +26 -0
  170. package/dist/connection/dialogs/index.d.ts +1 -0
  171. package/dist/connection/files/upload/ConnectedUploadDropzone.d.ts +2 -1
  172. package/dist/connection/workspace-access/access-review.d.ts +6 -0
  173. package/dist/facts/index.cjs +60 -60
  174. package/dist/facts/index.js +7 -7
  175. package/dist/files/index.cjs +225 -225
  176. package/dist/files/index.js +5 -5
  177. package/dist/home/index.cjs +31 -31
  178. package/dist/home/index.js +6 -6
  179. package/dist/index.cjs +780 -756
  180. package/dist/index.d.ts +2 -1
  181. package/dist/index.js +27 -27
  182. package/dist/provider/dialog-registry.d.ts +85 -0
  183. package/dist/provider/environment.d.ts +11 -11
  184. package/dist/retrieval/index.cjs +4 -4
  185. package/dist/retrieval/index.js +2 -2
  186. package/dist/settings/index.cjs +156 -156
  187. package/dist/settings/index.js +3 -3
  188. package/dist/shell/index.cjs +42 -42
  189. package/dist/shell/index.js +4 -4
  190. package/dist/studio/index.cjs +18 -18
  191. package/dist/studio/index.js +10 -10
  192. package/dist/workflow-canvas/index.cjs +69 -69
  193. package/dist/workflow-canvas/index.js +14 -14
  194. package/dist/workspaces/index.cjs +29 -29
  195. package/dist/workspaces/index.js +4 -4
  196. package/node_modules/@arbidocs/coedit/package.json +1 -1
  197. package/package.json +5 -5
  198. package/dist/ConnectedStreamedWordArtifact-RLU5VYGO.cjs.map +0 -1
  199. package/dist/ConnectedStreamedWordArtifact-YCQSIGXL.js.map +0 -1
  200. package/dist/chunk-52GITM4V.cjs.map +0 -1
  201. package/dist/chunk-AHYSHKPL.cjs.map +0 -1
  202. package/dist/chunk-SSRFSSIT.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunk3PQPA5K6_cjs = require('./chunk-3PQPA5K6.cjs');
4
+ var chunkJ4VP2PQJ_cjs = require('./chunk-J4VP2PQJ.cjs');
5
5
  var chunk5H37UWWS_cjs = require('./chunk-5H37UWWS.cjs');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
 
@@ -9,10 +9,10 @@ function ConnectedStreamedWordArtifact({
9
9
  fontBaseUrl,
10
10
  ...props
11
11
  }) {
12
- const adapter = chunk3PQPA5K6_cjs.useConnectedNativeDocxAdapter(fontBaseUrl);
12
+ const adapter = chunkJ4VP2PQJ_cjs.useConnectedNativeDocxAdapter(fontBaseUrl);
13
13
  return /* @__PURE__ */ jsxRuntime.jsx(chunk5H37UWWS_cjs.StreamedWordArtifact, { ...props, adapter });
14
14
  }
15
15
 
16
16
  exports.ConnectedStreamedWordArtifact = ConnectedStreamedWordArtifact;
17
- //# sourceMappingURL=chunk-R3HZBTE3.cjs.map
18
- //# sourceMappingURL=chunk-R3HZBTE3.cjs.map
17
+ //# sourceMappingURL=chunk-HMEP4EZ3.cjs.map
18
+ //# sourceMappingURL=chunk-HMEP4EZ3.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/connection/docx/ConnectedStreamedWordArtifact.tsx"],"names":["useConnectedNativeDocxAdapter","jsx","StreamedWordArtifact"],"mappings":";;;;;;AAMO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0E;AACxE,EAAA,MAAM,OAAA,GAAUA,gDAA8B,WAAW,CAAA;AACzD,EAAA,uBAAOC,cAAA,CAACC,sCAAA,EAAA,EAAsB,GAAG,KAAA,EAAO,OAAA,EAAkB,CAAA;AAC5D","file":"chunk-R3HZBTE3.cjs","sourcesContent":["import { useConnectedNativeDocxAdapter } from './ConnectedNativeDocxEditor'\nimport {\n StreamedWordArtifact,\n type StreamedWordArtifactProps,\n} from '../../docx/StreamedWordArtifact'\n\nexport function ConnectedStreamedWordArtifact({\n fontBaseUrl,\n ...props\n}: Omit<StreamedWordArtifactProps, 'adapter'> & { fontBaseUrl?: string }) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n return <StreamedWordArtifact {...props} adapter={adapter} />\n}\n"]}
1
+ {"version":3,"sources":["../src/connection/docx/ConnectedStreamedWordArtifact.tsx"],"names":["useConnectedNativeDocxAdapter","jsx","StreamedWordArtifact"],"mappings":";;;;;;AAMO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0E;AACxE,EAAA,MAAM,OAAA,GAAUA,gDAA8B,WAAW,CAAA;AACzD,EAAA,uBAAOC,cAAA,CAACC,sCAAA,EAAA,EAAsB,GAAG,KAAA,EAAO,OAAA,EAAkB,CAAA;AAC5D","file":"chunk-HMEP4EZ3.cjs","sourcesContent":["import { useConnectedNativeDocxAdapter } from './ConnectedNativeDocxEditor'\nimport {\n StreamedWordArtifact,\n type StreamedWordArtifactProps,\n} from '../../docx/StreamedWordArtifact'\n\nexport function ConnectedStreamedWordArtifact({\n fontBaseUrl,\n ...props\n}: Omit<StreamedWordArtifactProps, 'adapter'> & { fontBaseUrl?: string }) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n return <StreamedWordArtifact {...props} adapter={adapter} />\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { useConnectedWorkspace } from './chunk-IZJ3BOJO.js';
2
+ import { useConnectedWorkspace } from './chunk-XMDIXNLW.js';
3
3
  import { useHost } from './chunk-T4P237N6.js';
4
4
  import { useMemo } from 'react';
5
5
  import { useDocuments, useTags, useConversations } from '@arbidocs/react';
@@ -57,5 +57,5 @@ function useConnectedConversations(options) {
57
57
  }
58
58
 
59
59
  export { isListedDocument, listedDocuments, useConnectedConversations, useConnectedDocuments, useConnectedTags, useDocumentFilter, useListedDocuments };
60
- //# sourceMappingURL=chunk-5ETT7ZIO.js.map
61
- //# sourceMappingURL=chunk-5ETT7ZIO.js.map
60
+ //# sourceMappingURL=chunk-IYKGI2DQ.js.map
61
+ //# sourceMappingURL=chunk-IYKGI2DQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/connection/workspaceData.ts"],"names":[],"mappings":";;;;;AA8CO,SAAS,iBAAiB,QAAA,EAAgD;AAC/E,EAAA,OAAO,SAAS,OAAA,KAAY,OAAA;AAC9B;AAGO,SAAS,iBAAA,GAA8D;AAC5E,EAAA,OAAO,OAAA,EAAQ,CAAE,aAAA,EAAe,cAAA,IAAkB,gBAAA;AACpD;AAGO,SAAS,eAAA,CACd,WACA,MAAA,EACK;AAEL,EAAA,MAAM,IAAA,GAAO,SAAA,CAAU,MAAA,CAAO,MAA6C,CAAA;AAC3E,EAAA,OAAO,IAAA,CAAK,MAAA,KAAW,SAAA,CAAU,MAAA,GAAS,SAAA,GAAY,IAAA;AACxD;AAEA,IAAM,OAAO,MAAM,MAAA;AASnB,IAAM,QAAiB,EAAC;AAExB,SAAS,OAAA,CACP,QACA,GAAA,EACwB;AACxB,EAAA,MAAM,SAAS,MAAA,IAAU,GAAA;AACzB,EAAA,MAAM,IAAA,GAAO,OAAO,IAAA,IAAS,KAAA;AAC7B,EAAA,MAAM,OAAA,GAAU,MAAA,GAAS,MAAA,CAAO,OAAA,GAAU,GAAA,CAAI,OAAA;AAC9C,EAAA,OAAO,OAAA;AAAA,IACL,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAA,CAAO,WAAW,OAAA,EAAQ,CAAA;AAAA,IACjD,CAAC,IAAA,EAAM,MAAA,CAAO,SAAA,EAAW,OAAO;AAAA,GAClC;AACF;AAGO,SAAS,qBAAA,GAAgE;AAC9E,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,qBAAA,EAAsB;AAC9C,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAU,GAAI,aAAa,WAAW,CAAA;AACpD,EAAA,OAAO,OAAA;AAAA,IACL,OAAO,EAAE,IAAA,EAAM,IAAA,IAAS,KAAA,EAA+B,QAAQ,SAAA,EAAU,CAAA;AAAA,IACzE,CAAC,MAAM,SAAS;AAAA,GAClB;AACF;AAGO,SAAS,kBAAA,GAA6D;AAC3E,EAAA,MAAM,MAAM,qBAAA,EAAsB;AAClC,EAAA,MAAM,SAAS,iBAAA,EAAkB;AACjC,EAAA,OAAO,OAAA,CAAQ,OAAO,EAAE,GAAG,KAAK,IAAA,EAAM,eAAA,CAAgB,GAAA,CAAI,IAAA,EAAM,MAAM,CAAA,EAAE,CAAA,EAAI,CAAC,GAAA,EAAK,MAAM,CAAC,CAAA;AAC3F;AAGO,SAAS,gBAAA,GAAsD;AACpE,EAAA,MAAM,SAAA,GAAY,OAAA,EAAQ,CAAE,aAAA,EAAe,OAAA,IAAW,IAAA;AACtD,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,qBAAA,EAAsB;AAC9C,EAAA,MAAM,GAAA,GAAM,QAAQ,WAAA,IAAe,MAAA,EAAW,EAAE,OAAA,EAAS,CAAC,QAAQ,CAAA;AAClE,EAAA,OAAO,OAAA,CAAQ,QAAQ,GAAG,CAAA;AAC5B;AAMO,SAAS,0BAA0B,OAAA,EAEQ;AAChD,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,qBAAA,EAAsB;AAC9C,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,SAAQ,GAAI,gBAAA,CAAiB,eAAe,MAAA,EAAW;AAAA,IAC9E,MAAM,OAAA,EAAS;AAAA,GAChB,CAAA;AACD,EAAA,OAAO,OAAA;AAAA,IACL,OAAO,EAAE,IAAA,EAAM,QAAS,KAAA,EAAsC,MAAA,EAAQ,WAAW,OAAA,EAAQ,CAAA;AAAA,IACzF,CAAC,IAAA,EAAM,SAAA,EAAW,OAAO;AAAA,GAC3B;AACF","file":"chunk-5ETT7ZIO.js","sourcesContent":["/**\n * The open workspace's documents, tags and conversations for the connected kits. Each kit reads them\n * through the `@arbidocs/react` hooks: the documents from `useDocuments` (read once, progressively,\n * then patched in place by every write and event, so a kit never re-reads it) and the conversations\n * from `useConversations` (the one list every host and kit shares, patched by its writers). A host\n * that already keeps tags live in its own cache gives them once, as a hook in the host\n * configuration's `workspaceData`, so the kits show the same list and nothing is fetched twice.\n */\n\nimport { useMemo } from 'react'\nimport { useConversations, useDocuments, useTags } from '@arbidocs/react'\nimport { useConnectedWorkspace } from './ConnectionProvider'\nimport { useHost } from '../provider/host'\n\nexport type ConnectedDocument = NonNullable<ReturnType<typeof useDocuments>['data']>[number]\nexport type ConnectedTag = NonNullable<ReturnType<typeof useTags>['data']>[number]\nexport type ConnectedConversationRow = NonNullable<\n ReturnType<typeof useConversations>['data']\n>[number]\n\n/**\n * A list the host keeps: its rows, whether it has arrived, and how to read it again (absent: the\n * host keeps it current itself, so a kit never re-reads it).\n */\nexport interface ConnectedList<T> {\n data: T[] | undefined\n isFetched: boolean\n refetch?: () => unknown\n}\n\n/** The lists a host keeps live for the open workspace, as hooks (each fixed for the host's life). */\nexport interface ConnectedWorkspaceData {\n useTags?: () => ConnectedList<ConnectedTag>\n /**\n * Which documents the browsing kits list: Files, the dashboard's recent files and the file\n * pickers (a workflow's documents, cross-references). Kits that act on given ids still see every\n * document. Default: `isListedDocument` (all but skill files); a host narrowing it further\n * usually keeps that too: `(d) => isListedDocument(d) && mine(d)`.\n */\n documentFilter?: (document: ConnectedDocument) => boolean\n}\n\n/**\n * The default `documentFilter`: every document but a skill's files (`wp_type: 'skill'`, under\n * `skills/<name>/`). They are how a skill is stored; the skills library shows them as skills.\n */\nexport function isListedDocument(document: { wp_type?: string | null }): boolean {\n return document.wp_type !== 'skill'\n}\n\n/** The host's `documentFilter` (default `isListedDocument`). */\nexport function useDocumentFilter(): (document: ConnectedDocument) => boolean {\n return useHost().workspaceData?.documentFilter ?? isListedDocument\n}\n\n/** Keep the listed documents; the same array when nothing is left out (stable for memos). */\nexport function listedDocuments<D>(\n documents: D[],\n filter: (document: ConnectedDocument) => boolean\n): D[] {\n // A kit's own row type is the same document list (a view of `DocResponse`).\n const kept = documents.filter(filter as unknown as (document: D) => boolean)\n return kept.length === documents.length ? documents : kept\n}\n\nconst NONE = () => undefined\n\nexport interface ConnectedListResult<T> {\n data: T[]\n loaded: boolean\n /** Read the list again after a change made here; absent when the host keeps it current. */\n refetch?: () => unknown\n}\n\nconst EMPTY: never[] = []\n\nfunction useList<T>(\n hosted: ConnectedList<T> | undefined,\n own: { data?: T[]; isFetched: boolean; refetch: () => unknown }\n): ConnectedListResult<T> {\n const source = hosted ?? own\n const data = source.data ?? (EMPTY as T[])\n const refetch = hosted ? hosted.refetch : own.refetch\n return useMemo(\n () => ({ data, loaded: source.isFetched, refetch }),\n [data, source.isFetched, refetch]\n )\n}\n\n/** The open workspace's documents (`useDocuments`: the one list every host and kit shares). */\nexport function useConnectedDocuments(): ConnectedListResult<ConnectedDocument> {\n const { workspaceId } = useConnectedWorkspace()\n const { data, isFetched } = useDocuments(workspaceId)\n return useMemo(\n () => ({ data: data ?? (EMPTY as ConnectedDocument[]), loaded: isFetched }),\n [data, isFetched]\n )\n}\n\n/** The open workspace's documents a person browses (the host's `documentFilter`). */\nexport function useListedDocuments(): ConnectedListResult<ConnectedDocument> {\n const all = useConnectedDocuments()\n const filter = useDocumentFilter()\n return useMemo(() => ({ ...all, data: listedDocuments(all.data, filter) }), [all, filter])\n}\n\n/** The open workspace's tags: the host's list when it gives one, else read here. */\nexport function useConnectedTags(): ConnectedListResult<ConnectedTag> {\n const useHosted = useHost().workspaceData?.useTags ?? NONE\n const hosted = useHosted()\n const { workspaceId } = useConnectedWorkspace()\n const own = useTags(workspaceId ?? undefined, { enabled: !hosted })\n return useList(hosted, own)\n}\n\n/**\n * The open workspace's conversations (threads and tasks): the shared list (`live`: re-read while\n * shown, as a run moves on by itself).\n */\nexport function useConnectedConversations(options?: {\n live?: boolean\n}): ConnectedListResult<ConnectedConversationRow> {\n const { workspaceId } = useConnectedWorkspace()\n const { data, isFetched, refetch } = useConversations(workspaceId ?? undefined, {\n live: options?.live,\n })\n return useMemo(\n () => ({ data: data ?? (EMPTY as ConnectedConversationRow[]), loaded: isFetched, refetch }),\n [data, isFetched, refetch]\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/connection/workspaceData.ts"],"names":[],"mappings":";;;;;AA8CO,SAAS,iBAAiB,QAAA,EAAgD;AAC/E,EAAA,OAAO,SAAS,OAAA,KAAY,OAAA;AAC9B;AAGO,SAAS,iBAAA,GAA8D;AAC5E,EAAA,OAAO,OAAA,EAAQ,CAAE,aAAA,EAAe,cAAA,IAAkB,gBAAA;AACpD;AAGO,SAAS,eAAA,CACd,WACA,MAAA,EACK;AAEL,EAAA,MAAM,IAAA,GAAO,SAAA,CAAU,MAAA,CAAO,MAA6C,CAAA;AAC3E,EAAA,OAAO,IAAA,CAAK,MAAA,KAAW,SAAA,CAAU,MAAA,GAAS,SAAA,GAAY,IAAA;AACxD;AAEA,IAAM,OAAO,MAAM,MAAA;AASnB,IAAM,QAAiB,EAAC;AAExB,SAAS,OAAA,CACP,QACA,GAAA,EACwB;AACxB,EAAA,MAAM,SAAS,MAAA,IAAU,GAAA;AACzB,EAAA,MAAM,IAAA,GAAO,OAAO,IAAA,IAAS,KAAA;AAC7B,EAAA,MAAM,OAAA,GAAU,MAAA,GAAS,MAAA,CAAO,OAAA,GAAU,GAAA,CAAI,OAAA;AAC9C,EAAA,OAAO,OAAA;AAAA,IACL,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAA,CAAO,WAAW,OAAA,EAAQ,CAAA;AAAA,IACjD,CAAC,IAAA,EAAM,MAAA,CAAO,SAAA,EAAW,OAAO;AAAA,GAClC;AACF;AAGO,SAAS,qBAAA,GAAgE;AAC9E,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,qBAAA,EAAsB;AAC9C,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAU,GAAI,aAAa,WAAW,CAAA;AACpD,EAAA,OAAO,OAAA;AAAA,IACL,OAAO,EAAE,IAAA,EAAM,IAAA,IAAS,KAAA,EAA+B,QAAQ,SAAA,EAAU,CAAA;AAAA,IACzE,CAAC,MAAM,SAAS;AAAA,GAClB;AACF;AAGO,SAAS,kBAAA,GAA6D;AAC3E,EAAA,MAAM,MAAM,qBAAA,EAAsB;AAClC,EAAA,MAAM,SAAS,iBAAA,EAAkB;AACjC,EAAA,OAAO,OAAA,CAAQ,OAAO,EAAE,GAAG,KAAK,IAAA,EAAM,eAAA,CAAgB,GAAA,CAAI,IAAA,EAAM,MAAM,CAAA,EAAE,CAAA,EAAI,CAAC,GAAA,EAAK,MAAM,CAAC,CAAA;AAC3F;AAGO,SAAS,gBAAA,GAAsD;AACpE,EAAA,MAAM,SAAA,GAAY,OAAA,EAAQ,CAAE,aAAA,EAAe,OAAA,IAAW,IAAA;AACtD,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,qBAAA,EAAsB;AAC9C,EAAA,MAAM,GAAA,GAAM,QAAQ,WAAA,IAAe,MAAA,EAAW,EAAE,OAAA,EAAS,CAAC,QAAQ,CAAA;AAClE,EAAA,OAAO,OAAA,CAAQ,QAAQ,GAAG,CAAA;AAC5B;AAMO,SAAS,0BAA0B,OAAA,EAEQ;AAChD,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,qBAAA,EAAsB;AAC9C,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,SAAQ,GAAI,gBAAA,CAAiB,eAAe,MAAA,EAAW;AAAA,IAC9E,MAAM,OAAA,EAAS;AAAA,GAChB,CAAA;AACD,EAAA,OAAO,OAAA;AAAA,IACL,OAAO,EAAE,IAAA,EAAM,QAAS,KAAA,EAAsC,MAAA,EAAQ,WAAW,OAAA,EAAQ,CAAA;AAAA,IACzF,CAAC,IAAA,EAAM,SAAA,EAAW,OAAO;AAAA,GAC3B;AACF","file":"chunk-IYKGI2DQ.js","sourcesContent":["/**\n * The open workspace's documents, tags and conversations for the connected kits. Each kit reads them\n * through the `@arbidocs/react` hooks: the documents from `useDocuments` (read once, progressively,\n * then patched in place by every write and event, so a kit never re-reads it) and the conversations\n * from `useConversations` (the one list every host and kit shares, patched by its writers). A host\n * that already keeps tags live in its own cache gives them once, as a hook in the host\n * configuration's `workspaceData`, so the kits show the same list and nothing is fetched twice.\n */\n\nimport { useMemo } from 'react'\nimport { useConversations, useDocuments, useTags } from '@arbidocs/react'\nimport { useConnectedWorkspace } from './ConnectionProvider'\nimport { useHost } from '../provider/host'\n\nexport type ConnectedDocument = NonNullable<ReturnType<typeof useDocuments>['data']>[number]\nexport type ConnectedTag = NonNullable<ReturnType<typeof useTags>['data']>[number]\nexport type ConnectedConversationRow = NonNullable<\n ReturnType<typeof useConversations>['data']\n>[number]\n\n/**\n * A list the host keeps: its rows, whether it has arrived, and how to read it again (absent: the\n * host keeps it current itself, so a kit never re-reads it).\n */\nexport interface ConnectedList<T> {\n data: T[] | undefined\n isFetched: boolean\n refetch?: () => unknown\n}\n\n/** The lists a host keeps live for the open workspace, as hooks (each fixed for the host's life). */\nexport interface ConnectedWorkspaceData {\n useTags?: () => ConnectedList<ConnectedTag>\n /**\n * Which documents the browsing kits list: Files, the dashboard's recent files and the file\n * pickers (a workflow's documents, cross-references). Kits that act on given ids still see every\n * document. Default: `isListedDocument` (all but skill files); a host narrowing it further\n * usually keeps that too: `(d) => isListedDocument(d) && mine(d)`.\n */\n documentFilter?: (document: ConnectedDocument) => boolean\n}\n\n/**\n * The default `documentFilter`: every document but a skill's files (`wp_type: 'skill'`, under\n * `skills/<name>/`). They are how a skill is stored; the skills library shows them as skills.\n */\nexport function isListedDocument(document: { wp_type?: string | null }): boolean {\n return document.wp_type !== 'skill'\n}\n\n/** The host's `documentFilter` (default `isListedDocument`). */\nexport function useDocumentFilter(): (document: ConnectedDocument) => boolean {\n return useHost().workspaceData?.documentFilter ?? isListedDocument\n}\n\n/** Keep the listed documents; the same array when nothing is left out (stable for memos). */\nexport function listedDocuments<D>(\n documents: D[],\n filter: (document: ConnectedDocument) => boolean\n): D[] {\n // A kit's own row type is the same document list (a view of `DocResponse`).\n const kept = documents.filter(filter as unknown as (document: D) => boolean)\n return kept.length === documents.length ? documents : kept\n}\n\nconst NONE = () => undefined\n\nexport interface ConnectedListResult<T> {\n data: T[]\n loaded: boolean\n /** Read the list again after a change made here; absent when the host keeps it current. */\n refetch?: () => unknown\n}\n\nconst EMPTY: never[] = []\n\nfunction useList<T>(\n hosted: ConnectedList<T> | undefined,\n own: { data?: T[]; isFetched: boolean; refetch: () => unknown }\n): ConnectedListResult<T> {\n const source = hosted ?? own\n const data = source.data ?? (EMPTY as T[])\n const refetch = hosted ? hosted.refetch : own.refetch\n return useMemo(\n () => ({ data, loaded: source.isFetched, refetch }),\n [data, source.isFetched, refetch]\n )\n}\n\n/** The open workspace's documents (`useDocuments`: the one list every host and kit shares). */\nexport function useConnectedDocuments(): ConnectedListResult<ConnectedDocument> {\n const { workspaceId } = useConnectedWorkspace()\n const { data, isFetched } = useDocuments(workspaceId)\n return useMemo(\n () => ({ data: data ?? (EMPTY as ConnectedDocument[]), loaded: isFetched }),\n [data, isFetched]\n )\n}\n\n/** The open workspace's documents a person browses (the host's `documentFilter`). */\nexport function useListedDocuments(): ConnectedListResult<ConnectedDocument> {\n const all = useConnectedDocuments()\n const filter = useDocumentFilter()\n return useMemo(() => ({ ...all, data: listedDocuments(all.data, filter) }), [all, filter])\n}\n\n/** The open workspace's tags: the host's list when it gives one, else read here. */\nexport function useConnectedTags(): ConnectedListResult<ConnectedTag> {\n const useHosted = useHost().workspaceData?.useTags ?? NONE\n const hosted = useHosted()\n const { workspaceId } = useConnectedWorkspace()\n const own = useTags(workspaceId ?? undefined, { enabled: !hosted })\n return useList(hosted, own)\n}\n\n/**\n * The open workspace's conversations (threads and tasks): the shared list (`live`: re-read while\n * shown, as a run moves on by itself).\n */\nexport function useConnectedConversations(options?: {\n live?: boolean\n}): ConnectedListResult<ConnectedConversationRow> {\n const { workspaceId } = useConnectedWorkspace()\n const { data, isFetched, refetch } = useConversations(workspaceId ?? undefined, {\n live: options?.live,\n })\n return useMemo(\n () => ({ data: data ?? (EMPTY as ConnectedConversationRow[]), loaded: isFetched, refetch }),\n [data, isFetched, refetch]\n )\n}\n"]}
@@ -1,16 +1,16 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkEVV32AXB_cjs = require('./chunk-EVV32AXB.cjs');
5
- var chunkNZCAWWV4_cjs = require('./chunk-NZCAWWV4.cjs');
6
4
  var chunk464YPRAE_cjs = require('./chunk-464YPRAE.cjs');
7
5
  var chunkNML42O7Q_cjs = require('./chunk-NML42O7Q.cjs');
8
- var chunkMB3S2ETI_cjs = require('./chunk-MB3S2ETI.cjs');
9
- var chunkWY626DNG_cjs = require('./chunk-WY626DNG.cjs');
6
+ var chunkCGUDTSGI_cjs = require('./chunk-CGUDTSGI.cjs');
10
7
  var chunkVZOOGA47_cjs = require('./chunk-VZOOGA47.cjs');
11
- var chunk725OETK3_cjs = require('./chunk-725OETK3.cjs');
8
+ var chunk62G4HK7C_cjs = require('./chunk-62G4HK7C.cjs');
9
+ var chunkYP643FYT_cjs = require('./chunk-YP643FYT.cjs');
10
+ var chunkMB3S2ETI_cjs = require('./chunk-MB3S2ETI.cjs');
12
11
  var chunkUFEXJIEY_cjs = require('./chunk-UFEXJIEY.cjs');
13
- var chunkAHYSHKPL_cjs = require('./chunk-AHYSHKPL.cjs');
12
+ var chunk725OETK3_cjs = require('./chunk-725OETK3.cjs');
13
+ var chunk7THRBD42_cjs = require('./chunk-7THRBD42.cjs');
14
14
  var react = require('react');
15
15
  var reactQuery = require('@tanstack/react-query');
16
16
  var react$1 = require('@arbidocs/react');
@@ -42,9 +42,9 @@ function toWorkflowFieldDocument(doc) {
42
42
  };
43
43
  }
44
44
  function useConnectedWorkflowScopeSource() {
45
- const { data: docs } = chunkEVV32AXB_cjs.useListedDocuments();
46
- const { data: tags } = chunkEVV32AXB_cjs.useConnectedTags();
47
- return react.useMemo(() => chunkWY626DNG_cjs.buildWorkflowScopeSource(docs, chunkWY626DNG_cjs.documentScopeLabels(tags)), [docs, tags]);
45
+ const { data: docs } = chunk62G4HK7C_cjs.useListedDocuments();
46
+ const { data: tags } = chunk62G4HK7C_cjs.useConnectedTags();
47
+ return react.useMemo(() => chunkCGUDTSGI_cjs.buildWorkflowScopeSource(docs, chunkCGUDTSGI_cjs.documentScopeLabels(tags)), [docs, tags]);
48
48
  }
49
49
  function useConnectedAgentOptions() {
50
50
  const { data: agents } = react$1.useAgents();
@@ -60,9 +60,9 @@ function ConnectedWorkflowDocumentsField({
60
60
  onAddFiles,
61
61
  labels
62
62
  }) {
63
- const { notify } = chunkAHYSHKPL_cjs.useBlocksEnvironment();
64
- const { ensureWorkspaceOpen } = chunkNZCAWWV4_cjs.useConnectedWorkspace();
65
- const { data: docs, loaded } = chunkEVV32AXB_cjs.useListedDocuments();
63
+ const { notify } = chunk7THRBD42_cjs.useBlocksEnvironment();
64
+ const { ensureWorkspaceOpen } = chunkYP643FYT_cjs.useConnectedWorkspace();
65
+ const { data: docs, loaded } = chunk62G4HK7C_cjs.useListedDocuments();
66
66
  const uploadDocuments = react$1.useUploadDocuments();
67
67
  const documents = react.useMemo(() => docs.map(toWorkflowFieldDocument), [docs]);
68
68
  const chosen = value.documents ?? [];
@@ -101,7 +101,7 @@ function ConnectedWorkflowDocumentsField({
101
101
  }
102
102
  ),
103
103
  /* @__PURE__ */ jsxRuntime.jsx(
104
- chunkWY626DNG_cjs.WorkflowDocumentsField,
104
+ chunkCGUDTSGI_cjs.WorkflowDocumentsField,
105
105
  {
106
106
  field,
107
107
  value,
@@ -123,7 +123,7 @@ function ConnectedWorkflowLauncher({
123
123
  const scopeSource = useConnectedWorkflowScopeSource();
124
124
  const agents = useConnectedAgentOptions();
125
125
  return /* @__PURE__ */ jsxRuntime.jsx(
126
- chunkWY626DNG_cjs.WorkflowLauncher,
126
+ chunkCGUDTSGI_cjs.WorkflowLauncher,
127
127
  {
128
128
  ...props,
129
129
  scopeSource,
@@ -164,9 +164,9 @@ function ReferencePicker({
164
164
  }
165
165
  function useConnectedDocxReferences() {
166
166
  const arbi = react$1.useArbi();
167
- const { workspaceId } = chunkNZCAWWV4_cjs.useConnectedWorkspace();
168
- const { openDocument, runtimeConfig } = chunkAHYSHKPL_cjs.useBlocksEnvironment();
169
- const { data: documents } = chunkEVV32AXB_cjs.useListedDocuments();
167
+ const { workspaceId } = chunkYP643FYT_cjs.useConnectedWorkspace();
168
+ const { openDocument, runtimeConfig } = chunk7THRBD42_cjs.useBlocksEnvironment();
169
+ const { data: documents } = chunk62G4HK7C_cjs.useListedDocuments();
170
170
  const documentsRef = react.useRef(documents);
171
171
  documentsRef.current = documents;
172
172
  return react.useMemo(
@@ -217,7 +217,7 @@ function useConnectedDocxReferences() {
217
217
  );
218
218
  }
219
219
  function useConnectedWorkspaceRole() {
220
- const { workspaceId, live, userId, ensureWorkspaceOpen } = chunkNZCAWWV4_cjs.useConnectedWorkspace();
220
+ const { workspaceId, live, userId, ensureWorkspaceOpen } = chunkYP643FYT_cjs.useConnectedWorkspace();
221
221
  const { data: members = [] } = react$1.useWorkspaceUsers(workspaceId ?? void 0, {
222
222
  enabled: live && !!workspaceId,
223
223
  beforeFetch: ensureWorkspaceOpen
@@ -245,17 +245,17 @@ var DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS = {
245
245
  var messageOf = (error) => error instanceof Error ? error.message : "";
246
246
  function ConnectedWorkflowsTable({
247
247
  filter,
248
- describeTrigger = (w) => chunkWY626DNG_cjs.workflowTriggerType(w).replaceAll("_", " "),
248
+ describeTrigger = (w) => chunkCGUDTSGI_cjs.workflowTriggerType(w).replaceAll("_", " "),
249
249
  formatDate = chunkUFEXJIEY_cjs.fmtDate,
250
250
  onViewRuns,
251
251
  connectedLabels,
252
252
  ...tableProps
253
253
  }) {
254
254
  const l = { ...DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, ...connectedLabels };
255
- const { notify, confirm, openConversation } = chunkAHYSHKPL_cjs.useBlocksEnvironment();
255
+ const { notify, confirm, openConversation } = chunk7THRBD42_cjs.useBlocksEnvironment();
256
256
  const { canEditShared, isWorkspaceOwner } = useConnectedWorkspaceRole();
257
257
  const { data: saved = [], isLoading } = react$1.useWorkflows({ live: true });
258
- const { data: conversations, refetch } = chunkEVV32AXB_cjs.useConnectedConversations({ live: true });
258
+ const { data: conversations, refetch } = chunk62G4HK7C_cjs.useConnectedConversations({ live: true });
259
259
  const { data: agents = [] } = react$1.useAgents();
260
260
  const update = react$1.useUpdateWorkflow();
261
261
  const remove = react$1.useDeleteWorkflow();
@@ -307,7 +307,7 @@ function ConnectedWorkflowsTable({
307
307
  await act(workflow, () => remove.mutateAsync(workflow.external_id));
308
308
  };
309
309
  return /* @__PURE__ */ jsxRuntime.jsx(
310
- chunkWY626DNG_cjs.WorkflowsTable,
310
+ chunkCGUDTSGI_cjs.WorkflowsTable,
311
311
  {
312
312
  ...tableProps,
313
313
  workflows,
@@ -357,7 +357,7 @@ function ConnectedWorkflowsTable({
357
357
  function useConnectedHouseTemplate() {
358
358
  const arbi = react$1.useArbi();
359
359
  const { mutateAsync: setWorkspaceTemplate } = react$1.useSetWorkspaceHouseTemplate();
360
- const { workspaceId, live, ensureWorkspaceOpen } = chunkNZCAWWV4_cjs.useConnectedWorkspace();
360
+ const { workspaceId, live, ensureWorkspaceOpen } = chunkYP643FYT_cjs.useConnectedWorkspace();
361
361
  const { data: workspaces } = react$1.useWorkspaces({ enabled: live });
362
362
  const workspace = workspaces?.find((w) => w.external_id === workspaceId);
363
363
  const { isWorkspaceOwner } = useConnectedWorkspaceRole();
@@ -409,7 +409,7 @@ function ConnectedNativeDocxEditor({
409
409
  ...props
410
410
  }) {
411
411
  const adapter = useConnectedNativeDocxAdapter(fontBaseUrl);
412
- const { workspaceId } = chunkNZCAWWV4_cjs.useConnectedWorkspace();
412
+ const { workspaceId } = chunkYP643FYT_cjs.useConnectedWorkspace();
413
413
  const commentTarget = useDocxCommentTarget();
414
414
  const [openFailed, setOpenFailed] = react.useState(false);
415
415
  const hasOpened = react.useRef(false);
@@ -460,9 +460,9 @@ function tokenChanges(arbi) {
460
460
  }
461
461
  function useConnectedNativeDocxAdapter(fontBaseUrl = "/native-docx/fonts") {
462
462
  const arbi = react$1.useArbi();
463
- const { workspaceId, live, user, ensureWorkspaceOpen } = chunkNZCAWWV4_cjs.useConnectedWorkspace();
463
+ const { workspaceId, live, user, ensureWorkspaceOpen } = chunkYP643FYT_cjs.useConnectedWorkspace();
464
464
  const queries = reactQuery.useQueryClient();
465
- const { notify } = chunkAHYSHKPL_cjs.useBlocksEnvironment();
465
+ const { notify } = chunk7THRBD42_cjs.useBlocksEnvironment();
466
466
  const tools = documentTools.useOptionalDocumentTools();
467
467
  const support = useNativeDocxSupport();
468
468
  const references = useConnectedDocxReferences();
@@ -564,5 +564,5 @@ exports.useConnectedWorkflowScopeSource = useConnectedWorkflowScopeSource;
564
564
  exports.useConnectedWorkspaceRole = useConnectedWorkspaceRole;
565
565
  exports.useDocxCommentTarget = useDocxCommentTarget;
566
566
  exports.useNativeDocxSupport = useNativeDocxSupport;
567
- //# sourceMappingURL=chunk-3PQPA5K6.cjs.map
568
- //# sourceMappingURL=chunk-3PQPA5K6.cjs.map
567
+ //# sourceMappingURL=chunk-J4VP2PQJ.cjs.map
568
+ //# sourceMappingURL=chunk-J4VP2PQJ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/connection/docx/support.ts","../src/connection/ConnectedWorkflowLauncher.tsx","../src/connection/docx/useConnectedDocxReferences.tsx","../src/connection/ConnectedWorkflowsTable.tsx","../src/connection/docx/useConnectedHouseTemplate.ts","../src/connection/docx/ConnectedNativeDocxEditor.tsx"],"names":["useHost","useListedDocuments","useConnectedTags","useMemo","buildWorkflowScopeSource","documentScopeLabels","useAgents","useBlocksEnvironment","useConnectedWorkspace","useUploadDocuments","useThumbnails","useRef","useState","useCallback","jsxs","Fragment","jsx","WorkflowDocumentsField","WorkflowLauncher","DocumentPicker","useArbi","buildDeepLinkUrl","parseDeepLinkPath","useWorkspaceUsers","workflowTriggerType","fmtDate","useWorkflows","useConnectedConversations","useUpdateWorkflow","useDeleteWorkflow","useRunWorkflow","useEffect","WorkflowsTable","useSetWorkspaceHouseTemplate","useWorkspaces","supportsHouseTemplates","workspaceHouseTemplateId","useHouseTemplateCandidates","contentPath","builtinHouseTemplate","isCandidate","useRegisterOpenDocument","NativeDocxEditor","useQueryClient","useOptionalDocumentTools","loadDocxFonts","refreshDocuments","fetchSavedSignature","storeSavedSignature"],"mappings":"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","file":"chunk-3PQPA5K6.cjs","sourcesContent":["/**\n * What a host adds to the connected Word editor that the platform API alone cannot give: the\n * workspace's definitions (facts labelled \"Definitions\"), image generation (an assistant run), the\n * host's leave-page guard, and a comment to open the editor at. It is the host configuration's\n * `docx`; every field is optional, and without one the editor simply offers less (no Defined term,\n * no Generate image).\n */\n\nimport { useHost } from '../../provider/host'\nimport type { DefinitionSource } from '../../tags/definitions'\nimport type { DocxImageGeneration } from '../../docx/layout/GenerateImage'\n\nexport interface NativeDocxSupport {\n /** The workspace's definitions. Present: Insert offers Defined term and `@@` the type-ahead. */\n definitions?: () => Promise<DefinitionSource[]>\n /** The platform's image generation. Present: Insert offers Generate image. */\n imageGeneration?: DocxImageGeneration\n /** The open editor has (or no longer has) unsaved changes. */\n onDirtyChange?: (dirty: boolean) => void\n /** A comment thread to open when its document opens (a notification's link), as a hook. */\n useCommentTarget?: () => { documentId: string; commentId: string } | null\n}\n\nconst NO_SUPPORT: NativeDocxSupport = {}\nconst NO_TARGET = () => null\n\nexport function useNativeDocxSupport(): NativeDocxSupport {\n return useHost().docx ?? NO_SUPPORT\n}\n\n/** The comment thread to open with its document (none without the host's). */\nexport function useDocxCommentTarget(): { documentId: string; commentId: string } | null {\n const useTarget = useNativeDocxSupport().useCommentTarget ?? NO_TARGET\n return useTarget()\n}\n","/**\n * The workflow launcher bound to the connection: the open workspace's folders, labels and files\n * behind its scope and `documents` fields (files can be added right there), and the user's agents\n * behind \"Run as\". The host still says what a launch does (`onLaunch`): open a chat, start a task.\n */\n\nimport { useCallback, useMemo, useRef, useState } from 'react'\nimport { useAgents, useThumbnails, useUploadDocuments } from '@arbidocs/react'\nimport { WorkflowLauncher, type WorkflowLauncherProps } from '../agents/workflows/WorkflowLauncher'\nimport {\n WorkflowDocumentsField,\n type WorkflowDocumentsFieldLabels,\n type WorkflowFieldDocument,\n} from '../agents/workflows/WorkflowDocumentsField'\nimport type { WorkflowScopeSource } from '../agents/workflows/WorkflowConfigDialog'\nimport { buildWorkflowScopeSource, documentScopeLabels } from '../agents/workflows/workspaceScope'\nimport type { AgentOption } from '../agents/workflows/AgentSelect'\nimport type { WorkflowField, WorkflowScope } from '../agents/workflows/types'\nimport { useBlocksEnvironment } from '../provider/environment'\nimport { useConnectedWorkspace } from './ConnectionProvider'\nimport { useConnectedTags, useListedDocuments, type ConnectedDocument } from './workspaceData'\n\nconst IMAGE_FILE_TYPES = new Set(['png', 'jpg', 'jpeg', 'gif', 'bmp', 'tiff', 'webp'])\n\n/** A workspace document as a `documents` field offers it. */\nexport function toWorkflowFieldDocument(doc: ConnectedDocument): WorkflowFieldDocument {\n // Pages and tokens are a text-parsing concept: never meaningful for an image.\n const isImage = IMAGE_FILE_TYPES.has((doc.file_type ?? '').toLowerCase())\n return {\n id: doc.external_id,\n title: doc.doc_metadata?.title || doc.file_name || doc.external_id,\n fileName: doc.file_name,\n pages: isImage ? null : (doc.n_pages ?? null),\n tokens: isImage ? null : (doc.tokens ?? null),\n status: doc.status,\n isImage,\n }\n}\n\n/** The open workspace's folders and labels for a workflow's scope field. */\nexport function useConnectedWorkflowScopeSource(): WorkflowScopeSource {\n const { data: docs } = useListedDocuments()\n const { data: tags } = useConnectedTags()\n return useMemo(() => buildWorkflowScopeSource(docs, documentScopeLabels(tags)), [docs, tags])\n}\n\n/** The user's agents, for \"Run as\". */\nexport function useConnectedAgentOptions(): AgentOption[] {\n const { data: agents } = useAgents()\n return useMemo(\n () => (agents ?? []).map((a) => ({ id: a.external_id, label: a.given_name || a.email })),\n [agents]\n )\n}\n\nexport interface ConnectedWorkflowDocumentsFieldProps {\n field: WorkflowField\n value: WorkflowScope\n onChange: (value: WorkflowScope) => void\n /** Add files the host's way (its upload dialog). Absent: they are uploaded here. */\n onAddFiles?: (files?: File[]) => void\n labels?: Partial<WorkflowDocumentsFieldLabels>\n}\n\n/**\n * A workflow `documents` field over the open workspace's files: pick, add (or drop) files, see the\n * chosen images. A launcher's or a task composer's `renderDocuments`.\n */\nexport function ConnectedWorkflowDocumentsField({\n field,\n value,\n onChange,\n onAddFiles,\n labels,\n}: ConnectedWorkflowDocumentsFieldProps) {\n const { notify } = useBlocksEnvironment()\n const { ensureWorkspaceOpen } = useConnectedWorkspace()\n const { data: docs, loaded } = useListedDocuments()\n const uploadDocuments = useUploadDocuments()\n const documents = useMemo(() => docs.map(toWorkflowFieldDocument), [docs])\n const chosen = value.documents ?? []\n const { data: thumbnails } = useThumbnails(chosen, { enabled: (field.max ?? 1) > 1 })\n const input = useRef<HTMLInputElement>(null)\n const [adding, setAdding] = useState(false)\n\n const upload = useCallback(\n async (files: File[]) => {\n setAdding(true)\n try {\n await ensureWorkspaceOpen()\n // Each new document joins the shared list as it lands.\n for (const file of files) await uploadDocuments.mutateAsync({ files: [file] })\n } catch (error) {\n notify(error instanceof Error && error.message ? error.message : String(error), 'error')\n } finally {\n setAdding(false)\n }\n },\n [uploadDocuments, ensureWorkspaceOpen, notify]\n )\n\n return (\n <>\n {!onAddFiles && (\n <input\n ref={input}\n type=\"file\"\n multiple\n className=\"hidden\"\n aria-label=\"Add files\"\n data-testid=\"workflow-add-files-input\"\n onChange={(e) => {\n const files = Array.from(e.target.files ?? [])\n e.target.value = ''\n if (files.length) void upload(files)\n }}\n />\n )}\n <WorkflowDocumentsField\n field={field}\n value={value}\n onChange={onChange}\n documents={documents}\n loaded={loaded}\n thumbnailOf={(id) => thumbnails?.[id]}\n onAddFiles={\n onAddFiles ?? ((files) => (files?.length ? void upload(files) : input.current?.click()))\n }\n adding={adding}\n labels={labels}\n />\n </>\n )\n}\n\nexport interface ConnectedWorkflowLauncherProps extends Omit<\n WorkflowLauncherProps,\n 'scopeSource' | 'renderDocuments' | 'agents'\n> {\n /** Add files from a `documents` field the host's way (its upload dialog). Absent: uploaded here. */\n onAddFiles?: (files?: File[]) => void\n}\n\nexport function ConnectedWorkflowLauncher({\n onAddFiles,\n ...props\n}: ConnectedWorkflowLauncherProps) {\n const scopeSource = useConnectedWorkflowScopeSource()\n const agents = useConnectedAgentOptions()\n return (\n <WorkflowLauncher\n {...props}\n scopeSource={scopeSource}\n agents={agents}\n renderDocuments={(field, value, onChange) => (\n <ConnectedWorkflowDocumentsField\n field={field}\n value={value}\n onChange={onChange}\n onAddFiles={onAddFiles}\n />\n )}\n />\n )\n}\n","/**\n * The Word editor's references to the workspace's other documents: the documents and their\n * passages (the same parsed passages a fact's citations quote), the ARBI address of a passage\n * (`/wrk-…/doc-…/cnk-…`, the deep link that opens a document at a passage, so the link works from\n * Word too), and opening one wherever the host shows documents, highlighted like a citation.\n */\nimport { useMemo, useRef } from 'react'\nimport { useArbi } from '@arbidocs/react'\nimport type { DocxReferencesAdapter } from '../../docx/references/CrossReferences'\nimport { DocumentPicker } from '../../settings/DocumentPicker'\nimport { buildDeepLinkUrl, parseDeepLinkPath } from '../../lib/deep-link'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { toWorkflowFieldDocument } from '../ConnectedWorkflowLauncher'\nimport { useListedDocuments, type ConnectedDocument } from '../workspaceData'\n\ninterface ParsedChunk {\n content?: string | null\n metadata?: { chunk_ext_id?: string | null; page_number?: number | null } | null\n}\n\n/** Top-level documents only: an attachment opens with its parent. */\nconst isTopLevel = (doc: ConnectedDocument) => !doc.parent_ext_id\n\nfunction ReferencePicker({\n documents,\n selectedId,\n onSelect,\n}: {\n documents: ConnectedDocument[]\n selectedId: string | null\n onSelect: (documentId: string) => void\n}) {\n const groups = useMemo(() => {\n const docs = documents\n .filter(isTopLevel)\n .map(toWorkflowFieldDocument)\n .sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase()))\n return [{ id: 'all', heading: 'In this workspace', docs }]\n }, [documents])\n const selected = groups[0].docs.find((d) => d.id === selectedId)\n return (\n <DocumentPicker\n groups={groups}\n value={selectedId ?? ''}\n onValueChange={onSelect}\n selected={selected}\n labels={{ placeholder: 'Search documents…' }}\n />\n )\n}\n\nexport function useConnectedDocxReferences(): DocxReferencesAdapter {\n const arbi = useArbi()\n const { workspaceId } = useConnectedWorkspace()\n const { openDocument, runtimeConfig } = useBlocksEnvironment()\n const { data: documents } = useListedDocuments()\n // Read when called (the picker, a link): the list grows while the editor is open.\n const documentsRef = useRef(documents)\n documentsRef.current = documents\n return useMemo<DocxReferencesAdapter>(\n () => ({\n documents: async () =>\n documentsRef.current\n .filter(isTopLevel)\n .map((d) => ({ id: d.external_id, title: toWorkflowFieldDocument(d).title })),\n passages: async (documentId) => {\n const parsed = await arbi.documents.getParsedContent(documentId, 'final')\n return ((parsed.chunks ?? []) as ParsedChunk[]).flatMap((chunk) =>\n chunk.metadata?.chunk_ext_id && chunk.content?.trim()\n ? [\n {\n chunkId: chunk.metadata.chunk_ext_id,\n page: chunk.metadata.page_number ?? null,\n text: chunk.content,\n },\n ]\n : []\n )\n },\n linkFor: ({ documentId, chunkId, page }) => {\n const url = buildDeepLinkUrl(\n { workspaceId: workspaceId ?? undefined, documentId, chunkId },\n runtimeConfig.deploymentDomain\n )\n return page ? `${url}?page=${page}` : url\n },\n targetOf: (href) => {\n let url: URL\n try {\n url = new URL(href, window.location.origin)\n } catch {\n return null\n }\n const { documentId, chunkId } = parseDeepLinkPath(url.pathname)\n if (!documentId || !chunkId) return null\n const page = Number(url.searchParams.get('page')) || null\n return { documentId, chunkId, page }\n },\n open: ({ documentId, chunkId, page }) =>\n openDocument(documentId, { passageId: chunkId, page: page ?? undefined }),\n renderDocumentPicker: (onSelect, selectedId) => (\n <ReferencePicker\n documents={documentsRef.current}\n selectedId={selectedId}\n onSelect={onSelect}\n />\n ),\n }),\n [arbi, workspaceId, openDocument, runtimeConfig.deploymentDomain]\n )\n}\n","/**\n * The saved workflows bound to the connection: when each starts, its last run (a link to the thread\n * it created) and next run, who runs it, pause and resume, share, run now, delete (one or many), and\n * the workflow's history. The host opens a workflow (its builder) and its history; threads open\n * through the environment's `openConversation`, failures are told through its `notify`.\n */\n\nimport { useEffect, useMemo, useState } from 'react'\nimport {\n useAgents,\n useDeleteWorkflow,\n useRunWorkflow,\n useUpdateWorkflow,\n useWorkflows,\n useWorkspaceUsers,\n type WorkflowResponse,\n} from '@arbidocs/react'\nimport { WorkflowsTable, type WorkflowsTableProps } from '../agents/tasks/WorkflowsTable'\nimport { workflowTriggerType } from '../agents/tasks/workflowRows'\nimport { fmtDate } from '../lib/format'\nimport { useBlocksEnvironment } from '../provider/environment'\nimport { useConnectedWorkspace } from './ConnectionProvider'\nimport { useConnectedConversations } from './workspaceData'\n\n/** The viewer's role in the open workspace, and the workspace's members. */\nexport function useConnectedWorkspaceRole() {\n const { workspaceId, live, userId, ensureWorkspaceOpen } = useConnectedWorkspace()\n const { data: members = [] } = useWorkspaceUsers(workspaceId ?? undefined, {\n enabled: live && !!workspaceId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const role = members.find((m) => m.user.external_id === userId)?.role\n return {\n members,\n role,\n /** An owner or a collaborator edits, pauses, resumes and runs what is shared with the workspace. */\n canEditShared: role === 'owner' || role === 'collaborator',\n /** With an item's creator, the only one who deletes it. */\n isWorkspaceOwner: role === 'owner',\n }\n}\n\nexport interface ConnectedWorkflowsTableLabels {\n /** A change (pause, share, delete) that failed without a message. */\n updateFailed: string\n deleteTitle: string\n deleteOne: (name: string) => string\n deleteMany: (count: number) => string\n /** A run that failed: its history has the error report. */\n runFailed: string\n /** A run that created no thread. */\n noThread: string\n /** A document action that started (it has no thread): what is happening. */\n documentAction: (workflow: WorkflowResponse) => string\n untitledTask: string\n}\n\nexport const DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS: ConnectedWorkflowsTableLabels = {\n updateFailed: 'Could not update the workflow',\n deleteTitle: 'Delete workflow',\n deleteOne: (name) => `Delete “${name}”? Threads it already created stay.`,\n deleteMany: (count) => `Delete ${count} workflows? Threads they already created stay.`,\n runFailed: 'The workflow failed. You can send an error report from its history.',\n noThread: 'The workflow did not create a thread.',\n documentAction: (workflow) =>\n workflow.action?.type === 'email_documents'\n ? 'Preparing your document email'\n : 'Reviewing documents',\n untitledTask: 'Untitled thread',\n}\n\ntype TableProps = WorkflowsTableProps<WorkflowResponse>\n\nexport interface ConnectedWorkflowsTableProps extends Omit<\n TableProps,\n | 'workflows'\n | 'isLoading'\n | 'busyId'\n | 'describeTrigger'\n | 'formatDate'\n | 'onToggleActive'\n | 'onToggleShared'\n | 'onDelete'\n | 'onDeleteMany'\n | 'onToggleActiveMany'\n | 'onRun'\n | 'onOpenThread'\n | 'lastRuns'\n | 'agentNames'\n | 'taskNames'\n | 'canEditShared'\n | 'isWorkspaceOwner'\n> {\n /** Which saved workflows to list (e.g. those on a schedule). Default: all. */\n filter?: (workflow: WorkflowResponse) => boolean\n /** When a workflow starts, in the host's words. Default: its trigger type. */\n describeTrigger?: TableProps['describeTrigger']\n formatDate?: TableProps['formatDate']\n connectedLabels?: Partial<ConnectedWorkflowsTableLabels>\n}\n\nconst messageOf = (error: unknown) => (error instanceof Error ? error.message : '')\n\nexport function ConnectedWorkflowsTable({\n filter,\n describeTrigger = (w) => workflowTriggerType(w).replaceAll('_', ' '),\n formatDate = fmtDate,\n onViewRuns,\n connectedLabels,\n ...tableProps\n}: ConnectedWorkflowsTableProps) {\n const l = { ...DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, ...connectedLabels }\n const { notify, confirm, openConversation } = useBlocksEnvironment()\n const { canEditShared, isWorkspaceOwner } = useConnectedWorkspaceRole()\n const { data: saved = [], isLoading } = useWorkflows({ live: true })\n const { data: conversations, refetch } = useConnectedConversations({ live: true })\n const { data: agents = [] } = useAgents()\n const update = useUpdateWorkflow()\n const remove = useDeleteWorkflow()\n const run = useRunWorkflow()\n const [busyId, setBusyId] = useState<string | null>(null)\n\n const workflows = useMemo(() => (filter ? saved.filter(filter) : saved), [saved, filter])\n // A clock or an event fired a workflow: the thread it created is new to the conversation list.\n const firingStamp = saved.map((w) => `${w.external_id}:${w.last_fired_at ?? ''}`).join('|')\n useEffect(() => {\n void refetch?.()\n }, [firingStamp, refetch])\n\n const lastRuns = useMemo(() => {\n const out: NonNullable<TableProps['lastRuns']> = {}\n for (const c of conversations) {\n const id = c.workflow_ext_id\n if (id && (!out[id] || Date.parse(c.created_at) > Date.parse(out[id].at)))\n out[id] = { conversationId: c.external_id, at: c.created_at, threadStatus: c.status }\n }\n return out\n }, [conversations])\n const agentNames = useMemo(\n () => Object.fromEntries(agents.map((a) => [a.external_id, a.given_name || a.email])),\n [agents]\n )\n const taskNames = useMemo(\n () =>\n Object.fromEntries(\n conversations\n .filter((c) => c.status != null)\n .map((c) => [c.external_id, c.title || l.untitledTask])\n ),\n [conversations, l.untitledTask]\n )\n\n const act = async (workflow: WorkflowResponse, action: () => Promise<unknown>) => {\n setBusyId(workflow.external_id)\n try {\n await action()\n } catch (error) {\n notify(messageOf(error) || l.updateFailed, 'error')\n } finally {\n setBusyId(null)\n }\n }\n const setActive = (workflow: WorkflowResponse, active: boolean) =>\n act(workflow, () => update.mutateAsync({ workflowId: workflow.external_id, patch: { active } }))\n const deleteAll = async (items: WorkflowResponse[]) => {\n if (!items.length) return\n const ok = await confirm({\n title: l.deleteTitle,\n message: items.length === 1 ? l.deleteOne(items[0].name) : l.deleteMany(items.length),\n })\n if (!ok) return\n for (const workflow of items)\n await act(workflow, () => remove.mutateAsync(workflow.external_id))\n }\n\n return (\n <WorkflowsTable\n {...tableProps}\n workflows={workflows}\n isLoading={isLoading}\n busyId={busyId}\n describeTrigger={describeTrigger}\n formatDate={formatDate}\n agentNames={agentNames}\n taskNames={taskNames}\n lastRuns={lastRuns}\n canEditShared={canEditShared}\n isWorkspaceOwner={isWorkspaceOwner}\n onOpenThread={(conversationId) => openConversation(conversationId)}\n onViewRuns={onViewRuns}\n onToggleActive={(workflow, active) => void setActive(workflow, active)}\n onToggleActiveMany={(items, active) => {\n void (async () => {\n for (const workflow of items) await setActive(workflow, active)\n })()\n }}\n onToggleShared={(workflow, shared) =>\n void act(workflow, () =>\n update.mutateAsync({ workflowId: workflow.external_id, patch: { shared } })\n )\n }\n onDelete={(workflow) => void deleteAll([workflow])}\n onDeleteMany={(items) => void deleteAll(items)}\n onRun={(workflow) =>\n void act(workflow, async () => {\n const result = await run.mutateAsync(workflow.external_id)\n if (result.conversation_ext_id) openConversation(result.conversation_ext_id)\n if (result.error) {\n onViewRuns?.(workflow)\n notify(l.runFailed, 'error')\n return\n }\n if (result.execution_id && !result.conversation_ext_id) {\n // A document action runs without a thread: its history shows how it goes.\n onViewRuns?.(workflow)\n notify(l.documentAction(workflow), 'success')\n return\n }\n if (!result.conversation_ext_id) throw new Error(l.noThread)\n })\n }\n />\n )\n}\n","/**\n * The house template for the open workspace: its own (a document of the workspace), else the\n * deployment's default, else ARBI's built-in legal template. A workspace owner can make a document\n * the house template once the server supports it.\n */\nimport { useMemo } from 'react'\nimport {\n supportsHouseTemplates,\n useArbi,\n useHouseTemplateCandidates,\n useSetWorkspaceHouseTemplate,\n useWorkspaces,\n workspaceHouseTemplateId,\n} from '@arbidocs/react'\nimport { contentPath } from '../../docx/NativeDocxEditor'\nimport {\n builtinHouseTemplate,\n type HouseTemplate,\n type HouseTemplateHost,\n} from '../../docx/template/HouseTemplate'\nimport { isCandidate } from '../../docx/template/candidates'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { useConnectedWorkspaceRole } from '../ConnectedWorkflowsTable'\n\nexport function useConnectedHouseTemplate(): HouseTemplateHost {\n const arbi = useArbi()\n const { mutateAsync: setWorkspaceTemplate } = useSetWorkspaceHouseTemplate()\n const { workspaceId, live, ensureWorkspaceOpen } = useConnectedWorkspace()\n const { data: workspaces } = useWorkspaces({ enabled: live })\n const workspace = workspaces?.find((w) => w.external_id === workspaceId)\n const { isWorkspaceOwner } = useConnectedWorkspaceRole()\n const supported = supportsHouseTemplates(workspace)\n const templateId = workspaceHouseTemplateId(workspace)\n // Only an eligible document (shared, Word, here or in a public workspace) is offered as the template.\n const { data: candidates } = useHouseTemplateCandidates(\n workspaceId,\n supported && isWorkspaceOwner\n )\n return useMemo<HouseTemplateHost>(\n () => ({\n load: async (): Promise<HouseTemplate> => {\n if (templateId) {\n await ensureWorkspaceOpen()\n const response = await arbi.editor.request(contentPath(templateId))\n const [record] = await arbi.documents.get([templateId]).catch(() => [])\n return {\n bytes: new Uint8Array(await response.arrayBuffer()),\n name: record?.file_name ?? 'House template.docx',\n source: 'workspace',\n documentId: templateId,\n }\n }\n if (supported) {\n const deployment = await arbi.houseTemplates.deployment()\n if (deployment) return { ...deployment, source: 'deployment' }\n }\n return builtinHouseTemplate()\n },\n setFromDocument:\n supported && isWorkspaceOwner\n ? async (documentId) => {\n await ensureWorkspaceOpen()\n await setWorkspaceTemplate(documentId)\n }\n : undefined,\n isEligible: (documentId) => isCandidate(candidates, documentId),\n }),\n [\n arbi,\n setWorkspaceTemplate,\n supported,\n templateId,\n isWorkspaceOwner,\n candidates,\n ensureWorkspaceOpen,\n ]\n )\n}\n","import { useMemo, useRef, useState } from 'react'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { refreshDocuments, useArbi, useWorkspaceUsers } from '@arbidocs/react'\nimport {\n fetchSavedSignature,\n storeSavedSignature,\n useOptionalDocumentTools,\n} from '@arbidocs/react/document-tools'\nimport {\n NativeDocxEditor,\n type NativeDocxAdapter,\n type NativeDocxEditorProps,\n} from '../../docx/NativeDocxEditor'\nimport { loadDocxFonts } from '../../docx/fonts'\nimport { useRegisterOpenDocument } from '@arbidocs/react/shell'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { useDocxCommentTarget, useNativeDocxSupport } from './support'\nimport { useConnectedDocxReferences } from './useConnectedDocxReferences'\nimport { useConnectedHouseTemplate } from './useConnectedHouseTemplate'\n\nexport type ConnectedNativeDocxEditorProps = Omit<NativeDocxEditorProps, 'adapter'> & {\n fontBaseUrl?: string\n}\n\n/**\n * The native Word editor on the signed-in ARBI session, under any host (`defaultHost`'s sign-in\n * layer, or the host's own `arbi` and session state). Until a live session has opened, a failure to\n * open one falls back to the saved copy, read-only, so the document is still readable; later token\n * refreshes are not guarded (switching modes would drop unsaved edits).\n */\nexport function ConnectedNativeDocxEditor({\n fontBaseUrl = '/native-docx/fonts',\n ...props\n}: ConnectedNativeDocxEditorProps) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n const { workspaceId } = useConnectedWorkspace()\n const commentTarget = useDocxCommentTarget()\n const [openFailed, setOpenFailed] = useState(false)\n const hasOpened = useRef(false)\n const guardedAdapter = useMemo<NativeDocxAdapter>(\n () => ({\n ...adapter,\n open: async (documentId) => {\n try {\n const session = await adapter.open(documentId)\n hasOpened.current = true\n return session\n } catch (error) {\n if (!hasOpened.current) setOpenFailed(true)\n throw error\n }\n },\n }),\n [adapter]\n )\n // Drafting mode: the saved Word document being edited is what the chat is about. A history\n // snapshot, a streamed preview, an unsaved draft and an embedded body field are not.\n const live = !props.snapshot && !props.stream && !props.draftContent && !props.compact\n useRegisterOpenDocument({ documentId: live ? props.documentId : null, workspaceId })\n const initialCommentId =\n props.initialCommentId ??\n (commentTarget?.documentId === props.documentId ? commentTarget.commentId : undefined)\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n {openFailed && (\n <p role=\"status\" className=\"text-muted-foreground border-b px-3 py-2 text-xs\">\n Co-editing isn&apos;t available for this document right now, so this is a read-only copy\n of the last saved version.\n </p>\n )}\n <div className=\"min-h-0 flex-1\">\n <NativeDocxEditor\n {...props}\n snapshot={props.snapshot || openFailed}\n initialCommentId={initialCommentId}\n adapter={guardedAdapter}\n />\n </div>\n </div>\n )\n}\n\n/** The access token changed (a refresh): the live room is told the new one. */\nfunction tokenChanges(arbi: ReturnType<typeof useArbi>) {\n return (listener: () => void) => {\n if (!arbi.isLoggedIn) return () => {}\n const session = arbi.getClient().session\n let token = session.getState().accessToken\n return session.subscribe((state) => {\n if (state.accessToken === token) return\n token = state.accessToken\n listener()\n })\n }\n}\n\n/**\n * The native Word adapter on the signed-in session: the editor transport, the people to mention,\n * cross-references, the house template, and the host's extras (its host config's `docx`).\n */\nexport function useConnectedNativeDocxAdapter(fontBaseUrl = '/native-docx/fonts') {\n const arbi = useArbi()\n const { workspaceId, live, user, ensureWorkspaceOpen } = useConnectedWorkspace()\n const queries = useQueryClient()\n const { notify } = useBlocksEnvironment()\n const tools = useOptionalDocumentTools()\n const support = useNativeDocxSupport()\n const references = useConnectedDocxReferences()\n const houseTemplate = useConnectedHouseTemplate()\n const { data: members } = useWorkspaceUsers(workspaceId ?? undefined, {\n enabled: live && !!workspaceId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const onDocumentsChanged = tools?.onDocumentsChanged\n // Tracked changes and comments are authored by the user's first name.\n const author = (live && arbi.user.profile()?.givenName) || user?.name || 'You'\n const adapter = useMemo<NativeDocxAdapter>(\n () => ({\n request: async (path, options) => {\n await ensureWorkspaceOpen()\n return arbi.editor.request(path, options)\n },\n open: async (id) => {\n await ensureWorkspaceOpen()\n return (\n await arbi.editor.request(`/${encodeURIComponent(id)}/session`, { method: 'POST' })\n ).json()\n },\n save: async (id, state) =>\n (\n await arbi.editor.request(`/${encodeURIComponent(id)}/save`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ state }),\n })\n ).json(),\n loadFonts: () => loadDocxFonts(fontBaseUrl),\n baseUrl: arbi.getConnectionInfo()?.baseUrl || window.location.origin,\n author,\n subscribeTokenChanges: tokenChanges(arbi),\n onDirtyChange: support.onDirtyChange,\n // The document's row moves to the saved version in place: through the host when it keeps\n // the lists (its document tools refresh them), else here.\n onVersionSaved: async (id) => {\n await (onDocumentsChanged\n ? onDocumentsChanged([id], 'version')\n : refreshDocuments(queries, arbi, [id]))\n },\n notify,\n mentions: members?.map(({ user: member }) => ({\n id: member.external_id,\n name: [member.given_name, member.family_name].filter(Boolean).join(' '),\n kind: member.external_id.startsWith('agt-') ? 'agent' : 'human',\n })),\n savedSignature: {\n load: () => fetchSavedSignature(arbi.getClient().fetch),\n save: (signature) => storeSavedSignature(arbi.getClient().fetch, signature),\n defaultName: user?.name ?? '',\n },\n signatureSigners: members\n ?.filter(({ user: member }) => member.external_id.startsWith('usr-'))\n .map(({ user: member }) => ({\n email: member.email,\n name: [member.given_name, member.family_name].filter(Boolean).join(' '),\n })),\n requestAgent: async (id, request) => {\n const response = await arbi.editor.request(`/${encodeURIComponent(id)}/mentions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n comment_id: request.commentId,\n instruction: request.instruction,\n request_id: request.requestId,\n recipient_ids: request.recipientIds,\n }),\n })\n const delivery = (await response.json()) as { response_ids: string[] }\n notify('Mention delivered.', 'success')\n return { responseIds: delivery.response_ids || [] }\n },\n getAgentStatus: async (responseId) => (await arbi.assistant.getResponse(responseId)).status,\n definitions: support.definitions,\n references,\n imageGeneration: support.imageGeneration,\n houseTemplate,\n }),\n [\n arbi,\n author,\n members,\n ensureWorkspaceOpen,\n fontBaseUrl,\n queries,\n notify,\n onDocumentsChanged,\n support,\n references,\n houseTemplate,\n user?.name,\n ]\n )\n return adapter\n}\n"]}
1
+ {"version":3,"sources":["../src/connection/docx/support.ts","../src/connection/ConnectedWorkflowLauncher.tsx","../src/connection/docx/useConnectedDocxReferences.tsx","../src/connection/ConnectedWorkflowsTable.tsx","../src/connection/docx/useConnectedHouseTemplate.ts","../src/connection/docx/ConnectedNativeDocxEditor.tsx"],"names":["useHost","useListedDocuments","useConnectedTags","useMemo","buildWorkflowScopeSource","documentScopeLabels","useAgents","useBlocksEnvironment","useConnectedWorkspace","useUploadDocuments","useThumbnails","useRef","useState","useCallback","jsxs","Fragment","jsx","WorkflowDocumentsField","WorkflowLauncher","DocumentPicker","useArbi","buildDeepLinkUrl","parseDeepLinkPath","useWorkspaceUsers","workflowTriggerType","fmtDate","useWorkflows","useConnectedConversations","useUpdateWorkflow","useDeleteWorkflow","useRunWorkflow","useEffect","WorkflowsTable","useSetWorkspaceHouseTemplate","useWorkspaces","supportsHouseTemplates","workspaceHouseTemplateId","useHouseTemplateCandidates","contentPath","builtinHouseTemplate","isCandidate","useRegisterOpenDocument","NativeDocxEditor","useQueryClient","useOptionalDocumentTools","loadDocxFonts","refreshDocuments","fetchSavedSignature","storeSavedSignature"],"mappings":"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","file":"chunk-J4VP2PQJ.cjs","sourcesContent":["/**\n * What a host adds to the connected Word editor that the platform API alone cannot give: the\n * workspace's definitions (facts labelled \"Definitions\"), image generation (an assistant run), the\n * host's leave-page guard, and a comment to open the editor at. It is the host configuration's\n * `docx`; every field is optional, and without one the editor simply offers less (no Defined term,\n * no Generate image).\n */\n\nimport { useHost } from '../../provider/host'\nimport type { DefinitionSource } from '../../tags/definitions'\nimport type { DocxImageGeneration } from '../../docx/layout/GenerateImage'\n\nexport interface NativeDocxSupport {\n /** The workspace's definitions. Present: Insert offers Defined term and `@@` the type-ahead. */\n definitions?: () => Promise<DefinitionSource[]>\n /** The platform's image generation. Present: Insert offers Generate image. */\n imageGeneration?: DocxImageGeneration\n /** The open editor has (or no longer has) unsaved changes. */\n onDirtyChange?: (dirty: boolean) => void\n /** A comment thread to open when its document opens (a notification's link), as a hook. */\n useCommentTarget?: () => { documentId: string; commentId: string } | null\n}\n\nconst NO_SUPPORT: NativeDocxSupport = {}\nconst NO_TARGET = () => null\n\nexport function useNativeDocxSupport(): NativeDocxSupport {\n return useHost().docx ?? NO_SUPPORT\n}\n\n/** The comment thread to open with its document (none without the host's). */\nexport function useDocxCommentTarget(): { documentId: string; commentId: string } | null {\n const useTarget = useNativeDocxSupport().useCommentTarget ?? NO_TARGET\n return useTarget()\n}\n","/**\n * The workflow launcher bound to the connection: the open workspace's folders, labels and files\n * behind its scope and `documents` fields (files can be added right there), and the user's agents\n * behind \"Run as\". The host still says what a launch does (`onLaunch`): open a chat, start a task.\n */\n\nimport { useCallback, useMemo, useRef, useState } from 'react'\nimport { useAgents, useThumbnails, useUploadDocuments } from '@arbidocs/react'\nimport { WorkflowLauncher, type WorkflowLauncherProps } from '../agents/workflows/WorkflowLauncher'\nimport {\n WorkflowDocumentsField,\n type WorkflowDocumentsFieldLabels,\n type WorkflowFieldDocument,\n} from '../agents/workflows/WorkflowDocumentsField'\nimport type { WorkflowScopeSource } from '../agents/workflows/WorkflowConfigDialog'\nimport { buildWorkflowScopeSource, documentScopeLabels } from '../agents/workflows/workspaceScope'\nimport type { AgentOption } from '../agents/workflows/AgentSelect'\nimport type { WorkflowField, WorkflowScope } from '../agents/workflows/types'\nimport { useBlocksEnvironment } from '../provider/environment'\nimport { useConnectedWorkspace } from './ConnectionProvider'\nimport { useConnectedTags, useListedDocuments, type ConnectedDocument } from './workspaceData'\n\nconst IMAGE_FILE_TYPES = new Set(['png', 'jpg', 'jpeg', 'gif', 'bmp', 'tiff', 'webp'])\n\n/** A workspace document as a `documents` field offers it. */\nexport function toWorkflowFieldDocument(doc: ConnectedDocument): WorkflowFieldDocument {\n // Pages and tokens are a text-parsing concept: never meaningful for an image.\n const isImage = IMAGE_FILE_TYPES.has((doc.file_type ?? '').toLowerCase())\n return {\n id: doc.external_id,\n title: doc.doc_metadata?.title || doc.file_name || doc.external_id,\n fileName: doc.file_name,\n pages: isImage ? null : (doc.n_pages ?? null),\n tokens: isImage ? null : (doc.tokens ?? null),\n status: doc.status,\n isImage,\n }\n}\n\n/** The open workspace's folders and labels for a workflow's scope field. */\nexport function useConnectedWorkflowScopeSource(): WorkflowScopeSource {\n const { data: docs } = useListedDocuments()\n const { data: tags } = useConnectedTags()\n return useMemo(() => buildWorkflowScopeSource(docs, documentScopeLabels(tags)), [docs, tags])\n}\n\n/** The user's agents, for \"Run as\". */\nexport function useConnectedAgentOptions(): AgentOption[] {\n const { data: agents } = useAgents()\n return useMemo(\n () => (agents ?? []).map((a) => ({ id: a.external_id, label: a.given_name || a.email })),\n [agents]\n )\n}\n\nexport interface ConnectedWorkflowDocumentsFieldProps {\n field: WorkflowField\n value: WorkflowScope\n onChange: (value: WorkflowScope) => void\n /** Add files the host's way (its upload dialog). Absent: they are uploaded here. */\n onAddFiles?: (files?: File[]) => void\n labels?: Partial<WorkflowDocumentsFieldLabels>\n}\n\n/**\n * A workflow `documents` field over the open workspace's files: pick, add (or drop) files, see the\n * chosen images. A launcher's or a task composer's `renderDocuments`.\n */\nexport function ConnectedWorkflowDocumentsField({\n field,\n value,\n onChange,\n onAddFiles,\n labels,\n}: ConnectedWorkflowDocumentsFieldProps) {\n const { notify } = useBlocksEnvironment()\n const { ensureWorkspaceOpen } = useConnectedWorkspace()\n const { data: docs, loaded } = useListedDocuments()\n const uploadDocuments = useUploadDocuments()\n const documents = useMemo(() => docs.map(toWorkflowFieldDocument), [docs])\n const chosen = value.documents ?? []\n const { data: thumbnails } = useThumbnails(chosen, { enabled: (field.max ?? 1) > 1 })\n const input = useRef<HTMLInputElement>(null)\n const [adding, setAdding] = useState(false)\n\n const upload = useCallback(\n async (files: File[]) => {\n setAdding(true)\n try {\n await ensureWorkspaceOpen()\n // Each new document joins the shared list as it lands.\n for (const file of files) await uploadDocuments.mutateAsync({ files: [file] })\n } catch (error) {\n notify(error instanceof Error && error.message ? error.message : String(error), 'error')\n } finally {\n setAdding(false)\n }\n },\n [uploadDocuments, ensureWorkspaceOpen, notify]\n )\n\n return (\n <>\n {!onAddFiles && (\n <input\n ref={input}\n type=\"file\"\n multiple\n className=\"hidden\"\n aria-label=\"Add files\"\n data-testid=\"workflow-add-files-input\"\n onChange={(e) => {\n const files = Array.from(e.target.files ?? [])\n e.target.value = ''\n if (files.length) void upload(files)\n }}\n />\n )}\n <WorkflowDocumentsField\n field={field}\n value={value}\n onChange={onChange}\n documents={documents}\n loaded={loaded}\n thumbnailOf={(id) => thumbnails?.[id]}\n onAddFiles={\n onAddFiles ?? ((files) => (files?.length ? void upload(files) : input.current?.click()))\n }\n adding={adding}\n labels={labels}\n />\n </>\n )\n}\n\nexport interface ConnectedWorkflowLauncherProps extends Omit<\n WorkflowLauncherProps,\n 'scopeSource' | 'renderDocuments' | 'agents'\n> {\n /** Add files from a `documents` field the host's way (its upload dialog). Absent: uploaded here. */\n onAddFiles?: (files?: File[]) => void\n}\n\nexport function ConnectedWorkflowLauncher({\n onAddFiles,\n ...props\n}: ConnectedWorkflowLauncherProps) {\n const scopeSource = useConnectedWorkflowScopeSource()\n const agents = useConnectedAgentOptions()\n return (\n <WorkflowLauncher\n {...props}\n scopeSource={scopeSource}\n agents={agents}\n renderDocuments={(field, value, onChange) => (\n <ConnectedWorkflowDocumentsField\n field={field}\n value={value}\n onChange={onChange}\n onAddFiles={onAddFiles}\n />\n )}\n />\n )\n}\n","/**\n * The Word editor's references to the workspace's other documents: the documents and their\n * passages (the same parsed passages a fact's citations quote), the ARBI address of a passage\n * (`/wrk-…/doc-…/cnk-…`, the deep link that opens a document at a passage, so the link works from\n * Word too), and opening one wherever the host shows documents, highlighted like a citation.\n */\nimport { useMemo, useRef } from 'react'\nimport { useArbi } from '@arbidocs/react'\nimport type { DocxReferencesAdapter } from '../../docx/references/CrossReferences'\nimport { DocumentPicker } from '../../settings/DocumentPicker'\nimport { buildDeepLinkUrl, parseDeepLinkPath } from '../../lib/deep-link'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { toWorkflowFieldDocument } from '../ConnectedWorkflowLauncher'\nimport { useListedDocuments, type ConnectedDocument } from '../workspaceData'\n\ninterface ParsedChunk {\n content?: string | null\n metadata?: { chunk_ext_id?: string | null; page_number?: number | null } | null\n}\n\n/** Top-level documents only: an attachment opens with its parent. */\nconst isTopLevel = (doc: ConnectedDocument) => !doc.parent_ext_id\n\nfunction ReferencePicker({\n documents,\n selectedId,\n onSelect,\n}: {\n documents: ConnectedDocument[]\n selectedId: string | null\n onSelect: (documentId: string) => void\n}) {\n const groups = useMemo(() => {\n const docs = documents\n .filter(isTopLevel)\n .map(toWorkflowFieldDocument)\n .sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase()))\n return [{ id: 'all', heading: 'In this workspace', docs }]\n }, [documents])\n const selected = groups[0].docs.find((d) => d.id === selectedId)\n return (\n <DocumentPicker\n groups={groups}\n value={selectedId ?? ''}\n onValueChange={onSelect}\n selected={selected}\n labels={{ placeholder: 'Search documents…' }}\n />\n )\n}\n\nexport function useConnectedDocxReferences(): DocxReferencesAdapter {\n const arbi = useArbi()\n const { workspaceId } = useConnectedWorkspace()\n const { openDocument, runtimeConfig } = useBlocksEnvironment()\n const { data: documents } = useListedDocuments()\n // Read when called (the picker, a link): the list grows while the editor is open.\n const documentsRef = useRef(documents)\n documentsRef.current = documents\n return useMemo<DocxReferencesAdapter>(\n () => ({\n documents: async () =>\n documentsRef.current\n .filter(isTopLevel)\n .map((d) => ({ id: d.external_id, title: toWorkflowFieldDocument(d).title })),\n passages: async (documentId) => {\n const parsed = await arbi.documents.getParsedContent(documentId, 'final')\n return ((parsed.chunks ?? []) as ParsedChunk[]).flatMap((chunk) =>\n chunk.metadata?.chunk_ext_id && chunk.content?.trim()\n ? [\n {\n chunkId: chunk.metadata.chunk_ext_id,\n page: chunk.metadata.page_number ?? null,\n text: chunk.content,\n },\n ]\n : []\n )\n },\n linkFor: ({ documentId, chunkId, page }) => {\n const url = buildDeepLinkUrl(\n { workspaceId: workspaceId ?? undefined, documentId, chunkId },\n runtimeConfig.deploymentDomain\n )\n return page ? `${url}?page=${page}` : url\n },\n targetOf: (href) => {\n let url: URL\n try {\n url = new URL(href, window.location.origin)\n } catch {\n return null\n }\n const { documentId, chunkId } = parseDeepLinkPath(url.pathname)\n if (!documentId || !chunkId) return null\n const page = Number(url.searchParams.get('page')) || null\n return { documentId, chunkId, page }\n },\n open: ({ documentId, chunkId, page }) =>\n openDocument(documentId, { passageId: chunkId, page: page ?? undefined }),\n renderDocumentPicker: (onSelect, selectedId) => (\n <ReferencePicker\n documents={documentsRef.current}\n selectedId={selectedId}\n onSelect={onSelect}\n />\n ),\n }),\n [arbi, workspaceId, openDocument, runtimeConfig.deploymentDomain]\n )\n}\n","/**\n * The saved workflows bound to the connection: when each starts, its last run (a link to the thread\n * it created) and next run, who runs it, pause and resume, share, run now, delete (one or many), and\n * the workflow's history. The host opens a workflow (its builder) and its history; threads open\n * through the environment's `openConversation`, failures are told through its `notify`.\n */\n\nimport { useEffect, useMemo, useState } from 'react'\nimport {\n useAgents,\n useDeleteWorkflow,\n useRunWorkflow,\n useUpdateWorkflow,\n useWorkflows,\n useWorkspaceUsers,\n type WorkflowResponse,\n} from '@arbidocs/react'\nimport { WorkflowsTable, type WorkflowsTableProps } from '../agents/tasks/WorkflowsTable'\nimport { workflowTriggerType } from '../agents/tasks/workflowRows'\nimport { fmtDate } from '../lib/format'\nimport { useBlocksEnvironment } from '../provider/environment'\nimport { useConnectedWorkspace } from './ConnectionProvider'\nimport { useConnectedConversations } from './workspaceData'\n\n/** The viewer's role in the open workspace, and the workspace's members. */\nexport function useConnectedWorkspaceRole() {\n const { workspaceId, live, userId, ensureWorkspaceOpen } = useConnectedWorkspace()\n const { data: members = [] } = useWorkspaceUsers(workspaceId ?? undefined, {\n enabled: live && !!workspaceId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const role = members.find((m) => m.user.external_id === userId)?.role\n return {\n members,\n role,\n /** An owner or a collaborator edits, pauses, resumes and runs what is shared with the workspace. */\n canEditShared: role === 'owner' || role === 'collaborator',\n /** With an item's creator, the only one who deletes it. */\n isWorkspaceOwner: role === 'owner',\n }\n}\n\nexport interface ConnectedWorkflowsTableLabels {\n /** A change (pause, share, delete) that failed without a message. */\n updateFailed: string\n deleteTitle: string\n deleteOne: (name: string) => string\n deleteMany: (count: number) => string\n /** A run that failed: its history has the error report. */\n runFailed: string\n /** A run that created no thread. */\n noThread: string\n /** A document action that started (it has no thread): what is happening. */\n documentAction: (workflow: WorkflowResponse) => string\n untitledTask: string\n}\n\nexport const DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS: ConnectedWorkflowsTableLabels = {\n updateFailed: 'Could not update the workflow',\n deleteTitle: 'Delete workflow',\n deleteOne: (name) => `Delete “${name}”? Threads it already created stay.`,\n deleteMany: (count) => `Delete ${count} workflows? Threads they already created stay.`,\n runFailed: 'The workflow failed. You can send an error report from its history.',\n noThread: 'The workflow did not create a thread.',\n documentAction: (workflow) =>\n workflow.action?.type === 'email_documents'\n ? 'Preparing your document email'\n : 'Reviewing documents',\n untitledTask: 'Untitled thread',\n}\n\ntype TableProps = WorkflowsTableProps<WorkflowResponse>\n\nexport interface ConnectedWorkflowsTableProps extends Omit<\n TableProps,\n | 'workflows'\n | 'isLoading'\n | 'busyId'\n | 'describeTrigger'\n | 'formatDate'\n | 'onToggleActive'\n | 'onToggleShared'\n | 'onDelete'\n | 'onDeleteMany'\n | 'onToggleActiveMany'\n | 'onRun'\n | 'onOpenThread'\n | 'lastRuns'\n | 'agentNames'\n | 'taskNames'\n | 'canEditShared'\n | 'isWorkspaceOwner'\n> {\n /** Which saved workflows to list (e.g. those on a schedule). Default: all. */\n filter?: (workflow: WorkflowResponse) => boolean\n /** When a workflow starts, in the host's words. Default: its trigger type. */\n describeTrigger?: TableProps['describeTrigger']\n formatDate?: TableProps['formatDate']\n connectedLabels?: Partial<ConnectedWorkflowsTableLabels>\n}\n\nconst messageOf = (error: unknown) => (error instanceof Error ? error.message : '')\n\nexport function ConnectedWorkflowsTable({\n filter,\n describeTrigger = (w) => workflowTriggerType(w).replaceAll('_', ' '),\n formatDate = fmtDate,\n onViewRuns,\n connectedLabels,\n ...tableProps\n}: ConnectedWorkflowsTableProps) {\n const l = { ...DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, ...connectedLabels }\n const { notify, confirm, openConversation } = useBlocksEnvironment()\n const { canEditShared, isWorkspaceOwner } = useConnectedWorkspaceRole()\n const { data: saved = [], isLoading } = useWorkflows({ live: true })\n const { data: conversations, refetch } = useConnectedConversations({ live: true })\n const { data: agents = [] } = useAgents()\n const update = useUpdateWorkflow()\n const remove = useDeleteWorkflow()\n const run = useRunWorkflow()\n const [busyId, setBusyId] = useState<string | null>(null)\n\n const workflows = useMemo(() => (filter ? saved.filter(filter) : saved), [saved, filter])\n // A clock or an event fired a workflow: the thread it created is new to the conversation list.\n const firingStamp = saved.map((w) => `${w.external_id}:${w.last_fired_at ?? ''}`).join('|')\n useEffect(() => {\n void refetch?.()\n }, [firingStamp, refetch])\n\n const lastRuns = useMemo(() => {\n const out: NonNullable<TableProps['lastRuns']> = {}\n for (const c of conversations) {\n const id = c.workflow_ext_id\n if (id && (!out[id] || Date.parse(c.created_at) > Date.parse(out[id].at)))\n out[id] = { conversationId: c.external_id, at: c.created_at, threadStatus: c.status }\n }\n return out\n }, [conversations])\n const agentNames = useMemo(\n () => Object.fromEntries(agents.map((a) => [a.external_id, a.given_name || a.email])),\n [agents]\n )\n const taskNames = useMemo(\n () =>\n Object.fromEntries(\n conversations\n .filter((c) => c.status != null)\n .map((c) => [c.external_id, c.title || l.untitledTask])\n ),\n [conversations, l.untitledTask]\n )\n\n const act = async (workflow: WorkflowResponse, action: () => Promise<unknown>) => {\n setBusyId(workflow.external_id)\n try {\n await action()\n } catch (error) {\n notify(messageOf(error) || l.updateFailed, 'error')\n } finally {\n setBusyId(null)\n }\n }\n const setActive = (workflow: WorkflowResponse, active: boolean) =>\n act(workflow, () => update.mutateAsync({ workflowId: workflow.external_id, patch: { active } }))\n const deleteAll = async (items: WorkflowResponse[]) => {\n if (!items.length) return\n const ok = await confirm({\n title: l.deleteTitle,\n message: items.length === 1 ? l.deleteOne(items[0].name) : l.deleteMany(items.length),\n })\n if (!ok) return\n for (const workflow of items)\n await act(workflow, () => remove.mutateAsync(workflow.external_id))\n }\n\n return (\n <WorkflowsTable\n {...tableProps}\n workflows={workflows}\n isLoading={isLoading}\n busyId={busyId}\n describeTrigger={describeTrigger}\n formatDate={formatDate}\n agentNames={agentNames}\n taskNames={taskNames}\n lastRuns={lastRuns}\n canEditShared={canEditShared}\n isWorkspaceOwner={isWorkspaceOwner}\n onOpenThread={(conversationId) => openConversation(conversationId)}\n onViewRuns={onViewRuns}\n onToggleActive={(workflow, active) => void setActive(workflow, active)}\n onToggleActiveMany={(items, active) => {\n void (async () => {\n for (const workflow of items) await setActive(workflow, active)\n })()\n }}\n onToggleShared={(workflow, shared) =>\n void act(workflow, () =>\n update.mutateAsync({ workflowId: workflow.external_id, patch: { shared } })\n )\n }\n onDelete={(workflow) => void deleteAll([workflow])}\n onDeleteMany={(items) => void deleteAll(items)}\n onRun={(workflow) =>\n void act(workflow, async () => {\n const result = await run.mutateAsync(workflow.external_id)\n if (result.conversation_ext_id) openConversation(result.conversation_ext_id)\n if (result.error) {\n onViewRuns?.(workflow)\n notify(l.runFailed, 'error')\n return\n }\n if (result.execution_id && !result.conversation_ext_id) {\n // A document action runs without a thread: its history shows how it goes.\n onViewRuns?.(workflow)\n notify(l.documentAction(workflow), 'success')\n return\n }\n if (!result.conversation_ext_id) throw new Error(l.noThread)\n })\n }\n />\n )\n}\n","/**\n * The house template for the open workspace: its own (a document of the workspace), else the\n * deployment's default, else ARBI's built-in legal template. A workspace owner can make a document\n * the house template once the server supports it.\n */\nimport { useMemo } from 'react'\nimport {\n supportsHouseTemplates,\n useArbi,\n useHouseTemplateCandidates,\n useSetWorkspaceHouseTemplate,\n useWorkspaces,\n workspaceHouseTemplateId,\n} from '@arbidocs/react'\nimport { contentPath } from '../../docx/NativeDocxEditor'\nimport {\n builtinHouseTemplate,\n type HouseTemplate,\n type HouseTemplateHost,\n} from '../../docx/template/HouseTemplate'\nimport { isCandidate } from '../../docx/template/candidates'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { useConnectedWorkspaceRole } from '../ConnectedWorkflowsTable'\n\nexport function useConnectedHouseTemplate(): HouseTemplateHost {\n const arbi = useArbi()\n const { mutateAsync: setWorkspaceTemplate } = useSetWorkspaceHouseTemplate()\n const { workspaceId, live, ensureWorkspaceOpen } = useConnectedWorkspace()\n const { data: workspaces } = useWorkspaces({ enabled: live })\n const workspace = workspaces?.find((w) => w.external_id === workspaceId)\n const { isWorkspaceOwner } = useConnectedWorkspaceRole()\n const supported = supportsHouseTemplates(workspace)\n const templateId = workspaceHouseTemplateId(workspace)\n // Only an eligible document (shared, Word, here or in a public workspace) is offered as the template.\n const { data: candidates } = useHouseTemplateCandidates(\n workspaceId,\n supported && isWorkspaceOwner\n )\n return useMemo<HouseTemplateHost>(\n () => ({\n load: async (): Promise<HouseTemplate> => {\n if (templateId) {\n await ensureWorkspaceOpen()\n const response = await arbi.editor.request(contentPath(templateId))\n const [record] = await arbi.documents.get([templateId]).catch(() => [])\n return {\n bytes: new Uint8Array(await response.arrayBuffer()),\n name: record?.file_name ?? 'House template.docx',\n source: 'workspace',\n documentId: templateId,\n }\n }\n if (supported) {\n const deployment = await arbi.houseTemplates.deployment()\n if (deployment) return { ...deployment, source: 'deployment' }\n }\n return builtinHouseTemplate()\n },\n setFromDocument:\n supported && isWorkspaceOwner\n ? async (documentId) => {\n await ensureWorkspaceOpen()\n await setWorkspaceTemplate(documentId)\n }\n : undefined,\n isEligible: (documentId) => isCandidate(candidates, documentId),\n }),\n [\n arbi,\n setWorkspaceTemplate,\n supported,\n templateId,\n isWorkspaceOwner,\n candidates,\n ensureWorkspaceOpen,\n ]\n )\n}\n","import { useMemo, useRef, useState } from 'react'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { refreshDocuments, useArbi, useWorkspaceUsers } from '@arbidocs/react'\nimport {\n fetchSavedSignature,\n storeSavedSignature,\n useOptionalDocumentTools,\n} from '@arbidocs/react/document-tools'\nimport {\n NativeDocxEditor,\n type NativeDocxAdapter,\n type NativeDocxEditorProps,\n} from '../../docx/NativeDocxEditor'\nimport { loadDocxFonts } from '../../docx/fonts'\nimport { useRegisterOpenDocument } from '@arbidocs/react/shell'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { useDocxCommentTarget, useNativeDocxSupport } from './support'\nimport { useConnectedDocxReferences } from './useConnectedDocxReferences'\nimport { useConnectedHouseTemplate } from './useConnectedHouseTemplate'\n\nexport type ConnectedNativeDocxEditorProps = Omit<NativeDocxEditorProps, 'adapter'> & {\n fontBaseUrl?: string\n}\n\n/**\n * The native Word editor on the signed-in ARBI session, under any host (`defaultHost`'s sign-in\n * layer, or the host's own `arbi` and session state). Until a live session has opened, a failure to\n * open one falls back to the saved copy, read-only, so the document is still readable; later token\n * refreshes are not guarded (switching modes would drop unsaved edits).\n */\nexport function ConnectedNativeDocxEditor({\n fontBaseUrl = '/native-docx/fonts',\n ...props\n}: ConnectedNativeDocxEditorProps) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n const { workspaceId } = useConnectedWorkspace()\n const commentTarget = useDocxCommentTarget()\n const [openFailed, setOpenFailed] = useState(false)\n const hasOpened = useRef(false)\n const guardedAdapter = useMemo<NativeDocxAdapter>(\n () => ({\n ...adapter,\n open: async (documentId) => {\n try {\n const session = await adapter.open(documentId)\n hasOpened.current = true\n return session\n } catch (error) {\n if (!hasOpened.current) setOpenFailed(true)\n throw error\n }\n },\n }),\n [adapter]\n )\n // Drafting mode: the saved Word document being edited is what the chat is about. A history\n // snapshot, a streamed preview, an unsaved draft and an embedded body field are not.\n const live = !props.snapshot && !props.stream && !props.draftContent && !props.compact\n useRegisterOpenDocument({ documentId: live ? props.documentId : null, workspaceId })\n const initialCommentId =\n props.initialCommentId ??\n (commentTarget?.documentId === props.documentId ? commentTarget.commentId : undefined)\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n {openFailed && (\n <p role=\"status\" className=\"text-muted-foreground border-b px-3 py-2 text-xs\">\n Co-editing isn&apos;t available for this document right now, so this is a read-only copy\n of the last saved version.\n </p>\n )}\n <div className=\"min-h-0 flex-1\">\n <NativeDocxEditor\n {...props}\n snapshot={props.snapshot || openFailed}\n initialCommentId={initialCommentId}\n adapter={guardedAdapter}\n />\n </div>\n </div>\n )\n}\n\n/** The access token changed (a refresh): the live room is told the new one. */\nfunction tokenChanges(arbi: ReturnType<typeof useArbi>) {\n return (listener: () => void) => {\n if (!arbi.isLoggedIn) return () => {}\n const session = arbi.getClient().session\n let token = session.getState().accessToken\n return session.subscribe((state) => {\n if (state.accessToken === token) return\n token = state.accessToken\n listener()\n })\n }\n}\n\n/**\n * The native Word adapter on the signed-in session: the editor transport, the people to mention,\n * cross-references, the house template, and the host's extras (its host config's `docx`).\n */\nexport function useConnectedNativeDocxAdapter(fontBaseUrl = '/native-docx/fonts') {\n const arbi = useArbi()\n const { workspaceId, live, user, ensureWorkspaceOpen } = useConnectedWorkspace()\n const queries = useQueryClient()\n const { notify } = useBlocksEnvironment()\n const tools = useOptionalDocumentTools()\n const support = useNativeDocxSupport()\n const references = useConnectedDocxReferences()\n const houseTemplate = useConnectedHouseTemplate()\n const { data: members } = useWorkspaceUsers(workspaceId ?? undefined, {\n enabled: live && !!workspaceId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const onDocumentsChanged = tools?.onDocumentsChanged\n // Tracked changes and comments are authored by the user's first name.\n const author = (live && arbi.user.profile()?.givenName) || user?.name || 'You'\n const adapter = useMemo<NativeDocxAdapter>(\n () => ({\n request: async (path, options) => {\n await ensureWorkspaceOpen()\n return arbi.editor.request(path, options)\n },\n open: async (id) => {\n await ensureWorkspaceOpen()\n return (\n await arbi.editor.request(`/${encodeURIComponent(id)}/session`, { method: 'POST' })\n ).json()\n },\n save: async (id, state) =>\n (\n await arbi.editor.request(`/${encodeURIComponent(id)}/save`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ state }),\n })\n ).json(),\n loadFonts: () => loadDocxFonts(fontBaseUrl),\n baseUrl: arbi.getConnectionInfo()?.baseUrl || window.location.origin,\n author,\n subscribeTokenChanges: tokenChanges(arbi),\n onDirtyChange: support.onDirtyChange,\n // The document's row moves to the saved version in place: through the host when it keeps\n // the lists (its document tools refresh them), else here.\n onVersionSaved: async (id) => {\n await (onDocumentsChanged\n ? onDocumentsChanged([id], 'version')\n : refreshDocuments(queries, arbi, [id]))\n },\n notify,\n mentions: members?.map(({ user: member }) => ({\n id: member.external_id,\n name: [member.given_name, member.family_name].filter(Boolean).join(' '),\n kind: member.external_id.startsWith('agt-') ? 'agent' : 'human',\n })),\n savedSignature: {\n load: () => fetchSavedSignature(arbi.getClient().fetch),\n save: (signature) => storeSavedSignature(arbi.getClient().fetch, signature),\n defaultName: user?.name ?? '',\n },\n signatureSigners: members\n ?.filter(({ user: member }) => member.external_id.startsWith('usr-'))\n .map(({ user: member }) => ({\n email: member.email,\n name: [member.given_name, member.family_name].filter(Boolean).join(' '),\n })),\n requestAgent: async (id, request) => {\n const response = await arbi.editor.request(`/${encodeURIComponent(id)}/mentions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n comment_id: request.commentId,\n instruction: request.instruction,\n request_id: request.requestId,\n recipient_ids: request.recipientIds,\n }),\n })\n const delivery = (await response.json()) as { response_ids: string[] }\n notify('Mention delivered.', 'success')\n return { responseIds: delivery.response_ids || [] }\n },\n getAgentStatus: async (responseId) => (await arbi.assistant.getResponse(responseId)).status,\n definitions: support.definitions,\n references,\n imageGeneration: support.imageGeneration,\n houseTemplate,\n }),\n [\n arbi,\n author,\n members,\n ensureWorkspaceOpen,\n fontBaseUrl,\n queries,\n notify,\n onDocumentsChanged,\n support,\n references,\n houseTemplate,\n user?.name,\n ]\n )\n return adapter\n}\n"]}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { useShellBottomInset, ToolButton, Shell } from './chunk-7XF5SFJ2.js';
3
- import { DEFAULT_STEP_KIND_LABELS, STEP_KIND_ICONS, StepChip, StepDocumentButton, useMentionAutocomplete, useElementSize, rootFontSizePx } from './chunk-DV25UPJ7.js';
4
- import { observeResize } from './chunk-NPLYHR2E.js';
5
- import { MentionMenu } from './chunk-GAGYAHYO.js';
3
+ import { DEFAULT_STEP_KIND_LABELS, STEP_KIND_ICONS, StepChip, StepDocumentButton, useMentionAutocomplete, useElementSize, rootFontSizePx } from './chunk-THNTNAYI.js';
6
4
  import { formatCount } from './chunk-5VYJP6XD.js';
7
- import { useIntentRequest, conversationStartRequest } from './chunk-SSRFSSIT.js';
5
+ import { MentionMenu } from './chunk-GAGYAHYO.js';
6
+ import { observeResize } from './chunk-NPLYHR2E.js';
7
+ import { useIntentRequest, conversationStartRequest } from './chunk-TGVBLXLV.js';
8
8
  import { testIdOr } from './chunk-7F6CBP3Z.js';
9
9
  import { forwardRef, useState, useRef, useCallback, useEffect, useMemo, useSyncExternalStore, useLayoutEffect } from 'react';
10
10
  import { FileText, ChevronDown, Pencil, ChevronRight, Sparkles, ChevronUp, MoreHorizontal, RotateCw, AlertCircle, ArrowLeft, Edit3, Send, Loader2, Square, Mic, ArrowDown, MessagesSquare, Bot, GanttChartSquare, ArrowUpRight, Upload, MessageSquarePlus, Trash2, PanelRight, MessageSquare, X, FileUp } from 'lucide-react';
@@ -2524,5 +2524,5 @@ function AssistantDock({
2524
2524
  }
2525
2525
 
2526
2526
  export { AssistantDock, AssistantDockToggle, AssistantModeToggle, ChatDocuments, ChatMessageContent, ChatPage, ChatThreadList, ChatThreadSelect, CitationMark, Composer, ComposerBranchingNotice, ComposerContainer, ComposerDock, ComposerFrame, ComposerInput, ComposerRoot, ComposerSend, ComposerToolbar, ComposerVoiceButton, ContextChip, ConversationEmpty, DEFAULT_ASSISTANT_MODE_TOGGLE_LABELS, DEFAULT_CHAT_PAGE_LABELS, DEFAULT_COMPOSER_LABELS, DEFAULT_CONVERSATION_EMPTY_LABELS, DEFAULT_MESSAGE_ALERT_LABELS, DEFAULT_MESSAGE_LABELS, DEFAULT_MESSAGE_LIST_LABELS, DEFAULT_WORKFLOW_STEP_CHIP_LABELS, Message, MessageActionButton, MessageActionMenu, MessageAlert, MessageAuthor, MessageBody, MessageBubble, MessageByline, MessageContent, MessageFooter, MessageList, MessageListBanner, MessageListEmpty, MessageListRoot, MessageListRow, MessageListRows, MessageListStatus, MessageListTail, MessageNarration, MessageRoot, MessageSources, MessageSubagentBadge, ScrollToBottom, SourceChip, WorkflowStepChip, toSpeakableText, useAssistantDock, useChatSurface, useRegisterEmbeddedChat, useStartRequestedConversation, useStreamAnnouncement };
2527
- //# sourceMappingURL=chunk-TY76UEFK.js.map
2528
- //# sourceMappingURL=chunk-TY76UEFK.js.map
2527
+ //# sourceMappingURL=chunk-JLJVEQFN.js.map
2528
+ //# sourceMappingURL=chunk-JLJVEQFN.js.map