@smartspace/chat-ui 1.14.4-dev.65f646d → 1.14.4-dev.7129fda

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.
package/dist/index.d.ts CHANGED
@@ -80,6 +80,104 @@ declare const ChatVariablesForm: React.ForwardRefExoticComponent<ChatVariablesFo
80
80
  setVariables: (variables: Record<string, unknown>) => void;
81
81
  } & React.RefAttributes<ChatVariablesFormRef>>;
82
82
 
83
+ /**
84
+ * What the backend tells the composer about speech-to-text (dictation).
85
+ * `region` is the Azure region of the Speech resource, e.g. `australiaeast`.
86
+ * The SDK needs the region rather than the account's custom-domain URL: the
87
+ * recognition path only exists on the regional host, and that is what the
88
+ * issued token is scoped to. Absent when speech isn't configured.
89
+ */
90
+ type SpeechConfig = {
91
+ enabled: boolean;
92
+ region?: string | null;
93
+ /** BCP-47 locale to recognise when the client doesn't ask for one. */
94
+ defaultLocale: string;
95
+ };
96
+ /**
97
+ * A short-lived token from the Speech resource's own token service, scoped to
98
+ * recognition in one region and good for about ten minutes. Handed to the SDK
99
+ * as-is; the backend owns how it is minted.
100
+ */
101
+ type SpeechToken = {
102
+ token: string;
103
+ /** ISO-8601 instant. */
104
+ expiresOn: string;
105
+ };
106
+
107
+ type DictationState = 'idle' | 'starting' | 'listening';
108
+ type DictationError = 'permission-denied' | 'no-microphone' | 'network'
109
+ /** Worth another go: the install is fine, this attempt wasn't. */
110
+ | 'unavailable-temporarily'
111
+ /** Don't keep asking: this install can't do dictation. */
112
+ | 'unavailable' | 'unknown';
113
+ type UseDictationOptions = {
114
+ /** Azure region from `SpeechConfig`; dictation is unavailable without it. */
115
+ region?: string | null;
116
+ /** BCP-47 recognition locale (server default unless the user chose one). */
117
+ locale: string;
118
+ /** From the ChatService; dictation is unavailable without it. */
119
+ getToken?: () => Promise<SpeechToken>;
120
+ /** A final recognised phrase — insert it into the editor. */
121
+ onPhrase: (text: string) => void;
122
+ /**
123
+ * Provisional text, revised several times a second. Rendered as greyed ghost
124
+ * text at the caret. Deliberately a callback rather than hook state: holding it
125
+ * in state would re-render the whole composer on every partial result.
126
+ */
127
+ onInterim?: (text: string) => void;
128
+ /**
129
+ * Hard stop, so a forgotten mic can't run for an hour. Keep it under the
130
+ * token's ~10 minute life: the token is never refreshed once the session is
131
+ * running, so a longer cap would end the session on an auth failure.
132
+ */
133
+ maxDurationMs?: number;
134
+ /** Stop after this long without any speech. */
135
+ idleTimeoutMs?: number;
136
+ };
137
+ /**
138
+ * Streams microphone audio to Azure AI Speech and hands back recognised
139
+ * phrases. Owns the whole session: mic permission + stream, SDK loading,
140
+ * recogniser lifecycle, idle/max timers, and teardown on stop or unmount.
141
+ * Interim (not yet final) text goes to `onInterim` for display only; only final
142
+ * phrases reach `onPhrase`.
143
+ */
144
+ declare function useDictation({ region, locale, getToken, onPhrase, onInterim, maxDurationMs, idleTimeoutMs, }: UseDictationOptions): {
145
+ supported: boolean;
146
+ available: boolean;
147
+ state: DictationState;
148
+ error: DictationError | null;
149
+ /** Name of the microphone in use, once a session is live. May be ''. */
150
+ deviceLabel: string;
151
+ /** Listening, but the microphone has produced no sound for a while. */
152
+ silent: boolean;
153
+ start: () => Promise<void>;
154
+ stop: () => void;
155
+ toggle: () => void;
156
+ };
157
+
158
+ type DictationButtonProps = {
159
+ state: DictationState;
160
+ error: DictationError | null;
161
+ disabled?: boolean;
162
+ onToggle: () => void;
163
+ /**
164
+ * Microphone in use. Shown while listening because the browser picks the
165
+ * device, not us, and picking the wrong one is otherwise invisible: the
166
+ * session looks perfectly healthy and simply transcribes nothing.
167
+ */
168
+ deviceLabel?: string;
169
+ /** Icon/button sizing to match the surrounding toolbar. */
170
+ size?: 'sm' | 'md';
171
+ };
172
+ /**
173
+ * The composer's microphone, which carries the dictation state itself rather than
174
+ * relying on text elsewhere: a spinning ring while the session is starting, and a
175
+ * filled stop square while it is listening — the same shape Send takes during a
176
+ * run, because the button's job is the same at that point. The transcript appears
177
+ * in the composer at the caret, so nothing is reported in two places.
178
+ */
179
+ declare function DictationButton({ state, error, disabled, onToggle, deviceLabel, size, }: DictationButtonProps): react_jsx_runtime.JSX.Element;
180
+
83
181
  type MentionUserLike = {
84
182
  id: string;
85
183
  displayName: string;
@@ -97,6 +195,19 @@ type MarkdownEditorHandle = {
97
195
  * Callers that need the freshest text (e.g. sending on Enter) should read from here.
98
196
  */
99
197
  getMarkdown: () => string;
198
+ /**
199
+ * Inserts plain text at the caret (dictation, snippets), replacing any
200
+ * selection. Prepends a space when the caret directly follows a
201
+ * non-whitespace character so successive inserts read as prose. No-op when
202
+ * the editor isn't editable.
203
+ */
204
+ insertText: (text: string) => void;
205
+ /**
206
+ * Shows provisional dictation text greyed at the caret. Display-only — it never
207
+ * enters the document, so it cannot be serialised, undone, or sent. Pass '' to
208
+ * clear; inserting the final text via `insertText` clears it too.
209
+ */
210
+ setDictationGhost: (text: string) => void;
100
211
  /**
101
212
  * Returns mention users currently present in the editor document.
102
213
  * Useful for building API payloads (e.g. comments.mentionedUsers).
@@ -376,6 +487,19 @@ interface ChatService {
376
487
  * compiling — the composer only shows a Stop button when it is provided.
377
488
  */
378
489
  cancelFlowRun?(flowRunId: string): Promise<void>;
490
+ /**
491
+ * Speech-to-text (composer dictation). Both are optional so existing
492
+ * service implementations keep compiling — the composer renders a
493
+ * microphone only when both are provided AND the config says enabled.
494
+ * `getSpeechConfig` is read once per session. `getSpeechToken` is called
495
+ * when a dictation session starts (in parallel with the mic permission
496
+ * prompt — and again if that token aged out while the prompt sat open). The
497
+ * token is handed to the SDK as-is and never refreshed mid-session, so a
498
+ * session is capped to stay inside its life. No caching wanted: a stale
499
+ * token cannot be renewed.
500
+ */
501
+ getSpeechConfig?(): Promise<SpeechConfig>;
502
+ getSpeechToken?(): Promise<SpeechToken>;
379
503
  }
380
504
 
381
505
  type ChatIdentity = {
@@ -433,13 +557,11 @@ declare const messagesResponseSchema: z.ZodObject<{
433
557
  createdByUserId: z.ZodString;
434
558
  id: z.ZodString;
435
559
  name: z.ZodString;
436
- type: z.ZodEnum<{
437
- Input: "Input";
438
- Output: "Output";
439
- }>;
560
+ type: z.ZodString;
440
561
  value: z.ZodOptional<z.ZodNullable<z.ZodAny>>;
441
562
  }, z.core.$strip>>;
442
563
  }, z.core.$strip>>;
564
+ scoped: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
443
565
  total: z.ZodNumber;
444
566
  }, z.core.$strip>;
