@arbidocs/blocks 0.4.27 → 0.4.29

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 (107) hide show
  1. package/README.md +17 -0
  2. package/dist/agents/index.cjs +224 -212
  3. package/dist/agents/index.js +6 -6
  4. package/dist/agents/tasks/TaskRowMenu.d.ts +4 -1
  5. package/dist/agents/tasks/TaskRunsDialog.d.ts +3 -1
  6. package/dist/agents/tasks/taskRows.d.ts +2 -0
  7. package/dist/agents/workflows/WorkflowDocumentsField.d.ts +12 -0
  8. package/dist/agents/workflows/index.d.ts +2 -0
  9. package/dist/agents/workflows/workspaceScope.d.ts +18 -0
  10. package/dist/chat/ChatPage.d.ts +1 -1
  11. package/dist/chat/chat-page-types.d.ts +12 -1
  12. package/dist/chat/index.cjs +129 -129
  13. package/dist/chat/index.js +2 -2
  14. package/dist/chunk-4XJZ6AAY.js +407 -0
  15. package/dist/chunk-4XJZ6AAY.js.map +1 -0
  16. package/dist/{chunk-UOLMFC5K.js → chunk-6YVI74BC.js} +498 -108
  17. package/dist/chunk-6YVI74BC.js.map +1 -0
  18. package/dist/{chunk-CQ6CYPV4.js → chunk-7FF473XB.js} +7 -119
  19. package/dist/chunk-7FF473XB.js.map +1 -0
  20. package/dist/{chunk-ZEIOREJY.js → chunk-EHXSBH6U.js} +37 -6
  21. package/dist/chunk-EHXSBH6U.js.map +1 -0
  22. package/dist/chunk-EYPPB5CY.cjs +85 -0
  23. package/dist/chunk-EYPPB5CY.cjs.map +1 -0
  24. package/dist/{chunk-ENY6XXKR.js → chunk-I7FJS7WG.js} +155 -39
  25. package/dist/chunk-I7FJS7WG.js.map +1 -0
  26. package/dist/{chunk-557EU3G4.js → chunk-JLOYWXRB.js} +3 -3
  27. package/dist/{chunk-557EU3G4.js.map → chunk-JLOYWXRB.js.map} +1 -1
  28. package/dist/chunk-KF4EC5XU.js +68 -0
  29. package/dist/chunk-KF4EC5XU.js.map +1 -0
  30. package/dist/{chunk-3ZXXHROK.cjs → chunk-L6YRTT5M.cjs} +158 -39
  31. package/dist/chunk-L6YRTT5M.cjs.map +1 -0
  32. package/dist/chunk-S5HZBXZA.cjs +430 -0
  33. package/dist/chunk-S5HZBXZA.cjs.map +1 -0
  34. package/dist/{chunk-JCVZKCXC.cjs → chunk-TLQQV7WW.cjs} +37 -6
  35. package/dist/chunk-TLQQV7WW.cjs.map +1 -0
  36. package/dist/{chunk-NNH7N62N.cjs → chunk-VMCOH3AY.cjs} +497 -105
  37. package/dist/chunk-VMCOH3AY.cjs.map +1 -0
  38. package/dist/{chunk-JLPYOPCX.js → chunk-WSJVHSGN.js} +225 -36
  39. package/dist/chunk-WSJVHSGN.js.map +1 -0
  40. package/dist/{chunk-DCEI37AX.cjs → chunk-YVIOCITQ.cjs} +3 -3
  41. package/dist/{chunk-DCEI37AX.cjs.map → chunk-YVIOCITQ.cjs.map} +1 -1
  42. package/dist/{chunk-J22DXUJY.cjs → chunk-ZHLMDJCO.cjs} +226 -34
  43. package/dist/chunk-ZHLMDJCO.cjs.map +1 -0
  44. package/dist/{chunk-TL2DHSC5.cjs → chunk-ZXGBUHES.cjs} +5 -120
  45. package/dist/chunk-ZXGBUHES.cjs.map +1 -0
  46. package/dist/connect/docx.cjs +26 -8
  47. package/dist/connect/docx.cjs.map +1 -1
  48. package/dist/connect/docx.d.ts +1 -0
  49. package/dist/connect/docx.js +24 -7
  50. package/dist/connect/docx.js.map +1 -1
  51. package/dist/connect/index.cjs +303 -61
  52. package/dist/connect/index.cjs.map +1 -1
  53. package/dist/connect/index.d.ts +4 -0
  54. package/dist/connect/index.js +263 -25
  55. package/dist/connect/index.js.map +1 -1
  56. package/dist/connection/ConnectedAgentChatPanel.d.ts +7 -0
  57. package/dist/connection/ConnectedNativeDocxEditor.d.ts +2 -1
  58. package/dist/connection/ConnectedSkillUpload.d.ts +2 -0
  59. package/dist/connection/ConnectedStreamedWordArtifact.d.ts +4 -0
  60. package/dist/connection/ConnectedTaskAccessRequest.d.ts +4 -0
  61. package/dist/connection/ai.d.ts +4 -1
  62. package/dist/connection/useConnectedWorkNotifications.d.ts +21 -0
  63. package/dist/docx/DocxMentions.d.ts +9 -2
  64. package/dist/docx/NativeDocxEditor.d.ts +11 -3
  65. package/dist/docx/StreamedWordArtifact.d.ts +15 -0
  66. package/dist/docx/index.cjs +16 -8
  67. package/dist/docx/index.d.ts +3 -2
  68. package/dist/docx/index.js +2 -2
  69. package/dist/docx/streamWordDocument.d.ts +12 -0
  70. package/dist/facts/index.cjs +1 -1
  71. package/dist/facts/index.js +1 -1
  72. package/dist/files/index.cjs +3 -3
  73. package/dist/files/index.js +3 -3
  74. package/dist/index.cjs +778 -766
  75. package/dist/index.js +15 -15
  76. package/dist/settings/index.cjs +42 -232
  77. package/dist/settings/index.cjs.map +1 -1
  78. package/dist/settings/index.js +7 -203
  79. package/dist/settings/index.js.map +1 -1
  80. package/dist/site/index.cjs +5 -5
  81. package/dist/site/index.js +1 -1
  82. package/dist/studio/index.cjs +7 -6
  83. package/dist/studio/index.cjs.map +1 -1
  84. package/dist/studio/index.js +5 -4
  85. package/dist/studio/index.js.map +1 -1
  86. package/dist/workspaces/index.cjs +2 -2
  87. package/dist/workspaces/index.js +2 -2
  88. package/package.json +3 -3
  89. package/src/docx/styles.css +13 -0
  90. package/dist/chunk-3ZXXHROK.cjs.map +0 -1
  91. package/dist/chunk-5TRALRWN.js +0 -42
  92. package/dist/chunk-5TRALRWN.js.map +0 -1
  93. package/dist/chunk-CQ6CYPV4.js.map +0 -1
  94. package/dist/chunk-CQCC7LE7.js +0 -210
  95. package/dist/chunk-CQCC7LE7.js.map +0 -1
  96. package/dist/chunk-ENY6XXKR.js.map +0 -1
  97. package/dist/chunk-EUOGPUMJ.cjs +0 -59
  98. package/dist/chunk-EUOGPUMJ.cjs.map +0 -1
  99. package/dist/chunk-J22DXUJY.cjs.map +0 -1
  100. package/dist/chunk-JCVZKCXC.cjs.map +0 -1
  101. package/dist/chunk-JLPYOPCX.js.map +0 -1
  102. package/dist/chunk-NNH7N62N.cjs.map +0 -1
  103. package/dist/chunk-RFIBUWLF.cjs +0 -232
  104. package/dist/chunk-RFIBUWLF.cjs.map +0 -1
  105. package/dist/chunk-TL2DHSC5.cjs.map +0 -1
  106. package/dist/chunk-UOLMFC5K.js.map +0 -1
  107. package/dist/chunk-ZEIOREJY.js.map +0 -1
