@arbidocs/blocks 0.4.86 → 0.4.88

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 (99) 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/{chunk-2EI7NCUA.cjs → chunk-2CFW2ELM.cjs} +8 -2
  10. package/dist/chunk-2CFW2ELM.cjs.map +1 -0
  11. package/dist/{chunk-7YUFMNFW.cjs → chunk-2ZDFVRGV.cjs} +5 -13
  12. package/dist/chunk-2ZDFVRGV.cjs.map +1 -0
  13. package/dist/{chunk-RZUMQM7W.cjs → chunk-5XZU64E2.cjs} +190 -2
  14. package/dist/chunk-5XZU64E2.cjs.map +1 -0
  15. package/dist/{chunk-R26OHONI.js → chunk-6S5FLMWG.js} +83 -72
  16. package/dist/chunk-6S5FLMWG.js.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-IHYVK6F7.cjs → chunk-FNEL2BYV.cjs} +49 -235
  22. package/dist/chunk-FNEL2BYV.cjs.map +1 -0
  23. package/dist/{chunk-AFSOUS5X.cjs → chunk-N26CXGXC.cjs} +83 -72
  24. package/dist/chunk-N26CXGXC.cjs.map +1 -0
  25. package/dist/{chunk-X23U6QEJ.js → chunk-NXWKMKZY.js} +581 -217
  26. package/dist/chunk-NXWKMKZY.js.map +1 -0
  27. package/dist/{chunk-WRSBM6QN.cjs → chunk-UCAYNE44.cjs} +587 -214
  28. package/dist/chunk-UCAYNE44.cjs.map +1 -0
  29. package/dist/{chunk-A24C6BNA.js → chunk-UDLMLU6T.js} +3 -3
  30. package/dist/{chunk-A24C6BNA.js.map → chunk-UDLMLU6T.js.map} +1 -1
  31. package/dist/{chunk-S2NFD4QV.js → chunk-UZV27QLC.js} +8 -192
  32. package/dist/chunk-UZV27QLC.js.map +1 -0
  33. package/dist/{chunk-OPA2Y6YZ.js → chunk-W2R7YVFM.js} +5 -13
  34. package/dist/chunk-W2R7YVFM.js.map +1 -0
  35. package/dist/{chunk-TZR36PPP.cjs → chunk-YFPIJUV3.cjs} +5 -5
  36. package/dist/{chunk-TZR36PPP.cjs.map → chunk-YFPIJUV3.cjs.map} +1 -1
  37. package/dist/{chunk-KHY4PYU7.js → chunk-YX466FWL.js} +189 -4
  38. package/dist/chunk-YX466FWL.js.map +1 -0
  39. package/dist/{chunk-YU2KUMGE.js → chunk-ZX2VPMBJ.js} +8 -2
  40. package/dist/chunk-ZX2VPMBJ.js.map +1 -0
  41. package/dist/connect/docx.cjs +6 -6
  42. package/dist/connect/docx.js +4 -4
  43. package/dist/connect/index.cjs +118 -26
  44. package/dist/connect/index.cjs.map +1 -1
  45. package/dist/connect/index.d.ts +2 -0
  46. package/dist/connect/index.js +98 -9
  47. package/dist/connect/index.js.map +1 -1
  48. package/dist/connection/ConnectedNotificationRelevance.d.ts +16 -0
  49. package/dist/connection/ConnectedWorkspaceActivity.d.ts +11 -0
  50. package/dist/docx/NativeDocxEditor.d.ts +4 -2
  51. package/dist/docx/StreamedWordArtifact.d.ts +9 -6
  52. package/dist/docx/index.cjs +15 -15
  53. package/dist/docx/index.js +3 -3
  54. package/dist/facts/index.cjs +6 -6
  55. package/dist/facts/index.js +3 -3
  56. package/dist/files/index.cjs +3 -22
  57. package/dist/files/index.cjs.map +1 -1
  58. package/dist/files/index.js +3 -21
  59. package/dist/files/index.js.map +1 -1
  60. package/dist/files/views/TagFormParts.d.ts +0 -8
  61. package/dist/files/views/index.d.ts +1 -1
  62. package/dist/home/index.cjs +1 -1
  63. package/dist/home/index.js +1 -1
  64. package/dist/index.cjs +563 -431
  65. package/dist/index.cjs.map +1 -1
  66. package/dist/index.d.ts +1 -0
  67. package/dist/index.js +113 -22
  68. package/dist/index.js.map +1 -1
  69. package/dist/settings/index.cjs +3 -3
  70. package/dist/settings/index.js +1 -1
  71. package/dist/shell/FilterInput.d.ts +3 -1
  72. package/dist/shell/index.cjs +5 -5
  73. package/dist/shell/index.js +2 -2
  74. package/dist/studio/index.cjs +1 -1
  75. package/dist/studio/index.js +1 -1
  76. package/dist/tags/TagDetail.d.ts +14 -2
  77. package/dist/tags/TagTable.d.ts +20 -11
  78. package/dist/tags/TagsNav.d.ts +28 -4
  79. package/dist/tags/index.d.ts +1 -1
  80. package/dist/tags/tagTableModel.d.ts +10 -2
  81. package/dist/workflow-canvas/index.cjs +48 -48
  82. package/dist/workflow-canvas/index.js +5 -5
  83. package/package.json +4 -4
  84. package/dist/chunk-2EI7NCUA.cjs.map +0 -1
  85. package/dist/chunk-7YUFMNFW.cjs.map +0 -1
  86. package/dist/chunk-AFSOUS5X.cjs.map +0 -1
  87. package/dist/chunk-AINNADMT.cjs +0 -62
  88. package/dist/chunk-AINNADMT.cjs.map +0 -1
  89. package/dist/chunk-FT5FFXSJ.js +0 -60
  90. package/dist/chunk-FT5FFXSJ.js.map +0 -1
  91. package/dist/chunk-IHYVK6F7.cjs.map +0 -1
  92. package/dist/chunk-KHY4PYU7.js.map +0 -1
  93. package/dist/chunk-OPA2Y6YZ.js.map +0 -1
  94. package/dist/chunk-R26OHONI.js.map +0 -1
  95. package/dist/chunk-RZUMQM7W.cjs.map +0 -1
  96. package/dist/chunk-S2NFD4QV.js.map +0 -1
  97. package/dist/chunk-WRSBM6QN.cjs.map +0 -1
  98. package/dist/chunk-X23U6QEJ.js.map +0 -1
  99. package/dist/chunk-YU2KUMGE.js.map +0 -1
