@arbidocs/blocks 0.4.85 → 0.4.87

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 (105) hide show
  1. package/dist/activity/NotificationRelevanceControls.d.ts +47 -0
  2. package/dist/activity/WorkspaceActivityList.d.ts +34 -0
  3. package/dist/activity/index.d.ts +3 -0
  4. package/dist/activity/workspace-activity.d.ts +46 -0
  5. package/dist/agents/index.cjs +290 -286
  6. package/dist/agents/index.js +5 -5
  7. package/dist/agents/tasks/TaskActivityTimeline.d.ts +5 -0
  8. package/dist/agents/tasks/index.d.ts +1 -1
  9. package/dist/chat/index.cjs +125 -125
  10. package/dist/chat/index.js +3 -3
  11. package/dist/{chunk-X23U6QEJ.js → chunk-2FBQSQDW.js} +286 -6
  12. package/dist/chunk-2FBQSQDW.js.map +1 -0
  13. package/dist/{chunk-7YUFMNFW.cjs → chunk-2ZDFVRGV.cjs} +5 -13
  14. package/dist/chunk-2ZDFVRGV.cjs.map +1 -0
  15. package/dist/{chunk-RZUMQM7W.cjs → chunk-5XZU64E2.cjs} +190 -2
  16. package/dist/chunk-5XZU64E2.cjs.map +1 -0
  17. package/dist/chunk-6XS5IJ5R.cjs +43 -0
  18. package/dist/chunk-6XS5IJ5R.cjs.map +1 -0
  19. package/dist/chunk-BX62HJZU.js +41 -0
  20. package/dist/chunk-BX62HJZU.js.map +1 -0
  21. package/dist/{chunk-IF6VAYIA.cjs → chunk-C3DRLFU7.cjs} +5 -5
  22. package/dist/{chunk-IF6VAYIA.cjs.map → chunk-C3DRLFU7.cjs.map} +1 -1
  23. package/dist/{chunk-GJV2G4FC.js → chunk-GFYGYME3.js} +7 -19
  24. package/dist/chunk-GFYGYME3.js.map +1 -0
  25. package/dist/{chunk-XMBYDLZQ.cjs → chunk-HUJLKDWX.cjs} +4 -4
  26. package/dist/{chunk-XMBYDLZQ.cjs.map → chunk-HUJLKDWX.cjs.map} +1 -1
  27. package/dist/{chunk-ICBAFX5B.js → chunk-LBE36YNZ.js} +3 -3
  28. package/dist/{chunk-ICBAFX5B.js.map → chunk-LBE36YNZ.js.map} +1 -1
  29. package/dist/{chunk-MP6FK43E.cjs → chunk-O5NDG4EA.cjs} +3 -3
  30. package/dist/{chunk-MP6FK43E.cjs.map → chunk-O5NDG4EA.cjs.map} +1 -1
  31. package/dist/{chunk-B3WCKBJ7.cjs → chunk-OR4CO743.cjs} +7 -19
  32. package/dist/chunk-OR4CO743.cjs.map +1 -0
  33. package/dist/{chunk-DDF5GPIJ.js → chunk-P5ST47VY.js} +3 -3
  34. package/dist/{chunk-DDF5GPIJ.js.map → chunk-P5ST47VY.js.map} +1 -1
  35. package/dist/{chunk-EWSEQEPL.js → chunk-PFA43QNX.js} +3 -3
  36. package/dist/{chunk-EWSEQEPL.js.map → chunk-PFA43QNX.js.map} +1 -1
  37. package/dist/{chunk-WRSBM6QN.cjs → chunk-QOADH2YB.cjs} +292 -3
  38. package/dist/chunk-QOADH2YB.cjs.map +1 -0
  39. package/dist/{chunk-A24C6BNA.js → chunk-UDLMLU6T.js} +3 -3
  40. package/dist/{chunk-A24C6BNA.js.map → chunk-UDLMLU6T.js.map} +1 -1
  41. package/dist/{chunk-FHOZMT5P.js → chunk-UJM7TG44.js} +8 -192
  42. package/dist/chunk-UJM7TG44.js.map +1 -0
  43. package/dist/{chunk-OPA2Y6YZ.js → chunk-W2R7YVFM.js} +5 -13
  44. package/dist/chunk-W2R7YVFM.js.map +1 -0
  45. package/dist/{chunk-XQDM6T6C.js → chunk-WDD255XQ.js} +3 -3
  46. package/dist/{chunk-XQDM6T6C.js.map → chunk-WDD255XQ.js.map} +1 -1
  47. package/dist/{chunk-Z7YUCYI6.cjs → chunk-X5K5PCRJ.cjs} +50 -236
  48. package/dist/chunk-X5K5PCRJ.cjs.map +1 -0
  49. package/dist/{chunk-TZR36PPP.cjs → chunk-YFPIJUV3.cjs} +5 -5
  50. package/dist/{chunk-TZR36PPP.cjs.map → chunk-YFPIJUV3.cjs.map} +1 -1
  51. package/dist/{chunk-KHY4PYU7.js → chunk-YX466FWL.js} +189 -4
  52. package/dist/chunk-YX466FWL.js.map +1 -0
  53. package/dist/{chunk-Z5VUZ6YD.cjs → chunk-ZV3BKLFY.cjs} +3 -3
  54. package/dist/{chunk-Z5VUZ6YD.cjs.map → chunk-ZV3BKLFY.cjs.map} +1 -1
  55. package/dist/connect/docx.cjs +6 -6
  56. package/dist/connect/docx.js +4 -4
  57. package/dist/connect/index.cjs +157 -70
  58. package/dist/connect/index.cjs.map +1 -1
  59. package/dist/connect/index.d.ts +2 -0
  60. package/dist/connect/index.js +105 -21
  61. package/dist/connect/index.js.map +1 -1
  62. package/dist/connection/ConnectedNotificationRelevance.d.ts +16 -0
  63. package/dist/connection/ConnectedSettings.d.ts +1 -4
  64. package/dist/connection/ConnectedWorkspaceActivity.d.ts +11 -0
  65. package/dist/docx/NativeDocxEditor.d.ts +4 -2
  66. package/dist/docx/StreamedWordArtifact.d.ts +9 -6
  67. package/dist/docx/index.cjs +15 -15
  68. package/dist/docx/index.js +3 -3
  69. package/dist/facts/index.cjs +2 -2
  70. package/dist/facts/index.js +2 -2
  71. package/dist/files/index.cjs +2 -2
  72. package/dist/files/index.js +2 -2
  73. package/dist/home/index.cjs +17 -17
  74. package/dist/home/index.js +3 -3
  75. package/dist/index.cjs +564 -524
  76. package/dist/index.d.ts +1 -0
  77. package/dist/index.js +10 -10
  78. package/dist/retrieval/index.cjs +1 -1
  79. package/dist/retrieval/index.js +1 -1
  80. package/dist/settings/PasswordChangeDialog.d.ts +9 -12
  81. package/dist/settings/index.cjs +35 -35
  82. package/dist/settings/index.js +2 -2
  83. package/dist/shell/index.cjs +1 -1
  84. package/dist/shell/index.js +1 -1
  85. package/dist/studio/index.cjs +4 -4
  86. package/dist/studio/index.js +3 -3
  87. package/dist/workflow-canvas/index.cjs +48 -48
  88. package/dist/workflow-canvas/index.js +5 -5
  89. package/dist/workspaces/index.cjs +2 -2
  90. package/dist/workspaces/index.js +2 -2
  91. package/package.json +4 -4
  92. package/dist/chunk-7YUFMNFW.cjs.map +0 -1
  93. package/dist/chunk-AINNADMT.cjs +0 -62
  94. package/dist/chunk-AINNADMT.cjs.map +0 -1
  95. package/dist/chunk-B3WCKBJ7.cjs.map +0 -1
  96. package/dist/chunk-FHOZMT5P.js.map +0 -1
  97. package/dist/chunk-FT5FFXSJ.js +0 -60
  98. package/dist/chunk-FT5FFXSJ.js.map +0 -1
  99. package/dist/chunk-GJV2G4FC.js.map +0 -1
  100. package/dist/chunk-KHY4PYU7.js.map +0 -1
  101. package/dist/chunk-OPA2Y6YZ.js.map +0 -1
  102. package/dist/chunk-RZUMQM7W.cjs.map +0 -1
  103. package/dist/chunk-WRSBM6QN.cjs.map +0 -1
  104. package/dist/chunk-X23U6QEJ.js.map +0 -1
  105. package/dist/chunk-Z7YUCYI6.cjs.map +0 -1