@@ -4,6 +4,7 @@
4
4
  var chunkVGOFFCMT_cjs = require('./chunk-VGOFFCMT.cjs');
5
5
  var chunkPPCATBOY_cjs = require('./chunk-PPCATBOY.cjs');
6
6
  var chunkKDG6FER6_cjs = require('./chunk-KDG6FER6.cjs');
7
+ var chunk7UTB4PHM_cjs = require('./chunk-7UTB4PHM.cjs');
7
8
  var chunkMHVNT4J3_cjs = require('./chunk-MHVNT4J3.cjs');
8
9
  var react = require('react');
9
10
  var lucideReact = require('lucide-react');
@@ -1052,6 +1053,118 @@ var Composer = {
1052
1053
  Container: ComposerContainer,
1053
1054
  Dock: ComposerDock
1054
1055
  };
1056
+ function useMentionAutocomplete({
1057
+ value,
1058
+ onValueChange,
1059
+ candidates,
1060
+ textareaRef
1061
+ }) {
1062
+ const [caret, setCaret] = react.useState(null);
1063
+ const [dismissedAt, setDismissedAt] = react.useState(null);
1064
+ react.useEffect(() => {
1065
+ if (dismissedAt !== null && value[dismissedAt] !== "@") setDismissedAt(null);
1066
+ }, [value, dismissedAt]);
1067
+ const match = react.useMemo(
1068
+ () => caret === null ? null : chunk7UTB4PHM_cjs.findMentionQuery(value, Math.min(caret, value.length)),
1069
+ [value, caret]
1070
+ );
1071
+ const items = react.useMemo(
1072
+ () => match ? chunk7UTB4PHM_cjs.filterMentionCandidates(candidates, match.query) : [],
1073
+ [match, candidates]
1074
+ );
1075
+ const isOpen2 = !!match && items.length > 0 && dismissedAt !== match.start;
1076
+ const readCaret = react.useCallback(() => {
1077
+ const ta = textareaRef.current;
1078
+ setCaret(ta ? ta.selectionStart : null);
1079
+ }, [textareaRef]);
1080
+ const pick = react.useCallback(
1081
+ (candidate) => {
1082
+ if (!match || caret === null) return;
1083
+ const next = chunk7UTB4PHM_cjs.insertMention(value, match.start, Math.min(caret, value.length), candidate.label);
1084
+ onValueChange(next.text);
1085
+ setCaret(next.caret);
1086
+ setDismissedAt(match.start);
1087
+ requestAnimationFrame(() => {
1088
+ const ta = textareaRef.current;
1089
+ if (!ta) return;
1090
+ ta.focus();
1091
+ ta.setSelectionRange(next.caret, next.caret);
1092
+ });
1093
+ },
1094
+ [match, caret, value, onValueChange, textareaRef]
1095
+ );
1096
+ const nav = chunk7UTB4PHM_cjs.useListKeyNav({
1097
+ open: isOpen2,
1098
+ items,
1099
+ onPick: pick,
1100
+ onDismiss: () => setDismissedAt(match?.start ?? null),
1101
+ resetKey: match?.query
1102
+ });
1103
+ const handleValueChange = react.useCallback(
1104
+ (next) => {
1105
+ onValueChange(next);
1106
+ const ta = textareaRef.current;
1107
+ setCaret(ta ? ta.selectionStart : next.length);
1108
+ if (dismissedAt !== null && (next.length < value.length || next[dismissedAt] !== "@")) {
1109
+ setDismissedAt(null);
1110
+ }
1111
+ },
1112
+ [onValueChange, textareaRef, dismissedAt, value]
1113
+ );
1114
+ return {
1115
+ isOpen: isOpen2,
1116
+ items,
1117
+ nav,
1118
+ pick,
1119
+ onValueChange: handleValueChange,
1120
+ textareaProps: { onSelect: readCaret }
1121
+ };
1122
+ }
1123
+ var DEFAULT_ASSISTANT_MODE_TOGGLE_LABELS = {
1124
+ always: "Assistant replies",
1125
+ mentioned: "Thread",
1126
+ alwaysHint: "The assistant answers every message. Click to make this a thread.",
1127
+ mentionedHint: "A thread: messages are comments between people. @mention the assistant to get an answer. Click to have it answer every message."
1128
+ };
1129
+ function AssistantModeToggle({
1130
+ mode,
1131
+ onModeChange,
1132
+ disabled,
1133
+ labels,
1134
+ className,
1135
+ testId
1136
+ }) {
1137
+ const l = { ...DEFAULT_ASSISTANT_MODE_TOGGLE_LABELS, ...labels };
1138
+ const isThread = mode === "mentioned";
1139
+ const hint = isThread ? l.mentionedHint : l.alwaysHint;
1140
+ const Icon = isThread ? lucideReact.MessagesSquare : lucideReact.Bot;
1141
+ return /* @__PURE__ */ jsxRuntime.jsxs(ui.Tooltip, { children: [
1142
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
1143
+ ui.Button,
1144
+ {
1145
+ type: "button",
1146
+ variant: "ghost",
1147
+ size: "sm",
1148
+ disabled,
1149
+ "aria-pressed": isThread,
1150
+ "aria-label": `${isThread ? l.mentioned : l.always}. ${hint}`,
1151
+ onClick: () => onModeChange(isThread ? "always" : "mentioned"),
1152
+ className: ui.cn(
1153
+ "h-8 gap-1.5 px-2 text-xs text-muted-foreground hover:bg-muted pointer-coarse:h-11",
1154
+ isThread && "bg-accent text-accent-foreground",
1155
+ className
1156
+ ),
1157
+ "data-mode": mode,
1158
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "assistant-mode-toggle" }),
1159
+ children: [
1160
+ /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-3.5 w-3.5", "aria-hidden": "true" }),
1161
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: isThread ? l.mentioned : l.always })
1162
+ ]
1163
+ }
1164
+ ) }),
1165
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipContent, { side: "top", className: "max-w-xs", children: hint })
1166
+ ] });
1167
+ }
1055
1168
  var DEFAULT_CONVERSATION_EMPTY_LABELS = {
1056
1169
  title: "Ask ARBI about your documents",
1057
1170
  description: "Ask a question and verify every answer against the source.",
@@ -1690,16 +1803,19 @@ var LIST_COLUMN_REM = 48;
1690
1803
  var DEFAULT_ASIDE_BREAKPOINT_REM = 60;
1691
1804
  function MessageRow({ message, identity, renderContent, onOpenCitation, labels }) {
1692
1805
  if (message.role === "user") {
1693
- return /* @__PURE__ */ jsxRuntime.jsx(Message.Root, { role: "user", messageId: message.id, children: /* @__PURE__ */ jsxRuntime.jsx(Message.Content, { role: "user", messageId: message.id, children: /* @__PURE__ */ jsxRuntime.jsx(
1694
- Message.Bubble,
1695
- {
1696
- role: "user",
1697
- messageId: message.id,
1698
- className: USER_BUBBLE,
1699
- testId: "chat-message-user",
1700
- children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "m-0 whitespace-pre-wrap break-words text-base leading-relaxed", children: message.content })
1701
- }
1702
- ) }) });
1806
+ return /* @__PURE__ */ jsxRuntime.jsx(Message.Root, { role: "user", messageId: message.id, children: /* @__PURE__ */ jsxRuntime.jsxs(Message.Content, { role: "user", messageId: message.id, children: [
1807
+ message.senderName && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: message.senderName }),
1808
+ /* @__PURE__ */ jsxRuntime.jsx(
1809
+ Message.Bubble,
1810
+ {
1811
+ role: "user",
1812
+ messageId: message.id,
1813
+ className: USER_BUBBLE,
1814
+ testId: "chat-message-user",
1815
+ children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "m-0 whitespace-pre-wrap break-words text-base leading-relaxed", children: message.content })
1816
+ }
1817
+ )
1818
+ ] }) });
1703
1819
  }