445
567
  type MessagesResponseDto = z.infer<typeof messagesResponseSchema>;
@@ -451,6 +573,8 @@ type MessageErrorDto = NonNullable<MessageDto['errors']>[number] & {
451
573
  };
452
574
  type MessageError = NonNullable<Message['errors']>[number];
453
575
  declare function mapMessageValueDtoToModel(dto: MessageValueDto): MessageValue;
576
+ /** `type` is an extensible enum; a value this UI cannot place is dropped. */
577
+ declare const mapMessageValuesDtoToModels: (dtos: MessageValueDto[]) => MessageValue[];
454
578
  declare function mapMessageErrorDtoToModel(dto: MessageErrorDto): MessageError;
455
579
  declare function mapMessageDtoToModel(dto: MessageDto): Message;
456
580
  declare function mapMessagesDtoToModels(dto: MessageDto[]): Message[];
@@ -482,8 +606,16 @@ declare function applyDeltaToMessage(target: Message, delta: {
482
606
  type MessageErrorLike = number | {
483
607
  code: number;
484
608
  errorCode?: string | null;
609
+ message?: string | null;
485
610
  };
486
611
  declare const getMessageErrorText: (error: MessageErrorLike) => string;
612
+ /**
613
+ * The provider detail behind an error, shown in an optional "Show details"
614
+ * disclosure under the friendly bubble from {@link getMessageErrorText}.
615
+ * Returns null when there's nothing to add (a bare HTTP code, or no message
616
+ * on the error at all).
617
+ */
618
+ declare const getMessageErrorDetail: (error: MessageErrorLike) => string | null;
487
619
 
488
620
  /**
489
621
  * Structured transient statuses carried on a message's `status` value.
@@ -552,6 +684,7 @@ declare const threadsListResponseSchema: z.ZodObject<{
552
684
  totalMessages: z.ZodNumber;
553
685
  workSpaceId: z.ZodString;
554
686
  }, z.core.$strip>>;
687
+ scoped: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
555
688
  total: z.ZodNumber;
556
689
  }, z.core.$strip>;
557
690
  declare const threadResponseSchema: z.ZodObject<{
@@ -642,11 +775,7 @@ declare const workspaceResponseSchema: z.ZodObject<{
642
775
  schema: z.ZodRecord<z.ZodString, z.ZodAny>;
643
776
  }, z.core.$strip>>>>;
644
777
  variables: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodObject<{
645
- access: z.ZodEnum<{
646
- None: "None";
647
- Read: "Read";
648
- Write: "Write";
649
- }>;
778
+ access: z.ZodString;
650
779
  schema: z.ZodRecord<z.ZodString, z.ZodAny>;
651
780
  }, z.core.$strip>>>>;
652
781
  }, z.core.$strip>>;
@@ -666,12 +795,10 @@ declare const workspaceResponseSchema: z.ZodObject<{
666
795
  path: z.ZodString;
667
796
  }, z.core.$strip>;
668
797
  flowId: z.ZodString;
798
+ honourSourceDeletes: z.ZodBoolean;
669
799
  id: z.ZodString;
670
800
  inputName: z.ZodString;
671
- type: z.ZodEnum<{
672
- Periodic: "Periodic";
673
- Container: "Container";
674
- }>;
801
+ type: z.ZodString;
675
802
  }, z.core.$strip>>;
676
803
  }, z.core.$strip>>;
677
804
  id: z.ZodString;
@@ -716,13 +843,7 @@ declare const workspaceResponseSchema: z.ZodObject<{
716
843
  providerDeploymentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
717
844
  providerId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
718
845
  region: z.ZodOptional<z.ZodNullable<z.ZodString>>;
719
- status: z.ZodEnum<{
720
- Deploying: "Deploying";
721
- Ready: "Ready";
722
- Failed: "Failed";
723
- Deleting: "Deleting";
724
- Deleted: "Deleted";
725
- }>;
846
+ status: z.ZodString;
726
847
  statusMessage: z.ZodOptional<z.ZodNullable<z.ZodString>>;
727
848
  statusUpdatedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
728
849
  steps: z.ZodArray<z.ZodObject<{
@@ -730,68 +851,28 @@ declare const workspaceResponseSchema: z.ZodObject<{
730
851
  id: z.ZodString;
731
852
  index: z.ZodNumber;
732
853
  message: z.ZodString;
733
- name: z.ZodEnum<{
734
- DeployVNet: "DeployVNet";
735
- DeployVM: "DeployVM";
736
- InstallDependencies: "InstallDependencies";
737
- DownloadModel: "DownloadModel";
738
- TestModel: "TestModel";
739
- }>;
854
+ name: z.ZodString;
740
855
  progress: z.ZodNumber;
741
856
  startedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
742
857
  }, z.core.$strip>>;
743
858
  url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
744
- virtualMachineServerType: z.ZodOptional<z.ZodEnum<{
745
- TextGenerationInference: "TextGenerationInference";
746
- VLlm: "VLlm";
747
- }>>;
859
+ virtualMachineServerType: z.ZodOptional<z.ZodString>;
748
860
  virtualMachineUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
749
861
  vmSize: z.ZodOptional<z.ZodNullable<z.ZodString>>;
750
862
  }, z.core.$strip>>;
751
863
  displayName: z.ZodString;
752
864
  id: z.ZodString;
753
- modelDeploymentProviderType: z.ZodOptional<z.ZodEnum<{
754
- OpenAi: "OpenAi";
755
- AzureOpenAi: "AzureOpenAi";
756
- HuggingFace: "HuggingFace";
757
- Cohere: "Cohere";
758
- Anthropic: "Anthropic";
759
- Gemini: "Gemini";
760
- VertexAi: "VertexAi";
761
- AzureFoundry: "AzureFoundry";
762
- }>>;
763
- modelPublisher: z.ZodOptional<z.ZodEnum<{
764
- OpenAi: "OpenAi";
765
- HuggingFace: "HuggingFace";
766
- Cohere: "Cohere";
767
- Anthropic: "Anthropic";
768
- Google: "Google";
769
- Meta: "Meta";
770
- Mistral: "Mistral";
771
- Microsoft: "Microsoft";
772
- DeepSeek: "DeepSeek";
773
- XAi: "XAi";
774
- Amazon: "Amazon";
775
- Qwen: "Qwen";
776
- Other: "Other";
777
- }>>;
865
+ modelDeploymentProviderType: z.ZodOptional<z.ZodString>;
866
+ modelPublisher: z.ZodOptional<z.ZodString>;
778
867
  name: z.ZodString;
779
868
  properties: z.ZodArray<z.ZodObject<{
780
869
  name: z.ZodString;
781
- type: z.ZodEnum<{
782
- Boolean: "Boolean";
783
- Number: "Number";
784
- String: "String";
785
- }>;
870
+ type: z.ZodString;
786
871
  }, z.core.$strip>>;
787
872
  }, z.core.$strip>;
788
873
  prePrompt: z.ZodString;
789
874
  presencePenalty: z.ZodNumber;
790
- role: z.ZodEnum<{
791
- Document: "Document";
792
- Agent: "Agent";
793
- Analyzer: "Analyzer";
794
- }>;
875
+ role: z.ZodString;
795
876
  temperature: z.ZodNumber;
796
877
  topP: z.ZodNumber;
797
878
  }, z.core.$strip>>;
@@ -805,11 +886,7 @@ declare const workspaceResponseSchema: z.ZodObject<{
805
886
  supportsFiles: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
806
887
  tags: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
807
888
  variables: z.ZodRecord<z.ZodString, z.ZodObject<{
808
- access: z.ZodEnum<{
809
- None: "None";
810
- Read: "Read";
811
- Write: "Write";
812
- }>;
889
+ access: z.ZodString;
813
890
  schema: z.ZodRecord<z.ZodString, z.ZodAny>;
814
891
  }, z.core.$strip>>;
815
892
  }, z.core.$strip>;
@@ -884,11 +961,7 @@ declare const workspacesListResponseSchema: z.ZodObject<{
884
961
  schema: z.ZodRecord<z.ZodString, z.ZodAny>;
885
962
  }, z.core.$strip>>>>;
886
963
  variables: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodObject<{
887
- access: z.ZodEnum<{
888
- None: "None";
889
- Read: "Read";
890
- Write: "Write";
891
- }>;
964
+ access: z.ZodString;
892
965
  schema: z.ZodRecord<z.ZodString, z.ZodAny>;
893
966
  }, z.core.$strip>>>>;
894
967
  }, z.core.$strip>>;
@@ -908,12 +981,10 @@ declare const workspacesListResponseSchema: z.ZodObject<{
908
981
  path: z.ZodString;
909
982
  }, z.core.$strip>;
910
983
  flowId: z.ZodString;
984
+ honourSourceDeletes: z.ZodBoolean;
911
985
  id: z.ZodString;
912
986
  inputName: z.ZodString;
913
- type: z.ZodEnum<{
914
- Periodic: "Periodic";
915
- Container: "Container";
916
- }>;
987
+ type: z.ZodString;
917
988
  }, z.core.$strip>>;
918
989
  }, z.core.$strip>>;
919
990
  id: z.ZodString;
@@ -958,13 +1029,7 @@ declare const workspacesListResponseSchema: z.ZodObject<{
958
1029
  providerDeploymentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
959
1030
  providerId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
960
1031
  region: z.ZodOptional<z.ZodNullable<z.ZodString>>;
961
- status: z.ZodEnum<{
962
- Deploying: "Deploying";
963
- Ready: "Ready";
964
- Failed: "Failed";
965
- Deleting: "Deleting";
966
- Deleted: "Deleted";
967
- }>;
1032
+ status: z.ZodString;
968
1033
  statusMessage: z.ZodOptional<z.ZodNullable<z.ZodString>>;
969
1034
  statusUpdatedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
970
1035
  steps: z.ZodArray<z.ZodObject<{
@@ -972,68 +1037,28 @@ declare const workspacesListResponseSchema: z.ZodObject<{
972
1037
  id: z.ZodString;
973
1038
  index: z.ZodNumber;
974
1039
  message: z.ZodString;
975
- name: z.ZodEnum<{
976
- DeployVNet: "DeployVNet";
977
- DeployVM: "DeployVM";
978
- InstallDependencies: "InstallDependencies";
979
- DownloadModel: "DownloadModel";
980
- TestModel: "TestModel";
981
- }>;
1040
+ name: z.ZodString;
982
1041
  progress: z.ZodNumber;
983
1042
  startedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
984
1043
  }, z.core.$strip>>;
985
1044
  url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
986
- virtualMachineServerType: z.ZodOptional<z.ZodEnum<{
987
- TextGenerationInference: "TextGenerationInference";
988
- VLlm: "VLlm";
989
- }>>;
1045
+ virtualMachineServerType: z.ZodOptional<z.ZodString>;
990
1046
  virtualMachineUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
991
1047
  vmSize: z.ZodOptional<z.ZodNullable<z.ZodString>>;
992
1048
  }, z.core.$strip>>;
993
1049
  displayName: z.ZodString;
994
1050
  id: z.ZodString;
995
- modelDeploymentProviderType: z.ZodOptional<z.ZodEnum<{
996
- OpenAi: "OpenAi";
997
- AzureOpenAi: "AzureOpenAi";
998
- HuggingFace: "HuggingFace";
999
- Cohere: "Cohere";
1000
- Anthropic: "Anthropic";
1001
- Gemini: "Gemini";
1002
- VertexAi: "VertexAi";
1003
- AzureFoundry: "AzureFoundry";
1004
- }>>;
1005
- modelPublisher: z.ZodOptional<z.ZodEnum<{
1006
- OpenAi: "OpenAi";
1007
- HuggingFace: "HuggingFace";
1008
- Cohere: "Cohere";
1009
- Anthropic: "Anthropic";
1010
- Google: "Google";
1011
- Meta: "Meta";
1012
- Mistral: "Mistral";
1013
- Microsoft: "Microsoft";
1014
- DeepSeek: "DeepSeek";
1015
- XAi: "XAi";
1016
- Amazon: "Amazon";
1017
- Qwen: "Qwen";
1018
- Other: "Other";
1019
- }>>;
1051
+ modelDeploymentProviderType: z.ZodOptional<z.ZodString>;
1052
+ modelPublisher: z.ZodOptional<z.ZodString>;
1020
1053
  name: z.ZodString;
1021
1054
  properties: z.ZodArray<z.ZodObject<{
1022
1055
  name: z.ZodString;
1023
- type: z.ZodEnum<{
1024
- Boolean: "Boolean";
1025
- Number: "Number";
1026
- String: "String";
1027
- }>;
1056
+ type: z.ZodString;
1028
1057
  }, z.core.$strip>>;
1029
1058
  }, z.core.$strip>;
1030
1059
  prePrompt: z.ZodString;
1031
1060
  presencePenalty: z.ZodNumber;
1032
- role: z.ZodEnum<{
1033
- Document: "Document";
1034
- Agent: "Agent";
1035
- Analyzer: "Analyzer";
1036
- }>;
1061
+ role: z.ZodString;
1037
1062
  temperature: z.ZodNumber;
1038
1063
  topP: z.ZodNumber;
1039
1064
  }, z.core.$strip>>;
@@ -1047,14 +1072,11 @@ declare const workspacesListResponseSchema: z.ZodObject<{
1047
1072
  supportsFiles: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
1048
1073
  tags: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
1049
1074
  variables: z.ZodRecord<z.ZodString, z.ZodObject<{
1050
- access: z.ZodEnum<{
1051
- None: "None";
1052
- Read: "Read";
1053
- Write: "Write";
1054
- }>;
1075
+ access: z.ZodString;
1055
1076
  schema: z.ZodRecord<z.ZodString, z.ZodAny>;
1056
1077
  }, z.core.$strip>>;
1057
1078
  }, z.core.$strip>>;
1079
+ scoped: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
1058
1080
  total: z.ZodNumber;
1059
1081
  }, z.core.$strip>;
1060
1082
  type WorkspaceDto = z.infer<typeof workspaceResponseSchema>;
@@ -1260,6 +1282,11 @@ declare const modelsKeys: {
1260
1282
  }];
1261
1283
  };
1262
1284
 
1285
+ declare const speechKeys: {
1286
+ all: readonly ["speech"];
1287
+ config: () => readonly ["speech", "config"];
1288
+ };
1289
+
1263
1290
  declare const messagesListOptions: (service: ChatService, threadId: string, opts?: {
1264
1291
  take?: number;
1265
1292
  skip?: number;
@@ -1422,4 +1449,16 @@ declare function useModels({ search, take, skip, }?: {
1422
1449
  total: number;
1423
1450
  }, Error>;
1424
1451
 
1425
- export { type ChatContextIds, type ChatIdentity, ChatProvider, type ChatProviderProps, type ChatService, ChatVariablesForm, DRAFT_THREAD_PREFIX, DateFromApi, type FileInfo$1 as FileInfo, type FileScope, type FlowRunVariables, MarkdownEditor, type MarkdownEditorHandle, type MentionUser, type Message, MessageComposer, type MessageComposerProps, type MessageContentItem, type MessageError, type MessageErrorLike, MessageList, type MessageListProps, MessageListSkeleton, MessageMarkdown, type MessageThread, type MessageValue, MessageValueType, type Model, type ModelProperty, NEW_THREAD_ID, type RetryStatus, THREAD_LIST_PAGE_SIZE, type ThreadsResponse, type Variables, type Workspace, applyDeltaToMessage, applyThreadToCache, createDraftThreadId, createThreadId, downloadFileBlobOptions, filesKeys, flowRunsKeys, getMessageErrorText, getModelIcon, getRetryStatusText, getThreadPlaceholderFromListCache, getUserPhotoUrl, invalidateWorkspaceThreadLists, isDraftThreadId, mapFileInfoDtoToModel, mapMentionUserDtoToModel, mapMessageDtoToModel, mapMessageErrorDtoToModel, mapMessageValueDtoToModel, mapMessagesDtoToModels, mapSignalRThreadSummaryToModel, mapThreadDtoToModel, mapThreadsResponseDtoToModel, mapWorkspaceDtoToModel, mapWorkspacesDtoToModels, markDraftThreadId, messagesKeys, messagesListOptions, messagesMutationsKeys, modelsKeys, parseDateTime, parseDateTimeHuman, parseRetryStatus, randomUUID, setThreadOptimisticRunning, setThreadRunningInLists, taggableUsersOptions, threadDetailOptions, threadsKeys, unmarkDraftThreadId, useAddInputToMessage, useChatContext, useChatIdentity, useChatService, useDownloadFileBlobQuery, useFileMutations, useFlowRunVariables, useIsDraftThreadId, useMessages, useModels, useSendMessage, useTaggableWorkspaceUsers, useThread, useThreadIsRunning, useUpdateFlowRunVariable, useWorkspace, utcDate, workspaceDetailOptions, workspaceKeys };
1452
+ /**
1453
+ * Whether dictation is available on this install and how to connect. Read once
1454
+ * per app session — it only changes with a deploy — and disabled entirely for
1455
+ * services that don't implement speech, in which case the composer renders no
1456
+ * microphone.
1457
+ *
1458
+ * A definitive answer (including a 404 from an older backend) is cached for the
1459
+ * session; a transient failure is retried, because otherwise one blip on load
1460
+ * would silently disable the mic until the page is reloaded.
1461
+ */
1462
+ declare function useSpeechConfig(): _tanstack_react_query.UseQueryResult<SpeechConfig, Error>;
1463
+
1464
+ export { type ChatContextIds, type ChatIdentity, ChatProvider, type ChatProviderProps, type ChatService, ChatVariablesForm, DRAFT_THREAD_PREFIX, DateFromApi, DictationButton, type DictationButtonProps, type DictationError, type DictationState, type FileInfo$1 as FileInfo, type FileScope, type FlowRunVariables, MarkdownEditor, type MarkdownEditorHandle, type MentionUser, type Message, MessageComposer, type MessageComposerProps, type MessageContentItem, type MessageError, type MessageErrorLike, MessageList, type MessageListProps, MessageListSkeleton, MessageMarkdown, type MessageThread, type MessageValue, MessageValueType, type Model, type ModelProperty, NEW_THREAD_ID, type RetryStatus, type SpeechConfig, type SpeechToken, THREAD_LIST_PAGE_SIZE, type ThreadsResponse, type UseDictationOptions, type Variables, type Workspace, applyDeltaToMessage, applyThreadToCache, createDraftThreadId, createThreadId, downloadFileBlobOptions, filesKeys, flowRunsKeys, getMessageErrorDetail, getMessageErrorText, getModelIcon, getRetryStatusText, getThreadPlaceholderFromListCache, getUserPhotoUrl, invalidateWorkspaceThreadLists, isDraftThreadId, mapFileInfoDtoToModel, mapMentionUserDtoToModel, mapMessageDtoToModel, mapMessageErrorDtoToModel, mapMessageValueDtoToModel, mapMessageValuesDtoToModels, mapMessagesDtoToModels, mapSignalRThreadSummaryToModel, mapThreadDtoToModel, mapThreadsResponseDtoToModel, mapWorkspaceDtoToModel, mapWorkspacesDtoToModels, markDraftThreadId, messagesKeys, messagesListOptions, messagesMutationsKeys, modelsKeys, parseDateTime, parseDateTimeHuman, parseRetryStatus, randomUUID, setThreadOptimisticRunning, setThreadRunningInLists, speechKeys, taggableUsersOptions, threadDetailOptions, threadsKeys, unmarkDraftThreadId, useAddInputToMessage, useChatContext, useChatIdentity, useChatService, useDictation, useDownloadFileBlobQuery, useFileMutations, useFlowRunVariables, useIsDraftThreadId, useMessages, useModels, useSendMessage, useSpeechConfig, useTaggableWorkspaceUsers, useThread, useThreadIsRunning, useUpdateFlowRunVariable, useWorkspace, utcDate, workspaceDetailOptions, workspaceKeys };