@@ -1,33 +1,33 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkB3WCKBJ7_cjs = require('../chunk-B3WCKBJ7.cjs');
5
- var chunkXMBYDLZQ_cjs = require('../chunk-XMBYDLZQ.cjs');
6
- var chunkTZR36PPP_cjs = require('../chunk-TZR36PPP.cjs');
4
+ var chunkOR4CO743_cjs = require('../chunk-OR4CO743.cjs');
5
+ var chunkHUJLKDWX_cjs = require('../chunk-HUJLKDWX.cjs');
6
+ var chunkYFPIJUV3_cjs = require('../chunk-YFPIJUV3.cjs');
7
7
  var chunkMUMH3Z6K_cjs = require('../chunk-MUMH3Z6K.cjs');
8
8
  var chunkJH6JTI76_cjs = require('../chunk-JH6JTI76.cjs');
9
- require('../chunk-7YUFMNFW.cjs');
9
+ require('../chunk-2ZDFVRGV.cjs');
10
10
  var chunkO4YPVYPO_cjs = require('../chunk-O4YPVYPO.cjs');
11
- var chunkWRSBM6QN_cjs = require('../chunk-WRSBM6QN.cjs');
12
- var chunkRZUMQM7W_cjs = require('../chunk-RZUMQM7W.cjs');
11
+ var chunkQOADH2YB_cjs = require('../chunk-QOADH2YB.cjs');
12
+ var chunk5XZU64E2_cjs = require('../chunk-5XZU64E2.cjs');
13
13
  var chunkAFSOUS5X_cjs = require('../chunk-AFSOUS5X.cjs');
14
14
  var chunk7RGLTF76_cjs = require('../chunk-7RGLTF76.cjs');
15
15
  require('../chunk-DETZZBG2.cjs');
16
16
  var chunk2EI7NCUA_cjs = require('../chunk-2EI7NCUA.cjs');
17
17
  require('../chunk-7D737FLE.cjs');
18
- require('../chunk-ADOKTJHV.cjs');
19
18
  var chunkQVBZESYQ_cjs = require('../chunk-QVBZESYQ.cjs');
20
- var chunkMP6FK43E_cjs = require('../chunk-MP6FK43E.cjs');
19
+ require('../chunk-ADOKTJHV.cjs');
20
+ var chunkO5NDG4EA_cjs = require('../chunk-O5NDG4EA.cjs');
21
21
  require('../chunk-VGOFFCMT.cjs');