@@ -21,6 +21,7 @@ function FilterInput({
21
21
  hideFieldPicker = false,
22
22
  ariaLabel,
23
23
  onChange,
24
+ onSubmit,
24
25
  fields,
25
26
  onFieldsChange,
26
27
  filter,
@@ -52,6 +53,11 @@ function FilterInput({
52
53
  "aria-label": ariaLabel,
53
54
  value,
54
55
  onChange: (e) => onChange(e.target.value),
56
+ onKeyDown: onSubmit ? (e) => {
57
+ if (e.key !== "Enter") return;
58
+ e.preventDefault();
59
+ onSubmit(value);
60
+ } : void 0,
55
61
  placeholder: l.placeholder,
56
62
  "data-testid": testIdOr(testIds?.input, { testId: "facts-filter-input" }),
57
63
  className: cn(
@@ -125,5 +131,5 @@ function FilterInput({
125
131
  }
126
132
 
127
133
  export { DEFAULT_FILTER_FIELDS, DEFAULT_FILTER_INPUT_LABELS, FilterInput };
128
- //# sourceMappingURL=chunk-YU2KUMGE.js.map
129
- //# sourceMappingURL=chunk-YU2KUMGE.js.map
134
+ //# sourceMappingURL=chunk-ZX2VPMBJ.js.map
135
+ //# sourceMappingURL=chunk-ZX2VPMBJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/shell/FilterInput.tsx"],"names":[],"mappings":"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","file":"chunk-ZX2VPMBJ.js","sourcesContent":["/** Shared page filter with configurable searchable fields and optional quick-filter control. */\nimport type { ReactNode } from 'react'\nimport { X, Filter, SlidersHorizontal, Check } from 'lucide-react'\nimport {\n Command,\n CommandGroup,\n CommandItem,\n CommandList,\n Input,\n Popover,\n PopoverContent,\n PopoverTrigger,\n cn,\n} from '@arbidocs/react/ui'\nimport { testIdOr } from '../chat/test-id'\n\nexport type FilterField = 'text' | 'labels'\n\nexport const DEFAULT_FILTER_FIELDS: { value: FilterField; label: string }[] = [\n { value: 'text', label: 'Text' },\n { value: 'labels', label: 'Labels' },\n]\n\nexport interface FilterInputLabels<Field extends string = FilterField> {\n placeholder: string\n clear: string\n chooseFields: string\n fieldsHeading: string\n /** Display name per searchable field. */\n fieldNames: Partial<Record<Field, string>>\n}\n\nexport const DEFAULT_FILTER_INPUT_LABELS: FilterInputLabels = {\n placeholder: 'Filter...',\n clear: 'Clear filter',\n chooseFields: 'Choose fields to filter',\n fieldsHeading: 'Filter fields',\n fieldNames: { text: 'Text', labels: 'Labels' },\n}\n\nexport interface FilterInputTestIds<Field extends string = FilterField> {\n root: string\n quick: string\n input: string\n fieldsButton: string\n field: (field: Field) => string\n}\n\nexport interface FilterInputProps<Field extends string = FilterField> {\n fieldOptions?: { value: Field; label: string }[]\n value: string\n /** Lists with one searchable field need no field selector. */\n hideFieldPicker?: boolean\n ariaLabel?: string\n onChange: (q: string) => void\n /** Enter in the box (e.g. open the one match, or add what was typed). */\n onSubmit?: (q: string) => void\n fields: Field[]\n onFieldsChange: (fields: Field[]) => void\n /**\n * The quick-filter dropdown trigger, embedded inside the input on the left\n * (mirroring the Files search box). When absent, a static funnel icon shows.\n */\n filter?: ReactNode\n /** Width classes for the box (default `w-44`). */\n className?: string\n /** No outline: a soft fill instead of the input border, for a header that is already ruled. */\n borderless?: boolean\n labels?: Partial<FilterInputLabels<Field>>\n testIds?: Partial<FilterInputTestIds<Field>>\n}\n\nexport function FilterInput<Field extends string = FilterField>({\n fieldOptions,\n value,\n hideFieldPicker = false,\n ariaLabel,\n onChange,\n onSubmit,\n fields,\n onFieldsChange,\n filter,\n className,\n borderless = false,\n labels,\n testIds,\n}: FilterInputProps<Field>) {\n const l = { ...DEFAULT_FILTER_INPUT_LABELS, ...labels }\n const options = fieldOptions ?? (DEFAULT_FILTER_FIELDS as { value: Field; label: string }[])\n const toggleField = (field: Field) =>\n onFieldsChange(fields.includes(field) ? fields.filter((f) => f !== field) : [...fields, field])\n\n return (\n <div\n className={cn('flex min-w-0 items-center', className ?? 'w-44 pointer-coarse:w-56')}\n data-testid={testIdOr(testIds?.root, { testId: 'facts-filter' })}\n >\n <div className=\"relative flex-1 min-w-0\">\n {filter ? (\n <div\n className=\"absolute left-1 top-1/2 z-10 -translate-y-1/2\"\n data-testid={testIdOr(testIds?.quick, { testId: 'facts-filter-quick' })}\n >\n {filter}\n </div>\n ) : (\n <Filter className=\"pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground\" />\n )}\n <Input\n aria-label={ariaLabel}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={\n onSubmit\n ? (e) => {\n if (e.key !== 'Enter') return\n e.preventDefault()\n onSubmit(value)\n }\n : undefined\n }\n placeholder={l.placeholder}\n data-testid={testIdOr(testIds?.input, { testId: 'facts-filter-input' })}\n className={cn(\n 'h-7 pr-12 text-sm shadow-none focus-visible:ring-0 pointer-coarse:h-11 pointer-coarse:pr-12',\n // Touch: the 44px clear button only needs its room while there is text to clear, so\n // an empty field keeps space for its placeholder on a phone.\n value && 'pointer-coarse:pr-24',\n borderless\n ? 'border-transparent bg-muted/50 hover:bg-muted focus-visible:bg-muted'\n : 'border-input bg-background',\n filter ? 'pl-11' : 'pl-7',\n hideFieldPicker && 'pr-7 pointer-coarse:pr-11'\n )}\n />\n {value && (\n <button\n type=\"button\"\n onClick={() => onChange('')}\n aria-label={l.clear}\n className={cn(\n 'absolute top-1/2 z-10 -translate-y-1/2 text-muted-foreground hover:text-foreground pointer-coarse:flex pointer-coarse:size-11 pointer-coarse:items-center pointer-coarse:justify-center',\n hideFieldPicker\n ? 'right-1.5 pointer-coarse:right-0'\n : 'right-7 pointer-coarse:right-11'\n )}\n >\n <X className=\"size-3\" />\n </button>\n )}\n {/* Field picker — inside the input on the right, muted, exactly as the\n Files search box renders it. */}\n {!hideFieldPicker && (\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n aria-label={l.chooseFields}\n data-testid={testIdOr(testIds?.fieldsButton, {\n testId: 'facts-filter-fields-button',\n })}\n className=\"absolute right-1.5 top-1/2 z-10 -translate-y-1/2 !h-5 !w-5 !p-0 text-muted-foreground/60 transition-colors hover:text-foreground pointer-coarse:right-0 pointer-coarse:!flex pointer-coarse:!h-11 pointer-coarse:!w-11 pointer-coarse:items-center pointer-coarse:justify-center\"\n >\n <SlidersHorizontal className=\"size-3.5\" />\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"w-44 p-0\" align=\"end\" sideOffset={4}>\n <Command shouldFilter={false}>\n <CommandList>\n <CommandGroup heading={l.fieldsHeading}>\n {options.map((option) => {\n const isSelected = fields.includes(option.value)\n return (\n <CommandItem\n key={option.value}\n onSelect={() => toggleField(option.value)}\n className=\"cursor-pointer text-sm\"\n data-testid={testIdOr(testIds?.field?.(option.value), {\n testId: `facts-filter-field-${option.value}`,\n })}\n >\n <div\n className={cn(\n 'mr-2 flex size-3.5 items-center justify-center rounded-sm border border-primary',\n isSelected\n ? 'bg-primary text-primary-foreground'\n : 'opacity-50 [&_svg]:invisible'\n )}\n >\n <Check className=\"size-3\" />\n </div>\n {labels?.fieldNames?.[option.value] ?? option.label}\n </CommandItem>\n )\n })}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )}\n </div>\n </div>\n )\n}\n"]}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkTZR36PPP_cjs = require('../chunk-TZR36PPP.cjs');
4
+ var chunkYFPIJUV3_cjs = require('../chunk-YFPIJUV3.cjs');
5
5
  require('../chunk-MUMH3Z6K.cjs');
6
- var chunkAINNADMT_cjs = require('../chunk-AINNADMT.cjs');
7
- require('../chunk-7YUFMNFW.cjs');
6
+ var chunk6XS5IJ5R_cjs = require('../chunk-6XS5IJ5R.cjs');
7
+ require('../chunk-2ZDFVRGV.cjs');
8
8
  require('../chunk-7UTB4PHM.cjs');
9
9
  require('../chunk-MHVNT4J3.cjs');
10
10
  require('../chunk-DES3K4SD.cjs');
@@ -14,13 +14,13 @@ function ConnectedStreamedWordArtifact({
14
14
  fontBaseUrl,
15
15
  ...props
16
16
  }) {
17
- const adapter = chunkTZR36PPP_cjs.useConnectedNativeDocxAdapter(fontBaseUrl);
18
- return /* @__PURE__ */ jsxRuntime.jsx(chunkAINNADMT_cjs.StreamedWordArtifact, { ...props, adapter });
17
+ const adapter = chunkYFPIJUV3_cjs.useConnectedNativeDocxAdapter(fontBaseUrl);
18
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk6XS5IJ5R_cjs.StreamedWordArtifact, { ...props, adapter });
19
19
  }
20
20
 
21
21
  Object.defineProperty(exports, "ConnectedNativeDocxEditor", {
22
22
  enumerable: true,
23
- get: function () { return chunkTZR36PPP_cjs.ConnectedNativeDocxEditor; }
23
+ get: function () { return chunkYFPIJUV3_cjs.ConnectedNativeDocxEditor; }
24
24
  });
25
25
  exports.ConnectedStreamedWordArtifact = ConnectedStreamedWordArtifact;
26
26
  //# sourceMappingURL=docx.cjs.map
@@ -1,9 +1,9 @@
1
1
  "use client";
2
- import { useConnectedNativeDocxAdapter } from '../chunk-A24C6BNA.js';
3
- export { ConnectedNativeDocxEditor } from '../chunk-A24C6BNA.js';
2
+ import { useConnectedNativeDocxAdapter } from '../chunk-UDLMLU6T.js';
3
+ export { ConnectedNativeDocxEditor } from '../chunk-UDLMLU6T.js';
4
4
  import '../chunk-OYMWV45N.js';
5
- import { StreamedWordArtifact } from '../chunk-FT5FFXSJ.js';
6
- import '../chunk-OPA2Y6YZ.js';
5
+ import { StreamedWordArtifact } from '../chunk-BX62HJZU.js';
6
+ import '../chunk-W2R7YVFM.js';
7
7
  import '../chunk-AA3PT6KR.js';
8
8
  import '../chunk-7F6CBP3Z.js';
9
9
  import '../chunk-VUNV25KB.js';
@@ -3,17 +3,17 @@
3
3
 
4
4
  var chunk5YXG342J_cjs = require('../chunk-5YXG342J.cjs');
5
5
  var chunkXMBYDLZQ_cjs = require('../chunk-XMBYDLZQ.cjs');
6
- var chunkTZR36PPP_cjs = require('../chunk-TZR36PPP.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');
13
- var chunkAFSOUS5X_cjs = require('../chunk-AFSOUS5X.cjs');
11
+ var chunkUCAYNE44_cjs = require('../chunk-UCAYNE44.cjs');
12
+ var chunk5XZU64E2_cjs = require('../chunk-5XZU64E2.cjs');
13
+ var chunkN26CXGXC_cjs = require('../chunk-N26CXGXC.cjs');
14
14
  var chunk7RGLTF76_cjs = require('../chunk-7RGLTF76.cjs');
15
15
  require('../chunk-DETZZBG2.cjs');
16
- var chunk2EI7NCUA_cjs = require('../chunk-2EI7NCUA.cjs');
16
+ var chunk2CFW2ELM_cjs = require('../chunk-2CFW2ELM.cjs');
17
17
  require('../chunk-7D737FLE.cjs');
18
18
  var chunkQVBZESYQ_cjs = require('../chunk-QVBZESYQ.cjs');
19
19
  require('../chunk-ADOKTJHV.cjs');
@@ -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
+ chunkUCAYNE44_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
+ chunkUCAYNE44_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" ? chunkUCAYNE44_cjs.ThreadFollowMenuItem : chunkUCAYNE44_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] ?? ""]));
@@ -236,7 +325,7 @@ function useWorkflowThread(workflow, options = {}) {
236
325
  const { wsId } = chunkXMBYDLZQ_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,
@@ -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
  }
@@ -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 = chunkUCAYNE44_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: chunkUCAYNE44_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
+ chunkUCAYNE44_cjs.TagTable,
1084
1173
  {
1085
1174
  ...props,
1086
1175
  table,
@@ -2896,7 +2985,7 @@ function ConnectedMailbox({
2896
2985
  compactBreakpoint: 360,
2897
2986
  firstTabContent: account ? /* @__PURE__ */ jsxRuntime.jsxs(chunkO4YPVYPO_cjs.FilesFilterBar, { children: [
2898
2987
  /* @__PURE__ */ jsxRuntime.jsx(
2899
- chunk2EI7NCUA_cjs.FilterInput,
2988
+ chunk2CFW2ELM_cjs.FilterInput,
2900
2989
  {
2901
2990
  value: query,
2902
2991
  onChange: (q) => {
@@ -2912,7 +3001,7 @@ function ConnectedMailbox({
2912
3001
  testIds: { root: "mail-search", input: "mail-filter-input" },
2913
3002
  className: "min-w-28 flex-1 sm:max-w-72",
2914
3003
  filter: /* @__PURE__ */ jsxRuntime.jsx(
2915
- chunkAFSOUS5X_cjs.TriStateFilterMenu,
3004
+ chunkN26CXGXC_cjs.TriStateFilterMenu,
2916
3005
  {
2917
3006
  testId: "mail-bar-filter-button",
2918
3007
  open: filterMenuOpen,
@@ -3315,7 +3404,10 @@ exports.ConnectedSessionsRow = ConnectedSessionsRow;
3315
3404
  exports.ConnectedSkillUpload = ConnectedSkillUpload;
3316
3405
  exports.ConnectedTagTable = ConnectedTagTable;
3317
3406
  exports.ConnectedTaskAccessRequest = ConnectedTaskAccessRequest;
3407
+ exports.ConnectedThreadFollow = ConnectedThreadFollow;
3318
3408
  exports.ConnectedWorkflowRunner = ConnectedWorkflowRunner;
3409
+ exports.ConnectedWorkspaceActivity = ConnectedWorkspaceActivity;
3410
+ exports.ConnectedWorkspaceNotificationMenu = ConnectedWorkspaceNotificationMenu;
3319
3411
  exports.DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS = DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS;
3320
3412
  exports.StreamedArtifact = StreamedArtifact;
3321
3413
  exports.WorkflowRunThread = WorkflowRunThread;