@arbidocs/blocks 0.5.113 → 0.5.115

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 (211) hide show
  1. package/dist/{ConnectedCallDock-VCJ6Q7WE.cjs → ConnectedCallDock-WER7R222.cjs} +27 -27
  2. package/dist/{ConnectedCallDock-VCJ6Q7WE.cjs.map → ConnectedCallDock-WER7R222.cjs.map} +1 -1
  3. package/dist/{ConnectedCallRoom-BUI3ILJD.cjs → ConnectedCallRoom-T7OBQTYP.cjs} +19 -19
  4. package/dist/{ConnectedCallRoom-BUI3ILJD.cjs.map → ConnectedCallRoom-T7OBQTYP.cjs.map} +1 -1
  5. package/dist/{ConnectedMailInviteCard-P65MQM6J.cjs → ConnectedMailInviteCard-EINB3THA.cjs} +5 -5
  6. package/dist/{ConnectedMailInviteCard-P65MQM6J.cjs.map → ConnectedMailInviteCard-EINB3THA.cjs.map} +1 -1
  7. package/dist/{ConnectedNativeDocxComparison-JO2H4QIP.cjs → ConnectedNativeDocxComparison-YXMYJWXY.cjs} +24 -24
  8. package/dist/{ConnectedNativeDocxComparison-JO2H4QIP.cjs.map → ConnectedNativeDocxComparison-YXMYJWXY.cjs.map} +1 -1
  9. package/dist/{ConnectedProductionSetDialog-BSPM4NQC.cjs → ConnectedProductionSetDialog-LHB4VQWC.cjs} +9 -9
  10. package/dist/{ConnectedProductionSetDialog-BSPM4NQC.cjs.map → ConnectedProductionSetDialog-LHB4VQWC.cjs.map} +1 -1
  11. package/dist/{ConnectedStreamedWordArtifact-DMQEJFCA.cjs → ConnectedStreamedWordArtifact-2RTCHVPI.cjs} +24 -24
  12. package/dist/{ConnectedStreamedWordArtifact-DMQEJFCA.cjs.map → ConnectedStreamedWordArtifact-2RTCHVPI.cjs.map} +1 -1
  13. package/dist/{DocumentReviewCard-UBE2DVAC.cjs → DocumentReviewCard-ZSBZBGFK.cjs} +23 -23
  14. package/dist/{DocumentReviewCard-UBE2DVAC.cjs.map → DocumentReviewCard-ZSBZBGFK.cjs.map} +1 -1
  15. package/dist/{FilesViewerDialog-EBYRA3ZZ.cjs → FilesViewerDialog-I5QIHQZT.cjs} +55 -55
  16. package/dist/{FilesViewerDialog-EBYRA3ZZ.cjs.map → FilesViewerDialog-I5QIHQZT.cjs.map} +1 -1
  17. package/dist/{NativeDocxEditor-EJEIJDOC.cjs → NativeDocxEditor-H6TAEVGY.cjs} +6 -6
  18. package/dist/{NativeDocxEditor-EJEIJDOC.cjs.map → NativeDocxEditor-H6TAEVGY.cjs.map} +1 -1
  19. package/dist/{WorkspaceTableView-BO2OJO7A.cjs → WorkspaceTableView-J3C6VH4T.cjs} +9 -9
  20. package/dist/{WorkspaceTableView-BO2OJO7A.cjs.map → WorkspaceTableView-J3C6VH4T.cjs.map} +1 -1
  21. package/dist/agents/index.cjs +298 -298
  22. package/dist/{ai-EMNMGDAN.cjs → ai-IM4A23YT.cjs} +27 -27
  23. package/dist/ai-IM4A23YT.cjs.map +1 -0
  24. package/dist/calls/index.cjs +149 -149
  25. package/dist/chat/DraftingDocChip.d.ts +3 -1
  26. package/dist/chat/DraftingDocChip.js +7 -4
  27. package/dist/chat/DraftingDocChip.js.map +2 -2
  28. package/dist/chat/index.cjs +65 -65
  29. package/dist/{chunk-AJVZYRAJ.cjs → chunk-24EDG4PC.cjs} +68 -68
  30. package/dist/{chunk-AJVZYRAJ.cjs.map → chunk-24EDG4PC.cjs.map} +1 -1
  31. package/dist/{chunk-GTTDJMWX.cjs → chunk-325GVZE6.cjs} +6 -6
  32. package/dist/{chunk-GTTDJMWX.cjs.map → chunk-325GVZE6.cjs.map} +1 -1
  33. package/dist/{chunk-HM5L4SBC.cjs → chunk-3A7QWUAW.cjs} +3 -3
  34. package/dist/{chunk-HM5L4SBC.cjs.map → chunk-3A7QWUAW.cjs.map} +1 -1
  35. package/dist/{chunk-ET3NVY27.cjs → chunk-42TURFHF.cjs} +5 -5
  36. package/dist/{chunk-ET3NVY27.cjs.map → chunk-42TURFHF.cjs.map} +1 -1
  37. package/dist/{chunk-J2RXQVVF.cjs → chunk-4EK7TAP7.cjs} +5 -5
  38. package/dist/{chunk-J2RXQVVF.cjs.map → chunk-4EK7TAP7.cjs.map} +1 -1
  39. package/dist/{chunk-BHTEKYWJ.cjs → chunk-557MJ4IH.cjs} +23 -23
  40. package/dist/{chunk-BHTEKYWJ.cjs.map → chunk-557MJ4IH.cjs.map} +1 -1
  41. package/dist/{chunk-Y45VRNSZ.cjs → chunk-57NHXEU2.cjs} +4 -4
  42. package/dist/{chunk-Y45VRNSZ.cjs.map → chunk-57NHXEU2.cjs.map} +1 -1
  43. package/dist/{chunk-MUA5PJGX.cjs → chunk-5SKHK3BG.cjs} +4 -4
  44. package/dist/{chunk-MUA5PJGX.cjs.map → chunk-5SKHK3BG.cjs.map} +1 -1
  45. package/dist/{chunk-AFXDLDPU.cjs → chunk-5UYFLFNR.cjs} +4 -4
  46. package/dist/{chunk-AFXDLDPU.cjs.map → chunk-5UYFLFNR.cjs.map} +1 -1
  47. package/dist/{chunk-OTG5T5Z5.cjs → chunk-6UTKM5AB.cjs} +5 -5
  48. package/dist/{chunk-OTG5T5Z5.cjs.map → chunk-6UTKM5AB.cjs.map} +1 -1
  49. package/dist/{chunk-H5OLHP2U.cjs → chunk-7OPOPYV6.cjs} +3 -3
  50. package/dist/{chunk-H5OLHP2U.cjs.map → chunk-7OPOPYV6.cjs.map} +1 -1
  51. package/dist/{chunk-MQANCZOD.cjs → chunk-A3T3IC3K.cjs} +78 -78
  52. package/dist/{chunk-MQANCZOD.cjs.map → chunk-A3T3IC3K.cjs.map} +1 -1
  53. package/dist/{chunk-5VCID67B.cjs → chunk-B3LZITVF.cjs} +12 -12
  54. package/dist/{chunk-5VCID67B.cjs.map → chunk-B3LZITVF.cjs.map} +1 -1
  55. package/dist/{chunk-OZWYCRRK.cjs → chunk-BQ5RIWWT.cjs} +30 -30
  56. package/dist/{chunk-OZWYCRRK.cjs.map → chunk-BQ5RIWWT.cjs.map} +1 -1
  57. package/dist/chunk-CIHERNDO.cjs +18 -0
  58. package/dist/{chunk-L52N2LVE.cjs.map → chunk-CIHERNDO.cjs.map} +1 -1
  59. package/dist/{chunk-NP4EWPIP.cjs → chunk-CJYWHUZR.cjs} +6 -6
  60. package/dist/{chunk-NP4EWPIP.cjs.map → chunk-CJYWHUZR.cjs.map} +1 -1
  61. package/dist/{chunk-6W4X4EFI.cjs → chunk-CMGNRMPA.cjs} +5 -5
  62. package/dist/{chunk-6W4X4EFI.cjs.map → chunk-CMGNRMPA.cjs.map} +1 -1
  63. package/dist/{chunk-YONJRX6N.cjs → chunk-CPG7II4E.cjs} +28 -28
  64. package/dist/{chunk-YONJRX6N.cjs.map → chunk-CPG7II4E.cjs.map} +1 -1
  65. package/dist/{chunk-GGBNUDLK.cjs → chunk-CPR6EHG7.cjs} +70 -70
  66. package/dist/{chunk-GGBNUDLK.cjs.map → chunk-CPR6EHG7.cjs.map} +1 -1
  67. package/dist/{chunk-DZWIVRYP.cjs → chunk-DDIW4HLU.cjs} +36 -36
  68. package/dist/{chunk-DZWIVRYP.cjs.map → chunk-DDIW4HLU.cjs.map} +1 -1
  69. package/dist/{chunk-Z3VNKPPH.cjs → chunk-E3Y7RI3J.cjs} +4 -4
  70. package/dist/{chunk-Z3VNKPPH.cjs.map → chunk-E3Y7RI3J.cjs.map} +1 -1
  71. package/dist/{chunk-WT7CCCIN.cjs → chunk-GNX3FBBX.cjs} +4 -4
  72. package/dist/{chunk-WT7CCCIN.cjs.map → chunk-GNX3FBBX.cjs.map} +1 -1
  73. package/dist/{chunk-IIWJQEBC.cjs → chunk-H7PHOTX2.cjs} +10 -10
  74. package/dist/{chunk-IIWJQEBC.cjs.map → chunk-H7PHOTX2.cjs.map} +1 -1
  75. package/dist/{chunk-LQHXUSWZ.cjs → chunk-HQDR43JC.cjs} +6 -6
  76. package/dist/{chunk-LQHXUSWZ.cjs.map → chunk-HQDR43JC.cjs.map} +1 -1
  77. package/dist/{chunk-6LQN4BMX.cjs → chunk-IDCD5TEZ.cjs} +5 -5
  78. package/dist/{chunk-6LQN4BMX.cjs.map → chunk-IDCD5TEZ.cjs.map} +1 -1
  79. package/dist/{chunk-INEPPS4H.cjs → chunk-IW7CDJTA.cjs} +4 -4
  80. package/dist/{chunk-INEPPS4H.cjs.map → chunk-IW7CDJTA.cjs.map} +1 -1
  81. package/dist/{chunk-6YOZKXV6.cjs → chunk-JR2YSBD5.cjs} +4 -4
  82. package/dist/{chunk-6YOZKXV6.cjs.map → chunk-JR2YSBD5.cjs.map} +1 -1
  83. package/dist/{chunk-ZFKWCGA5.cjs → chunk-JV5TVUOU.cjs} +4 -4
  84. package/dist/{chunk-ZFKWCGA5.cjs.map → chunk-JV5TVUOU.cjs.map} +1 -1
  85. package/dist/{chunk-IFOGBMAE.cjs → chunk-KLMNCBLY.cjs} +9 -6
  86. package/dist/chunk-KLMNCBLY.cjs.map +1 -0
  87. package/dist/{chunk-JDI7E4RI.cjs → chunk-KTQOGT2L.cjs} +14 -14
  88. package/dist/{chunk-JDI7E4RI.cjs.map → chunk-KTQOGT2L.cjs.map} +1 -1
  89. package/dist/{chunk-OKHKJ5ML.cjs → chunk-KXIRVKCJ.cjs} +11 -11
  90. package/dist/{chunk-OKHKJ5ML.cjs.map → chunk-KXIRVKCJ.cjs.map} +1 -1
  91. package/dist/{chunk-4ED7CNOX.cjs → chunk-M6IKVKU5.cjs} +40 -3
  92. package/dist/chunk-M6IKVKU5.cjs.map +1 -0
  93. package/dist/{chunk-XKDUPU7B.cjs → chunk-NJCK6V6U.cjs} +4 -4
  94. package/dist/{chunk-XKDUPU7B.cjs.map → chunk-NJCK6V6U.cjs.map} +1 -1
  95. package/dist/{chunk-OVKJ7OVZ.cjs → chunk-NNUK5ZM7.cjs} +6 -6
  96. package/dist/{chunk-OVKJ7OVZ.cjs.map → chunk-NNUK5ZM7.cjs.map} +1 -1
  97. package/dist/{chunk-MJHIBCF7.cjs → chunk-NY3YUCOW.cjs} +4 -4
  98. package/dist/{chunk-MJHIBCF7.cjs.map → chunk-NY3YUCOW.cjs.map} +1 -1
  99. package/dist/{chunk-R4TP3VS3.cjs → chunk-OEREKAAP.cjs} +101 -101
  100. package/dist/{chunk-R4TP3VS3.cjs.map → chunk-OEREKAAP.cjs.map} +1 -1
  101. package/dist/{chunk-ENUZ35NR.cjs → chunk-P5AQYC4D.cjs} +4 -4
  102. package/dist/{chunk-ENUZ35NR.cjs.map → chunk-P5AQYC4D.cjs.map} +1 -1
  103. package/dist/{chunk-ZZZ6AZDR.cjs → chunk-P77YTTJ3.cjs} +4 -4
  104. package/dist/{chunk-ZZZ6AZDR.cjs.map → chunk-P77YTTJ3.cjs.map} +1 -1
  105. package/dist/{chunk-5I2VUNZR.cjs → chunk-PGJYD67F.cjs} +6 -6
  106. package/dist/{chunk-5I2VUNZR.cjs.map → chunk-PGJYD67F.cjs.map} +1 -1
  107. package/dist/{chunk-BYN7UMC5.cjs → chunk-PL7HUTM3.cjs} +8 -8
  108. package/dist/{chunk-BYN7UMC5.cjs.map → chunk-PL7HUTM3.cjs.map} +1 -1
  109. package/dist/{chunk-T7J352JD.cjs → chunk-QMIHLJMH.cjs} +6 -6
  110. package/dist/{chunk-T7J352JD.cjs.map → chunk-QMIHLJMH.cjs.map} +1 -1
  111. package/dist/{chunk-WJP6ICDM.cjs → chunk-R7CJEIA5.cjs} +4 -4
  112. package/dist/{chunk-WJP6ICDM.cjs.map → chunk-R7CJEIA5.cjs.map} +1 -1
  113. package/dist/{chunk-IE677C4I.cjs → chunk-SBWIA4PL.cjs} +21 -21
  114. package/dist/{chunk-IE677C4I.cjs.map → chunk-SBWIA4PL.cjs.map} +1 -1
  115. package/dist/{chunk-GVTKFVXH.cjs → chunk-SGYSDABK.cjs} +6 -6
  116. package/dist/{chunk-GVTKFVXH.cjs.map → chunk-SGYSDABK.cjs.map} +1 -1
  117. package/dist/{chunk-PIB7K7HI.cjs → chunk-T23UTIRI.cjs} +8 -8
  118. package/dist/{chunk-PIB7K7HI.cjs.map → chunk-T23UTIRI.cjs.map} +1 -1
  119. package/dist/{chunk-E4BLRF2L.cjs → chunk-TDO5UWXF.cjs} +5 -5
  120. package/dist/{chunk-E4BLRF2L.cjs.map → chunk-TDO5UWXF.cjs.map} +1 -1
  121. package/dist/{chunk-U5T46QCS.cjs → chunk-TKHCIHE2.cjs} +3 -3
  122. package/dist/chunk-TKHCIHE2.cjs.map +1 -0
  123. package/dist/{chunk-4IOYQLKG.cjs → chunk-TP5PGWIO.cjs} +3 -3
  124. package/dist/{chunk-4IOYQLKG.cjs.map → chunk-TP5PGWIO.cjs.map} +1 -1
  125. package/dist/{chunk-A4Z5CTLF.cjs → chunk-TT4IF52H.cjs} +39 -39
  126. package/dist/{chunk-A4Z5CTLF.cjs.map → chunk-TT4IF52H.cjs.map} +1 -1
  127. package/dist/{chunk-WIAWHETB.cjs → chunk-ULPTSXXO.cjs} +4 -4
  128. package/dist/{chunk-WIAWHETB.cjs.map → chunk-ULPTSXXO.cjs.map} +1 -1
  129. package/dist/{chunk-K5MYEWD5.cjs → chunk-UZHWXKS6.cjs} +7 -7
  130. package/dist/{chunk-K5MYEWD5.cjs.map → chunk-UZHWXKS6.cjs.map} +1 -1
  131. package/dist/{chunk-XW524KUX.cjs → chunk-VJCSEMXT.cjs} +4 -4
  132. package/dist/{chunk-XW524KUX.cjs.map → chunk-VJCSEMXT.cjs.map} +1 -1
  133. package/dist/{chunk-B5442TKX.cjs → chunk-VRK3IQAP.cjs} +4 -4
  134. package/dist/{chunk-B5442TKX.cjs.map → chunk-VRK3IQAP.cjs.map} +1 -1
  135. package/dist/{chunk-MYRKL3JO.cjs → chunk-VWTOIGX4.cjs} +4 -4
  136. package/dist/{chunk-MYRKL3JO.cjs.map → chunk-VWTOIGX4.cjs.map} +1 -1
  137. package/dist/{chunk-KZKGZ7IG.cjs → chunk-WAV762GP.cjs} +14 -14
  138. package/dist/{chunk-KZKGZ7IG.cjs.map → chunk-WAV762GP.cjs.map} +1 -1
  139. package/dist/{chunk-DMNX556N.cjs → chunk-WR2SF44W.cjs} +10 -10
  140. package/dist/{chunk-DMNX556N.cjs.map → chunk-WR2SF44W.cjs.map} +1 -1
  141. package/dist/{chunk-M2D4POJV.cjs → chunk-WXUU3COI.cjs} +9 -9
  142. package/dist/{chunk-M2D4POJV.cjs.map → chunk-WXUU3COI.cjs.map} +1 -1
  143. package/dist/{chunk-FGEBA3TL.cjs → chunk-X5LANJDZ.cjs} +26 -26
  144. package/dist/{chunk-FGEBA3TL.cjs.map → chunk-X5LANJDZ.cjs.map} +1 -1
  145. package/dist/{chunk-MY7Q3QE2.cjs → chunk-XKVPSOKP.cjs} +4 -4
  146. package/dist/{chunk-MY7Q3QE2.cjs.map → chunk-XKVPSOKP.cjs.map} +1 -1
  147. package/dist/{chunk-ONZOVO2B.cjs → chunk-Y24V6HPR.cjs} +24 -24
  148. package/dist/{chunk-ONZOVO2B.cjs.map → chunk-Y24V6HPR.cjs.map} +1 -1
  149. package/dist/{chunk-KGGSBJMU.cjs → chunk-YGXOKB5Z.cjs} +4 -4
  150. package/dist/{chunk-KGGSBJMU.cjs.map → chunk-YGXOKB5Z.cjs.map} +1 -1
  151. package/dist/{chunk-YAPXIANR.cjs → chunk-YVCOQHCE.cjs} +5 -5
  152. package/dist/{chunk-YAPXIANR.cjs.map → chunk-YVCOQHCE.cjs.map} +1 -1
  153. package/dist/{chunk-LCNKKSN3.cjs → chunk-ZTXQIIFV.cjs} +6 -6
  154. package/dist/{chunk-LCNKKSN3.cjs.map → chunk-ZTXQIIFV.cjs.map} +1 -1
  155. package/dist/citations/index.cjs +8 -8
  156. package/dist/connect/docx.cjs +28 -28
  157. package/dist/connect/index.cjs +1683 -1497
  158. package/dist/connect/index.cjs.map +1 -1
  159. package/dist/connect/viewer.cjs +41 -41
  160. package/dist/connection/ConnectedWorkflowBuilder.d.ts +11 -0
  161. package/dist/connection/ConnectedWorkflowBuilder.js +42 -3
  162. package/dist/connection/ConnectedWorkflowBuilder.js.map +2 -2
  163. package/dist/connection/conversation/ConnectedConversation.js +143 -55
  164. package/dist/connection/conversation/ConnectedConversation.js.map +2 -2
  165. package/dist/connection/conversation/ConnectedConversationPage.js +36 -2
  166. package/dist/connection/conversation/ConnectedConversationPage.js.map +2 -2
  167. package/dist/connection/conversation/ConversationSendButton.d.ts +1 -0
  168. package/dist/connection/conversation/ConversationSendButton.js +3 -2
  169. package/dist/connection/conversation/ConversationSendButton.js.map +2 -2
  170. package/dist/connection/conversation/DocumentTargetNotice.d.ts +7 -0
  171. package/dist/connection/conversation/DocumentTargetNotice.js +45 -0
  172. package/dist/connection/conversation/DocumentTargetNotice.js.map +7 -0
  173. package/dist/connection/conversation/documentSwitch.d.ts +9 -0
  174. package/dist/connection/conversation/documentSwitch.js +40 -0
  175. package/dist/connection/conversation/documentSwitch.js.map +7 -0
  176. package/dist/connection/workflows/ConnectedWorkflowsPage.js +10 -3
  177. package/dist/connection/workflows/ConnectedWorkflowsPage.js.map +2 -2
  178. package/dist/connection/workflows/useWorkflowsPageState.d.ts +1 -0
  179. package/dist/connection/workflows/useWorkflowsPageState.js.map +2 -2
  180. package/dist/dashboards/index.cjs +23 -23
  181. package/dist/docx/NativeDocxEditor.js +3 -1
  182. package/dist/docx/NativeDocxEditor.js.map +2 -2
  183. package/dist/docx/index.cjs +38 -38
  184. package/dist/docx/signatures/SignatureFields.d.ts +2 -0
  185. package/dist/docx/signatures/SignatureFields.js +40 -2
  186. package/dist/docx/signatures/SignatureFields.js.map +2 -2
  187. package/dist/embed/index.cjs +50 -50
  188. package/dist/facts/index.cjs +44 -44
  189. package/dist/files/index.cjs +226 -226
  190. package/dist/home/index.cjs +32 -32
  191. package/dist/index.cjs +1694 -1694
  192. package/dist/provider/environment.d.ts +5 -0
  193. package/dist/provider/environment.js +1 -1
  194. package/dist/provider/environment.js.map +2 -2
  195. package/dist/provider/requests.d.ts +2 -0
  196. package/dist/provider/requests.js.map +2 -2
  197. package/dist/retrieval/index.cjs +4 -4
  198. package/dist/settings/index.cjs +147 -147
  199. package/dist/shell/index.cjs +91 -91
  200. package/dist/studio/index.cjs +42 -42
  201. package/dist/styles.css +1 -1
  202. package/dist/workflow-canvas/index.cjs +116 -74
  203. package/dist/workflow-canvas/index.cjs.map +1 -1
  204. package/dist/workspaces/index.cjs +27 -27
  205. package/node_modules/@arbidocs/coedit/package.json +1 -1
  206. package/package.json +5 -5
  207. package/dist/ai-EMNMGDAN.cjs.map +0 -1
  208. package/dist/chunk-4ED7CNOX.cjs.map +0 -1
  209. package/dist/chunk-IFOGBMAE.cjs.map +0 -1
  210. package/dist/chunk-L52N2LVE.cjs +0 -18
  211. package/dist/chunk-U5T46QCS.cjs.map +0 -1
