@smartspace/chat-ui 1.14.4-pr.458.6fbb84f → 1.14.4-pr.501.b2a0bb9

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,10 +557,7 @@ 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>>;
@@ -452,6 +573,8 @@ type MessageErrorDto = NonNullable<MessageDto['errors']>[number] & {
452
573
  };
453
574
  type MessageError = NonNullable<Message['errors']>[number];
454
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[];
455
578
  declare function mapMessageErrorDtoToModel(dto: MessageErrorDto): MessageError;
456
579
  declare function mapMessageDtoToModel(dto: MessageDto): Message;
457
580
  declare function mapMessagesDtoToModels(dto: MessageDto[]): Message[];
@@ -483,8 +606,16 @@ declare function applyDeltaToMessage(target: Message, delta: {
483
606
  type MessageErrorLike = number | {
484
607
  code: number;
485
608
  errorCode?: string | null;
609
+ message?: string | null;
486
610
  };
487
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;
488
619
 
489
620
  /**
490
621
  * Structured transient statuses carried on a message's `status` value.
@@ -644,11 +775,7 @@ declare const workspaceResponseSchema: z.ZodObject<{
644
775
  schema: z.ZodRecord<z.ZodString, z.ZodAny>;
645
776
  }, z.core.$strip>>>>;
646
777
  variables: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodObject<{
647
- access: z.ZodEnum<{
648
- None: "None";
649
- Read: "Read";
650
- Write: "Write";
651
- }>;
778
+ access: z.ZodString;
652
779
  schema: z.ZodRecord<z.ZodString, z.ZodAny>;
653
780
  }, z.core.$strip>>>>;
654
781
  }, z.core.$strip>>;
@@ -671,10 +798,7 @@ declare const workspaceResponseSchema: z.ZodObject<{
671
798
  honourSourceDeletes: z.ZodBoolean;
672
799
  id: z.ZodString;
673
800
  inputName: z.ZodString;
674
- type: z.ZodEnum<{
675
- Periodic: "Periodic";
676
- Container: "Container";
677
- }>;
801
+ type: z.ZodString;
678
802
  }, z.core.$strip>>;
679
803
  }, z.core.$strip>>;
680
804
  id: z.ZodString;
@@ -719,13 +843,7 @@ declare const workspaceResponseSchema: z.ZodObject<{
719
843
  providerDeploymentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
720
844
  providerId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
721
845
  region: z.ZodOptional<z.ZodNullable<z.ZodString>>;
722
- status: z.ZodEnum<{
723
- Deploying: "Deploying";
724
- Ready: "Ready";
725
- Failed: "Failed";
726
- Deleting: "Deleting";
727
- Deleted: "Deleted";
728
- }>;
846
+ status: z.ZodString;
729
847
  statusMessage: z.ZodOptional<z.ZodNullable<z.ZodString>>;
730
848
  statusUpdatedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
731
849
  steps: z.ZodArray<z.ZodObject<{
@@ -733,68 +851,28 @@ declare const workspaceResponseSchema: z.ZodObject<{
733
851
  id: z.ZodString;
734
852
  index: z.ZodNumber;
735
853
  message: z.ZodString;
736
- name: z.ZodEnum<{
737
- DeployVNet: "DeployVNet";
738
- DeployVM: "DeployVM";
739
- InstallDependencies: "InstallDependencies";
740
- DownloadModel: "DownloadModel";
741
- TestModel: "TestModel";
742
- }>;
854
+ name: z.ZodString;
743
855
  progress: z.ZodNumber;
744
856
  startedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
745
857
  }, z.core.$strip>>;
746
858
  url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
747
- virtualMachineServerType: z.ZodOptional<z.ZodEnum<{
748
- TextGenerationInference: "TextGenerationInference";
749
- VLlm: "VLlm";
750
- }>>;
859
+ virtualMachineServerType: z.ZodOptional<z.ZodString>;
751
860
  virtualMachineUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
752
861
  vmSize: z.ZodOptional<z.ZodNullable<z.ZodString>>;
753
862
  }, z.core.$strip>>;
754
863
  displayName: z.ZodString;
755
864
  id: z.ZodString;
756
- modelDeploymentProviderType: z.ZodOptional<z.ZodEnum<{
757
- OpenAi: "OpenAi";
758
- AzureOpenAi: "AzureOpenAi";
759
- HuggingFace: "HuggingFace";
760
- Cohere: "Cohere";
761
- Anthropic: "Anthropic";
762
- Gemini: "Gemini";
763
- VertexAi: "VertexAi";
764
- AzureFoundry: "AzureFoundry";
765
- }>>;
766
- modelPublisher: z.ZodOptional<z.ZodEnum<{
767
- OpenAi: "OpenAi";
768
- HuggingFace: "HuggingFace";
769
- Cohere: "Cohere";
770
- Anthropic: "Anthropic";
771
- Google: "Google";
772
- Meta: "Meta";
773
- Mistral: "Mistral";
774
- Microsoft: "Microsoft";
775
- DeepSeek: "DeepSeek";
776
- XAi: "XAi";
777
- Amazon: "Amazon";
778
- Qwen: "Qwen";
779
- Other: "Other";
780
- }>>;
865
+ modelDeploymentProviderType: z.ZodOptional<z.ZodString>;
866
+ modelPublisher: z.ZodOptional<z.ZodString>;
781
867
  name: z.ZodString;
782
868
  properties: z.ZodArray<z.ZodObject<{
783
869
  name: z.ZodString;
784
- type: z.ZodEnum<{
785
- Boolean: "Boolean";
786
- Number: "Number";
787
- String: "String";
788
- }>;
870
+ type: z.ZodString;
789
871
  }, z.core.$strip>>;
790
872
  }, z.core.$strip>;
791
873
  prePrompt: z.ZodString;
792
874
  presencePenalty: z.ZodNumber;
793
- role: z.ZodEnum<{
794
- Document: "Document";
795
- Agent: "Agent";
796
- Analyzer: "Analyzer";
797
- }>;
875
+ role: z.ZodString;
798
876
  temperature: z.ZodNumber;
799
877
  topP: z.ZodNumber;
800
878
  }, z.core.$strip>>;
@@ -808,11 +886,7 @@ declare const workspaceResponseSchema: z.ZodObject<{
808
886
  supportsFiles: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
809
887
  tags: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
810
888
  variables: z.ZodRecord<z.ZodString, z.ZodObject<{
811
- access: z.ZodEnum<{
812
- None: "None";
813
- Read: "Read";
814
- Write: "Write";
815
- }>;
889
+ access: z.ZodString;
816
890
  schema: z.ZodRecord<z.ZodString, z.ZodAny>;
817
891
  }, z.core.$strip>>;
818
892
  }, z.core.$strip>;
@@ -887,11 +961,7 @@ declare const workspacesListResponseSchema: z.ZodObject<{
887
961
  schema: z.ZodRecord<z.ZodString, z.ZodAny>;
888
962
  }, z.core.$strip>>>>;
889
963
  variables: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodObject<{
890
- access: z.ZodEnum<{
891
- None: "None";
892
- Read: "Read";
893
- Write: "Write";
894
- }>;
964
+ access: z.ZodString;
895
965
  schema: z.ZodRecord<z.ZodString, z.ZodAny>;
896
966
  }, z.core.$strip>>>>;
897
967
  }, z.core.$strip>>;
@@ -914,10 +984,7 @@ declare const workspacesListResponseSchema: z.ZodObject<{
914
984
  honourSourceDeletes: z.ZodBoolean;
915
985
  id: z.ZodString;
916
986
  inputName: z.ZodString;
917
- type: z.ZodEnum<{
918
- Periodic: "Periodic";
919
- Container: "Container";
920
- }>;
987
+ type: z.ZodString;
921
988
  }, z.core.$strip>>;
922
989
  }, z.core.$strip>>;
923
990
  id: z.ZodString;
@@ -962,13 +1029,7 @@ declare const workspacesListResponseSchema: z.ZodObject<{
962
1029
  providerDeploymentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
963
1030
  providerId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
964
1031
  region: z.ZodOptional<z.ZodNullable<z.ZodString>>;
965
- status: z.ZodEnum<{
966
- Deploying: "Deploying";
967
- Ready: "Ready";
968
- Failed: "Failed";
969
- Deleting: "Deleting";
970
- Deleted: "Deleted";
971
- }>;
1032
+ status: z.ZodString;
972
1033
  statusMessage: z.ZodOptional<z.ZodNullable<z.ZodString>>;
973
1034
  statusUpdatedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
974
1035
  steps: z.ZodArray<z.ZodObject<{
@@ -976,68 +1037,28 @@ declare const workspacesListResponseSchema: z.ZodObject<{
976
1037
  id: z.ZodString;
977
1038
  index: z.ZodNumber;
978
1039
  message: z.ZodString;
979
- name: z.ZodEnum<{
980
- DeployVNet: "DeployVNet";
981
- DeployVM: "DeployVM";
982
- InstallDependencies: "InstallDependencies";
983
- DownloadModel: "DownloadModel";
984
- TestModel: "TestModel";
985
- }>;
1040
+ name: z.ZodString;
986
1041
  progress: z.ZodNumber;
987
1042
  startedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
988
1043
  }, z.core.$strip>>;
989
1044
  url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
990
- virtualMachineServerType: z.ZodOptional<z.ZodEnum<{
991
- TextGenerationInference: "TextGenerationInference";
992
- VLlm: "VLlm";
993
- }>>;
1045
+ virtualMachineServerType: z.ZodOptional<z.ZodString>;
994
1046
  virtualMachineUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
995
1047
  vmSize: z.ZodOptional<z.ZodNullable<z.ZodString>>;
996
1048
  }, z.core.$strip>>;
997
1049
  displayName: z.ZodString;
998
1050
  id: z.ZodString;
999
- modelDeploymentProviderType: z.ZodOptional<z.ZodEnum<{
1000
- OpenAi: "OpenAi";
1001
- AzureOpenAi: "AzureOpenAi";
1002
- HuggingFace: "HuggingFace";
1003
- Cohere: "Cohere";
1004
- Anthropic: "Anthropic";
1005
- Gemini: "Gemini";
1006
- VertexAi: "VertexAi";
1007
- AzureFoundry: "AzureFoundry";
1008
- }>>;
1009
- modelPublisher: z.ZodOptional<z.ZodEnum<{
1010
- OpenAi: "OpenAi";
1011
- HuggingFace: "HuggingFace";
1012
- Cohere: "Cohere";
1013
- Anthropic: "Anthropic";
1014
- Google: "Google";
1015
- Meta: "Meta";
1016
- Mistral: "Mistral";
1017
- Microsoft: "Microsoft";
1018
- DeepSeek: "DeepSeek";
1019
- XAi: "XAi";
1020
- Amazon: "Amazon";
1021
- Qwen: "Qwen";
1022
- Other: "Other";
1023
- }>>;
1051
+ modelDeploymentProviderType: z.ZodOptional<z.ZodString>;
1052
+ modelPublisher: z.ZodOptional<z.ZodString>;
1024
1053
  name: z.ZodString;
1025
1054
  properties: z.ZodArray<z.ZodObject<{
1026
1055
  name: z.ZodString;
1027
- type: z.ZodEnum<{
1028
- Boolean: "Boolean";
1029
- Number: "Number";
1030
- String: "String";
1031
- }>;
1056
+ type: z.ZodString;
1032
1057
  }, z.core.$strip>>;
1033
1058
  }, z.core.$strip>;
1034
1059
  prePrompt: z.ZodString;
1035
1060
  presencePenalty: z.ZodNumber;
1036
- role: z.ZodEnum<{
1037
- Document: "Document";
1038
- Agent: "Agent";
1039
- Analyzer: "Analyzer";
1040
- }>;
1061
+ role: z.ZodString;
1041
1062
  temperature: z.ZodNumber;
1042
1063
  topP: z.ZodNumber;
1043
1064
  }, z.core.$strip>>;
@@ -1051,11 +1072,7 @@ declare const workspacesListResponseSchema: z.ZodObject<{
1051
1072
  supportsFiles: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
1052
1073
  tags: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
1053
1074
  variables: z.ZodRecord<z.ZodString, z.ZodObject<{
1054
- access: z.ZodEnum<{
1055
- None: "None";
1056
- Read: "Read";
1057
- Write: "Write";
1058
- }>;
1075
+ access: z.ZodString;
1059
1076
  schema: z.ZodRecord<z.ZodString, z.ZodAny>;
1060
1077
  }, z.core.$strip>>;
1061
1078
  }, z.core.$strip>>;
@@ -1265,6 +1282,11 @@ declare const modelsKeys: {
1265
1282
  }];
1266
1283
  };
1267
1284
 
1285
+ declare const speechKeys: {
1286
+ all: readonly ["speech"];
1287
+ config: () => readonly ["speech", "config"];
1288
+ };
1289
+
1268
1290
  declare const messagesListOptions: (service: ChatService, threadId: string, opts?: {
1269
1291
  take?: number;
1270
1292
  skip?: number;
@@ -1427,4 +1449,16 @@ declare function useModels({ search, take, skip, }?: {
1427
1449
  total: number;
1428
1450
  }, Error>;
1429
1451
 
1430
- 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 };