1704
1820
  const isStreaming = message.status === "streaming";
1705
1821
  const isFailed = message.status === "error";
@@ -1751,6 +1867,7 @@ function ChatPage({
1751
1867
  identity,
1752
1868
  renderContent,
1753
1869
  onOpenCitation,
1870
+ targetMessageId,
1754
1871
  asideBreakpoint = DEFAULT_ASIDE_BREAKPOINT_REM,
1755
1872
  fillHeight = false,
1756
1873
  minHeight = 360,
@@ -1770,8 +1887,17 @@ function ChatPage({
1770
1887
  const asideToggleRef = react.useRef(null);
1771
1888
  const asideRef = react.useRef(null);
1772
1889
  const scrollRef = react.useRef(null);
1890
+ const jumpedToMessage = react.useRef(null);
1773
1891
  const fileRef = react.useRef(null);
1774
1892
  const textareaRef = react.useRef(null);
1893
+ const currentThreadRef = react.useRef(chat.activeThreadId);
1894
+ currentThreadRef.current = chat.activeThreadId;
1895
+ const mentions = useMentionAutocomplete({
1896
+ value: draft,
1897
+ onValueChange: setDraft,
1898
+ candidates: chat.mentionCandidates ?? [],
1899
+ textareaRef
1900
+ });
1775
1901
  const { width } = useElementSize(rootRef);
1776
1902
  const { height: headerHeight } = useElementSize(headerRef);
1777
1903
  const rem = rootFontSizePx();
@@ -1812,6 +1938,21 @@ function ChatPage({
1812
1938
  react.useEffect(() => {
1813
1939
  if (!isAway) scrollToEnd();
1814
1940
  }, [chat.messages, isAway, scrollToEnd]);
1941
+ react.useEffect(() => {
1942
+ if (!targetMessageId) {
1943
+ jumpedToMessage.current = null;
1944
+ return;
1945
+ }
1946
+ const key = `${chat.activeThreadId}:${targetMessageId}`;
1947
+ if (jumpedToMessage.current === key) return;
1948
+ const row = Array.from(
1949
+ scrollRef.current?.querySelectorAll("[data-message-id]") || []
1950
+ ).find((element) => element.dataset.messageId === targetMessageId);
1951
+ if (!row) return;
1952
+ jumpedToMessage.current = key;
1953
+ row.scrollIntoView({ block: "center" });
1954
+ setIsAway(true);
1955
+ }, [targetMessageId, chat.activeThreadId, chat.messages]);
1815
1956
  react.useEffect(() => {
1816
1957
  setIsAway(false);
1817
1958
  }, [chat.activeThreadId]);
@@ -1822,10 +1963,21 @@ function ChatPage({
1822
1963
  const submit = (e) => {
1823
1964
  e?.preventDefault();
1824
1965
  const text = draft.trim();
1825
- if (!text || chat.isRunning) return;
1966
+ if (!text || chat.isRunning || chat.isPostingComment || chat.isUpdatingAssistantMode || chat.isLoadingThread || chat.historyError)
1967
+ return;
1826
1968
  setDraft("");
1827
1969
  setIsAway(false);
1828
- void chat.send(text);
1970
+ const selectedMentions = chunk7UTB4PHM_cjs.toMessageMentions(chunk7UTB4PHM_cjs.extractMentions(text, chat.mentionCandidates ?? []));
1971
+ const threadId = chat.activeThreadId;
1972
+ const restoreDraft = () => {
1973
+ if (currentThreadRef.current === threadId) setDraft((current) => current || text);
1974
+ };
1975
+ try {
1976
+ const sent = selectedMentions.length ? chat.send(text, { mentions: selectedMentions }) : chat.send(text);
1977
+ void Promise.resolve(sent).catch(restoreDraft);
1978
+ } catch {
1979
+ restoreDraft();
1980
+ }
1829
1981
  };
1830
1982
  const pickFiles = () => fileRef.current?.click();
1831
1983
  const onFiles = (files) => {
@@ -1982,16 +2134,25 @@ function ChatPage({
1982
2134
  role: "list",
1983
2135
  "aria-label": "Conversation messages",
1984
2136
  className: "mx-auto flex w-full max-w-3xl flex-col gap-5 px-3 py-5 @lg/chat:px-6",
1985
- children: chat.messages.map((message) => /* @__PURE__ */ jsxRuntime.jsx("div", { role: "listitem", "data-message-id": message.id, children: /* @__PURE__ */ jsxRuntime.jsx(
1986
- MessageRow,
2137
+ children: chat.messages.map((message) => /* @__PURE__ */ jsxRuntime.jsx(
2138
+ "div",
1987
2139
  {
1988
- message,
1989
- identity,
1990
- renderContent,
1991
- onOpenCitation,
1992
- labels: l
1993
- }
1994
- ) }, message.id))
2140
+ role: "listitem",
2141
+ "data-message-id": message.id,
2142
+ className: message.id === targetMessageId ? "rounded-lg ring-2 ring-primary/40" : void 0,
2143
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2144
+ MessageRow,
2145
+ {
2146
+ message,
2147
+ identity,
2148
+ renderContent,
2149
+ onOpenCitation,
2150
+ labels: l
2151
+ }
2152
+ )
2153
+ },
2154
+ message.id
2155
+ ))
1995
2156
  }
1996
2157
  )
1997
2158
  }
@@ -2038,11 +2199,29 @@ function ChatPage({
2038
2199
  }
2039
2200
  ),
2040
2201
  /* @__PURE__ */ jsxRuntime.jsx(Composer.Root, { onSubmit: submit, testId: "chat-composer", children: /* @__PURE__ */ jsxRuntime.jsxs(Composer.Frame, { className: "px-3 py-2 shadow-sm", children: [
2202
+ /* @__PURE__ */ jsxRuntime.jsx(
2203
+ chunk7UTB4PHM_cjs.MentionMenu,
2204
+ {
2205
+ open: mentions.isOpen,
2206
+ items: mentions.items,
2207
+ selectedIndex: mentions.nav.selectedIndex,
2208
+ setSelectedIndex: mentions.nav.setSelectedIndex,
2209
+ listboxId: mentions.nav.listboxId,
2210
+ onSelect: mentions.pick
2211
+ }
2212
+ ),
2041
2213
  /* @__PURE__ */ jsxRuntime.jsx(
2042
2214
  Composer.Input,
2043
2215
  {
2044
2216
  value: draft,
2045
- onValueChange: setDraft,
2217
+ onValueChange: mentions.onValueChange,
2218
+ onKeyDown: (event) => {
2219
+ mentions.nav.handleKeyDown(event);
2220
+ },
2221
+ textareaProps: {
2222
+ ...mentions.textareaProps,
2223
+ ...chat.mentionCandidates?.length ? mentions.nav.comboboxProps : {}
2224
+ },
2046
2225
  placeholder: l.placeholder,
2047
2226
  ariaLabel: l.composerAriaLabel,
2048
2227
  textareaRef,
@@ -2052,15 +2231,25 @@ function ChatPage({
2052
2231
  /* @__PURE__ */ jsxRuntime.jsx(
2053
2232
  Composer.Toolbar,
2054
2233
  {
2055
- leading: /* @__PURE__ */ jsxRuntime.jsx(
2056
- ChatDocuments,
2057
- {
2058
- chat,
2059
- labels: l,
2060
- onPickFiles: pickFiles,
2061
- testIds: { documents: testIds?.documents, upload: testIds?.upload }
2062
- }
2063
- ),
2234
+ leading: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2235
+ chat.assistantMode && chat.setAssistantMode && /* @__PURE__ */ jsxRuntime.jsx(
2236
+ AssistantModeToggle,
2237
+ {
2238
+ mode: chat.assistantMode,
2239
+ onModeChange: (mode) => void chat.setAssistantMode?.(mode),
2240
+ disabled: chat.isRunning || chat.isPostingComment || chat.isUpdatingAssistantMode
2241
+ }
2242
+ ),
2243
+ /* @__PURE__ */ jsxRuntime.jsx(
2244
+ ChatDocuments,
2245
+ {
2246
+ chat,
2247
+ labels: l,
2248
+ onPickFiles: pickFiles,
2249
+ testIds: { documents: testIds?.documents, upload: testIds?.upload }
2250
+ }
2251
+ )
2252
+ ] }),
2064
2253
  trailing: chat.isRunning && chat.stop ? /* @__PURE__ */ jsxRuntime.jsx(
2065
2254
  ui.Button,
2066
2255
  {
@@ -2078,7 +2267,7 @@ function ChatPage({
2078
2267
  Composer.Send,
2079
2268
  {
2080
2269
  onSend: () => submit(),
2081
- disabled: chat.isRunning || draft.trim() === "",
2270
+ disabled: chat.isRunning || chat.isPostingComment || chat.isUpdatingAssistantMode || chat.isLoadingThread || Boolean(chat.historyError) || draft.trim() === "",
2082
2271
  testIds: { send: chunkMHVNT4J3_cjs.testIdOr(testIds?.send, { testId: "chat-send" }) }
2083
2272
  }
2084
2273
  )
@@ -2203,6 +2392,7 @@ function AssistantDock({
2203
2392
 
2204
2393
  exports.AssistantDock = AssistantDock;
2205
2394
  exports.AssistantDockToggle = AssistantDockToggle;
2395
+ exports.AssistantModeToggle = AssistantModeToggle;
2206
2396
  exports.ChatDocuments = ChatDocuments;
2207
2397
  exports.ChatMessageContent = ChatMessageContent;
2208
2398
  exports.ChatPage = ChatPage;
@@ -2221,6 +2411,7 @@ exports.ComposerToolbar = ComposerToolbar;
2221
2411
  exports.ComposerVoiceButton = ComposerVoiceButton;
2222
2412
  exports.ContextChip = ContextChip;
2223
2413
  exports.ConversationEmpty = ConversationEmpty;
2414
+ exports.DEFAULT_ASSISTANT_MODE_TOGGLE_LABELS = DEFAULT_ASSISTANT_MODE_TOGGLE_LABELS;
2224
2415
  exports.DEFAULT_CHAT_PAGE_LABELS = DEFAULT_CHAT_PAGE_LABELS;
2225
2416
  exports.DEFAULT_COMPOSER_LABELS = DEFAULT_COMPOSER_LABELS;
2226
2417
  exports.DEFAULT_CONVERSATION_EMPTY_LABELS = DEFAULT_CONVERSATION_EMPTY_LABELS;
@@ -2253,7 +2444,8 @@ exports.SourceChip = SourceChip;
2253
2444
  exports.toSpeakableText = toSpeakableText;
2254
2445
  exports.useAssistantDock = useAssistantDock;
2255
2446
  exports.useChatSurface = useChatSurface;
2447
+ exports.useMentionAutocomplete = useMentionAutocomplete;
2256
2448
  exports.useRegisterEmbeddedChat = useRegisterEmbeddedChat;
2257
2449
  exports.useStreamAnnouncement = useStreamAnnouncement;
2258
- //# sourceMappingURL=chunk-J22DXUJY.cjs.map
2259
- //# sourceMappingURL=chunk-J22DXUJY.cjs.map
2450
+ //# sourceMappingURL=chunk-ZHLMDJCO.cjs.map
2451
+ //# sourceMappingURL=chunk-ZHLMDJCO.cjs.map