@@ -18,7 +18,8 @@ import { useOpenWorkflow } from "./useOpenWorkflow.js";
18
18
  import { useHost } from "../../provider/host.js";
19
19
  import { useIntentRequest, workflowOpenRequest } from "../../provider/requests.js";
20
20
  import {
21
- ConnectedWorkflowBuilder
21
+ ConnectedWorkflowBuilder,
22
+ scheduledTaskBuilderValue
22
23
  } from "../ConnectedWorkflowBuilder.js";
23
24
  import { ConnectedWorkflowHistory } from "../ConnectedWorkflowHistory.js";
24
25
  import { ConnectedWorkflowsTable } from "../ConnectedWorkflowsTable.js";
@@ -95,7 +96,13 @@ function ConnectedWorkflowsPage({
95
96
  setHostTabId(null);
96
97
  openHistory(workflow);
97
98
  };
98
- useIntentRequest(workflowOpenRequest, ({ workflowId, view }) => {
99
+ useIntentRequest(workflowOpenRequest, ({ workflowId, view, preset }) => {
100
+ if (!workflowId && preset) {
101
+ setRunningId(null);
102
+ setHostTabId(null);
103
+ openBuilder({ kind: "new", preset });
104
+ return;
105
+ }
99
106
  if (view === "run") {
100
107
  if (!workflowId) return;
101
108
  closeBuilder();
@@ -216,7 +223,7 @@ function ConnectedWorkflowsPage({
216
223
  ConnectedWorkflowBuilder,
217
224
  {
218
225
  workflowId: builder.kind === "saved" ? builder.id : void 0,
219
- initial: template ? { workflow: template.workflow, trigger: DEFAULT_WORKFLOW_TRIGGER } : void 0,
226
+ initial: template ? { workflow: template.workflow, trigger: DEFAULT_WORKFLOW_TRIGGER } : builder.kind === "new" && builder.preset === "schedule" ? scheduledTaskBuilderValue() : void 0,
220
227
  workflows: config?.stepWorkflows ?? webWorkflows,
221
228
  renderIcon: config?.renderIcon,
222
229
  onSaved: (id) => builderSaved(id, builderKey),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/connection/workflows/ConnectedWorkflowsPage.tsx"],
4
- "sourcesContent": ["/**\n * The Workflows page, connected: one composition of the saved workflows' table\n * (`ConnectedWorkflowsTable`), the visual builder (`ConnectedWorkflowBuilder`) and a workflow's\n * history (`ConnectedWorkflowHistory`), on the shared selection lifecycle\n * (`useWorkflowsPageState`).\n *\n * - The table lists the saved workflows, with the host's catalogue (`workflows.catalogue` in the\n * host configuration), when it has one, above them in the host's categories.\n * - A workflow opens in the builder, which takes the page (Back returns to the list). A document\n * action (annotate or email documents), which runs without a thread, keeps its own editor.\n * - A workflow's history opens as a tab of the table, beside the host's own `tabs`.\n * - `openWorkflow(id, { view })` from anywhere opens the workflow's builder or history here; the\n * host only shows the page. `view: 'run'` on a catalogue entry opens its run page here\n * (`ConnectedWorkflowRunPage`, with the entry's project options).\n *\n * It navigates only through the environment: threads open with `openConversation`, an AI review's\n * result with `openFiles` (offered when the host has it), a catalogue entry runs with\n * `openWorkflow(id, { view: 'run' })`.\n */\n\nimport { useCallback, useMemo, useState, type ReactNode } from 'react'\nimport { ArrowLeft, Pencil, Play, Plus, Workflow as WorkflowIcon } from 'lucide-react'\nimport {\n useInvalidateTagData,\n useRefreshDocuments,\n useTags,\n useWorkflowRuns,\n type WorkflowResponse,\n} from '@arbidocs/react'\nimport { Button, formatFriendlyDate } from '@arbidocs/react/ui'\nimport { PageHeader, type PageHeaderProps } from '../../components/PageHeader'\nimport { describeTrigger } from '../../agents/tasks/taskHelpers'\nimport type { TaskRunsDialogLabels } from '../../agents/tasks/TaskRunsDialog'\nimport type { WorkflowListLabels } from '../../agents/tasks/workflowTableLabels'\nimport { WEB_WORKFLOWS } from '../../agents/workflows/catalogue/registry'\nimport { useNamedWorkflows } from './useNamedWorkflows'\nimport { DEFAULT_WORKFLOW_TRIGGER } from '../../workflow-canvas/trigger'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useOpenWorkflow } from './useOpenWorkflow'\nimport { useHost } from '../../provider/host'\nimport { useIntentRequest, workflowOpenRequest } from '../../provider/requests'\nimport {\n ConnectedWorkflowBuilder,\n type ConnectedWorkflowBuilderProps,\n} from '../ConnectedWorkflowBuilder'\nimport { ConnectedWorkflowHistory } from '../ConnectedWorkflowHistory'\nimport { ConnectedWorkflowsTable } from '../ConnectedWorkflowsTable'\nimport { ConnectedWorkflowRunPage } from './ConnectedWorkflowRunPage'\nimport { ConnectedTaskComposer } from '../tasks/ConnectedTaskComposer'\nimport { useRenderTaskPerson } from '../tasks/useTaskPeople'\nimport { useAiReviewStore } from '../files/store'\nimport { useWorkflowsPageState } from './useWorkflowsPageState'\nimport {\n DEFAULT_CONNECTED_WORKFLOWS_PAGE_LABELS,\n DEFAULT_WORKFLOWS_PAGE_TABLE_LABELS,\n WORKFLOWS_PAGE_TRIGGER_CHIP_LABELS,\n type ConnectedWorkflowsPageLabels,\n} from './workflowsPageLabels'\n\ntype WorkflowRun = NonNullable<ReturnType<typeof useWorkflowRuns>['data']>[number]\n\n/** A tab of the host's beside the saved workflows (e.g. the agents that run them). */\nexport interface WorkflowsPageTab {\n id: string\n label: string\n icon?: ReactNode\n content: ReactNode\n}\n\n/** The table's own tab (the saved workflows). */\nconst LIST_TAB = 'automations'\n\nexport interface ConnectedWorkflowsPageProps {\n /** A host deep link to a workflow's history (e.g. a `?workflow=` URL), taken once it loads. */\n historyWorkflowId?: string | null\n onHistoryWorkflowConsumed?: () => void\n /** A title block over the table (eyebrow, title, description). Absent: none. */\n pageHeader?: Omit<PageHeaderProps, 'actions' | 'tabs'>\n /** The host's tabs beside the saved workflows, before any open history. */\n tabs?: WorkflowsPageTab[]\n /**\n * One of the host's `tabs` to show instead of the saved workflows (a host deep link such as\n * `?tab=agents`): on mount, and again whenever it changes to another tab. Unknown ids show the\n * saved workflows.\n */\n initialTabId?: string | null\n /** The builder's words and options. */\n builderProps?: Pick<\n ConnectedWorkflowBuilderProps,\n | 'labels'\n | 'canvasLabels'\n | 'inspectorLabels'\n | 'triggerLabels'\n | 'connectedLabels'\n | 'eventKinds'\n | 'compose'\n >\n labels?: Partial<ConnectedWorkflowsPageLabels>\n tableLabels?: Partial<WorkflowListLabels>\n historyLabels?: Partial<TaskRunsDialogLabels>\n testId?: string\n}\n\nexport function ConnectedWorkflowsPage({\n historyWorkflowId,\n onHistoryWorkflowConsumed,\n pageHeader,\n tabs,\n initialTabId,\n builderProps,\n labels,\n tableLabels,\n historyLabels,\n testId = 'workflows-page',\n}: ConnectedWorkflowsPageProps) {\n // The default step catalogue in the host's assistant name.\n const webWorkflows = useNamedWorkflows(WEB_WORKFLOWS)\n const l = { ...DEFAULT_CONNECTED_WORKFLOWS_PAGE_LABELS, ...labels }\n const host = useHost()\n const config = host.workflows\n const { openConversation, openFiles } = useBlocksEnvironment()\n const openWorkflow = useOpenWorkflow()\n const renderPerson = useRenderTaskPerson()\n const refreshDocuments = useRefreshDocuments()\n const invalidateTags = useInvalidateTagData()\n const { data: tags = [] } = useTags()\n const [editing, setEditing] = useState<WorkflowResponse | null>(null)\n const [editorOpen, setEditorOpen] = useState(false)\n const [hostTabId, setHostTabId] = useState<string | null>(initialTabId ?? null)\n // The host's link is applied again when it names another tab (the page stays mounted when the\n // host's address changes), never over the person's own choice of tab otherwise.\n const [appliedTabId, setAppliedTabId] = useState(initialTabId)\n if (initialTabId !== appliedTabId) {\n setAppliedTabId(initialTabId)\n if (initialTabId) setHostTabId(initialTabId)\n }\n // The catalogue entry being run (`openWorkflow(id, { view: 'run' })`).\n const [runningId, setRunningId] = useState<string | null>(null)\n // A workflow `openWorkflow(id, { view: 'runs' })` asked for, until it has loaded.\n const [requestedHistoryId, setRequestedHistoryId] = useState<string | null>(null)\n const consumeHistory = useCallback(() => {\n if (requestedHistoryId) setRequestedHistoryId(null)\n else onHistoryWorkflowConsumed?.()\n }, [requestedHistoryId, onHistoryWorkflowConsumed])\n const {\n workflows,\n builder,\n builderKey,\n openBuilder,\n closeBuilder,\n builderSaved,\n historyFor: runsFor,\n historyTabs,\n activeHistoryId,\n openHistory,\n closeHistoryTab,\n selectHistoryTab,\n } = useWorkflowsPageState({\n historyWorkflowId: requestedHistoryId ?? historyWorkflowId,\n onHistoryWorkflowConsumed: consumeHistory,\n })\n const listLabels = useMemo(\n () => ({ ...DEFAULT_WORKFLOWS_PAGE_TABLE_LABELS, ...tableLabels }),\n [tableLabels]\n )\n const hostTab = tabs?.find((tab) => tab.id === hostTabId)\n const showHistory = (workflow: WorkflowResponse | null) => {\n setHostTabId(null)\n openHistory(workflow)\n }\n\n useIntentRequest(workflowOpenRequest, ({ workflowId, view }) => {\n if (view === 'run') {\n if (!workflowId) return\n closeBuilder()\n setRunningId(workflowId)\n return\n }\n setRunningId(null)\n if (workflowId && view !== 'runs') {\n openBuilder({ kind: 'saved', id: workflowId })\n return\n }\n closeBuilder()\n setHostTabId(null)\n if (workflowId) setRequestedHistoryId(workflowId)\n else selectHistoryTab(null)\n })\n\n const edit = (workflow: WorkflowResponse) => {\n showHistory(workflow)\n // Every workflow opens in the visual builder: stepped ones as their steps, a classic one (a\n // single prompt or skill) as one agent step, a reminder with no steps yet. Only document actions\n // (annotate / email documents), which run without a thread, keep their own editor.\n if (!workflow.action) {\n openBuilder({ kind: 'saved', id: workflow.external_id })\n return\n }\n setEditing(workflow)\n setEditorOpen(true)\n }\n\n // An AI review's result: its documents re-read, Files narrowed to its label, its fields shown.\n const openResult = async (execution: WorkflowRun) => {\n await refreshDocuments(execution.document_ext_ids)\n await invalidateTags()\n const fieldIds =\n (execution.result?.tag_ext_ids as string[] | undefined) ?? runsFor?.action?.tag_ext_ids ?? []\n useAiReviewStore.getState().setRun({\n docIds: execution.document_ext_ids,\n tags: fieldIds.map((fieldId) => ({\n id: fieldId,\n name: tags.find((tag) => tag.external_id === fieldId)?.name ?? 'Review',\n })),\n })\n useAiReviewStore.getState().setOpen(true)\n openFiles(\n execution.label_ext_id ? { filters: { [execution.label_ext_id]: 'include' } } : undefined\n )\n }\n const renderErrorReport = config?.renderErrorReport\n\n const running = runningId\n ? config?.catalogue?.find((entry) => entry.workflow.id === runningId)\n : undefined\n if (running && running.runnable !== false) {\n const stepWorkflows = config?.stepWorkflows ?? webWorkflows\n return (\n // The page in the Workflows page's frame: padded, scrolling.\n <div className=\"h-full min-h-0 w-full overflow-auto p-4 sm:p-6\">\n <ConnectedWorkflowRunPage\n key={running.workflow.id}\n workflow={running.workflow}\n projectFrom={running.projectFrom}\n inputsFromProject={running.inputsFromProject}\n onProjectCreated={running.onProjectCreated}\n options={{ resolveWorkflow: (id) => stepWorkflows.find((w) => w.id === id) }}\n renderIcon={config?.renderIcon}\n onOpenConversation={(id) => openConversation(id)}\n pageHeader={{\n eyebrow: running.category,\n leading: (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => setRunningId(null)}\n aria-label={l.back}\n title={l.back}\n data-testid=\"workflow-run-back\"\n >\n <ArrowLeft className=\"size-4\" />\n </Button>\n ),\n }}\n testIdPrefix=\"workflow-run\"\n />\n </div>\n )\n }\n\n if (builder) {\n const template =\n builder.kind === 'template'\n ? config?.catalogue?.find((entry) => entry.workflow.id === builder.id)\n : undefined\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-3 overflow-auto p-4\"\n data-testid=\"workflow-builder\"\n >\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={closeBuilder}\n data-testid=\"workflow-builder-back\"\n >\n <ArrowLeft className=\"size-4\" /> {l.back}\n </Button>\n {template && template.runnable !== false && openWorkflow && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => openWorkflow(template.workflow.id, { view: 'run' })}\n data-testid=\"workflow-builder-run\"\n >\n <Play className=\"size-4\" /> {l.runTemplate}\n </Button>\n )}\n </div>\n <ConnectedWorkflowBuilder\n key={builderKey}\n workflowId={builder.kind === 'saved' ? builder.id : undefined}\n initial={\n template\n ? { workflow: template.workflow, trigger: DEFAULT_WORKFLOW_TRIGGER }\n : undefined\n }\n workflows={config?.stepWorkflows ?? webWorkflows}\n renderIcon={config?.renderIcon}\n onSaved={(id) => builderSaved(id, builderKey)}\n testId=\"workflow-builder-canvas\"\n {...builderProps}\n />\n </div>\n )\n }\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid={testId}>\n {pageHeader && <PageHeader {...pageHeader} />}\n <ConnectedWorkflowsTable\n onOpenTemplate={(id) => openBuilder({ kind: 'template', id })}\n tabs={[\n ...(tabs ?? []).map(({ id, label, icon }) => ({ id, label, icon })),\n ...historyTabs.map((workflow) => ({\n id: workflow.external_id,\n label: workflow.name,\n icon: <WorkflowIcon className=\"size-3.5\" />,\n onClose: () => {\n closeHistoryTab(workflow.external_id)\n if (activeHistoryId === workflow.external_id) setEditorOpen(false)\n },\n })),\n ]}\n activeTabId={hostTab?.id ?? activeHistoryId ?? LIST_TAB}\n onTabChange={(id) => {\n if (tabs?.some((tab) => tab.id === id)) {\n setHostTabId(id)\n return\n }\n setHostTabId(null)\n selectHistoryTab(id === LIST_TAB ? null : id)\n if (editorOpen) {\n const workflow = workflows.find((item) => item.external_id === id)\n if (workflow) setEditing(workflow)\n else setEditorOpen(false)\n }\n }}\n content={\n hostTab ? (\n hostTab.content\n ) : runsFor ? (\n <ConnectedWorkflowHistory\n inline\n hideHeader\n workflow={runsFor}\n onOpenChange={(open) => !open && openHistory(null)}\n formatDate={formatFriendlyDate}\n labels={historyLabels}\n renderErrorReport={\n renderErrorReport &&\n ((run) =>\n renderErrorReport(\n JSON.stringify(\n {\n workflow_ext_id: runsFor.external_id,\n run_id: run.id,\n status: run.status,\n error: run.error,\n },\n null,\n 2\n )\n ))\n }\n // Offered where the host shows files (its `openFiles`).\n onOpenResult={host.environment?.openFiles ? openResult : undefined}\n />\n ) : undefined\n }\n automationsOnly\n gridId=\"automations-grid-v1\"\n describeTrigger={(workflow) =>\n workflow.on_demand ? l.manualTrigger : describeTrigger(workflow)\n }\n formatDate={formatFriendlyDate}\n renderPerson={renderPerson}\n onViewRuns={showHistory}\n onOpenRow={edit}\n onEdit={edit}\n triggerChipLabels={WORKFLOWS_PAGE_TRIGGER_CHIP_LABELS}\n labels={listLabels}\n // A narrow row (a phone) keeps the actions' icons, so the host's tabs keep their room.\n header={(isCompact) => (\n <>\n {runsFor && !hostTab && (\n <Button\n variant=\"ghost\"\n onClick={() => edit(runsFor)}\n aria-label={l.editAria}\n title={isCompact ? l.edit : undefined}\n >\n <Pencil className={isCompact ? 'size-4' : 'mr-1.5 size-4'} />\n {!isCompact && l.edit}\n </Button>\n )}\n <Button\n onClick={() => openBuilder({ kind: 'new' })}\n aria-label={isCompact ? l.newWorkflow : undefined}\n title={isCompact ? l.newWorkflow : undefined}\n data-testid=\"new-workflow-button\"\n >\n <Plus className={isCompact ? 'size-4' : 'mr-1.5 size-4'} />\n {!isCompact && l.newWorkflow}\n </Button>\n </>\n )}\n />\n <ConnectedTaskComposer\n kind=\"workflow\"\n saveOnly\n startLater\n open={editorOpen}\n onOpenChange={setEditorOpen}\n workflow={editing}\n />\n </div>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * The Workflows page, connected: one composition of the saved workflows' table\n * (`ConnectedWorkflowsTable`), the visual builder (`ConnectedWorkflowBuilder`) and a workflow's\n * history (`ConnectedWorkflowHistory`), on the shared selection lifecycle\n * (`useWorkflowsPageState`).\n *\n * - The table lists the saved workflows, with the host's catalogue (`workflows.catalogue` in the\n * host configuration), when it has one, above them in the host's categories.\n * - A workflow opens in the builder, which takes the page (Back returns to the list). A document\n * action (annotate or email documents), which runs without a thread, keeps its own editor.\n * - A workflow's history opens as a tab of the table, beside the host's own `tabs`.\n * - `openWorkflow(id, { view })` from anywhere opens the workflow's builder or history here; the\n * host only shows the page. `view: 'run'` on a catalogue entry opens its run page here\n * (`ConnectedWorkflowRunPage`, with the entry's project options).\n *\n * It navigates only through the environment: threads open with `openConversation`, an AI review's\n * result with `openFiles` (offered when the host has it), a catalogue entry runs with\n * `openWorkflow(id, { view: 'run' })`.\n */\n\nimport { useCallback, useMemo, useState, type ReactNode } from 'react'\nimport { ArrowLeft, Pencil, Play, Plus, Workflow as WorkflowIcon } from 'lucide-react'\nimport {\n useInvalidateTagData,\n useRefreshDocuments,\n useTags,\n useWorkflowRuns,\n type WorkflowResponse,\n} from '@arbidocs/react'\nimport { Button, formatFriendlyDate } from '@arbidocs/react/ui'\nimport { PageHeader, type PageHeaderProps } from '../../components/PageHeader'\nimport { describeTrigger } from '../../agents/tasks/taskHelpers'\nimport type { TaskRunsDialogLabels } from '../../agents/tasks/TaskRunsDialog'\nimport type { WorkflowListLabels } from '../../agents/tasks/workflowTableLabels'\nimport { WEB_WORKFLOWS } from '../../agents/workflows/catalogue/registry'\nimport { useNamedWorkflows } from './useNamedWorkflows'\nimport { DEFAULT_WORKFLOW_TRIGGER } from '../../workflow-canvas/trigger'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useOpenWorkflow } from './useOpenWorkflow'\nimport { useHost } from '../../provider/host'\nimport { useIntentRequest, workflowOpenRequest } from '../../provider/requests'\nimport {\n ConnectedWorkflowBuilder,\n scheduledTaskBuilderValue,\n type ConnectedWorkflowBuilderProps,\n} from '../ConnectedWorkflowBuilder'\nimport { ConnectedWorkflowHistory } from '../ConnectedWorkflowHistory'\nimport { ConnectedWorkflowsTable } from '../ConnectedWorkflowsTable'\nimport { ConnectedWorkflowRunPage } from './ConnectedWorkflowRunPage'\nimport { ConnectedTaskComposer } from '../tasks/ConnectedTaskComposer'\nimport { useRenderTaskPerson } from '../tasks/useTaskPeople'\nimport { useAiReviewStore } from '../files/store'\nimport { useWorkflowsPageState } from './useWorkflowsPageState'\nimport {\n DEFAULT_CONNECTED_WORKFLOWS_PAGE_LABELS,\n DEFAULT_WORKFLOWS_PAGE_TABLE_LABELS,\n WORKFLOWS_PAGE_TRIGGER_CHIP_LABELS,\n type ConnectedWorkflowsPageLabels,\n} from './workflowsPageLabels'\n\ntype WorkflowRun = NonNullable<ReturnType<typeof useWorkflowRuns>['data']>[number]\n\n/** A tab of the host's beside the saved workflows (e.g. the agents that run them). */\nexport interface WorkflowsPageTab {\n id: string\n label: string\n icon?: ReactNode\n content: ReactNode\n}\n\n/** The table's own tab (the saved workflows). */\nconst LIST_TAB = 'automations'\n\nexport interface ConnectedWorkflowsPageProps {\n /** A host deep link to a workflow's history (e.g. a `?workflow=` URL), taken once it loads. */\n historyWorkflowId?: string | null\n onHistoryWorkflowConsumed?: () => void\n /** A title block over the table (eyebrow, title, description). Absent: none. */\n pageHeader?: Omit<PageHeaderProps, 'actions' | 'tabs'>\n /** The host's tabs beside the saved workflows, before any open history. */\n tabs?: WorkflowsPageTab[]\n /**\n * One of the host's `tabs` to show instead of the saved workflows (a host deep link such as\n * `?tab=agents`): on mount, and again whenever it changes to another tab. Unknown ids show the\n * saved workflows.\n */\n initialTabId?: string | null\n /** The builder's words and options. */\n builderProps?: Pick<\n ConnectedWorkflowBuilderProps,\n | 'labels'\n | 'canvasLabels'\n | 'inspectorLabels'\n | 'triggerLabels'\n | 'connectedLabels'\n | 'eventKinds'\n | 'compose'\n >\n labels?: Partial<ConnectedWorkflowsPageLabels>\n tableLabels?: Partial<WorkflowListLabels>\n historyLabels?: Partial<TaskRunsDialogLabels>\n testId?: string\n}\n\nexport function ConnectedWorkflowsPage({\n historyWorkflowId,\n onHistoryWorkflowConsumed,\n pageHeader,\n tabs,\n initialTabId,\n builderProps,\n labels,\n tableLabels,\n historyLabels,\n testId = 'workflows-page',\n}: ConnectedWorkflowsPageProps) {\n // The default step catalogue in the host's assistant name.\n const webWorkflows = useNamedWorkflows(WEB_WORKFLOWS)\n const l = { ...DEFAULT_CONNECTED_WORKFLOWS_PAGE_LABELS, ...labels }\n const host = useHost()\n const config = host.workflows\n const { openConversation, openFiles } = useBlocksEnvironment()\n const openWorkflow = useOpenWorkflow()\n const renderPerson = useRenderTaskPerson()\n const refreshDocuments = useRefreshDocuments()\n const invalidateTags = useInvalidateTagData()\n const { data: tags = [] } = useTags()\n const [editing, setEditing] = useState<WorkflowResponse | null>(null)\n const [editorOpen, setEditorOpen] = useState(false)\n const [hostTabId, setHostTabId] = useState<string | null>(initialTabId ?? null)\n // The host's link is applied again when it names another tab (the page stays mounted when the\n // host's address changes), never over the person's own choice of tab otherwise.\n const [appliedTabId, setAppliedTabId] = useState(initialTabId)\n if (initialTabId !== appliedTabId) {\n setAppliedTabId(initialTabId)\n if (initialTabId) setHostTabId(initialTabId)\n }\n // The catalogue entry being run (`openWorkflow(id, { view: 'run' })`).\n const [runningId, setRunningId] = useState<string | null>(null)\n // A workflow `openWorkflow(id, { view: 'runs' })` asked for, until it has loaded.\n const [requestedHistoryId, setRequestedHistoryId] = useState<string | null>(null)\n const consumeHistory = useCallback(() => {\n if (requestedHistoryId) setRequestedHistoryId(null)\n else onHistoryWorkflowConsumed?.()\n }, [requestedHistoryId, onHistoryWorkflowConsumed])\n const {\n workflows,\n builder,\n builderKey,\n openBuilder,\n closeBuilder,\n builderSaved,\n historyFor: runsFor,\n historyTabs,\n activeHistoryId,\n openHistory,\n closeHistoryTab,\n selectHistoryTab,\n } = useWorkflowsPageState({\n historyWorkflowId: requestedHistoryId ?? historyWorkflowId,\n onHistoryWorkflowConsumed: consumeHistory,\n })\n const listLabels = useMemo(\n () => ({ ...DEFAULT_WORKFLOWS_PAGE_TABLE_LABELS, ...tableLabels }),\n [tableLabels]\n )\n const hostTab = tabs?.find((tab) => tab.id === hostTabId)\n const showHistory = (workflow: WorkflowResponse | null) => {\n setHostTabId(null)\n openHistory(workflow)\n }\n\n useIntentRequest(workflowOpenRequest, ({ workflowId, view, preset }) => {\n if (!workflowId && preset) {\n setRunningId(null)\n setHostTabId(null)\n openBuilder({ kind: 'new', preset })\n return\n }\n if (view === 'run') {\n if (!workflowId) return\n closeBuilder()\n setRunningId(workflowId)\n return\n }\n setRunningId(null)\n if (workflowId && view !== 'runs') {\n openBuilder({ kind: 'saved', id: workflowId })\n return\n }\n closeBuilder()\n setHostTabId(null)\n if (workflowId) setRequestedHistoryId(workflowId)\n else selectHistoryTab(null)\n })\n\n const edit = (workflow: WorkflowResponse) => {\n showHistory(workflow)\n // Every workflow opens in the visual builder: stepped ones as their steps, a classic one (a\n // single prompt or skill) as one agent step, a reminder with no steps yet. Only document actions\n // (annotate / email documents), which run without a thread, keep their own editor.\n if (!workflow.action) {\n openBuilder({ kind: 'saved', id: workflow.external_id })\n return\n }\n setEditing(workflow)\n setEditorOpen(true)\n }\n\n // An AI review's result: its documents re-read, Files narrowed to its label, its fields shown.\n const openResult = async (execution: WorkflowRun) => {\n await refreshDocuments(execution.document_ext_ids)\n await invalidateTags()\n const fieldIds =\n (execution.result?.tag_ext_ids as string[] | undefined) ?? runsFor?.action?.tag_ext_ids ?? []\n useAiReviewStore.getState().setRun({\n docIds: execution.document_ext_ids,\n tags: fieldIds.map((fieldId) => ({\n id: fieldId,\n name: tags.find((tag) => tag.external_id === fieldId)?.name ?? 'Review',\n })),\n })\n useAiReviewStore.getState().setOpen(true)\n openFiles(\n execution.label_ext_id ? { filters: { [execution.label_ext_id]: 'include' } } : undefined\n )\n }\n const renderErrorReport = config?.renderErrorReport\n\n const running = runningId\n ? config?.catalogue?.find((entry) => entry.workflow.id === runningId)\n : undefined\n if (running && running.runnable !== false) {\n const stepWorkflows = config?.stepWorkflows ?? webWorkflows\n return (\n // The page in the Workflows page's frame: padded, scrolling.\n <div className=\"h-full min-h-0 w-full overflow-auto p-4 sm:p-6\">\n <ConnectedWorkflowRunPage\n key={running.workflow.id}\n workflow={running.workflow}\n projectFrom={running.projectFrom}\n inputsFromProject={running.inputsFromProject}\n onProjectCreated={running.onProjectCreated}\n options={{ resolveWorkflow: (id) => stepWorkflows.find((w) => w.id === id) }}\n renderIcon={config?.renderIcon}\n onOpenConversation={(id) => openConversation(id)}\n pageHeader={{\n eyebrow: running.category,\n leading: (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => setRunningId(null)}\n aria-label={l.back}\n title={l.back}\n data-testid=\"workflow-run-back\"\n >\n <ArrowLeft className=\"size-4\" />\n </Button>\n ),\n }}\n testIdPrefix=\"workflow-run\"\n />\n </div>\n )\n }\n\n if (builder) {\n const template =\n builder.kind === 'template'\n ? config?.catalogue?.find((entry) => entry.workflow.id === builder.id)\n : undefined\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-3 overflow-auto p-4\"\n data-testid=\"workflow-builder\"\n >\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={closeBuilder}\n data-testid=\"workflow-builder-back\"\n >\n <ArrowLeft className=\"size-4\" /> {l.back}\n </Button>\n {template && template.runnable !== false && openWorkflow && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => openWorkflow(template.workflow.id, { view: 'run' })}\n data-testid=\"workflow-builder-run\"\n >\n <Play className=\"size-4\" /> {l.runTemplate}\n </Button>\n )}\n </div>\n <ConnectedWorkflowBuilder\n key={builderKey}\n workflowId={builder.kind === 'saved' ? builder.id : undefined}\n initial={\n template\n ? { workflow: template.workflow, trigger: DEFAULT_WORKFLOW_TRIGGER }\n : builder.kind === 'new' && builder.preset === 'schedule'\n ? scheduledTaskBuilderValue()\n : undefined\n }\n workflows={config?.stepWorkflows ?? webWorkflows}\n renderIcon={config?.renderIcon}\n onSaved={(id) => builderSaved(id, builderKey)}\n testId=\"workflow-builder-canvas\"\n {...builderProps}\n />\n </div>\n )\n }\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid={testId}>\n {pageHeader && <PageHeader {...pageHeader} />}\n <ConnectedWorkflowsTable\n onOpenTemplate={(id) => openBuilder({ kind: 'template', id })}\n tabs={[\n ...(tabs ?? []).map(({ id, label, icon }) => ({ id, label, icon })),\n ...historyTabs.map((workflow) => ({\n id: workflow.external_id,\n label: workflow.name,\n icon: <WorkflowIcon className=\"size-3.5\" />,\n onClose: () => {\n closeHistoryTab(workflow.external_id)\n if (activeHistoryId === workflow.external_id) setEditorOpen(false)\n },\n })),\n ]}\n activeTabId={hostTab?.id ?? activeHistoryId ?? LIST_TAB}\n onTabChange={(id) => {\n if (tabs?.some((tab) => tab.id === id)) {\n setHostTabId(id)\n return\n }\n setHostTabId(null)\n selectHistoryTab(id === LIST_TAB ? null : id)\n if (editorOpen) {\n const workflow = workflows.find((item) => item.external_id === id)\n if (workflow) setEditing(workflow)\n else setEditorOpen(false)\n }\n }}\n content={\n hostTab ? (\n hostTab.content\n ) : runsFor ? (\n <ConnectedWorkflowHistory\n inline\n hideHeader\n workflow={runsFor}\n onOpenChange={(open) => !open && openHistory(null)}\n formatDate={formatFriendlyDate}\n labels={historyLabels}\n renderErrorReport={\n renderErrorReport &&\n ((run) =>\n renderErrorReport(\n JSON.stringify(\n {\n workflow_ext_id: runsFor.external_id,\n run_id: run.id,\n status: run.status,\n error: run.error,\n },\n null,\n 2\n )\n ))\n }\n // Offered where the host shows files (its `openFiles`).\n onOpenResult={host.environment?.openFiles ? openResult : undefined}\n />\n ) : undefined\n }\n automationsOnly\n gridId=\"automations-grid-v1\"\n describeTrigger={(workflow) =>\n workflow.on_demand ? l.manualTrigger : describeTrigger(workflow)\n }\n formatDate={formatFriendlyDate}\n renderPerson={renderPerson}\n onViewRuns={showHistory}\n onOpenRow={edit}\n onEdit={edit}\n triggerChipLabels={WORKFLOWS_PAGE_TRIGGER_CHIP_LABELS}\n labels={listLabels}\n // A narrow row (a phone) keeps the actions' icons, so the host's tabs keep their room.\n header={(isCompact) => (\n <>\n {runsFor && !hostTab && (\n <Button\n variant=\"ghost\"\n onClick={() => edit(runsFor)}\n aria-label={l.editAria}\n title={isCompact ? l.edit : undefined}\n >\n <Pencil className={isCompact ? 'size-4' : 'mr-1.5 size-4'} />\n {!isCompact && l.edit}\n </Button>\n )}\n <Button\n onClick={() => openBuilder({ kind: 'new' })}\n aria-label={isCompact ? l.newWorkflow : undefined}\n title={isCompact ? l.newWorkflow : undefined}\n data-testid=\"new-workflow-button\"\n >\n <Plus className={isCompact ? 'size-4' : 'mr-1.5 size-4'} />\n {!isCompact && l.newWorkflow}\n </Button>\n </>\n )}\n />\n <ConnectedTaskComposer\n kind=\"workflow\"\n saveOnly\n startLater\n open={editorOpen}\n onOpenChange={setEditorOpen}\n workflow={editing}\n />\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -5,6 +5,7 @@ export type WorkflowBuilderSelection = {
5
5
  id: string;
6
6
  } | {
7
7
  kind: 'new';
8
+ preset?: 'schedule';
8
9
  } | {
9
10
  kind: 'template';
10
11
  id: string;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/connection/workflows/useWorkflowsPageState.ts"],
4
- "sourcesContent": ["import { useCallback, useEffect, useRef, useState } from 'react'\nimport { useWorkflows, type WorkflowResponse } from '@arbidocs/react'\n\n/** A saved workflow, a new one, or a host catalogue entry opened as a template. */\nexport type WorkflowBuilderSelection =\n { kind: 'saved'; id: string } | { kind: 'new' } | { kind: 'template'; id: string }\n\nexport interface WorkflowsPageStateOptions {\n initialBuilder?: WorkflowBuilderSelection\n /** A host deep link to consume once the saved workflow has loaded. */\n historyWorkflowId?: string | null\n onHistoryWorkflowConsumed?: () => void\n}\n\n/** Shared selection lifecycle for workflow tables, builders and history views. No routing or layout. */\nexport function useWorkflowsPageState({\n initialBuilder,\n historyWorkflowId,\n onHistoryWorkflowConsumed,\n}: WorkflowsPageStateOptions = {}) {\n const { data: workflows = [] } = useWorkflows({ live: true })\n const [builder, setBuilder] = useState<WorkflowBuilderSelection | null>(initialBuilder ?? null)\n const [builderKey, setBuilderKey] = useState(0)\n const [historyIds, setHistoryIds] = useState<string[]>([])\n const [activeHistoryId, setActiveHistoryId] = useState<string | null>(null)\n // Resolve against current query data: renaming/deleting a workflow cannot leave a stale dialog.\n const historyFor = workflows.find((workflow) => workflow.external_id === activeHistoryId) ?? null\n const historyTabs = historyIds.flatMap((id) => {\n const workflow = workflows.find((item) => item.external_id === id)\n return workflow ? [workflow] : []\n })\n\n const openHistory = useCallback((workflow: WorkflowResponse | null) => {\n const id = workflow?.external_id ?? null\n if (id) setHistoryIds((ids) => (ids.includes(id) ? ids : [...ids, id]))\n setActiveHistoryId(id)\n }, [])\n const closeHistoryTab = useCallback((id: string) => {\n setHistoryIds((ids) => ids.filter((item) => item !== id))\n setActiveHistoryId((active) => (active === id ? null : active))\n }, [])\n const builderKeyRef = useRef(builderKey)\n builderKeyRef.current = builderKey\n const openBuilder = useCallback((selection: WorkflowBuilderSelection) => {\n setBuilder(selection)\n // Reopening a template/new/saved selection resets its unsaved canvas; saving does not.\n setBuilderKey((key) => key + 1)\n }, [])\n /**\n * A save finished (it lands once the workflows are re-read): the builder it came from (its\n * `builderKey`, default the current one) now edits the saved workflow. A save the person left\n * meanwhile (Back, or another workflow opened) changes nothing: it never reopens the builder.\n */\n const builderSaved = useCallback((id: string, fromKey?: number) => {\n if (fromKey !== undefined && fromKey !== builderKeyRef.current) return\n setBuilder((open) => (open ? { kind: 'saved', id } : null))\n }, [])\n\n useEffect(() => {\n const workflow = workflows.find((item) => item.external_id === historyWorkflowId)\n if (!workflow) return\n openHistory(workflow)\n onHistoryWorkflowConsumed?.()\n }, [historyWorkflowId, onHistoryWorkflowConsumed, openHistory, workflows])\n\n return {\n workflows,\n builder,\n builderKey,\n openBuilder,\n closeBuilder: () => setBuilder(null),\n builderSaved,\n historyFor,\n historyTabs,\n activeHistoryId,\n openHistory,\n closeHistoryTab,\n selectHistoryTab: setActiveHistoryId,\n }\n}\n"],
5
- "mappings": ";AAAA,SAAS,aAAa,WAAW,QAAQ,gBAAgB;AACzD,SAAS,oBAA2C;AAc7C,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACF,IAA+B,CAAC,GAAG;AACjC,QAAM,EAAE,MAAM,YAAY,CAAC,EAAE,IAAI,aAAa,EAAE,MAAM,KAAK,CAAC;AAC5D,QAAM,CAAC,SAAS,UAAU,IAAI,SAA0C,kBAAkB,IAAI;AAC9F,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,CAAC;AAC9C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAmB,CAAC,CAAC;AACzD,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAwB,IAAI;AAE1E,QAAM,aAAa,UAAU,KAAK,CAAC,aAAa,SAAS,gBAAgB,eAAe,KAAK;AAC7F,QAAM,cAAc,WAAW,QAAQ,CAAC,OAAO;AAC7C,UAAM,WAAW,UAAU,KAAK,CAAC,SAAS,KAAK,gBAAgB,EAAE;AACjE,WAAO,WAAW,CAAC,QAAQ,IAAI,CAAC;AAAA,EAClC,CAAC;AAED,QAAM,cAAc,YAAY,CAAC,aAAsC;AACrE,UAAM,KAAK,UAAU,eAAe;AACpC,QAAI,GAAI,eAAc,CAAC,QAAS,IAAI,SAAS,EAAE,IAAI,MAAM,CAAC,GAAG,KAAK,EAAE,CAAE;AACtE,uBAAmB,EAAE;AAAA,EACvB,GAAG,CAAC,CAAC;AACL,QAAM,kBAAkB,YAAY,CAAC,OAAe;AAClD,kBAAc,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC;AACxD,uBAAmB,CAAC,WAAY,WAAW,KAAK,OAAO,MAAO;AAAA,EAChE,GAAG,CAAC,CAAC;AACL,QAAM,gBAAgB,OAAO,UAAU;AACvC,gBAAc,UAAU;AACxB,QAAM,cAAc,YAAY,CAAC,cAAwC;AACvE,eAAW,SAAS;AAEpB,kBAAc,CAAC,QAAQ,MAAM,CAAC;AAAA,EAChC,GAAG,CAAC,CAAC;AAML,QAAM,eAAe,YAAY,CAAC,IAAY,YAAqB;AACjE,QAAI,YAAY,UAAa,YAAY,cAAc,QAAS;AAChE,eAAW,CAAC,SAAU,OAAO,EAAE,MAAM,SAAS,GAAG,IAAI,IAAK;AAAA,EAC5D,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACd,UAAM,WAAW,UAAU,KAAK,CAAC,SAAS,KAAK,gBAAgB,iBAAiB;AAChF,QAAI,CAAC,SAAU;AACf,gBAAY,QAAQ;AACpB,gCAA4B;AAAA,EAC9B,GAAG,CAAC,mBAAmB,2BAA2B,aAAa,SAAS,CAAC;AAEzE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,MAAM,WAAW,IAAI;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,EACpB;AACF;",
4
+ "sourcesContent": ["import { useCallback, useEffect, useRef, useState } from 'react'\nimport { useWorkflows, type WorkflowResponse } from '@arbidocs/react'\n\n/** A saved workflow, a new one, or a host catalogue entry opened as a template. */\nexport type WorkflowBuilderSelection =\n | { kind: 'saved'; id: string }\n | { kind: 'new'; preset?: 'schedule' }\n | { kind: 'template'; id: string }\n\nexport interface WorkflowsPageStateOptions {\n initialBuilder?: WorkflowBuilderSelection\n /** A host deep link to consume once the saved workflow has loaded. */\n historyWorkflowId?: string | null\n onHistoryWorkflowConsumed?: () => void\n}\n\n/** Shared selection lifecycle for workflow tables, builders and history views. No routing or layout. */\nexport function useWorkflowsPageState({\n initialBuilder,\n historyWorkflowId,\n onHistoryWorkflowConsumed,\n}: WorkflowsPageStateOptions = {}) {\n const { data: workflows = [] } = useWorkflows({ live: true })\n const [builder, setBuilder] = useState<WorkflowBuilderSelection | null>(initialBuilder ?? null)\n const [builderKey, setBuilderKey] = useState(0)\n const [historyIds, setHistoryIds] = useState<string[]>([])\n const [activeHistoryId, setActiveHistoryId] = useState<string | null>(null)\n // Resolve against current query data: renaming/deleting a workflow cannot leave a stale dialog.\n const historyFor = workflows.find((workflow) => workflow.external_id === activeHistoryId) ?? null\n const historyTabs = historyIds.flatMap((id) => {\n const workflow = workflows.find((item) => item.external_id === id)\n return workflow ? [workflow] : []\n })\n\n const openHistory = useCallback((workflow: WorkflowResponse | null) => {\n const id = workflow?.external_id ?? null\n if (id) setHistoryIds((ids) => (ids.includes(id) ? ids : [...ids, id]))\n setActiveHistoryId(id)\n }, [])\n const closeHistoryTab = useCallback((id: string) => {\n setHistoryIds((ids) => ids.filter((item) => item !== id))\n setActiveHistoryId((active) => (active === id ? null : active))\n }, [])\n const builderKeyRef = useRef(builderKey)\n builderKeyRef.current = builderKey\n const openBuilder = useCallback((selection: WorkflowBuilderSelection) => {\n setBuilder(selection)\n // Reopening a template/new/saved selection resets its unsaved canvas; saving does not.\n setBuilderKey((key) => key + 1)\n }, [])\n /**\n * A save finished (it lands once the workflows are re-read): the builder it came from (its\n * `builderKey`, default the current one) now edits the saved workflow. A save the person left\n * meanwhile (Back, or another workflow opened) changes nothing: it never reopens the builder.\n */\n const builderSaved = useCallback((id: string, fromKey?: number) => {\n if (fromKey !== undefined && fromKey !== builderKeyRef.current) return\n setBuilder((open) => (open ? { kind: 'saved', id } : null))\n }, [])\n\n useEffect(() => {\n const workflow = workflows.find((item) => item.external_id === historyWorkflowId)\n if (!workflow) return\n openHistory(workflow)\n onHistoryWorkflowConsumed?.()\n }, [historyWorkflowId, onHistoryWorkflowConsumed, openHistory, workflows])\n\n return {\n workflows,\n builder,\n builderKey,\n openBuilder,\n closeBuilder: () => setBuilder(null),\n builderSaved,\n historyFor,\n historyTabs,\n activeHistoryId,\n openHistory,\n closeHistoryTab,\n selectHistoryTab: setActiveHistoryId,\n }\n}\n"],
5
+ "mappings": ";AAAA,SAAS,aAAa,WAAW,QAAQ,gBAAgB;AACzD,SAAS,oBAA2C;AAgB7C,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACF,IAA+B,CAAC,GAAG;AACjC,QAAM,EAAE,MAAM,YAAY,CAAC,EAAE,IAAI,aAAa,EAAE,MAAM,KAAK,CAAC;AAC5D,QAAM,CAAC,SAAS,UAAU,IAAI,SAA0C,kBAAkB,IAAI;AAC9F,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,CAAC;AAC9C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAmB,CAAC,CAAC;AACzD,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAwB,IAAI;AAE1E,QAAM,aAAa,UAAU,KAAK,CAAC,aAAa,SAAS,gBAAgB,eAAe,KAAK;AAC7F,QAAM,cAAc,WAAW,QAAQ,CAAC,OAAO;AAC7C,UAAM,WAAW,UAAU,KAAK,CAAC,SAAS,KAAK,gBAAgB,EAAE;AACjE,WAAO,WAAW,CAAC,QAAQ,IAAI,CAAC;AAAA,EAClC,CAAC;AAED,QAAM,cAAc,YAAY,CAAC,aAAsC;AACrE,UAAM,KAAK,UAAU,eAAe;AACpC,QAAI,GAAI,eAAc,CAAC,QAAS,IAAI,SAAS,EAAE,IAAI,MAAM,CAAC,GAAG,KAAK,EAAE,CAAE;AACtE,uBAAmB,EAAE;AAAA,EACvB,GAAG,CAAC,CAAC;AACL,QAAM,kBAAkB,YAAY,CAAC,OAAe;AAClD,kBAAc,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC;AACxD,uBAAmB,CAAC,WAAY,WAAW,KAAK,OAAO,MAAO;AAAA,EAChE,GAAG,CAAC,CAAC;AACL,QAAM,gBAAgB,OAAO,UAAU;AACvC,gBAAc,UAAU;AACxB,QAAM,cAAc,YAAY,CAAC,cAAwC;AACvE,eAAW,SAAS;AAEpB,kBAAc,CAAC,QAAQ,MAAM,CAAC;AAAA,EAChC,GAAG,CAAC,CAAC;AAML,QAAM,eAAe,YAAY,CAAC,IAAY,YAAqB;AACjE,QAAI,YAAY,UAAa,YAAY,cAAc,QAAS;AAChE,eAAW,CAAC,SAAU,OAAO,EAAE,MAAM,SAAS,GAAG,IAAI,IAAK;AAAA,EAC5D,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACd,UAAM,WAAW,UAAU,KAAK,CAAC,SAAS,KAAK,gBAAgB,iBAAiB;AAChF,QAAI,CAAC,SAAU;AACf,gBAAY,QAAQ;AACpB,gCAA4B;AAAA,EAC9B,GAAG,CAAC,mBAAmB,2BAA2B,aAAa,SAAS,CAAC;AAEzE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,MAAM,WAAW,IAAI;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,EACpB;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,18 +1,18 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkJ2RXQVVF_cjs = require('../chunk-J2RXQVVF.cjs');
4
+ var chunk4EK7TAP7_cjs = require('../chunk-4EK7TAP7.cjs');
5
5
  var chunkLVIQWRC5_cjs = require('../chunk-LVIQWRC5.cjs');
6
- var chunkK5MYEWD5_cjs = require('../chunk-K5MYEWD5.cjs');
6
+ var chunkUZHWXKS6_cjs = require('../chunk-UZHWXKS6.cjs');
7
7
  var chunkPBPO54KZ_cjs = require('../chunk-PBPO54KZ.cjs');
8
- require('../chunk-WIAWHETB.cjs');
8
+ require('../chunk-ULPTSXXO.cjs');
9
9
  require('../chunk-ZU2B2RZK.cjs');
10
10
  var chunkNSD37OF5_cjs = require('../chunk-NSD37OF5.cjs');
11
11
  var chunkOEJQFPWO_cjs = require('../chunk-OEJQFPWO.cjs');
12
- require('../chunk-ZFKWCGA5.cjs');
13
- require('../chunk-IPSHAMO2.cjs');
12
+ require('../chunk-JV5TVUOU.cjs');
14
13
  var chunkZW6FPIFC_cjs = require('../chunk-ZW6FPIFC.cjs');
15
- var chunkU5T46QCS_cjs = require('../chunk-U5T46QCS.cjs');
14
+ require('../chunk-IPSHAMO2.cjs');
15
+ var chunkTKHCIHE2_cjs = require('../chunk-TKHCIHE2.cjs');
16
16
  require('../chunk-JDFBEGQO.cjs');
17
17
  require('../chunk-ULWRNGGE.cjs');
18
18
  require('../chunk-PLIF5CUV.cjs');
@@ -67,8 +67,8 @@ function PanelsGrid({
67
67
  editing,
68
68
  testId
69
69
  }) {
70
- return /* @__PURE__ */ jsxRuntime.jsx(chunkK5MYEWD5_cjs.DashboardGrid, { testId: testId && `${testId}-grid`, children: spec.panels.map((panel, i) => /* @__PURE__ */ jsxRuntime.jsx(chunkK5MYEWD5_cjs.DashboardCell, { width: panel.width, children: /* @__PURE__ */ jsxRuntime.jsx(
71
- chunkK5MYEWD5_cjs.DashboardPanel,
70
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkUZHWXKS6_cjs.DashboardGrid, { testId: testId && `${testId}-grid`, children: spec.panels.map((panel, i) => /* @__PURE__ */ jsxRuntime.jsx(chunkUZHWXKS6_cjs.DashboardCell, { width: panel.width, children: /* @__PURE__ */ jsxRuntime.jsx(
71
+ chunkUZHWXKS6_cjs.DashboardPanel,
72
72
  {
73
73
  panel,
74
74
  labels: panelLabels,
@@ -167,7 +167,7 @@ function ConnectedDashboardsPage({
167
167
  testId = "dashboards"
168
168
  }) {
169
169
  const l = { ...DEFAULT_DASHBOARDS_PAGE_LABELS, ...labels };
170
- const { confirm, notify } = chunkU5T46QCS_cjs.useBlocksEnvironment();
170
+ const { confirm, notify } = chunkTKHCIHE2_cjs.useBlocksEnvironment();
171
171
  const workflowsOn = react.useFeature("workflows");
172
172
  const templates = siteTemplates ?? chunkLVIQWRC5_cjs.templatesFor(chunkLVIQWRC5_cjs.DASHBOARD_TEMPLATES, { workflows: workflowsOn });
173
173
  const store = react.useDashboardStore();
@@ -365,7 +365,7 @@ function ConnectedDashboardsPage({
365
365
  /* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { children: l.editPanelDescription })
366
366
  ] }),
367
367
  editingPanel && /* @__PURE__ */ jsxRuntime.jsx(
368
- chunkJ2RXQVVF_cjs.PanelEditor,
368
+ chunk4EK7TAP7_cjs.PanelEditor,
369
369
  {
370
370
  value: editingPanel.panel,
371
371
  onChange: (panel) => setEditingPanel({ ...editingPanel, panel }),
@@ -527,11 +527,11 @@ function ConnectedDashboardsPage({
527
527
 
528
528
  Object.defineProperty(exports, "DEFAULT_PANEL_EDITOR_LABELS", {
529
529
  enumerable: true,
530
- get: function () { return chunkJ2RXQVVF_cjs.DEFAULT_PANEL_EDITOR_LABELS; }
530
+ get: function () { return chunk4EK7TAP7_cjs.DEFAULT_PANEL_EDITOR_LABELS; }
531
531
  });
532
532
  Object.defineProperty(exports, "PanelEditor", {
533
533
  enumerable: true,
534
- get: function () { return chunkJ2RXQVVF_cjs.PanelEditor; }
534
+ get: function () { return chunk4EK7TAP7_cjs.PanelEditor; }
535
535
  });
536
536
  Object.defineProperty(exports, "DASHBOARD_TEMPLATES", {
537
537
  enumerable: true,
@@ -555,47 +555,47 @@ Object.defineProperty(exports, "usagePanels", {
555
555
  });
556
556
  Object.defineProperty(exports, "ChartRenderer", {
557
557
  enumerable: true,
558
- get: function () { return chunkK5MYEWD5_cjs.ChartRenderer; }
558
+ get: function () { return chunkUZHWXKS6_cjs.ChartRenderer; }
559
559
  });
560
560
  Object.defineProperty(exports, "ChartTable", {
561
561
  enumerable: true,
562
- get: function () { return chunkK5MYEWD5_cjs.ChartTable; }
562
+ get: function () { return chunkUZHWXKS6_cjs.ChartTable; }
563
563
  });
564
564
  Object.defineProperty(exports, "DEFAULT_CHART_RENDERER_LABELS", {
565
565
  enumerable: true,
566
- get: function () { return chunkK5MYEWD5_cjs.DEFAULT_CHART_RENDERER_LABELS; }
566
+ get: function () { return chunkUZHWXKS6_cjs.DEFAULT_CHART_RENDERER_LABELS; }
567
567
  });
568
568
  Object.defineProperty(exports, "DEFAULT_DASHBOARD_PANEL_LABELS", {
569
569
  enumerable: true,
570
- get: function () { return chunkK5MYEWD5_cjs.DEFAULT_DASHBOARD_PANEL_LABELS; }
570
+ get: function () { return chunkUZHWXKS6_cjs.DEFAULT_DASHBOARD_PANEL_LABELS; }
571
571
  });
572
572
  Object.defineProperty(exports, "DEFAULT_PANEL_VIEW_LABELS", {
573
573
  enumerable: true,
574
- get: function () { return chunkK5MYEWD5_cjs.DEFAULT_PANEL_VIEW_LABELS; }
574
+ get: function () { return chunkUZHWXKS6_cjs.DEFAULT_PANEL_VIEW_LABELS; }
575
575
  });
576
576
  Object.defineProperty(exports, "DashboardCell", {
577
577
  enumerable: true,
578
- get: function () { return chunkK5MYEWD5_cjs.DashboardCell; }
578
+ get: function () { return chunkUZHWXKS6_cjs.DashboardCell; }
579
579
  });
580
580
  Object.defineProperty(exports, "DashboardGrid", {
581
581
  enumerable: true,
582
- get: function () { return chunkK5MYEWD5_cjs.DashboardGrid; }
582
+ get: function () { return chunkUZHWXKS6_cjs.DashboardGrid; }
583
583
  });
584
584
  Object.defineProperty(exports, "DashboardPanel", {
585
585
  enumerable: true,
586
- get: function () { return chunkK5MYEWD5_cjs.DashboardPanel; }
586
+ get: function () { return chunkUZHWXKS6_cjs.DashboardPanel; }
587
587
  });
588
588
  Object.defineProperty(exports, "PANEL_FORMATTERS", {
589
589
  enumerable: true,
590
- get: function () { return chunkK5MYEWD5_cjs.PANEL_FORMATTERS; }
590
+ get: function () { return chunkUZHWXKS6_cjs.PANEL_FORMATTERS; }
591
591
  });
592
592
  Object.defineProperty(exports, "PanelView", {
593
593
  enumerable: true,
594
- get: function () { return chunkK5MYEWD5_cjs.PanelView; }
594
+ get: function () { return chunkUZHWXKS6_cjs.PanelView; }
595
595
  });
596
596
  Object.defineProperty(exports, "clampPanelWidth", {
597
597
  enumerable: true,
598
- get: function () { return chunkK5MYEWD5_cjs.clampPanelWidth; }
598
+ get: function () { return chunkUZHWXKS6_cjs.clampPanelWidth; }
599
599
  });
600
600
  Object.defineProperty(exports, "DEFAULT_UNIT_FORMATTERS", {
601
601
  enumerable: true,
@@ -58,6 +58,7 @@ import {
58
58
  import { QuickParts } from "./template/QuickParts.js";
59
59
  import {
60
60
  MySignatureContextItems,
61
+ SignatureFieldContextItem,
61
62
  MySignatureMenu,
62
63
  SignatureFieldMenu,
63
64
  SignatureFieldsProvider
@@ -726,7 +727,8 @@ function NativeDocxEditor({
726
727
  /* @__PURE__ */ jsx(DocxEditor.HyperLink, {}),
727
728
  /* @__PURE__ */ jsxs(DocxEditor.ContextMenu, { children: [
728
729
  /* @__PURE__ */ jsx(DocxContextMenuExtras, {}),
729
- /* @__PURE__ */ jsx(MySignatureContextItems, {})
730
+ /* @__PURE__ */ jsx(MySignatureContextItems, {}),
731
+ /* @__PURE__ */ jsx(SignatureFieldContextItem, {})
730
732
  ] })
731
733
  ] }),
732
734
  !compact && /* @__PURE__ */ jsx(DocxEditor.PageNumber, {})