22
22
  require('../chunk-B4SRYJLM.cjs');
23
23
  require('../chunk-7UTB4PHM.cjs');
24
24
  require('../chunk-PPCATBOY.cjs');
25
- var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
26
25
  var chunk3R6XBYL7_cjs = require('../chunk-3R6XBYL7.cjs');
27
26
  var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
28
27
  require('../chunk-IXALYQT7.cjs');
29
28
  require('../chunk-FX3K6LNZ.cjs');
30
29
  require('../chunk-MHVNT4J3.cjs');
30
+ var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
31
31
  require('../chunk-DES3K4SD.cjs');
32
32
  var react = require('react');
33
33
  var reactQuery = require('@tanstack/react-query');
@@ -83,6 +83,95 @@ function ConnectedTaskAccessRequest({ conversationId }) {
83
83
  }
84
84
  );
85
85
  }
86
+ function ConnectedWorkspaceActivity({
87
+ workspaceId: workspaceProp,
88
+ onOpen,
89
+ pageSize,
90
+ ...listProps
91
+ }) {
92
+ const { workspaceId: selected, status, ensureWorkspaceOpen } = chunkMUMH3Z6K_cjs.useConnection();
93
+ const workspaceId = workspaceProp ?? selected ?? void 0;
94
+ const live = status === "authenticated" && !!workspaceId;
95
+ const feed = react$1.useWorkspaceActivity(workspaceId, {
96
+ enabled: live,
97
+ limit: pageSize,
98
+ // Titles and names decrypt only while the session has the workspace open.
99
+ beforeFetch: workspaceId === selected ? ensureWorkspaceOpen : void 0
100
+ });
101
+ const members = react$1.useWorkspaceUsers(workspaceId, {
102
+ enabled: live && workspaceId === selected,
103
+ beforeFetch: ensureWorkspaceOpen
104
+ });
105
+ const names = react.useMemo(
106
+ () => new Map(
107
+ (members.data ?? []).map((m) => [
108
+ m.user.external_id,
109
+ [m.user.given_name, m.user.family_name].filter(Boolean).join(" ") || m.user.email
110
+ ])
111
+ ),
112
+ [members.data]
113
+ );
114
+ const items = react.useMemo(
115
+ () => (feed.data?.pages ?? []).flatMap((page) => page.items),
116
+ [feed.data]
117
+ );
118
+ return /* @__PURE__ */ jsxRuntime.jsx(
119
+ chunkQOADH2YB_cjs.WorkspaceActivityList,
120
+ {
121
+ ...listProps,
122
+ items,
123
+ isLoading: feed.isLoading,
124
+ isError: feed.isError,
125
+ hasMore: feed.hasNextPage,
126
+ isLoadingMore: feed.isFetchingNextPage,
127
+ onLoadMore: () => void feed.fetchNextPage(),
128
+ onRetry: () => void feed.refetch(),
129
+ onOpen,
130
+ nameOf: (id) => names.get(id)
131
+ }
132
+ );
133
+ }
134
+ function ConnectedWorkspaceNotificationMenu({
135
+ workspaceId: workspaceProp,
136
+ ...menuProps
137
+ }) {
138
+ const { workspaceId: selected, status } = chunkMUMH3Z6K_cjs.useConnection();
139
+ const workspaceId = workspaceProp ?? selected;
140
+ const { level, setLevel, isLoading, isSaving } = react$1.useWorkspaceNotificationLevel(workspaceId, {
141
+ enabled: status === "authenticated"
142
+ });
143
+ if (!workspaceId) return null;
144
+ return /* @__PURE__ */ jsxRuntime.jsx(
145
+ chunkQOADH2YB_cjs.WorkspaceNotificationMenu,
146
+ {
147
+ ...menuProps,
148
+ level,
149
+ onLevelChange: setLevel,
150
+ disabled: isLoading || isSaving
151
+ }
152
+ );
153
+ }
154
+ function ConnectedThreadFollow({
155
+ conversationId,
156
+ as = "button",
157
+ ...props
158
+ }) {
159
+ const { status } = chunkMUMH3Z6K_cjs.useConnection();
160
+ const { following, setFollowing, isLoading, isSaving } = react$1.useFollowThread(conversationId, {
161
+ enabled: status === "authenticated"
162
+ });
163
+ if (!conversationId) return null;
164
+ const Control = as === "menu-item" ? chunkQOADH2YB_cjs.ThreadFollowMenuItem : chunkQOADH2YB_cjs.ThreadFollowButton;
165
+ return /* @__PURE__ */ jsxRuntime.jsx(
166
+ Control,
167
+ {
168
+ ...props,
169
+ following,
170
+ onFollowingChange: setFollowing,
171
+ disabled: isLoading || isSaving
172
+ }
173
+ );
174
+ }
86
175
  function ConnectedSkillUpload() {
87
176
  const [name, setName] = react.useState("");
88
177
  const [file, setFile] = react.useState(null);
@@ -198,7 +287,7 @@ function StreamedArtifact({
198
287
  }
199
288
  var STARTING = /* @__PURE__ */ new Set(["pending", "running"]);
200
289
  function formValues(step, inputs) {
201
- const fields = chunkRZUMQM7W_cjs.stepFields(step);
290
+ const fields = chunk5XZU64E2_cjs.stepFields(step);
202
291
  if (!fields.length) return void 0;
203
292
  if (step.kind === "form")
204
293
  return Object.fromEntries(fields.map((f) => [f.name, inputs[f.name] ?? ""]));
@@ -233,10 +322,10 @@ function useAnswerRetry(missing, refetch) {
233
322
  function useWorkflowThread(workflow, options = {}) {
234
323
  const arbi = react$1.useArbi();
235
324
  const { ensureWorkspaceOpen, status } = chunkMUMH3Z6K_cjs.useConnection();
236
- const { wsId } = chunkXMBYDLZQ_cjs.useWorkspaceDocs();
325
+ const { wsId } = chunkHUJLKDWX_cjs.useWorkspaceDocs();
237
326
  const [threadId, setThreadId] = react.useState(options.conversationId);
238
327
  const [localInputs, setLocalInputs] = react.useState(
239
- () => chunkRZUMQM7W_cjs.initialRunInputs(workflow, options.initialInputs)
328
+ () => chunk5XZU64E2_cjs.initialRunInputs(workflow, options.initialInputs)
240
329
  );
241
330
  const [edits, setEdits] = react.useState({});
242
331
  const [localStates, setLocalStates] = react.useState({});
@@ -256,12 +345,12 @@ function useWorkflowThread(workflow, options = {}) {
256
345
  );
257
346
  const conversation = conversations.data?.find((c) => c.external_id === threadId);
258
347
  const steps = react.useMemo(
259
- () => chunkRZUMQM7W_cjs.workflowSteps(workflow).length > 0 ? chunkRZUMQM7W_cjs.workflowSteps(workflow) : chunkRZUMQM7W_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
348
+ () => chunk5XZU64E2_cjs.workflowSteps(workflow).length > 0 ? chunk5XZU64E2_cjs.workflowSteps(workflow) : chunk5XZU64E2_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
260
349
  [workflow, conversation?.plan?.steps]
261
350
  );
262
351
  const activity = react$1.useConversationActivity(threadId, { live: !!threadId });
263
352
  const serverStates = react.useMemo(
264
- () => chunkRZUMQM7W_cjs.stepStatesFromActivity(activity.data ?? []),
353
+ () => chunk5XZU64E2_cjs.stepStatesFromActivity(activity.data ?? []),
265
354
  [activity.data]
266
355
  );
267
356
  const working = steps.some(
@@ -304,7 +393,7 @@ function useWorkflowThread(workflow, options = {}) {
304
393
  async (values, done) => {
305
394
  await ensureWorkspaceOpen();
306
395
  const created = await createWork.mutateAsync({
307
- title: chunkRZUMQM7W_cjs.runThreadTitle(workflow, values).slice(0, 60),
396
+ title: chunk5XZU64E2_cjs.runThreadTitle(workflow, values).slice(0, 60),
308
397
  description: workflow.description || null,
309
398
  prompt: null,
310
399
  skill_ref: null,
@@ -316,7 +405,7 @@ function useWorkflowThread(workflow, options = {}) {
316
405
  criteria: [],
317
406
  max_passes: 3,
318
407
  documents: [],
319
- steps: chunkRZUMQM7W_cjs.toPlanSteps(workflow, {
408
+ steps: chunk5XZU64E2_cjs.toPlanSteps(workflow, {
320
409
  inputs: values,
321
410
  resolveWorkflow: options.resolveWorkflow,
322
411
  compose: options.compose
@@ -403,7 +492,7 @@ function useWorkflowThread(workflow, options = {}) {
403
492
  const anyRunning = Object.values(states).some((s) => s.status === "running");
404
493
  const needsStart = !threadId || idle && !anyRunning;
405
494
  const runError = idle ? conversation?.last_error ?? null : null;
406
- const view = chunkRZUMQM7W_cjs.useWorkflowView({
495
+ const view = chunk5XZU64E2_cjs.useWorkflowView({
407
496
  steps,
408
497
  states,
409
498
  inputs,
@@ -446,7 +535,7 @@ function WorkflowRunThread({
446
535
  if (listed && activeThreadId !== conversationId) selectThread(conversationId);
447
536
  }, [listed, activeThreadId, conversationId, selectThread]);
448
537
  return /* @__PURE__ */ jsxRuntime.jsx(
449
- chunkMP6FK43E_cjs.ChatPage,
538
+ chunkO5NDG4EA_cjs.ChatPage,
450
539
  {
451
540
  chat: { ...chat, threads: chat.threads.filter((t) => t.id === conversationId) },
452
541
  singleThread: true,
@@ -482,7 +571,7 @@ function WorkflowSignDialog({
482
571
  const arbi = react$1.useArbi();
483
572
  const { user, ensureWorkspaceOpen } = chunkMUMH3Z6K_cjs.useConnection();
484
573
  const tools = documentTools.useOptionalDocumentTools();
485
- const { id, version: stepVersion } = chunkRZUMQM7W_cjs.splitDocRef(docRef);
574
+ const { id, version: stepVersion } = chunk5XZU64E2_cjs.splitDocRef(docRef);
486
575
  const [version, setVersion] = react.useState(stepVersion);
487
576
  const [pdf, setPdf] = react.useState(null);
488
577
  const [preparing, setPreparing] = react.useState(false);
@@ -560,7 +649,7 @@ function WorkflowWordDialog({
560
649
  onClose,
561
650
  labels
562
651
  }) {
563
- const { id } = chunkRZUMQM7W_cjs.splitDocRef(docRef);
652
+ const { id } = chunk5XZU64E2_cjs.splitDocRef(docRef);
564
653
  return /* @__PURE__ */ jsxRuntime.jsx(
565
654
  chunkULWRNGGE_cjs.ModalScaffold,
566
655
  {
@@ -569,7 +658,7 @@ function WorkflowWordDialog({
569
658
  title: title ?? labels.wordTitle,
570
659
  size: "xl",
571
660
  testId: "workflow-word-dialog",
572
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkTZR36PPP_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
661
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkYFPIJUV3_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
573
662
  }
574
663
  );
575
664
  }
@@ -671,7 +760,7 @@ function ConnectedWorkflowRunner({
671
760
  const dl = { ...DEFAULT_WORKFLOW_RUNNER_DIALOG_LABELS, ...dialogLabels };
672
761
  const arbi = react$1.useArbi();
673
762
  const { ensureWorkspaceOpen, user } = chunkMUMH3Z6K_cjs.useConnection();
674
- const { wsId } = chunkXMBYDLZQ_cjs.useWorkspaceDocs();
763
+ const { wsId } = chunkHUJLKDWX_cjs.useWorkspaceDocs();
675
764
  const { data: docs = [], refetch } = react$1.useDocuments(wsId);
676
765
  const [sending, setSending] = react.useState([]);
677
766
  const [added, setAdded] = react.useState({});
@@ -694,7 +783,7 @@ function ConnectedWorkflowRunner({
694
783
  () => ({
695
784
  me: user?.externalId,
696
785
  openDocument: onOpenDocument && ((ref) => {
697
- const { id, version } = chunkRZUMQM7W_cjs.splitDocRef(ref);
786
+ const { id, version } = chunk5XZU64E2_cjs.splitDocRef(ref);
698
787
  onOpenDocument(id, version);
699
788
  }),
700
789
  openDraft: onOpenDraft && ((draftId) => onOpenDraft(draftId)),
@@ -704,7 +793,7 @@ function ConnectedWorkflowRunner({
704
793
  const w = state.waiting;
705
794
  if (w?.doc_ext_id) setDialog({ kind: "sign", docRef: w.doc_ext_id });
706
795
  }),
707
- openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(chunkRZUMQM7W_cjs.splitDocRef(ref).id) ?? "" })),
796
+ openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(chunk5XZU64E2_cjs.splitDocRef(ref).id) ?? "" })),
708
797
  openReview: hostActions?.openReview ?? ((tags, documents) => setDialog({ kind: "review", tags, documents }))
709
798
  }),
710
799
  [user?.externalId, onOpenDocument, onOpenDraft, onOpenMessage, hostActions, nameOfDoc, inThread]
@@ -840,7 +929,7 @@ function ConnectedWorkflowRunner({
840
929
  );
841
930
  };
842
931
  const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
843
- chunkRZUMQM7W_cjs.WorkflowRunner,
932
+ chunk5XZU64E2_cjs.WorkflowRunner,
844
933
  {
845
934
  people,
846
935
  ...runnerProps,
@@ -886,10 +975,10 @@ function ConnectedWorkflowRunner({
886
975
  ) }),
887
976
  inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
888
977
  /* @__PURE__ */ jsxRuntime.jsx(
889
- chunkRZUMQM7W_cjs.WorkflowStepBar,
978
+ chunk5XZU64E2_cjs.WorkflowStepBar,
890
979
  {
891
980
  run: view,
892
- levels: chunkRZUMQM7W_cjs.stepLevels(view.steps),
981
+ levels: chunk5XZU64E2_cjs.stepLevels(view.steps),
893
982
  doneTitle: (workflow.run.kind === "steps" ? workflow.run.completion?.title : void 0) ?? runnerProps.labels?.complete ?? "Done",
894
983
  icon: (key) => key && runnerProps.renderIcon ? runnerProps.renderIcon(key) : void 0,
895
984
  tid: (suffix) => `${testIdPrefix}-${suffix}`
@@ -1070,17 +1159,17 @@ function ConnectedTagTable({
1070
1159
  const fail = (e) => setError(e instanceof Error ? e.message : String(e));
1071
1160
  const snapshot = (data) => {
1072
1161
  const title = exportTitle ?? KIND_TITLES[kind];
1073
- const bytes = chunkWRSBM6QN_cjs.tagTableDocx(data, {
1162
+ const bytes = chunkQOADH2YB_cjs.tagTableDocx(data, {
1074
1163
  title,
1075
1164
  nameOf: (id) => people.find((p) => p.value === id)?.label
1076
1165
  });
1077
1166
  const stamp = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
1078
1167
  const name = `${title.replace(/[\\/:*?"<>|]+/g, "-")} (${stamp}).docx`;
1079
- return { blob: new Blob([bytes], { type: chunkWRSBM6QN_cjs.DOCX_MIME_TYPE }), name };
1168
+ return { blob: new Blob([bytes], { type: chunkQOADH2YB_cjs.DOCX_MIME_TYPE }), name };
1080
1169
  };
1081
1170
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1082
1171
  /* @__PURE__ */ jsxRuntime.jsx(
1083
- chunkWRSBM6QN_cjs.TagTable,
1172
+ chunkQOADH2YB_cjs.TagTable,
1084
1173
  {
1085
1174
  ...props,
1086
1175
  table,
@@ -1218,12 +1307,12 @@ function ConnectedProfileCard({ notify: notify3, title = "Profile" }) {
1218
1307
  }
1219
1308
  });
1220
1309
  const display = profile?.fullName || user?.name || "Unnamed";
1221
- return /* @__PURE__ */ jsxRuntime.jsx(chunkB3WCKBJ7_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserCircle, {}), title, children: /* @__PURE__ */ jsxRuntime.jsx(
1222
- chunkB3WCKBJ7_cjs.ProfileCard,
1310
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkOR4CO743_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserCircle, {}), title, children: /* @__PURE__ */ jsxRuntime.jsx(
1311
+ chunkOR4CO743_cjs.ProfileCard,
1223
1312
  {
1224
1313
  avatar: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1225
1314
  /* @__PURE__ */ jsxRuntime.jsx(
1226
- chunkB3WCKBJ7_cjs.AvatarPicker,
1315
+ chunkOR4CO743_cjs.AvatarPicker,
1227
1316
  {
1228
1317
  pictureUrl: profile?.picture ?? user?.picture,
1229
1318
  initials: chunkKDG6FER6_cjs.initials(display),
@@ -1265,9 +1354,9 @@ function ConnectedIdentityVerification({
1265
1354
  onNameAccepted: () => notify3?.("Name updated to match your ID", "success")
1266
1355
  });
1267
1356
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1268
- /* @__PURE__ */ jsxRuntime.jsx(chunkB3WCKBJ7_cjs.IdentityVerificationCard, { flow, labels }),
1357
+ /* @__PURE__ */ jsxRuntime.jsx(chunkOR4CO743_cjs.IdentityVerificationCard, { flow, labels }),
1269
1358
  /* @__PURE__ */ jsxRuntime.jsx(
1270
- chunkB3WCKBJ7_cjs.IdentityVerificationDialog,
1359
+ chunkOR4CO743_cjs.IdentityVerificationDialog,
1271
1360
  {
1272
1361
  flow,
1273
1362
  accountName: profile?.fullName ?? "",
@@ -1279,7 +1368,7 @@ function ConnectedIdentityVerification({
1279
1368
  function ConnectedRequireVerified({ children, labels }) {
1280
1369
  const { data: profile } = react$1.useProfile();
1281
1370
  const flow = react$1.useIdentityVerification();
1282
- return /* @__PURE__ */ jsxRuntime.jsx(chunkB3WCKBJ7_cjs.RequireVerified, { flow, accountName: profile?.fullName ?? "", labels, children });
1371
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkOR4CO743_cjs.RequireVerified, { flow, accountName: profile?.fullName ?? "", labels, children });
1283
1372
  }
1284
1373
  function defaultUnmetPasswordRequirement(password) {
1285
1374
  if (password.length < 8) return "Minimum 8 characters";
@@ -1292,29 +1381,25 @@ function defaultUnmetPasswordRequirement(password) {
1292
1381
  function ConnectedSecuritySection({
1293
1382
  notify: notify3,
1294
1383
  getUnmetRequirement = defaultUnmetPasswordRequirement,
1295
- renderRecoveryKey,
1296
1384
  children
1297
1385
  }) {
1298
1386
  const [open, setOpen] = react.useState(false);
1299
1387
  const change = react$1.usePasswordChange();
1300
- const { data: workspaces } = react$1.useWorkspaces({ enabled: open });
1301
- const workspaceCount = (workspaces ?? []).filter((w) => w.is_member).length;
1302
1388
  const form = react$1.usePasswordChangeForm({
1303
1389
  getUnmetRequirement,
1304
1390
  submit: async (vars) => {
1305
- const result = await change.mutateAsync(vars);
1391
+ await change.mutateAsync(vars);
1306
1392
  notify3?.("Password changed successfully", "success");
1307
- return result;
1308
1393
  },
1309
1394
  onClose: () => setOpen(false)
1310
1395
  });
1311
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkB3WCKBJ7_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.KeyRound, {}), title: "Security", children: [
1312
- /* @__PURE__ */ jsxRuntime.jsxs(chunkB3WCKBJ7_cjs.SettingsCard, { padding: "sm", children: [
1396
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkOR4CO743_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.KeyRound, {}), title: "Security", children: [
1397
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkOR4CO743_cjs.SettingsCard, { padding: "sm", children: [
1313
1398
  /* @__PURE__ */ jsxRuntime.jsx(
1314
- chunkB3WCKBJ7_cjs.SettingsActionRow,
1399
+ chunkOR4CO743_cjs.SettingsActionRow,
1315
1400
  {
1316
1401
  title: "Change password",
1317
- description: "Used to sign in and to encrypt your data. Changing it re-encrypts everything in your account.",
1402
+ description: "Used to sign in and to unlock your account key. Changing it keeps everything readable and re-encrypts nothing.",
1318
1403
  onClick: () => setOpen(true),
1319
1404
  testId: "change-password-button"
1320
1405
  }
@@ -1322,7 +1407,7 @@ function ConnectedSecuritySection({
1322
1407
  children
1323
1408
  ] }),
1324
1409
  /* @__PURE__ */ jsxRuntime.jsx(
1325
- chunkB3WCKBJ7_cjs.PasswordChangeDialog,
1410
+ chunkOR4CO743_cjs.PasswordChangeDialog,
1326
1411
  {
1327
1412
  open,
1328
1413
  onClose: form.onCancel,
@@ -1334,35 +1419,34 @@ function ConnectedSecuritySection({
1334
1419
  confirmPassword: form.confirmPassword,
1335
1420
  onConfirmPasswordChange: form.onConfirmPasswordChange,
1336
1421
  getUnmetRequirement,
1337
- workspaceCount,
1338
1422
  error: form.error,
1339
1423
  isProcessing: form.isProcessing,
1340
1424
  isSubmitDisabled: form.isSubmitDisabled,
1341
1425
  onSubmit: form.onSubmit,
1342
- success: form.result ? renderRecoveryKey?.(form.result) ?? /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {}) : null,
1426
+ isChanged: form.isChanged,
1343
1427
  onDone: form.onDone
1344
1428
  }
1345
1429
  )
1346
1430
  ] });
1347
1431
  }
1348
1432
  function ConnectedNotificationPreferences({
1349
- categories = chunkB3WCKBJ7_cjs.EMAIL_NOTIFICATION_CATEGORIES,
1433
+ categories = chunkOR4CO743_cjs.EMAIL_NOTIFICATION_CATEGORIES,
1350
1434
  title = "Notifications"
1351
1435
  }) {
1352
1436
  const keys = react.useMemo(
1353
- () => categories === chunkB3WCKBJ7_cjs.EMAIL_NOTIFICATION_CATEGORIES ? chunkB3WCKBJ7_cjs.EMAIL_NOTIFICATION_KEYS : categories.map((c) => c.key),
1437
+ () => categories === chunkOR4CO743_cjs.EMAIL_NOTIFICATION_CATEGORIES ? chunkOR4CO743_cjs.EMAIL_NOTIFICATION_KEYS : categories.map((c) => c.key),
1354
1438
  [categories]
1355
1439
  );
1356
1440
  const prefs = react$1.useNotificationPreferences(keys);
1357
- return /* @__PURE__ */ jsxRuntime.jsx(chunkB3WCKBJ7_cjs.SettingsSection, { title, children: /* @__PURE__ */ jsxRuntime.jsx(chunkB3WCKBJ7_cjs.SettingsCard, { className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx(
1358
- chunkB3WCKBJ7_cjs.NotificationCategoryList,
1441
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkOR4CO743_cjs.SettingsSection, { title, children: /* @__PURE__ */ jsxRuntime.jsx(chunkOR4CO743_cjs.SettingsCard, { className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx(
1442
+ chunkOR4CO743_cjs.NotificationCategoryList,
1359
1443
  {
1360
1444
  masterId: "emailNotifications",
1361
1445
  masterTitle: "Email Notifications",
1362
1446
  masterDescription: "Email me about activity when I\u2019m away",
1363
1447
  masterChecked: prefs.masterChecked,
1364
1448
  onMasterChange: prefs.setAll,
1365
- categories: chunkB3WCKBJ7_cjs.toNotificationCategories(prefs.checked, categories),
1449
+ categories: chunkOR4CO743_cjs.toNotificationCategories(prefs.checked, categories),
1366
1450
  onCategoryChange: prefs.setCategory
1367
1451
  }
1368
1452
  ) }) });
@@ -1376,14 +1460,14 @@ function ConnectedSessionsRow({
1376
1460
  const sessions = react$1.useSessions({ enabled: open });
1377
1461
  const currentSessionId = react$1.useCurrentSessionId();
1378
1462
  const terminate = react$1.useTerminateSession();
1379
- const views = chunkB3WCKBJ7_cjs.toActiveSessionViews(sessions.data ?? [], {
1463
+ const views = chunkOR4CO743_cjs.toActiveSessionViews(sessions.data ?? [], {
1380
1464
  currentSessionId,
1381
1465
  terminatingId: terminate.isPending ? terminate.variables : null,
1382
1466
  renderIcon: renderSessionIcon
1383
1467
  });
1384
1468
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1385
1469
  /* @__PURE__ */ jsxRuntime.jsx(
1386
- chunkB3WCKBJ7_cjs.SettingsRow,
1470
+ chunkOR4CO743_cjs.SettingsRow,
1387
1471
  {
1388
1472
  label: "Active sessions",
1389
1473
  description: "Devices and agents currently signed in to your account.",
@@ -1405,7 +1489,7 @@ function ConnectedSessionsRow({
1405
1489
  }
1406
1490
  ),
1407
1491
  /* @__PURE__ */ jsxRuntime.jsx(
1408
- chunkB3WCKBJ7_cjs.ActiveSessionsDialog,
1492
+ chunkOR4CO743_cjs.ActiveSessionsDialog,
1409
1493
  {
1410
1494
  open,
1411
1495
  onOpenChange: setOpen,
@@ -1440,7 +1524,7 @@ function ConnectedLogoutDialog({
1440
1524
  const sessions = react$1.useSessions({ enabled: open });
1441
1525
  const logoutAll = react$1.useLogoutAllSessions();
1442
1526
  return /* @__PURE__ */ jsxRuntime.jsx(
1443
- chunkB3WCKBJ7_cjs.LogoutDialog,
1527
+ chunkOR4CO743_cjs.LogoutDialog,
1444
1528
  {
1445
1529
  open,
1446
1530
  onClose,
@@ -1454,7 +1538,7 @@ function ConnectedLogoutDialog({
1454
1538
  },
1455
1539
  canLogoutAll: true,
1456
1540
  isOnline,
1457
- sessions: chunkB3WCKBJ7_cjs.toLogoutSessionViews(sessions.data ?? []),
1541
+ sessions: chunkOR4CO743_cjs.toLogoutSessionViews(sessions.data ?? []),
1458
1542
  renderSessionIcon
1459
1543
  }
1460
1544
  );
@@ -1473,7 +1557,7 @@ function ConnectedDangerZone({ notify: notify3, renderSubscriptionLink }) {
1473
1557
  });
1474
1558
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1475
1559
  /* @__PURE__ */ jsxRuntime.jsx(
1476
- chunkB3WCKBJ7_cjs.SettingsDangerZone,
1560
+ chunkOR4CO743_cjs.SettingsDangerZone,
1477
1561
  {
1478
1562
  isOpen: zoneOpen,
1479
1563
  onToggle: () => setZoneOpen((o) => !o),
@@ -1493,12 +1577,12 @@ function ConnectedDangerZone({ notify: notify3, renderSubscriptionLink }) {
1493
1577
  }
1494
1578
  ),
1495
1579
  /* @__PURE__ */ jsxRuntime.jsx(
1496
- chunkB3WCKBJ7_cjs.DeleteAccountDialog,
1580
+ chunkOR4CO743_cjs.DeleteAccountDialog,
1497
1581
  {
1498
1582
  open: dialogOpen,
1499
1583
  onClose: flow.onClose,
1500
1584
  step: flow.step,
1501
- blockers: chunkB3WCKBJ7_cjs.toDeleteBlockerViews(flow.blockers, renderSubscriptionLink),
1585
+ blockers: chunkOR4CO743_cjs.toDeleteBlockerViews(flow.blockers, renderSubscriptionLink),
1502
1586
  onContinue: flow.onContinue,
1503
1587
  onBack: flow.onBack,
1504
1588
  userEmail: user?.email ?? "",
@@ -3195,7 +3279,7 @@ function ConnectedMailbox({
3195
3279
  function ActiveChat({ agentId, workspaceId }) {
3196
3280
  const chat = react$1.useArbiChat({ agentId, workspaceId });
3197
3281
  return /* @__PURE__ */ jsxRuntime.jsx(
3198
- chunkMP6FK43E_cjs.ChatPage,
3282
+ chunkO5NDG4EA_cjs.ChatPage,
3199
3283
  {
3200
3284
  chat: { ...chat, assistantMode: void 0, setAssistantMode: void 0 },
3201
3285
  documentsRequired: false,
@@ -3257,35 +3341,35 @@ function ConnectedAgentChatPanel({
3257
3341
 
3258
3342
  Object.defineProperty(exports, "ConnectedAssistantDock", {
3259
3343
  enumerable: true,
3260
- get: function () { return chunkXMBYDLZQ_cjs.ConnectedAssistantDock; }
3344
+ get: function () { return chunkHUJLKDWX_cjs.ConnectedAssistantDock; }
3261
3345
  });
3262
3346
  Object.defineProperty(exports, "redlineStats", {
3263
3347
  enumerable: true,
3264
- get: function () { return chunkXMBYDLZQ_cjs.redlineStats; }
3348
+ get: function () { return chunkHUJLKDWX_cjs.redlineStats; }
3265
3349
  });
3266
3350
  Object.defineProperty(exports, "textToArtifact", {
3267
3351
  enumerable: true,
3268
- get: function () { return chunkXMBYDLZQ_cjs.textToArtifact; }
3352
+ get: function () { return chunkHUJLKDWX_cjs.textToArtifact; }
3269
3353
  });
3270
3354
  Object.defineProperty(exports, "toRedlineMarkdown", {
3271
3355
  enumerable: true,
3272
- get: function () { return chunkXMBYDLZQ_cjs.toRedlineMarkdown; }
3356
+ get: function () { return chunkHUJLKDWX_cjs.toRedlineMarkdown; }
3273
3357
  });
3274
3358
  Object.defineProperty(exports, "useConnectedAiTask", {
3275
3359
  enumerable: true,
3276
- get: function () { return chunkXMBYDLZQ_cjs.useConnectedAiTask; }
3360
+ get: function () { return chunkHUJLKDWX_cjs.useConnectedAiTask; }
3277
3361
  });
3278
3362
  Object.defineProperty(exports, "useConnectedChat", {
3279
3363
  enumerable: true,
3280
- get: function () { return chunkXMBYDLZQ_cjs.useConnectedChat; }
3364
+ get: function () { return chunkHUJLKDWX_cjs.useConnectedChat; }
3281
3365
  });
3282
3366
  Object.defineProperty(exports, "useSemanticSearch", {
3283
3367
  enumerable: true,
3284
- get: function () { return chunkXMBYDLZQ_cjs.useSemanticSearch; }
3368
+ get: function () { return chunkHUJLKDWX_cjs.useSemanticSearch; }
3285
3369
  });
3286
3370
  Object.defineProperty(exports, "useWorkspaceDocs", {
3287
3371
  enumerable: true,
3288
- get: function () { return chunkXMBYDLZQ_cjs.useWorkspaceDocs; }
3372
+ get: function () { return chunkHUJLKDWX_cjs.useWorkspaceDocs; }
3289
3373
  });
3290
3374
  Object.defineProperty(exports, "ConnectionProvider", {
3291
3375
  enumerable: true,
@@ -3320,7 +3404,10 @@ exports.ConnectedSessionsRow = ConnectedSessionsRow;
3320
3404
  exports.ConnectedSkillUpload = ConnectedSkillUpload;
3321
3405
  exports.ConnectedTagTable = ConnectedTagTable;
3322
3406
  exports.ConnectedTaskAccessRequest = ConnectedTaskAccessRequest;
3407
+ exports.ConnectedThreadFollow = ConnectedThreadFollow;
3323
3408
  exports.ConnectedWorkflowRunner = ConnectedWorkflowRunner;
3409
+ exports.ConnectedWorkspaceActivity = ConnectedWorkspaceActivity;
3410
+ exports.ConnectedWorkspaceNotificationMenu = ConnectedWorkspaceNotificationMenu;
3324
3411
  exports.DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS = DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS;
3325
3412
  exports.StreamedArtifact = StreamedArtifact;
3326
3413
  exports.WorkflowRunThread = WorkflowRunThread;