@mieweb/ui 0.6.1-dev.165 → 0.6.1-dev.167
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/brands/index.cjs +7 -7
- package/dist/brands/index.js +2 -2
- package/dist/{chunk-NBD236EH.js → chunk-3TERETXH.js} +20 -3
- package/dist/chunk-3TERETXH.js.map +1 -0
- package/dist/chunk-6I7IDZ4A.js +51 -0
- package/dist/chunk-6I7IDZ4A.js.map +1 -0
- package/dist/{chunk-YYDW3ZZS.cjs → chunk-JQEY53SH.cjs} +20 -3
- package/dist/chunk-JQEY53SH.cjs.map +1 -0
- package/dist/{chunk-Z6NRP4Z5.cjs → chunk-JWTCEWQ4.cjs} +2 -2
- package/dist/{chunk-Z6NRP4Z5.cjs.map → chunk-JWTCEWQ4.cjs.map} +1 -1
- package/dist/{chunk-Y65SK5Y2.cjs → chunk-MJ7YITLN.cjs} +2 -2
- package/dist/{chunk-Y65SK5Y2.cjs.map → chunk-MJ7YITLN.cjs.map} +1 -1
- package/dist/{chunk-R6PBBPU3.js → chunk-TXRQQMG5.js} +2 -2
- package/dist/{chunk-R6PBBPU3.js.map → chunk-TXRQQMG5.js.map} +1 -1
- package/dist/chunk-UVSODK6V.cjs +53 -0
- package/dist/chunk-UVSODK6V.cjs.map +1 -0
- package/dist/{chunk-NSLR3B7K.js → chunk-XVF472GT.js} +2 -2
- package/dist/{chunk-NSLR3B7K.js.map → chunk-XVF472GT.js.map} +1 -1
- package/dist/components/Markdown/index.cjs +10 -10
- package/dist/components/Markdown/index.js +2 -2
- package/dist/components/Skeleton/index.d.cts +1 -1
- package/dist/components/Skeleton/index.d.ts +1 -1
- package/dist/components/SuperChat/plugins/index.cjs +73 -9
- package/dist/components/SuperChat/plugins/index.cjs.map +1 -1
- package/dist/components/SuperChat/plugins/index.d.cts +0 -20
- package/dist/components/SuperChat/plugins/index.d.ts +0 -20
- package/dist/components/SuperChat/plugins/index.js +73 -9
- package/dist/components/SuperChat/plugins/index.js.map +1 -1
- package/dist/hey-buddy-CLUVAY2X.cjs +1133 -0
- package/dist/hey-buddy-CLUVAY2X.cjs.map +1 -0
- package/dist/hey-buddy-NMSWZ4TN.js +1131 -0
- package/dist/hey-buddy-NMSWZ4TN.js.map +1 -0
- package/dist/index.cjs +4345 -542
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +786 -1
- package/dist/index.d.ts +786 -1
- package/dist/index.js +4321 -569
- package/dist/index.js.map +1 -1
- package/dist/speaker-verify-5GTWAN5Y.cjs +357 -0
- package/dist/speaker-verify-5GTWAN5Y.cjs.map +1 -0
- package/dist/speaker-verify-R67P433H.js +355 -0
- package/dist/speaker-verify-R67P433H.js.map +1 -0
- package/dist/styles/init.css +5 -0
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/package.json +2 -1
- package/dist/chunk-NBD236EH.js.map +0 -1
- package/dist/chunk-YYDW3ZZS.cjs.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -997,6 +997,306 @@ interface AIChatProps extends VariantProps<typeof chatVariants>, AIChatCallbacks
|
|
|
997
997
|
*/
|
|
998
998
|
declare function AIChat({ session, messages: messagesProp, isGenerating: isGeneratingProp, userName, title, suggestions, showHeader, showTimestamps, inputPlaceholder, variant, size, height, composerProps, talkToText, onRecordingStart, onRecordingComplete, className, onSendMessage, onToolCall: _onToolCall, onResourceClick, onSuggestedAction, onCancel, onClear, onClose, renderTextContent, }: AIChatProps): react_jsx_runtime.JSX.Element;
|
|
999
999
|
|
|
1000
|
+
/**
|
|
1001
|
+
* Hey Ozwell — the in-header toggle (mieweb/ui#287).
|
|
1002
|
+
*
|
|
1003
|
+
* The Ozwell octopus that lives in the top bar. Off, it sits gray and muted.
|
|
1004
|
+
* Activated, it turns full colour and pulses with the room volume — the same
|
|
1005
|
+
* mic-reactive glow as the Voice Setup enrollment screen.
|
|
1006
|
+
*
|
|
1007
|
+
* Click toggles on/off. Right-click or long-press fires `onOpenSettings` — the host
|
|
1008
|
+
* surfaces "Ozwell settings" (voice enrollment / re-enroll / add a condition / test).
|
|
1009
|
+
*
|
|
1010
|
+
* Presentational: the host owns on/off and feeds the live `level` (0..1) from its
|
|
1011
|
+
* single wake-word analyser — this component never opens the mic itself (one shared
|
|
1012
|
+
* mic; a second getUserMedia would silence the detector).
|
|
1013
|
+
*/
|
|
1014
|
+
interface HeyOzwellToggleProps {
|
|
1015
|
+
/** Whether Hey Ozwell is on. Off → gray + muted; on → colour + volume pulse. */
|
|
1016
|
+
active?: boolean;
|
|
1017
|
+
/** Called with the next active state when clicked. */
|
|
1018
|
+
onToggle?: (active: boolean) => void;
|
|
1019
|
+
/**
|
|
1020
|
+
* Room volume, 0..1, driving the colour pulse while active. Wire this to the
|
|
1021
|
+
* wake-word analyser (see Voice Setup). Ignored when inactive.
|
|
1022
|
+
*/
|
|
1023
|
+
level?: number;
|
|
1024
|
+
/**
|
|
1025
|
+
* Whether the primary (wake-detection) ring is loading — this gates whether the octopus is
|
|
1026
|
+
* actually usable. Fast: off → green flash → ready. Off-ramp keeps the octopus from looking
|
|
1027
|
+
* "unavailable" for the slower transcription warm-up (see `warm*`).
|
|
1028
|
+
*/
|
|
1029
|
+
loading?: boolean;
|
|
1030
|
+
/**
|
|
1031
|
+
* Wake-detection load progress, 0..1, for the primary determinate fill ring. When omitted
|
|
1032
|
+
* while `loading`, the ring falls back to an indeterminate spin. Completion flashes green.
|
|
1033
|
+
*/
|
|
1034
|
+
loadProgress?: number;
|
|
1035
|
+
/**
|
|
1036
|
+
* Whether transcription is still warming in the background. Shows as a thin, muted secondary
|
|
1037
|
+
* arc OUTSIDE the primary ring — purely informational, never implies the octopus isn't ready
|
|
1038
|
+
* (you can press and talk immediately; audio is captured and transcribed once this finishes).
|
|
1039
|
+
*/
|
|
1040
|
+
warmActive?: boolean;
|
|
1041
|
+
/** Background transcription warm progress, 0..1, for the secondary arc. */
|
|
1042
|
+
warmProgress?: number;
|
|
1043
|
+
/** Optional status appended to the tooltip, e.g. "Transcription 80%". */
|
|
1044
|
+
loadLabel?: string;
|
|
1045
|
+
/** Ozwell logo source. Defaults to the bundled Storybook public asset. */
|
|
1046
|
+
logoSrc?: string;
|
|
1047
|
+
/** Logo diameter in px. */
|
|
1048
|
+
size?: number;
|
|
1049
|
+
/** Additional class name. */
|
|
1050
|
+
className?: string;
|
|
1051
|
+
/** Fired on right-click or long-press — host opens "Ozwell settings" (enrollment / test). */
|
|
1052
|
+
onOpenSettings?: () => void;
|
|
1053
|
+
/** Long-press duration (ms) before settings fire. */
|
|
1054
|
+
longPressMs?: number;
|
|
1055
|
+
}
|
|
1056
|
+
/**
|
|
1057
|
+
* The header Ozwell octopus. Click to turn the assistant on/off; while on it
|
|
1058
|
+
* glows and pulses with the room volume passed via `level`. Right-click or
|
|
1059
|
+
* long-press opens settings.
|
|
1060
|
+
*/
|
|
1061
|
+
declare function HeyOzwellToggle({ active, onToggle, level, loading, loadProgress, warmActive, warmProgress, loadLabel, logoSrc, size, className, onOpenSettings, longPressMs, }: HeyOzwellToggleProps): react_jsx_runtime.JSX.Element;
|
|
1062
|
+
|
|
1063
|
+
/**
|
|
1064
|
+
* Hey Ozwell — model manifest (mieweb/ui#288).
|
|
1065
|
+
*
|
|
1066
|
+
* A lightweight, manifest-pinned list of the on-device models the assistant runs, so the Ozwell
|
|
1067
|
+
* settings menu can show "what am I using, what version, how big, loaded from where" (per Doug).
|
|
1068
|
+
*
|
|
1069
|
+
* Values are grounded in the actual runtime config:
|
|
1070
|
+
* - wake + speaker-verify currently load from the personal HF repo `jlocala/ozwell-voice-assets`
|
|
1071
|
+
* (the small models Doug wants moved to Git LFS — see MODEL-HOSTING.md).
|
|
1072
|
+
* - transcription (Whisper turbo) loads from our Cloudflare R2 bucket (config-driven R2_HOST).
|
|
1073
|
+
* Sizes are approximate (remote weights, not bundled). Versions are pinned identifiers, not semver.
|
|
1074
|
+
*/
|
|
1075
|
+
/** Which live load-store (if any) reflects this model's readiness in the UI. */
|
|
1076
|
+
type ModelStatusKey = 'wake' | 'transcription' | 'static';
|
|
1077
|
+
interface ModelInfo {
|
|
1078
|
+
id: string;
|
|
1079
|
+
/** Coarse role grouping shown as the row's eyebrow. */
|
|
1080
|
+
role: 'Wake word' | 'Speaker verify' | 'Transcription';
|
|
1081
|
+
/** Human-facing name. */
|
|
1082
|
+
label: string;
|
|
1083
|
+
/** Architecture / precision detail. */
|
|
1084
|
+
variant: string;
|
|
1085
|
+
/** Pinned identifier (model id or repo ref) — not semver. */
|
|
1086
|
+
version: string;
|
|
1087
|
+
/** Approximate download size (remote weights). */
|
|
1088
|
+
approxSize: string;
|
|
1089
|
+
/** Where the weights load from today. */
|
|
1090
|
+
source: string;
|
|
1091
|
+
/** Inference engine. */
|
|
1092
|
+
runtime: string;
|
|
1093
|
+
/** Live-status hook: which load store reflects readiness, or 'static' (loads on first use). */
|
|
1094
|
+
statusKey: ModelStatusKey;
|
|
1095
|
+
}
|
|
1096
|
+
declare const MODEL_MANIFEST: ModelInfo[];
|
|
1097
|
+
/** Per-model readiness for the UI status dot. */
|
|
1098
|
+
type ModelStatus = 'idle' | 'loading' | 'ready';
|
|
1099
|
+
|
|
1100
|
+
/**
|
|
1101
|
+
* Speaker diarization core — pure clustering + transcript attribution (mieweb/ui, Hey Ozwell).
|
|
1102
|
+
*
|
|
1103
|
+
* No models here: given per-segment speaker embeddings (from TitaNet) + a timestamped transcript (from
|
|
1104
|
+
* Whisper), group segments by speaker and label them. Everything is deterministic + framework-free so it's
|
|
1105
|
+
* unit-testable without the WASM/mic. See DIARIZATION.md for the full pipeline; `useDiarization` wires the
|
|
1106
|
+
* embedder + transcriber to these functions.
|
|
1107
|
+
*/
|
|
1108
|
+
/** A transcript chunk with timing (Whisper output). */
|
|
1109
|
+
interface TranscriptSegment {
|
|
1110
|
+
start: number;
|
|
1111
|
+
end: number;
|
|
1112
|
+
text: string;
|
|
1113
|
+
}
|
|
1114
|
+
/** A transcript chunk after diarization: which cluster + a human speaker label. */
|
|
1115
|
+
interface DiarizedSegment extends TranscriptSegment {
|
|
1116
|
+
cluster: number;
|
|
1117
|
+
speaker: string;
|
|
1118
|
+
}
|
|
1119
|
+
interface ClusterOptions {
|
|
1120
|
+
/** Merge clusters while their cosine DISTANCE (1 − cosine) is ≤ this. Higher = fewer speakers (merges
|
|
1121
|
+
* more). Default 0.65 (merge when cosine similarity ≥ 0.35) — biased toward NOT over-splitting one
|
|
1122
|
+
* person into several, which is the common failure on short/varied segments. */
|
|
1123
|
+
threshold?: number;
|
|
1124
|
+
/** Hard cap on speaker count — keep merging past `threshold` until at most this many clusters remain. */
|
|
1125
|
+
maxSpeakers?: number;
|
|
1126
|
+
}
|
|
1127
|
+
/** Cosine similarity of two vectors (computes norms, so inputs needn't be normalized). */
|
|
1128
|
+
declare function cosine(a: Float32Array, b: Float32Array): number;
|
|
1129
|
+
/** Mean of vectors, L2-normalized — a cluster's representative embedding. */
|
|
1130
|
+
declare function centroid(vectors: Float32Array[]): Float32Array;
|
|
1131
|
+
/**
|
|
1132
|
+
* Average-linkage agglomerative clustering over speaker embeddings, with auto speaker count via a cosine
|
|
1133
|
+
* threshold (+ optional hard `maxSpeakers` cap). Returns a cluster id (0-based, in first-appearance order)
|
|
1134
|
+
* per input embedding.
|
|
1135
|
+
*/
|
|
1136
|
+
declare function clusterEmbeddings(embeddings: Float32Array[], opts?: ClusterOptions): number[];
|
|
1137
|
+
/**
|
|
1138
|
+
* Human labels per cluster id. `names[clusterId]` (from voiceprint anchoring / LLM / manual) wins;
|
|
1139
|
+
* otherwise a generic "Speaker N". Returns an array indexed by cluster id.
|
|
1140
|
+
*/
|
|
1141
|
+
declare function labelClusters(clusters: number[], names?: Record<number, string>): string[];
|
|
1142
|
+
/** Attach cluster id + speaker label to each transcript segment. */
|
|
1143
|
+
declare function attributeSegments(segments: TranscriptSegment[], clusters: number[], labels: string[]): DiarizedSegment[];
|
|
1144
|
+
interface RoleInferenceOptions {
|
|
1145
|
+
/** Candidate roles the model may assign. Default: a clinical-visit set. */
|
|
1146
|
+
roles?: string[];
|
|
1147
|
+
/** Which speaker labels to (re)infer — default the generic "Speaker N" ones, leaving enrolled names. */
|
|
1148
|
+
isGeneric?: (speaker: string) => boolean;
|
|
1149
|
+
}
|
|
1150
|
+
/**
|
|
1151
|
+
* Ask an LLM to infer the ROLE of each unknown speaker (patient / caregiver / clinician …) from what they
|
|
1152
|
+
* say, and relabel them. Enrolled/named speakers are left untouched. `ask` is injected (e.g. askOzwell) so
|
|
1153
|
+
* this stays pure + testable. Falls back to the input unchanged on any parse/LLM failure.
|
|
1154
|
+
*/
|
|
1155
|
+
declare function inferSpeakerRoles(segments: DiarizedSegment[], ask: (prompt: string) => Promise<string>, opts?: RoleInferenceOptions): Promise<DiarizedSegment[]>;
|
|
1156
|
+
/** Collapse consecutive same-speaker segments into turns — nicer for a scribe note. */
|
|
1157
|
+
declare function mergeTurns(segments: DiarizedSegment[]): DiarizedSegment[];
|
|
1158
|
+
|
|
1159
|
+
interface UseDiarizationOptions {
|
|
1160
|
+
/** Cluster merge cutoff (cosine distance). Higher → fewer speakers (merges more). Default 0.65. */
|
|
1161
|
+
threshold?: number;
|
|
1162
|
+
/** Hard cap on detected speakers — forces merging down to at most this many. Unset = auto. */
|
|
1163
|
+
maxSpeakers?: number;
|
|
1164
|
+
/** Minimum segment length (seconds) to trust for a speaker embedding — shorter segments are attributed
|
|
1165
|
+
* to a neighbor instead of forming their own (noisy) cluster. Raising this cuts phantom speakers from
|
|
1166
|
+
* brief interjections. Default 1.0. */
|
|
1167
|
+
minSegmentSeconds?: number;
|
|
1168
|
+
/** Min cosine to name a cluster from an enrolled voice (else it stays "Speaker N"). Default 0.45. */
|
|
1169
|
+
identifyThreshold?: number;
|
|
1170
|
+
/** Collapse consecutive same-speaker segments into turns. Default true. */
|
|
1171
|
+
merge?: boolean;
|
|
1172
|
+
/** After anchoring, ask Ozwell to infer roles (Patient / Caregiver / …) for the still-generic speakers.
|
|
1173
|
+
* Requires the chat backend to be configured; best-effort (keeps "Speaker N" on failure). Default false. */
|
|
1174
|
+
inferRoles?: boolean;
|
|
1175
|
+
/** Load the ~50 MB speaker runtime + warm Whisper. Set false to keep it dormant until it's needed
|
|
1176
|
+
* (e.g. a host feature that's off). Default true. */
|
|
1177
|
+
enabled?: boolean;
|
|
1178
|
+
}
|
|
1179
|
+
interface UseDiarizationResult {
|
|
1180
|
+
/** TitaNet runtime is loaded (diarization can run). */
|
|
1181
|
+
ready: boolean;
|
|
1182
|
+
/** A diarization pass is in flight. */
|
|
1183
|
+
busy: boolean;
|
|
1184
|
+
error: string | null;
|
|
1185
|
+
/** Last result (also returned by `diarize`). */
|
|
1186
|
+
result: DiarizedSegment[] | null;
|
|
1187
|
+
/** Diarize a recorded visit Blob → attributed transcript. */
|
|
1188
|
+
diarize: (blob: Blob) => Promise<DiarizedSegment[]>;
|
|
1189
|
+
}
|
|
1190
|
+
declare function useDiarization(options?: UseDiarizationOptions): UseDiarizationResult;
|
|
1191
|
+
|
|
1192
|
+
type HeyOzwellPhase = 'listening' | 'dictating' | 'transcribing';
|
|
1193
|
+
interface UseHeyOzwellOptions {
|
|
1194
|
+
/** ON: "hey ozwell" opens the chat AND starts dictating. OFF: it just opens the chat and waits. */
|
|
1195
|
+
autoDictateOnWake?: boolean;
|
|
1196
|
+
/** Close the chat popup after "ozwell I'm done" transcribes + sends. */
|
|
1197
|
+
closeChatOnDone?: boolean;
|
|
1198
|
+
/** Transcribe on-device (browser, PHI-safe) or POST audio to the server. */
|
|
1199
|
+
transcription?: 'browser' | 'server';
|
|
1200
|
+
/**
|
|
1201
|
+
* Override the default send. By default the hook appends the user turn and either a canned keyless
|
|
1202
|
+
* reply or a streamed Ozwell response (see `ozwellChat`). Provide this to route sends to your own
|
|
1203
|
+
* backend / message store instead; the hook still appends the user turn first.
|
|
1204
|
+
*/
|
|
1205
|
+
onSend?: (text: string) => void;
|
|
1206
|
+
/** Wake-model asset base, forwarded to `useWakeWord`. */
|
|
1207
|
+
assetBase?: string;
|
|
1208
|
+
/**
|
|
1209
|
+
* Doctor-only gate. When true, each wake is verified INVISIBLY against the enrolled voiceprint —
|
|
1210
|
+
* only the enrolled doctor (WHO) actually saying the phrase (WHAT) acts; everyone else is ignored.
|
|
1211
|
+
* If nothing is enrolled yet it stays open (so the chat works before voice setup). Loads the ~50 MB
|
|
1212
|
+
* speaker runtime only when enabled. Enroll via `useVoiceSetup`.
|
|
1213
|
+
*/
|
|
1214
|
+
requireDoctor?: boolean;
|
|
1215
|
+
/** Start listening immediately on mount instead of waiting for a click (e.g. an always-on surface). */
|
|
1216
|
+
autoStart?: boolean;
|
|
1217
|
+
/** Live caption: while dictating, re-transcribe the growing utterance every ~2s and show the recognized
|
|
1218
|
+
* text in the chat composer as it's heard (the final send still uses the full-clip transcription).
|
|
1219
|
+
* On-device only (browser transcription); costs extra compute during dictation. Default false. */
|
|
1220
|
+
liveTranscript?: boolean;
|
|
1221
|
+
/**
|
|
1222
|
+
* Conversation mode: on "done", DIARIZE the captured clip (who-said-what) and send a speaker-labeled
|
|
1223
|
+
* transcript instead of a flat one — so the assistant gets "Dr. Jane: … / Patient: …" for a multi-person
|
|
1224
|
+
* room. On-device (loads the ~50 MB speaker runtime); slower than plain transcription, and it overrides
|
|
1225
|
+
* server transcription (diarization needs the audio locally). Default false.
|
|
1226
|
+
*/
|
|
1227
|
+
conversationMode?: boolean;
|
|
1228
|
+
/** Review before send: on "done", drop the transcript into the composer as EDITABLE text (glance / fix a
|
|
1229
|
+
* mishearing, then press send) instead of sending it automatically. An accuracy safety net for clinical
|
|
1230
|
+
* use — off by default so the hands-free flow stays hands-free. */
|
|
1231
|
+
reviewBeforeSend?: boolean;
|
|
1232
|
+
/** Diarization tuning for conversation mode (threshold, maxSpeakers, minSegmentSeconds, inferRoles). */
|
|
1233
|
+
diarizationOptions?: Omit<UseDiarizationOptions, 'enabled'>;
|
|
1234
|
+
}
|
|
1235
|
+
/** Props to spread onto <HeyOzwellToggle>. */
|
|
1236
|
+
interface HeyOzwellToggleBindings {
|
|
1237
|
+
active: boolean;
|
|
1238
|
+
level: number;
|
|
1239
|
+
loading: boolean;
|
|
1240
|
+
/** Determinate ring fill 0..1. Omitted (undefined) during the live-detector cold-start, where there's
|
|
1241
|
+
* no byte progress to show — the ring falls back to an indeterminate spin. */
|
|
1242
|
+
loadProgress?: number;
|
|
1243
|
+
warmActive: boolean;
|
|
1244
|
+
warmProgress: number;
|
|
1245
|
+
loadLabel?: string;
|
|
1246
|
+
onToggle: (next: boolean) => void;
|
|
1247
|
+
onOpenSettings: () => void;
|
|
1248
|
+
}
|
|
1249
|
+
/** Props to spread onto <FloatingAIChat> (host supplies suggestions / userName). */
|
|
1250
|
+
interface HeyOzwellChatBindings {
|
|
1251
|
+
open: boolean;
|
|
1252
|
+
onOpenChange: (open: boolean) => void;
|
|
1253
|
+
messages: AIMessage[];
|
|
1254
|
+
isGenerating: boolean;
|
|
1255
|
+
inputPlaceholder: string;
|
|
1256
|
+
onSendMessage: (text: string) => void;
|
|
1257
|
+
/** Controlled composer wiring — fills the box with the live caption while dictating, else the typed
|
|
1258
|
+
* text. Spread onto the chat; a host adding its own composerProps should merge (not replace) this. */
|
|
1259
|
+
composerProps: {
|
|
1260
|
+
value: string;
|
|
1261
|
+
onValueChange: (v: string) => void;
|
|
1262
|
+
};
|
|
1263
|
+
}
|
|
1264
|
+
interface UseHeyOzwellResult {
|
|
1265
|
+
/** Whether Ozwell is on (mic listening). */
|
|
1266
|
+
active: boolean;
|
|
1267
|
+
/** Turn Ozwell on/off — also tears down dictation + closes popups when turning off. */
|
|
1268
|
+
toggle: (next: boolean) => void;
|
|
1269
|
+
phase: HeyOzwellPhase;
|
|
1270
|
+
chatOpen: boolean;
|
|
1271
|
+
setChatOpen: (open: boolean) => void;
|
|
1272
|
+
settingsOpen: boolean;
|
|
1273
|
+
setSettingsOpen: (open: boolean) => void;
|
|
1274
|
+
messages: AIMessage[];
|
|
1275
|
+
isGenerating: boolean;
|
|
1276
|
+
/** Room volume 0..1 from the detector's own mic stream (drives the octopus pulse). */
|
|
1277
|
+
level: number;
|
|
1278
|
+
/** Wake detector ready / error passthrough. */
|
|
1279
|
+
ready: boolean;
|
|
1280
|
+
error: string | null;
|
|
1281
|
+
/** Live readiness per model, for the settings menu's "Models & versions" readout. */
|
|
1282
|
+
modelStatus: Partial<Record<ModelStatusKey, ModelStatus>>;
|
|
1283
|
+
/** Send a (typed or dictated) message through the active flow. */
|
|
1284
|
+
send: (text: string) => void;
|
|
1285
|
+
/** Start recording dictation into the active turn (e.g. wire to a mic button). */
|
|
1286
|
+
startDictation: () => void;
|
|
1287
|
+
/** Stop dictation → transcribe → send. Pass `true` only for a spoken "ozwell i'm done" stop (it trims the
|
|
1288
|
+
* phrase off the audio); a manual/button stop should call it with no argument. */
|
|
1289
|
+
stopDictation: (viaPhrase?: boolean) => void;
|
|
1290
|
+
/** Doctor-only gate is on AND a voiceprint is enrolled, so only the enrolled doctor is acted on. */
|
|
1291
|
+
locked: boolean;
|
|
1292
|
+
/** Live-caption text recognized so far during dictation (empty unless `liveTranscript` is on). Host can
|
|
1293
|
+
* render it in the composer as it's spoken; the final send still uses the full-clip transcription. */
|
|
1294
|
+
liveText: string;
|
|
1295
|
+
toggleProps: HeyOzwellToggleBindings;
|
|
1296
|
+
chatProps: HeyOzwellChatBindings;
|
|
1297
|
+
}
|
|
1298
|
+
declare function useHeyOzwell(options?: UseHeyOzwellOptions): UseHeyOzwellResult;
|
|
1299
|
+
|
|
1000
1300
|
interface AIChatTriggerProps {
|
|
1001
1301
|
/** Whether the chat is open */
|
|
1002
1302
|
isOpen?: boolean;
|
|
@@ -1047,6 +1347,491 @@ interface FloatingAIChatProps extends Omit<AIChatModalProps, 'open' | 'onOpenCha
|
|
|
1047
1347
|
*/
|
|
1048
1348
|
declare function FloatingAIChat({ defaultOpen, open: controlledOpen, onOpenChange: controlledOnOpenChange, buttonPosition, position, pulse, ...chatProps }: FloatingAIChatProps): react_jsx_runtime.JSX.Element;
|
|
1049
1349
|
|
|
1350
|
+
interface HeyOzwellProps extends UseHeyOzwellOptions {
|
|
1351
|
+
/** Octopus diameter in px. */
|
|
1352
|
+
size?: number;
|
|
1353
|
+
/** Octopus logo source. */
|
|
1354
|
+
logoSrc?: string;
|
|
1355
|
+
/** Long-press duration (ms) before settings open. */
|
|
1356
|
+
longPressMs?: number;
|
|
1357
|
+
/** Class name applied to the octopus toggle button. */
|
|
1358
|
+
className?: string;
|
|
1359
|
+
/** Open the central voice page (set up / add / rename / remove authorized voices). Settings item hidden when omitted. */
|
|
1360
|
+
onManageVoices?: () => void;
|
|
1361
|
+
/**
|
|
1362
|
+
* Extra props forwarded to the FloatingAIChat (e.g. `suggestions`, `userName`). The open state,
|
|
1363
|
+
* messages, placeholder and send handler are wired from the hook; anything here overrides them.
|
|
1364
|
+
*/
|
|
1365
|
+
chatProps?: Partial<FloatingAIChatProps>;
|
|
1366
|
+
}
|
|
1367
|
+
/** The Hey Ozwell octopus + settings menu + floating chat, wired end-to-end. */
|
|
1368
|
+
declare function HeyOzwell({ size, logoSrc, longPressMs, className, onManageVoices, chatProps, ...options }: HeyOzwellProps): react_jsx_runtime.JSX.Element;
|
|
1369
|
+
|
|
1370
|
+
interface OzwellSettingsMenuProps {
|
|
1371
|
+
/** The trigger element — usually the <HeyOzwellToggle>. The Dropdown anchors the menu to it. */
|
|
1372
|
+
trigger: React$1.ReactElement;
|
|
1373
|
+
/** Controlled open state (drive from `useHeyOzwell().settingsOpen`). */
|
|
1374
|
+
open?: boolean;
|
|
1375
|
+
/** Open-state change (Dropdown fires this on click-outside / escape). */
|
|
1376
|
+
onOpenChange?: (open: boolean) => void;
|
|
1377
|
+
/** Live readiness per model for the "Models & versions" readout. */
|
|
1378
|
+
modelStatus?: Partial<Record<ModelStatusKey, ModelStatus>>;
|
|
1379
|
+
/** Open the central voice page (set up / add / rename / remove authorized voices). Item hidden when omitted. */
|
|
1380
|
+
onManageVoices?: () => void;
|
|
1381
|
+
}
|
|
1382
|
+
/** The "Ozwell settings" dropdown menu, on the shared MIE Dropdown. */
|
|
1383
|
+
declare function OzwellSettingsMenu({ trigger, open, onOpenChange, modelStatus, onManageVoices, }: OzwellSettingsMenuProps): react_jsx_runtime.JSX.Element;
|
|
1384
|
+
|
|
1385
|
+
interface ModelInfoListProps {
|
|
1386
|
+
/** Readiness per status key; 'static' models default to 'ready' (load on first use). */
|
|
1387
|
+
status?: Partial<Record<ModelStatusKey, ModelStatus>>;
|
|
1388
|
+
}
|
|
1389
|
+
/** The model · version · size · source rows with a status dot, for the settings menu. */
|
|
1390
|
+
declare function ModelInfoList({ status }: ModelInfoListProps): react_jsx_runtime.JSX.Element;
|
|
1391
|
+
|
|
1392
|
+
interface HandsFreeChatProps {
|
|
1393
|
+
/** Chat header title. */
|
|
1394
|
+
title?: string;
|
|
1395
|
+
/** Suggested-action chips for the empty state. */
|
|
1396
|
+
suggestions?: AISuggestedAction[];
|
|
1397
|
+
/** Display name for the user's messages. */
|
|
1398
|
+
userName?: string;
|
|
1399
|
+
/** Octopus logo source, forwarded to the toggle + the enrollment screen. */
|
|
1400
|
+
logoSrc?: string;
|
|
1401
|
+
/** Transcription mode — on-device (default, PHI-safe) or POST the recorded clip to the server ASR model. */
|
|
1402
|
+
transcription?: 'browser' | 'server';
|
|
1403
|
+
/** Doctor-only gate — only the enrolled voice(s) act. Default true. */
|
|
1404
|
+
requireDoctor?: boolean;
|
|
1405
|
+
/** Live caption — fill the message box with recognized words as you dictate (on-device only). Default false. */
|
|
1406
|
+
liveTranscript?: boolean;
|
|
1407
|
+
/** Conversation mode — on "done", diarize the clip and send a speaker-labeled transcript ("Dr. Jane: … /
|
|
1408
|
+
* Patient: …") so the assistant knows who said what in a multi-person room. On-device; overrides server
|
|
1409
|
+
* transcription. Default false. */
|
|
1410
|
+
conversationMode?: boolean;
|
|
1411
|
+
/** Review before send — on "done", put the transcript in the message box to edit before sending, instead
|
|
1412
|
+
* of sending automatically. Default false. */
|
|
1413
|
+
reviewBeforeSend?: boolean;
|
|
1414
|
+
/** Auto-dictate — "hey ozwell" starts dictating hands-free. Default true. */
|
|
1415
|
+
autoDictateOnWake?: boolean;
|
|
1416
|
+
}
|
|
1417
|
+
/** Say "hey ozwell" to dictate, "ozwell I'm done" to send — wake + speaker-verify + dictation + AIChat. */
|
|
1418
|
+
declare function HandsFreeChat({ title, suggestions, userName, logoSrc, transcription, requireDoctor, liveTranscript, conversationMode, reviewBeforeSend, autoDictateOnWake, }: HandsFreeChatProps): react_jsx_runtime.JSX.Element;
|
|
1419
|
+
|
|
1420
|
+
interface VoiceSetupProps {
|
|
1421
|
+
/**
|
|
1422
|
+
* 'enroll' (default) = fresh first-time setup. 'add' = jump straight into appending a new voice/condition
|
|
1423
|
+
* to the existing voiceprints — what the settings menu's "Add a voice" uses, so the user doesn't have to
|
|
1424
|
+
* re-do a full enroll first.
|
|
1425
|
+
*/
|
|
1426
|
+
mode?: 'enroll' | 'add';
|
|
1427
|
+
/** Which voice to enroll — pass a fresh id (with `label`) to add a different person (an assistant). */
|
|
1428
|
+
voiceId?: string;
|
|
1429
|
+
/** Human label for the voice being enrolled (e.g., "Dr. Smith", "My MA"). */
|
|
1430
|
+
label?: string;
|
|
1431
|
+
/** Octopus logo source. */
|
|
1432
|
+
logoSrc?: string;
|
|
1433
|
+
/** Fired when the user taps "Done" after enrollment — host closes/advances the setup surface. */
|
|
1434
|
+
onDone?: () => void;
|
|
1435
|
+
/** Fired when the user cancels/backs out — host closes the setup surface. Shows a Cancel control. */
|
|
1436
|
+
onCancel?: () => void;
|
|
1437
|
+
}
|
|
1438
|
+
/** On-device voice enrollment — tap the octopus, it pulses as you talk. Brand-aligned. */
|
|
1439
|
+
declare function VoiceSetup({ mode, voiceId, label, logoSrc, onDone, onCancel, }: VoiceSetupProps): react_jsx_runtime.JSX.Element;
|
|
1440
|
+
|
|
1441
|
+
interface VoiceManagerProps {
|
|
1442
|
+
/** Octopus logo source, forwarded to the enrollment screen. */
|
|
1443
|
+
logoSrc?: string;
|
|
1444
|
+
}
|
|
1445
|
+
/** The central voice-enrollment management page. */
|
|
1446
|
+
declare function VoiceManager({ logoSrc }: VoiceManagerProps): react_jsx_runtime.JSX.Element;
|
|
1447
|
+
|
|
1448
|
+
type VoiceSetupPhase = 'intro' | 'getready' | 'speak' | 'gotit' | 'deny' | 'done';
|
|
1449
|
+
interface UseVoiceSetupOptions {
|
|
1450
|
+
/** Start directly in "add a voice" (append) mode instead of a fresh enroll — for the settings menu's
|
|
1451
|
+
* "Add a voice", which appends another authorized voice / condition to the existing voiceprints. */
|
|
1452
|
+
startAdding?: boolean;
|
|
1453
|
+
/** Which voice this enrollment belongs to. Defaults to "you" (fresh) or a generated id (add mode).
|
|
1454
|
+
* Pass a fresh id to enroll a different person (an assistant). */
|
|
1455
|
+
voiceId?: string;
|
|
1456
|
+
/** Human label for the voice (e.g., "You", "Dr. Smith", "My MA"). */
|
|
1457
|
+
label?: string;
|
|
1458
|
+
}
|
|
1459
|
+
interface UseVoiceSetupResult {
|
|
1460
|
+
/** Both the speaker runtime and wake detector are loaded — enrollment can start. */
|
|
1461
|
+
ready: boolean;
|
|
1462
|
+
error: string | null;
|
|
1463
|
+
phase: VoiceSetupPhase;
|
|
1464
|
+
/** The phrase currently being captured (human label). */
|
|
1465
|
+
phrase: string;
|
|
1466
|
+
/** Reps captured so far (0..total). */
|
|
1467
|
+
step: number;
|
|
1468
|
+
/** Total reps across all phrases (PHRASES × REPS). */
|
|
1469
|
+
total: number;
|
|
1470
|
+
/** This pass appends a new condition (room/distance) instead of replacing. */
|
|
1471
|
+
adding: boolean;
|
|
1472
|
+
/** Room volume 0..1 for the octopus pulse while enrolling. */
|
|
1473
|
+
level: number;
|
|
1474
|
+
/** Begin the guided enrollment pass (no-op until ready / already running). */
|
|
1475
|
+
start: () => void;
|
|
1476
|
+
/** After "done", start another appended pass (a new room / distance / background). */
|
|
1477
|
+
addAnotherSpot: () => void;
|
|
1478
|
+
/** Abort an in-progress pass and reset to intro — nothing is enrolled. */
|
|
1479
|
+
cancel: () => void;
|
|
1480
|
+
}
|
|
1481
|
+
declare function useVoiceSetup(options?: UseVoiceSetupOptions): UseVoiceSetupResult;
|
|
1482
|
+
|
|
1483
|
+
interface UseWakeWordOpts {
|
|
1484
|
+
/** Fired with the phrase name ("hey-ozwell" | "ozwell-i'm-done") on a detection. */
|
|
1485
|
+
onWake?: (name: string) => void;
|
|
1486
|
+
/** Fired with the CAPTURED audio of a wake utterance (the phrase the model just heard) + which phrase.
|
|
1487
|
+
* Use for phrase-validated enrollment: the wake firing IS the proof it was actually the phrase. */
|
|
1488
|
+
onUtterance?: (name: string, samples: Float32Array) => void;
|
|
1489
|
+
/** Per-phrase fire thresholds (0..1). Default 0.8 (hey-ozwell) / 0.5 (ozwell I'm done). Updates apply
|
|
1490
|
+
* live (read per-frame). */
|
|
1491
|
+
thresholds?: Record<string, number>;
|
|
1492
|
+
/** VAD gate (0..1): `positive` = speech-detect, `negative` = silence. Defaults 0.05 / 0.03. Live. */
|
|
1493
|
+
vadThresholds?: {
|
|
1494
|
+
positive?: number;
|
|
1495
|
+
negative?: number;
|
|
1496
|
+
};
|
|
1497
|
+
/** Set false to not start listening. */
|
|
1498
|
+
enabled?: boolean;
|
|
1499
|
+
/** ROOT base URL the wake model files are served from (`/wakeword/*` is appended). Defaults to the hosted
|
|
1500
|
+
* assets (`DEFAULT_ASSET_BASE`). Same shape as the string `window.__ozwellAssets` /
|
|
1501
|
+
* `localStorage['ozwellAssetBase']` override — see AI/MODEL-HOSTING.md. */
|
|
1502
|
+
assetBase?: string;
|
|
1503
|
+
/** Auto-register the model-cache service worker (opt-out). Default true. Set false in a host that doesn't
|
|
1504
|
+
* serve `/ozwell-model-sw.js` (avoids repeated registration failures) — models still load, just uncached. */
|
|
1505
|
+
registerServiceWorker?: boolean;
|
|
1506
|
+
}
|
|
1507
|
+
interface WakeWordState {
|
|
1508
|
+
ready: boolean;
|
|
1509
|
+
error: string | null;
|
|
1510
|
+
/** VAD speech probability, 0..1 (is someone talking). */
|
|
1511
|
+
speech: number;
|
|
1512
|
+
/** Live per-phrase wake probability, 0..1. */
|
|
1513
|
+
probs: Record<string, number>;
|
|
1514
|
+
}
|
|
1515
|
+
interface WakeWordControls {
|
|
1516
|
+
/** The detector's mic stream (so a host can add a 2nd consumer — never a 2nd getUserMedia). */
|
|
1517
|
+
getStream: () => MediaStream | null;
|
|
1518
|
+
/** The frozen fire-frame embedding from the last wake — the WHAT-gate input (capture at enroll, check at verify). */
|
|
1519
|
+
getLastEmbedding: () => Float32Array | null;
|
|
1520
|
+
/** The peak fire confidence (probability) of the last wake — frozen at the fire, so not stale. */
|
|
1521
|
+
getLastProb: () => number;
|
|
1522
|
+
/** Approx spoken duration (seconds) of the last wake phrase, from its detection run — used to trim the
|
|
1523
|
+
* phrase off the recorded audio without needing a pause before it. 0 if unknown. */
|
|
1524
|
+
getLastWakeDuration: () => number;
|
|
1525
|
+
/** Store / check / clear a phrase's enrolled phrase-print templates (the WHAT gate). */
|
|
1526
|
+
setVoiceprint: (name: string, vectors: Float32Array[]) => void;
|
|
1527
|
+
hasVoiceprint: (name: string) => boolean;
|
|
1528
|
+
clearVoiceprint: (name: string) => void;
|
|
1529
|
+
/** Raw cosine of an embedding to a phrase's templates (max over templates); null if not enrolled. */
|
|
1530
|
+
phraseCosine: (name: string, vec: Float32Array | null) => number | null;
|
|
1531
|
+
}
|
|
1532
|
+
interface WakeWarmState {
|
|
1533
|
+
/** A pre-fetch is in flight. */ active: boolean;
|
|
1534
|
+
/** Fraction of model files cached, 0..1. */ progress: number;
|
|
1535
|
+
/** All files cached. */ done: boolean;
|
|
1536
|
+
}
|
|
1537
|
+
/** Current wake-model pre-fetch state (for a load ring). */
|
|
1538
|
+
declare function getWakeWarm(): WakeWarmState;
|
|
1539
|
+
/** Subscribe to pre-fetch changes; pair with getWakeWarm in React.useSyncExternalStore. */
|
|
1540
|
+
declare function subscribeWakeWarm(cb: () => void): () => void;
|
|
1541
|
+
/** Pre-fetch the wake model files into OPFS (no mic, no detector). Memoized PER resolved base, so a host
|
|
1542
|
+
* that later repoints model hosting re-prefetches the new base instead of reusing the first pre-warm. */
|
|
1543
|
+
declare function warmWakeModels(assetBase?: string): Promise<void>;
|
|
1544
|
+
declare function useWakeWord(opts?: UseWakeWordOpts): WakeWordState & WakeWordControls;
|
|
1545
|
+
|
|
1546
|
+
interface VerifyResult {
|
|
1547
|
+
score: number;
|
|
1548
|
+
znorm: number | null;
|
|
1549
|
+
pass: boolean;
|
|
1550
|
+
enrolled: boolean;
|
|
1551
|
+
}
|
|
1552
|
+
/** An enrolled voice (the doctor, an assistant, or you under a condition), aggregated across phrases. */
|
|
1553
|
+
interface VoiceInfo {
|
|
1554
|
+
id: string;
|
|
1555
|
+
label: string;
|
|
1556
|
+
createdAt: number;
|
|
1557
|
+
conditions: number;
|
|
1558
|
+
}
|
|
1559
|
+
/** Best-matching enrolled voice for an utterance (from `identify`). */
|
|
1560
|
+
interface VoiceMatch {
|
|
1561
|
+
voiceId: string;
|
|
1562
|
+
label: string;
|
|
1563
|
+
score: number;
|
|
1564
|
+
}
|
|
1565
|
+
/** Options for enrolling/appending a voice. */
|
|
1566
|
+
interface EnrollOpts {
|
|
1567
|
+
/** Append as another condition of the SAME voice (vs replace that voice's conditions). */
|
|
1568
|
+
append?: boolean;
|
|
1569
|
+
/** Which voice this enrollment belongs to (default "you"). Use a fresh id to add another person. */
|
|
1570
|
+
voiceId?: string;
|
|
1571
|
+
/** Human label for the voice (e.g., "You", "Dr. Smith", "My MA"). */
|
|
1572
|
+
label?: string;
|
|
1573
|
+
}
|
|
1574
|
+
interface SpeakerVerifyHandle {
|
|
1575
|
+
ready: boolean;
|
|
1576
|
+
error: string | null;
|
|
1577
|
+
/** Build/append a voiceprint for a phrase from recorded utterances (Float32 samples + their sample rate). */
|
|
1578
|
+
enroll: (phrase: string, utterances: {
|
|
1579
|
+
samples: Float32Array;
|
|
1580
|
+
sampleRate: number;
|
|
1581
|
+
}[], opts?: EnrollOpts) => {
|
|
1582
|
+
n: number;
|
|
1583
|
+
conditions: number;
|
|
1584
|
+
voiceId: string;
|
|
1585
|
+
} | null;
|
|
1586
|
+
/** Verify a live utterance against the enrolled voiceprints (passes if ANY enrolled voice matches). */
|
|
1587
|
+
verify: (phrase: string, samples: Float32Array, sampleRate: number) => VerifyResult | null;
|
|
1588
|
+
conditionCount: (phrase: string) => number;
|
|
1589
|
+
/** TitaNet speaker embedding for a raw utterance — for diarization/clustering. Null if not ready. */
|
|
1590
|
+
embed: (samples: Float32Array, sampleRate: number) => Float32Array | null;
|
|
1591
|
+
/** Best-matching enrolled voice for an utterance (text-independent). Null if nothing enrolled/not ready. */
|
|
1592
|
+
identify: (samples: Float32Array, sampleRate: number) => VoiceMatch | null;
|
|
1593
|
+
/** List enrolled voices (aggregated across phrases). */
|
|
1594
|
+
listVoices: () => VoiceInfo[];
|
|
1595
|
+
/** Remove a voice across all phrases (revokes that person). */
|
|
1596
|
+
removeVoice: (voiceId: string) => void;
|
|
1597
|
+
/** Rename a voice across all phrases. */
|
|
1598
|
+
renameVoice: (voiceId: string, label: string) => void;
|
|
1599
|
+
/** Clear ALL enrolled voices. */
|
|
1600
|
+
clear: () => void;
|
|
1601
|
+
/** Tune the WHO gate live (read at verify-time): `cosine` threshold, `znorm` (AS-norm) threshold, and
|
|
1602
|
+
* `useAsnorm` = gate on the z-score vs the raw cosine. */
|
|
1603
|
+
setGates: (g: {
|
|
1604
|
+
cosine?: number;
|
|
1605
|
+
znorm?: number;
|
|
1606
|
+
useAsnorm?: boolean;
|
|
1607
|
+
}) => void;
|
|
1608
|
+
}
|
|
1609
|
+
interface UseSpeakerVerifyOpts {
|
|
1610
|
+
/** Set false to skip loading the ~50 MB sherpa/TitaNet runtime (e.g. when the doctor-only gate is off).
|
|
1611
|
+
* Defaults to true so existing callers are unchanged. */
|
|
1612
|
+
enabled?: boolean;
|
|
1613
|
+
}
|
|
1614
|
+
declare function useSpeakerVerify(opts?: UseSpeakerVerifyOpts): SpeakerVerifyHandle;
|
|
1615
|
+
|
|
1616
|
+
interface WhisperLoadState {
|
|
1617
|
+
/** A load is in flight. */ active: boolean;
|
|
1618
|
+
/** Overall fraction 0..1 (averaged over the model's files). */ progress: number;
|
|
1619
|
+
/** The model is loaded. */ done: boolean;
|
|
1620
|
+
}
|
|
1621
|
+
/** Current dictation-model load state (for a progress indicator). */
|
|
1622
|
+
declare function getDictationLoad(): WhisperLoadState;
|
|
1623
|
+
/** Subscribe to dictation-model load changes; returns an unsubscribe. Pair with getDictationLoad in
|
|
1624
|
+
* React.useSyncExternalStore. */
|
|
1625
|
+
declare function subscribeDictationLoad(cb: () => void): () => void;
|
|
1626
|
+
/** True only once the dictation model has actually finished loading (not merely started, not rejected). */
|
|
1627
|
+
declare function isWhisperLoaded(): boolean;
|
|
1628
|
+
/** Start loading the dictation model NOW (in the worker) so the first dictation doesn't pay the load. */
|
|
1629
|
+
declare function warmWhisper(): void;
|
|
1630
|
+
/** Start loading the stop-confirm gate model (base.en) in the worker. Warm this BEFORE warmWhisper so the
|
|
1631
|
+
* fast model isn't queued behind slow turbo. */
|
|
1632
|
+
declare function warmStopGate(): void;
|
|
1633
|
+
declare function decodeTo16kMono(blob: Blob): Promise<Float32Array>;
|
|
1634
|
+
/**
|
|
1635
|
+
* Trim the spoken "ozwell i'm done" off the END of a clip BEFORE it reaches ASR. Whisper mishears the phrase
|
|
1636
|
+
* differently every time ("all was well" / "I was long done" / …), so stripping the transcript text can
|
|
1637
|
+
* never catch them all — the reliable fix is to cut the audio so the phrase is never transcribed.
|
|
1638
|
+
*
|
|
1639
|
+
* `phraseHintSec` (from the wake detector's detection run) is an estimate of the phrase's length. When
|
|
1640
|
+
* given, the cut is anchored at `end - phraseHintSec` and snapped to the nearest pause within ~0.35 s — so
|
|
1641
|
+
* it works whether or not the speaker paused (the pause-independent case that pure energy can't handle).
|
|
1642
|
+
* Without a hint, it walks back from the end to the last natural pause (energy only). Capped so it never
|
|
1643
|
+
* removes too much. Returns a trimmed WAV blob (or the original on failure / nothing sensible to cut). Only
|
|
1644
|
+
* call on a PHRASE-triggered stop — not a manual button stop, where there's no phrase to remove.
|
|
1645
|
+
*/
|
|
1646
|
+
declare function trimTrailingStopPhrase(blob: Blob, phraseHintSec?: number): Promise<Blob>;
|
|
1647
|
+
declare function transcribeBlob(blob: Blob, trimEndSeconds?: number): Promise<string>;
|
|
1648
|
+
/** Transcribe raw mono samples (any sample rate) → text. For the live dictation caption, where we re-run
|
|
1649
|
+
* the growing utterance every couple seconds; the FINAL send still uses transcribeBlob. */
|
|
1650
|
+
declare function transcribeSamples(samples: Float32Array, sampleRate: number): Promise<string>;
|
|
1651
|
+
/** Transcribe with timestamps → segments `[{ start, end, text }]`, for diarization (align speaker turns to
|
|
1652
|
+
* text). Returns 16 kHz-relative seconds. See `useDiarization`. */
|
|
1653
|
+
declare function transcribeSegments(blob: Blob): Promise<TranscriptSegment[]>;
|
|
1654
|
+
/** Server-side transcription: POST the recorded audio to the OpenAI-compatible /v1/audio/transcriptions
|
|
1655
|
+
* endpoint (same baseURL/apiKey as the chat). NOTE: audio LEAVES the browser — the on-device path
|
|
1656
|
+
* (transcribeBlob) is the PHI-safe default; this is the experiment alternative. Throws on HTTP error so
|
|
1657
|
+
* the caller can fall back to on-device. */
|
|
1658
|
+
declare function transcribeServer(blob: Blob): Promise<string>;
|
|
1659
|
+
/** Stop-confirm gate: transcribe a short raw-sample window (e.g. the rolling recorder's last ~2s) with the
|
|
1660
|
+
* FAST model and return the text. Used to verify a "ozwell i'm done" wake actually ended with "done"
|
|
1661
|
+
* before committing the stop. Cheap — accuracy on the lone word "done" is all it needs. */
|
|
1662
|
+
declare function transcribeGate(samples: Float32Array, sampleRate: number): Promise<string>;
|
|
1663
|
+
/** Peel a trailing "ozwell i'm done"-style stop phrase off the end of a transcript. Mirrors the
|
|
1664
|
+
* standalone demo: handles Whisper's mishearings (Ozwell / As well / All('s/was) well / Also / Oswald /
|
|
1665
|
+
* "I am done") including the bare word alone. Bare "as well" is NOT stripped (too common) unless joined
|
|
1666
|
+
* to "i'm done". */
|
|
1667
|
+
declare function stripStopPhrase(text: string): string;
|
|
1668
|
+
/** True if a transcript ENDS with a clear "done" stop ("…done" / "…I'm done" / "…all done" / "…well done"),
|
|
1669
|
+
* tolerating trailing punctuation. Deliberately STRICTER than stripStopPhrase: the stop-confirm gate must
|
|
1670
|
+
* NOT fire on a bare "ozwell" or a mid-sentence "done" — "we're almost done here" ends on "here", so no
|
|
1671
|
+
* match. Favors precision: a missed real stop just means "say it again"; a false stop loses dictation. */
|
|
1672
|
+
declare function endsWithDone(text: string): boolean;
|
|
1673
|
+
|
|
1674
|
+
interface UseVisitScribeOptions extends UseDiarizationOptions {
|
|
1675
|
+
/** Show a rough live transcript while recording (chunked). The clean diarized version replaces it on
|
|
1676
|
+
* stop. On-device; costs extra compute during the visit. Default false. */
|
|
1677
|
+
liveTranscript?: boolean;
|
|
1678
|
+
}
|
|
1679
|
+
interface UseVisitScribeResult {
|
|
1680
|
+
/** Speaker runtime + Whisper are loaded enough to record and diarize. */
|
|
1681
|
+
ready: boolean;
|
|
1682
|
+
/** Currently capturing the room. */
|
|
1683
|
+
recording: boolean;
|
|
1684
|
+
/** A diarization pass is in flight (after stop). */
|
|
1685
|
+
busy: boolean;
|
|
1686
|
+
error: string | null;
|
|
1687
|
+
/** The attributed transcript from the last visit (null until the first diarize completes). */
|
|
1688
|
+
result: DiarizedSegment[] | null;
|
|
1689
|
+
/** Rough live transcript accumulated while recording (empty unless `liveTranscript` is on). */
|
|
1690
|
+
liveText: string;
|
|
1691
|
+
/** Milliseconds recorded in the current/last take (drives the timer readout). */
|
|
1692
|
+
elapsedMs: number;
|
|
1693
|
+
/** There's a recorded clip in hand that can be re-analyzed with current settings. */
|
|
1694
|
+
canReanalyze: boolean;
|
|
1695
|
+
/** Start capturing the room (asks for mic permission on first use). */
|
|
1696
|
+
start: () => Promise<void>;
|
|
1697
|
+
/** Stop capturing → kick off diarization → populate `result`. */
|
|
1698
|
+
stop: () => void;
|
|
1699
|
+
/** Re-run diarization on the LAST recording with the current options (e.g. after changing threshold /
|
|
1700
|
+
* maxSpeakers) — tune without re-recording. No-op if there's no stored clip. */
|
|
1701
|
+
reanalyze: () => void;
|
|
1702
|
+
/** Reset the local take state (timer, live text, error, stored clip). NOTE: the last diarized `result`
|
|
1703
|
+
* stays until the next recording overwrites it — starting a new visit is the clean way to clear it. */
|
|
1704
|
+
reset: () => void;
|
|
1705
|
+
}
|
|
1706
|
+
declare function useVisitScribe(options?: UseVisitScribeOptions): UseVisitScribeResult;
|
|
1707
|
+
|
|
1708
|
+
interface VisitScribeProps {
|
|
1709
|
+
/** Heading. */
|
|
1710
|
+
title?: string;
|
|
1711
|
+
/** Sub-heading under the title. */
|
|
1712
|
+
subtitle?: string;
|
|
1713
|
+
/** Initial state of the "label unknown speakers with AI" toggle. Default false. */
|
|
1714
|
+
inferRoles?: boolean;
|
|
1715
|
+
/** Initial state of the "live transcript" toggle. Default false. */
|
|
1716
|
+
liveTranscript?: boolean;
|
|
1717
|
+
/** Diarization tuning passthrough (threshold, maxSpeakers, identifyThreshold, merge). */
|
|
1718
|
+
diarizationOptions?: Omit<UseVisitScribeOptions, 'inferRoles' | 'liveTranscript'>;
|
|
1719
|
+
className?: string;
|
|
1720
|
+
}
|
|
1721
|
+
/** Record a visit → speaker-labeled transcript, on-device. */
|
|
1722
|
+
declare function VisitScribe({ title, subtitle, inferRoles: inferRolesProp, liveTranscript: liveTranscriptProp, diarizationOptions, className, }: VisitScribeProps): react_jsx_runtime.JSX.Element;
|
|
1723
|
+
|
|
1724
|
+
/**
|
|
1725
|
+
* Ozwell chat backend — the real call that replaces the demo stub.
|
|
1726
|
+
*
|
|
1727
|
+
* Mirrors the ozwellai-api TypeScript SDK (clients/typescript/src/index.ts) with plain `fetch`,
|
|
1728
|
+
* so there's no SDK dependency to install: OpenAI-compatible POST /v1/chat/completions, Bearer auth,
|
|
1729
|
+
* `messages` array in / `choices[0].message.content` (or streamed `delta.content`) out.
|
|
1730
|
+
*
|
|
1731
|
+
* KEY HANDLING (deliberate): the API key is NEVER hardcoded or committed. It's read at runtime from
|
|
1732
|
+
* - `window.__ozwell` (e.g. `window.__ozwell = { apiKey: 'sk-...' }` in the console), or
|
|
1733
|
+
* - `localStorage['ozwellConfig']` (JSON, survives reloads).
|
|
1734
|
+
* If no key is configured, `isOzwellConfigured()` is false and the chat falls back to its canned reply —
|
|
1735
|
+
* so this file is always safe to push and the demo still works keyless. For a PUBLIC deploy the key
|
|
1736
|
+
* should live server-side behind a proxy (a browser-direct Bearer key is visible to anyone with the page);
|
|
1737
|
+
* point `baseURL` at that proxy then. See AI/MODEL-HOSTING.md / the hosted-demo plan.
|
|
1738
|
+
*/
|
|
1739
|
+
interface OzwellMessage {
|
|
1740
|
+
role: 'system' | 'user' | 'assistant';
|
|
1741
|
+
content: string;
|
|
1742
|
+
}
|
|
1743
|
+
interface OzwellConfig {
|
|
1744
|
+
/** API base. Defaults to https://api.ozwell.ai (or http://localhost:11434 when apiKey === 'ollama'). */
|
|
1745
|
+
baseURL: string;
|
|
1746
|
+
/** Bearer key. Empty = not configured → callers fall back to the stub. */
|
|
1747
|
+
apiKey: string;
|
|
1748
|
+
/** Model id. */
|
|
1749
|
+
model: string;
|
|
1750
|
+
/** System prompt prepended to the conversation (omit by setting to ''). */
|
|
1751
|
+
system: string;
|
|
1752
|
+
/** Sampling temperature. */
|
|
1753
|
+
temperature: number;
|
|
1754
|
+
}
|
|
1755
|
+
/** Resolve the effective config from runtime sources + defaults. */
|
|
1756
|
+
declare function getOzwellConfig(): OzwellConfig;
|
|
1757
|
+
/** True once a key is configured — gate the real call on this; otherwise keep the stub reply. */
|
|
1758
|
+
declare function isOzwellConfigured(): boolean;
|
|
1759
|
+
/** Map AIChat's message blocks to the API's role/content shape (user+assistant text only) for multi-turn. */
|
|
1760
|
+
declare function toOzwellMessages(msgs: {
|
|
1761
|
+
role: string;
|
|
1762
|
+
content: {
|
|
1763
|
+
type?: string;
|
|
1764
|
+
text?: string;
|
|
1765
|
+
}[];
|
|
1766
|
+
}[]): OzwellMessage[];
|
|
1767
|
+
interface AskOpts extends Partial<OzwellConfig> {
|
|
1768
|
+
signal?: AbortSignal;
|
|
1769
|
+
}
|
|
1770
|
+
/** One-shot (non-streaming) completion → the answer text. Throws on HTTP error. */
|
|
1771
|
+
declare function askOzwell(messages: OzwellMessage[] | string, opts?: AskOpts): Promise<string>;
|
|
1772
|
+
/**
|
|
1773
|
+
* Streaming completion (SSE). Calls `onToken(delta, full)` as text arrives and resolves with the full text.
|
|
1774
|
+
* Token-by-token is the natural fit for a spoken/hands-free reply. Throws on HTTP error.
|
|
1775
|
+
*/
|
|
1776
|
+
declare function askOzwellStream(messages: OzwellMessage[] | string, onToken: (delta: string, full: string) => void, opts?: AskOpts): Promise<string>;
|
|
1777
|
+
|
|
1778
|
+
/**
|
|
1779
|
+
* IndexedDB store for on-device voiceprints (enrollment vectors), replacing localStorage for this data.
|
|
1780
|
+
*
|
|
1781
|
+
* Why IndexedDB and not localStorage: it's asynchronous (off the main thread), stores `Float32Array`
|
|
1782
|
+
* natively via structured clone (no JSON-stringifying embeddings into bloated number arrays), and isn't
|
|
1783
|
+
* capped at ~5 MB. Why not OPFS: these are small *structured records* keyed by id, not large files —
|
|
1784
|
+
* IndexedDB is the right tool; OPFS is for the big model files.
|
|
1785
|
+
*
|
|
1786
|
+
* One object store, keyed by a string id; values are any structured-cloneable object, so `Float32Array`s
|
|
1787
|
+
* survive the round-trip intact. On first read of a key it migrates a legacy localStorage value (if a
|
|
1788
|
+
* parser is supplied) and then clears it.
|
|
1789
|
+
*/
|
|
1790
|
+
/**
|
|
1791
|
+
* Read a voiceprint record. If IndexedDB has nothing for `key` but localStorage does, migrate it via
|
|
1792
|
+
* `migrateLegacy` (parse the old JSON string → the new shape), persist it to IndexedDB, and clear the
|
|
1793
|
+
* localStorage copy. Returns `undefined` if neither has it. Never throws (best-effort storage).
|
|
1794
|
+
*/
|
|
1795
|
+
declare function getVoiceprints<T>(key: string, migrateLegacy?: (raw: string) => T): Promise<T | undefined>;
|
|
1796
|
+
/** Persist a voiceprint record (Float32Arrays stored natively). Best-effort — resolves even on failure. */
|
|
1797
|
+
declare function setVoiceprints(key: string, value: unknown): Promise<void>;
|
|
1798
|
+
/** Remove a voiceprint record (and any stale localStorage copy). */
|
|
1799
|
+
declare function clearVoiceprints(key: string): Promise<void>;
|
|
1800
|
+
declare function loadWhatPrints(): Promise<Record<string, Float32Array[]>>;
|
|
1801
|
+
declare function saveWhatPrints(map: Record<string, Float32Array[]>): Promise<void>;
|
|
1802
|
+
declare function clearWhatPrints(): Promise<void>;
|
|
1803
|
+
|
|
1804
|
+
/**
|
|
1805
|
+
* Shared on-device audio helpers for Hey Ozwell — previously copy-pasted across the enrollment,
|
|
1806
|
+
* hands-free, and diagnostic stories. Centralized so all surfaces use one implementation.
|
|
1807
|
+
*/
|
|
1808
|
+
interface RollingRecorder {
|
|
1809
|
+
/** The AudioContext sample rate the snapshot is captured at. */
|
|
1810
|
+
sampleRate: number;
|
|
1811
|
+
/** The last ~2s of mono audio as Float32 samples (copies the whole retained buffer). */
|
|
1812
|
+
snapshot: () => Float32Array;
|
|
1813
|
+
/** Total samples captured so far (cheap; no copy). For an unbounded accumulator this grows with the
|
|
1814
|
+
* recording — pair with `snapshotFrom` to read only new audio without re-copying everything. */
|
|
1815
|
+
totalSamples: () => number;
|
|
1816
|
+
/** Copy only the samples from absolute index `startSample` to the end — O(new audio), not O(total).
|
|
1817
|
+
* Lets a live loop read just the fresh tail each tick instead of the whole accumulator (avoids O(n²)). */
|
|
1818
|
+
snapshotFrom: (startSample: number) => Float32Array;
|
|
1819
|
+
/** Free already-processed audio: drop whole chunks entirely before `sampleIndex`. Callers that read
|
|
1820
|
+
* forward via a cursor (live caption/transcript) call this to keep an unbounded accumulator from growing
|
|
1821
|
+
* without bound. Absolute indices are preserved (snapshotFrom/totalSamples still use them). */
|
|
1822
|
+
discardBefore: (sampleIndex: number) => void;
|
|
1823
|
+
/** Tear down the audio graph + context. */
|
|
1824
|
+
close: () => void;
|
|
1825
|
+
}
|
|
1826
|
+
/**
|
|
1827
|
+
* Open a rolling ~2s recorder as a SECOND consumer of an existing mic stream (e.g. the wake-word
|
|
1828
|
+
* detector's `getStream()`) — never a second getUserMedia, which would silence the detector. Used to
|
|
1829
|
+
* capture the wake-utterance audio for the speaker-verify (WHO) gate and for enrollment.
|
|
1830
|
+
*/
|
|
1831
|
+
declare function openRollingRecorder(stream: MediaStream, maxSeconds?: number): RollingRecorder;
|
|
1832
|
+
/** A short sine-wave feedback tone (enrollment "get ready" / "got it" cues). Best-effort; no-ops if audio out is unavailable. */
|
|
1833
|
+
declare function chime(freq: number, ms?: number): void;
|
|
1834
|
+
|
|
1050
1835
|
type ReconciliationConfidenceLevel = 'high' | 'medium' | 'low';
|
|
1051
1836
|
/**
|
|
1052
1837
|
* A single field-level change being proposed by an AI source.
|
|
@@ -9535,4 +10320,4 @@ declare namespace WebsiteInputGroup {
|
|
|
9535
10320
|
var displayName: string;
|
|
9536
10321
|
}
|
|
9537
10322
|
|
|
9538
|
-
export { AIChat, AIChatCallbacks, AIChatModal, type AIChatModalProps, type AIChatProps, AIChatSession, AIChatTrigger, type AIChatTriggerProps, AILogoIcon, type AILogoIconProps, AIMessage, AIMessageDisplay, type AIMessageDisplayProps, AIReconciliationPanel, type AIReconciliationPanelProps, AIRenderTextContent, AISuggestedAction, AITypingIndicator, AccessDeniedPage, type AccessDeniedPageProps, ActionButton, type ActionButtonProps, ActionButtonsBar, type ActionButtonsBarProps, ActiveFilters, type ActiveFiltersProps, AddContactModal, type AddContactModalProps, AddServiceCard, type AddServiceCardProps, AdditionalFields, type AdditionalFieldsProps, Address, AddressCard, type AddressCardProps, AddressCompact, type AddressCompactProps, type AddressData, AddressDisplay, type AddressDisplayProps, AddressForm, type AddressFormData, type AddressFormProps, AddressInline, type AddressInlineProps, type AddressProps, Allergy, type AllergyItem, AllergyManager, type AllergyManagerProps, AppHeader, AppHeaderActions, type AppHeaderActionsProps, AppHeaderBrand, type AppHeaderBrandProps, AppHeaderDivider, type AppHeaderDividerProps, AppHeaderIconButton, type AppHeaderIconButtonProps, type AppHeaderProps, AppHeaderSearch, type AppHeaderSearchProps, AppHeaderSection, type AppHeaderSectionProps, AppHeaderTitle, type AppHeaderTitleProps, AppHeaderUserMenu, type AppHeaderUserMenuProps, type AssertionChangeType, Assessment, type AssessmentAction, type AssessmentAddPick, type AssessmentItem, type AssessmentOrder, type AssessmentProps, AttachmentPicker, type AttachmentPickerProps, AttachmentPreview, AttachmentPreviewItem, type AttachmentPreviewItemProps, type AttachmentPreviewProps, type AttachmentState, type AttachmentType, AuthButtons, type AuthButtonsProps, AuthDialog, type AuthDialogProps, type AuthMode, type BackgroundCheckCandidate, type BackgroundCheckReport, type BankAccountData, BookAppointmentButton, type BookAppointmentButtonProps, BookingDialog, type BookingDialogProps, type BookingFormData, type BookingProvider, type BookingService, BusinessHours, BusinessHoursEditor, type BusinessHoursEditorProps, type BusinessHoursProps, type BusinessHoursSchedule, CHANGE_TYPE_LABELS, CONCERN_STATUS_LABELS, type CSVColumn, CSVColumnMapper, type CSVColumnMapperProps, CSVFileUpload, type CSVFileUploadProps, type CalendarAppointment, CameraButton, type CameraButtonProps, type CameraPermission, CardSkeleton, type CardSkeletonProps, CharacterCounter, type CharacterCounterProps, type ChartDataPoint, ChatBubble, type ChatBubbleProps, CheckrIntegration, type CheckrIntegrationProps, ChevronIcon, type ChevronIconProps, type ClaimFormData, ClaimListingButton, type ClaimListingButtonProps, ClaimProviderForm, type ClaimProviderFormProps, CloseIcon, type CloseIconProps, type CodeLookupComponent, CodeLookupConfig, CodeLookupProvider, type CodeLookupProviderConfig, type CodeLookupProviderProps, CodingChips, CommandPalette, type CommandPaletteCategory, type CommandPaletteContextValue, type CommandPaletteItem, type CommandPaletteProps, CommandPaletteProvider, type CommandPaletteProviderProps, CommandPaletteTrigger, type CommandPaletteTriggerProps, CompactCookieBanner, type CompactCookieBannerProps, CompactFilterBar, type CompactFilterBarProps, CompactHeader, type CompactHeaderProps, CompactHours, type CompactHoursProps, CompactProviderHeader, type CompactProviderHeaderProps, type ConcernRelationship, type ConcernStatus, type ConditionAssertion, type ConditionAssertionDraft, type ConditionCodePick, type ConditionCoding, type ConditionConcern, ConditionEditor, type ConditionEditorMode, type ConditionEditorProps, type ConditionObservation, type ConfirmationResult, type ConnectionInfo, type ConnectionState, ConnectionStatusBadge, type ConnectionStatusBadgeProps, ConnectionStatusBar, type ConnectionStatusBarProps, ConnectionStatusOverlay, type ConnectionStatusOverlayProps, ConsentSwitch, type ConsentSwitchProps, type Contact, type ContactAddress, type ContactFormData, type Conversation, ConversationHeader, type ConversationHeaderProps, ConversationListItem, type ConversationListItemProps, ConversationListSkeleton, type ConversationListSkeletonProps, type ConversationType, CookieConsentBanner, type CookieConsentBannerProps, type CookieConsentLink, CopyrightText, type CopyrightTextProps, CountBadge, type CountBadgeAction, type CountBadgeItem, type CountBadgeItemStatus, type CountBadgeProps, type CreateInvoiceData, CreateInvoiceModal, type CreateInvoiceModalProps, CreateReferralModal, type CreateReferralModalProps, type CreditCardData, type CustomField, DEFAULT_ACCEPTED_FILE_TYPES, DEFAULT_ERROR_CONFIGS, DEFAULT_LANGUAGES, DEFAULT_MAX_FILE_SIZE_MB, DEFAULT_RADIUS_OPTIONS, DEFAULT_SOCIAL_PROVIDERS, DOTBadge, type DOTBadgeProps, DashboardWidget, DashboardWidgetActions, type DashboardWidgetActionsProps, DashboardWidgetDataCards, type DashboardWidgetDataCardsProps, DashboardWidgetInfo, type DashboardWidgetInfoProps, type DashboardWidgetProps, DashboardWidgetTable, type DashboardWidgetTableProps, type DataCardItem, type DateRange$1 as DateRange, DateRangeFilter, type DateRangeFilterProps, DateRangePicker, type DateRangePickerProps, type DateRangePreset, type DateRangePresetKey, DateSeparator, type DateSeparatorProps, type DayHours, type DaySchedule, type Department, type DetectionConfig, type DetectionMetrics, type DetectionState, DialogOverlay, type DialogOverlayProps, DisclaimerText, type DisclaimerTextProps, type DocumentBoundary, DocumentDetectionOverlay, DocumentScanner, type DocumentScannerProps, DragDropZone, type DragDropZoneProps, DropZone, type DropZoneProps, DropzoneOverlay, type DropzoneOverlayProps, EditUserRoleModal, type EditUserRoleModalProps, type Employee, type EmployeeAddress, type EmployeeData, EmployeeForm, type EmployeeFormData, type EmployeeFormProps, type EmployeePhone, EmployeeProfileCard, type EmployeeProfileCardProps, type Employer, type EmployerAccess, type EmployerAddress, type EmployerContact, EmployerContactCard, type EmployerContactCardProps, type EmployerDetails, type EmployerInvoice, EmployerList, type EmployerListProps, type EmployerOption, type EmployerOrder, EmployerPricingCard, type EmployerPricingCardProps, type EmployerServiceConfig, EmployerServiceModal, type EmployerServiceModalProps, EmployerView, type EmployerViewProps, EmptyState, type EmptyStateProps, type EncounterScope, ErrorPage, type ErrorPageConfig, type ErrorPageProps, type ErrorType, type FAQItem, type FieldOption, type FieldUncertainty, type FileItem, FileManager, type FileManagerProps, FilePreview, type FilePreviewProps, FloatingAIChat, type FloatingAIChatProps, FloatingInput, type FloatingInputProps, type FooterLink, type FooterLinkGroup, FooterLinkSection, type FooterLinkSectionProps, SocialMediaLinks as FooterSocialLinks, type SocialMediaLinksProps as FooterSocialLinksProps, type GeolocationStatus, type HRISProvider, HRISProviderSelector, type HRISProviderSelectorProps, HealthSurveillance, type HealthSurveillanceProps, HelpSupportPanel, type HelpSupportPanelProps, HeroSearchBar, type HeroSearchBarProps, HoursSummary, type HoursSummaryProps, ImagingOrderEditor, type InfoItem, InlineBookingForm, type InlineBookingFormProps, InputProps, type InventoryLogEntry, InventoryManager, type InventoryManagerProps, InviteUserModal, type InviteUserModalProps, type Invoice, type InvoiceLineItem$1 as InvoiceLineItem, InvoiceList, type InvoiceListProps, type InvoicePaymentDetails, InvoicePaymentPage, type InvoicePaymentPageProps, InvoiceView, type InvoiceViewProps, type KeyValueEntry, LabOrderEditor, type Language, LanguageSelector, LanguageSelectorInline, type LanguageSelectorInlineProps, LanguageSelectorNative, type LanguageSelectorNativeProps, type LanguageSelectorProps, LegalLinks, type LegalLinksProps, LightboxModal, type LightboxModalProps, LoadMoreButton, type LoadMoreButtonProps, LoadingBar, type LoadingBarProps, LoadingDots, type LoadingDotsProps, LoadingOverlay, type LoadingOverlayProps, LoadingPage, type LoadingPageProps, LoadingSkeleton, type LoadingSkeletonProps, MCPResourceLink, MCPToolCall, MCPToolCallDisplay, type MCPToolCallDisplayProps, MCPToolStatus, MaintenancePage, type MaintenancePageProps, Medication, MedicationAction, type MedicationItem, MedicationReconciliation, type MedicationReconciliationProps, type MentionOption, type Message, type MessageAction, type MessageAttachment, MessageAvatar, MessageBubble, type MessageBubbleProps, MessageComposer, type MessageComposerProps, type MessageGroup, MessageList, type MessageListProps, type MessageParticipant, type MessageReaction, type MessageStatus, MessageStatusIcon, type MessageStatusIconProps, type MessageStatusIndicator, MessageThread, type MessageThreadProps, type MessageType, type MessagingEventHandlers, type MessagingLoadingState, MessagingSplitView, type MessagingSplitViewProps, type MetricData, MobileBackButton, type MobileBackButtonProps, MobileMenuButton, type MobileMenuButtonProps, MobileMenuPanel, type MobileMenuPanelProps, type NavLink, NavLinks, type NavLinksProps, type NewMessage, NewsletterForm, type NewsletterFormProps, NotFoundPage, type NotFoundPageProps, type Notification, NotificationCenter, type NotificationCenterProps, ORDER_TYPE_META, ORDER_TYPE_SEARCH_DOMAINS, OfflinePage, type OfflinePageProps, OnboardingCompletion, type OnboardingCompletionProps, type OnboardingStep, OnboardingStepQuestion, type OnboardingStepQuestionProps, OnboardingWizard, type OnboardingWizardProps, OpenStatusBadge, OrderCard, type OrderCardProps, type OrderCodeLookupConfig, type OrderCodePick, OrderConfirmation, type OrderConfirmationProps, OrderConfirmationWizard, type OrderConfirmationWizardProps, OrderDetailSidebar, type OrderDetailSidebarProps, type OrderDetails, OrderEditor, type OrderEditorProps, type OrderEmployee, type OrderEmployer, OrderList, type OrderListProps, type OrderListTab, type OrderLookupData, OrderLookupForm, type OrderLookupFormProps, type OrderLookupProps, type OrderLookupResult, type OrderOption, type OrderSearchDomain, type OrderService, OrderSidebar, type OrderSidebarProps, type OrderSidebarTab, OrderSidebarTabs, type OrderSidebarTabsProps, type OrderStatus$1 as OrderStatus, type OrderType, PageHeader, type PageHeaderProps, type PatientData, PatientHeader, type PatientHeaderProps, PatientHistory, type PatientName, type PatientOverflowAction, type Payment, type PaymentFormData, PaymentHistoryTable, type PaymentHistoryTableProps, type PaymentMethod, PaymentMethodBank, type PaymentMethodBankProps, PaymentMethodCard, type PaymentMethodCardProps, PaymentMethodList, type PaymentMethodListProps, type PendingClaim, PendingClaimsTable, type PendingClaimsTableProps, type Permission, type PermissionGroup, PermissionsEditor, type PermissionsEditorProps, type Point, type PostalCodeInfo, type PresentingEntry, PresentingProblems, type PresentingProblemsProps, type PreviewFile, type PricingTier, ProblemList, type ProblemListAction, type ProblemListProps, type ProblemRelevance, ProcedureOrderEditor, ProductVersion, ProductVersionBadge, type ProductVersionBadgeProps, type ProductVersionProps, ProgramsMap, type Provider, type ProviderAddress$1 as ProviderAddress, Breadcrumb as ProviderBreadcrumb, type BreadcrumbItem as ProviderBreadcrumbItem, type BreadcrumbProps as ProviderBreadcrumbProps, ProviderCard, ProviderCardGrid, type ProviderCardGridProps, type ProviderCardProps, ProviderCardSkeleton, type ProviderCardSkeletonProps, type ProviderContact, type ProviderAddress as ProviderDetailAddress, type ProviderDetailData, ProviderDetailHeader, type ProviderDetailHeaderProps, ProviderDetailHeaderSkeleton, type ProviderDetailHeaderSkeletonProps, type ProviderFilters, ProviderLogo, type ProviderLogoProps, type ProviderOption, ProviderOverview, type ProviderOverviewProps, ProviderSearchBar, type ProviderSearchBarProps, ProviderSearchFilters, type ProviderSearchFiltersProps, ProviderSelector, type ProviderSelectorProps, type ProviderService, ProviderSettings, type ProviderSettingsData, type ProviderSettingsProps, SocialMediaLinks$1 as ProviderSocialLinks, type SocialMediaLinksProps$1 as ProviderSocialLinksProps, type ProviderStats, type ProviderUrls, type ProviderUser, ProviderUsersTable, type ProviderUsersTableProps, QuickBookCard, type QuickBookCardProps, type QuickLink, QuickLinksCard, type QuickLinksCardProps, RELEVANCE_LABELS, type RadiusOption, type ReadReceipt, ReadReceiptIndicator, type ReadReceiptIndicatorProps, type RecentActivity, type ReconciliationAcceptedChange, type ReconciliationConfidenceLevel, type ReconciliationProposal, type ReconciliationSource, type RecurringService, RecurringServiceAddCard, type RecurringServiceAddCardProps, RecurringServiceCard, type RecurringServiceCardProps, type RecurringServiceCardState, type RecurringServiceFormData, RecurringServiceGrid, type RecurringServiceGridProps, RecurringServiceSetupModal, type RecurringServiceSetupModalProps, type ReferralData, ReferralEditor, RefreshIcon, type RefreshIconProps, RejectionModal, type RejectionModalProps, type RejectionReason, ReportDashboard, type ReportDashboardProps, ReportDatePicker, type ReportDatePickerProps, ReportLink, type ReportLinkProps, type ReportResult, ReportTimeRange, type ReportTimeRangeProps, ResourceLink, type ResourceLinkProps, type ResultStatus, ResultsEntryCard, type ResultsEntryData, ResultsEntryForm, type ResultsEntryFormProps, ResultsEntryModal, type ResultsEntryModalProps, type Role, RowActionToolbar, type RowActionToolbarProps, RowIconButton, type RowIconButtonProps, type SSOConfigData, SSOConfigForm, type SSOConfigFormProps, type ScannerSource, type ScannerState, ScheduleCalendar, type ScheduleCalendarProps, type SearchResults, SearchResultsMessage, type SearchResultsMessageProps, type SelectableService, SelectedServicesBadges, type SelectedServicesBadgesProps, SendButton, type SendButtonProps, SendIcon, type SendIconProps, ServerErrorPage, type ServerErrorPageProps, ServiceAccordion, type ServiceAccordionProps, ServiceBadge, ServiceBadgeGroup, type ServiceBadgeGroupProps, type ServiceBadgeProps, ServiceCard, type ServiceCardProps, type ServiceCategory$1 as ServiceCategory, ServiceCategoryBadge, type ServiceCategoryBadgeProps, type ServiceFormData, ServiceGeneralSettings, type ServiceGeneralSettingsProps, ServiceGrid, type ServiceGridProps, type ServiceGroup, type ServiceItem, ServiceLink, ServiceList, type ServiceListProps, ServiceMultiSelect, type ServiceOption, ServicePicker, type ServicePickerProps, type ServicePrice, ServicePricingManager, type ServicePricingManagerProps, ServiceSelect, type ServiceSelectProps, ServiceShippingSettings, type ServiceShippingSettingsProps, type ServiceSubCategory, ServiceTagCloud, ServiceTagCloudBadges, type ServiceTagCloudProps as ServiceTagCloudBadgesProps, type ServiceTagCloudProps$1 as ServiceTagCloudProps, SetupServiceModal, type SetupServiceModalProps, type ShippingAddress, Sidebar, SidebarContent, type SidebarContentProps, type SidebarContextValue, SidebarFooter, type SidebarFooterProps, SidebarHeader, type SidebarHeaderProps, SidebarMobileToggle, type SidebarMobileToggleProps, SidebarNav, SidebarNavGroup, type SidebarNavGroupProps, SidebarNavItem, type SidebarNavItemProps, type SidebarNavProps, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarSearch, type SidebarSearchProps, SidebarToggle, type SidebarToggleProps, type SignupData, SimpleFooter, type SimpleFooterProps, SiteFooter, type SiteFooterProps, SiteHeader, type SiteHeaderProps, SiteLogo, type SiteLogoProps, SkeletonMessage, type SkeletonMessageProps, type SocialLink, type SocialProvider, SparklesIcon, type SparklesIconProps, SpinnerIcon, type SpinnerIconProps, SpinnerProps, type Step, StepIndicator, type StepIndicatorProps, StripeBadge, type StripeBadgeProps, StripeSecureBadge, type StripeSecureBadgeProps, SuggestedActions, type SuggestedActionsProps, type SupportContact, type SurveillanceOrderPick, type SystemMessageType, type SystemReport, TableOfContents, type TableOfContentsProps, type TimeRange, type TimeSlot, type TimelineEvent, TimelineEventList, type TimelineEventListProps, TimelineProgress, type TimelineProgressProps, type TimelineSize, type TimelineStep, type TimelineStepState, Toast, ToastContainer, type ToastContainerProps, type ToastContextValue, type ToastData, type ToastOptions, type ToastPosition, type ToastProps, ToastProvider, type ToastProviderProps, type ToastVariant, type TocItem, ToolStatusIcon, type TopItem, type TypedOrderEditorProps, TypingIndicator, type TypingIndicatorProps, type TypingState, type UncertainConditionField, type Uncertainty, UncertaintyBadge, UpdateAvailableOverlay, type UpdateAvailableOverlayProps, type UpdateInfo, type UseConnectionStatusOptions, type UseConnectionStatusReturn, type UseCookieConsentOptions, type UseCookieConsentReturn, type UseDropzoneOptions, type UseDropzoneReturn, type UseMessageScrollOptions, type UseMessageScrollReturn, type UseMessagesOptions, type UseMessagesReturn, type UseReadReceiptsOptions, UseScrollSpyOptions, type UseTypingIndicatorOptions, type UseTypingIndicatorReturn, UserMenu, type UserMenuProps, type UserProfile, type UserRole, type ValidationError, type VerificationStatus, VerifiedBadge, type VerifiedBadgeProps, WEBSITE_TYPES, WebChartReportViewer, type WebChartReportViewerProps, WebcamModal, type WebcamModalProps, type WebsiteEntry, WebsiteInput, WebsiteInputGroup, type WebsiteInputGroupProps, type WebsiteInputProps, type WebsiteType, type WidgetAction, type WidgetTableAction, type WidgetTableColumn, bubbleVariants, calculateDateRange, concernGroupKey, concernHistoryContent, countBadgeVariants, countChipVariants, create24HourSchedule, createDefaultSchedule, createWeekdaySchedule, currentAssertion, defaultOrderTabs, defaultReconciliationIsEqual, formatAddressLines, formatAddressSingleLine, formatCityState, formatCityStateZip, formatDateLabel, formatFileSize, formatLastSeen, generateAttachmentId, generateId, getConversationSubtitle, getConversationTitle, getDefaultPresets, getExtendedPresets, getFileType, getGoogleMapsSearchUrl, getGoogleMapsUrl, getToolIcon, groupMessagesByDate, headerVariants$2 as headerVariants, isConditionCodetype, isSameSenderGroup, isValidUrl, medicationToOrder, orderToMedication, orderTypeForCodetype, panelVariants as reconciliationPanelVariants, sendButtonVariants, toolbarKeyNav, useCamera, useCodeLookupConfig, useCommandPalette, useConnectionStatus, useCookieConsent, useDocumentDetection, useDropzone, useFileUpload, useMessageScroll, useMessages, useReadReceipts, useSidebar, useToast, useTypingIndicator, validateFile, widgetVariants };
|
|
10323
|
+
export { AIChat, AIChatCallbacks, AIChatModal, type AIChatModalProps, type AIChatProps, AIChatSession, AIChatTrigger, type AIChatTriggerProps, AILogoIcon, type AILogoIconProps, AIMessage, AIMessageDisplay, type AIMessageDisplayProps, AIReconciliationPanel, type AIReconciliationPanelProps, AIRenderTextContent, AISuggestedAction, AITypingIndicator, AccessDeniedPage, type AccessDeniedPageProps, ActionButton, type ActionButtonProps, ActionButtonsBar, type ActionButtonsBarProps, ActiveFilters, type ActiveFiltersProps, AddContactModal, type AddContactModalProps, AddServiceCard, type AddServiceCardProps, AdditionalFields, type AdditionalFieldsProps, Address, AddressCard, type AddressCardProps, AddressCompact, type AddressCompactProps, type AddressData, AddressDisplay, type AddressDisplayProps, AddressForm, type AddressFormData, type AddressFormProps, AddressInline, type AddressInlineProps, type AddressProps, Allergy, type AllergyItem, AllergyManager, type AllergyManagerProps, AppHeader, AppHeaderActions, type AppHeaderActionsProps, AppHeaderBrand, type AppHeaderBrandProps, AppHeaderDivider, type AppHeaderDividerProps, AppHeaderIconButton, type AppHeaderIconButtonProps, type AppHeaderProps, AppHeaderSearch, type AppHeaderSearchProps, AppHeaderSection, type AppHeaderSectionProps, AppHeaderTitle, type AppHeaderTitleProps, AppHeaderUserMenu, type AppHeaderUserMenuProps, type AskOpts, type AssertionChangeType, Assessment, type AssessmentAction, type AssessmentAddPick, type AssessmentItem, type AssessmentOrder, type AssessmentProps, AttachmentPicker, type AttachmentPickerProps, AttachmentPreview, AttachmentPreviewItem, type AttachmentPreviewItemProps, type AttachmentPreviewProps, type AttachmentState, type AttachmentType, AuthButtons, type AuthButtonsProps, AuthDialog, type AuthDialogProps, type AuthMode, type BackgroundCheckCandidate, type BackgroundCheckReport, type BankAccountData, BookAppointmentButton, type BookAppointmentButtonProps, BookingDialog, type BookingDialogProps, type BookingFormData, type BookingProvider, type BookingService, BusinessHours, BusinessHoursEditor, type BusinessHoursEditorProps, type BusinessHoursProps, type BusinessHoursSchedule, CHANGE_TYPE_LABELS, CONCERN_STATUS_LABELS, type CSVColumn, CSVColumnMapper, type CSVColumnMapperProps, CSVFileUpload, type CSVFileUploadProps, type CalendarAppointment, CameraButton, type CameraButtonProps, type CameraPermission, CardSkeleton, type CardSkeletonProps, CharacterCounter, type CharacterCounterProps, type ChartDataPoint, ChatBubble, type ChatBubbleProps, CheckrIntegration, type CheckrIntegrationProps, ChevronIcon, type ChevronIconProps, type ClaimFormData, ClaimListingButton, type ClaimListingButtonProps, ClaimProviderForm, type ClaimProviderFormProps, CloseIcon, type CloseIconProps, type ClusterOptions, type CodeLookupComponent, CodeLookupConfig, CodeLookupProvider, type CodeLookupProviderConfig, type CodeLookupProviderProps, CodingChips, CommandPalette, type CommandPaletteCategory, type CommandPaletteContextValue, type CommandPaletteItem, type CommandPaletteProps, CommandPaletteProvider, type CommandPaletteProviderProps, CommandPaletteTrigger, type CommandPaletteTriggerProps, CompactCookieBanner, type CompactCookieBannerProps, CompactFilterBar, type CompactFilterBarProps, CompactHeader, type CompactHeaderProps, CompactHours, type CompactHoursProps, CompactProviderHeader, type CompactProviderHeaderProps, type ConcernRelationship, type ConcernStatus, type ConditionAssertion, type ConditionAssertionDraft, type ConditionCodePick, type ConditionCoding, type ConditionConcern, ConditionEditor, type ConditionEditorMode, type ConditionEditorProps, type ConditionObservation, type ConfirmationResult, type ConnectionInfo, type ConnectionState, ConnectionStatusBadge, type ConnectionStatusBadgeProps, ConnectionStatusBar, type ConnectionStatusBarProps, ConnectionStatusOverlay, type ConnectionStatusOverlayProps, ConsentSwitch, type ConsentSwitchProps, type Contact, type ContactAddress, type ContactFormData, type Conversation, ConversationHeader, type ConversationHeaderProps, ConversationListItem, type ConversationListItemProps, ConversationListSkeleton, type ConversationListSkeletonProps, type ConversationType, CookieConsentBanner, type CookieConsentBannerProps, type CookieConsentLink, CopyrightText, type CopyrightTextProps, CountBadge, type CountBadgeAction, type CountBadgeItem, type CountBadgeItemStatus, type CountBadgeProps, type CreateInvoiceData, CreateInvoiceModal, type CreateInvoiceModalProps, CreateReferralModal, type CreateReferralModalProps, type CreditCardData, type CustomField, DEFAULT_ACCEPTED_FILE_TYPES, DEFAULT_ERROR_CONFIGS, DEFAULT_LANGUAGES, DEFAULT_MAX_FILE_SIZE_MB, DEFAULT_RADIUS_OPTIONS, DEFAULT_SOCIAL_PROVIDERS, DOTBadge, type DOTBadgeProps, DashboardWidget, DashboardWidgetActions, type DashboardWidgetActionsProps, DashboardWidgetDataCards, type DashboardWidgetDataCardsProps, DashboardWidgetInfo, type DashboardWidgetInfoProps, type DashboardWidgetProps, DashboardWidgetTable, type DashboardWidgetTableProps, type DataCardItem, type DateRange$1 as DateRange, DateRangeFilter, type DateRangeFilterProps, DateRangePicker, type DateRangePickerProps, type DateRangePreset, type DateRangePresetKey, DateSeparator, type DateSeparatorProps, type DayHours, type DaySchedule, type Department, type DetectionConfig, type DetectionMetrics, type DetectionState, DialogOverlay, type DialogOverlayProps, type DiarizedSegment, DisclaimerText, type DisclaimerTextProps, type DocumentBoundary, DocumentDetectionOverlay, DocumentScanner, type DocumentScannerProps, DragDropZone, type DragDropZoneProps, DropZone, type DropZoneProps, DropzoneOverlay, type DropzoneOverlayProps, EditUserRoleModal, type EditUserRoleModalProps, type Employee, type EmployeeAddress, type EmployeeData, EmployeeForm, type EmployeeFormData, type EmployeeFormProps, type EmployeePhone, EmployeeProfileCard, type EmployeeProfileCardProps, type Employer, type EmployerAccess, type EmployerAddress, type EmployerContact, EmployerContactCard, type EmployerContactCardProps, type EmployerDetails, type EmployerInvoice, EmployerList, type EmployerListProps, type EmployerOption, type EmployerOrder, EmployerPricingCard, type EmployerPricingCardProps, type EmployerServiceConfig, EmployerServiceModal, type EmployerServiceModalProps, EmployerView, type EmployerViewProps, EmptyState, type EmptyStateProps, type EncounterScope, type EnrollOpts, ErrorPage, type ErrorPageConfig, type ErrorPageProps, type ErrorType, type FAQItem, type FieldOption, type FieldUncertainty, type FileItem, FileManager, type FileManagerProps, FilePreview, type FilePreviewProps, FloatingAIChat, type FloatingAIChatProps, FloatingInput, type FloatingInputProps, type FooterLink, type FooterLinkGroup, FooterLinkSection, type FooterLinkSectionProps, SocialMediaLinks as FooterSocialLinks, type SocialMediaLinksProps as FooterSocialLinksProps, type GeolocationStatus, type HRISProvider, HRISProviderSelector, type HRISProviderSelectorProps, HandsFreeChat, type HandsFreeChatProps, HealthSurveillance, type HealthSurveillanceProps, HelpSupportPanel, type HelpSupportPanelProps, HeroSearchBar, type HeroSearchBarProps, HeyOzwell, type HeyOzwellChatBindings, type HeyOzwellPhase, type HeyOzwellProps, HeyOzwellToggle, type HeyOzwellToggleBindings, type HeyOzwellToggleProps, HoursSummary, type HoursSummaryProps, ImagingOrderEditor, type InfoItem, InlineBookingForm, type InlineBookingFormProps, InputProps, type InventoryLogEntry, InventoryManager, type InventoryManagerProps, InviteUserModal, type InviteUserModalProps, type Invoice, type InvoiceLineItem$1 as InvoiceLineItem, InvoiceList, type InvoiceListProps, type InvoicePaymentDetails, InvoicePaymentPage, type InvoicePaymentPageProps, InvoiceView, type InvoiceViewProps, type KeyValueEntry, LabOrderEditor, type Language, LanguageSelector, LanguageSelectorInline, type LanguageSelectorInlineProps, LanguageSelectorNative, type LanguageSelectorNativeProps, type LanguageSelectorProps, LegalLinks, type LegalLinksProps, LightboxModal, type LightboxModalProps, LoadMoreButton, type LoadMoreButtonProps, LoadingBar, type LoadingBarProps, LoadingDots, type LoadingDotsProps, LoadingOverlay, type LoadingOverlayProps, LoadingPage, type LoadingPageProps, LoadingSkeleton, type LoadingSkeletonProps, MCPResourceLink, MCPToolCall, MCPToolCallDisplay, type MCPToolCallDisplayProps, MCPToolStatus, MODEL_MANIFEST, MaintenancePage, type MaintenancePageProps, Medication, MedicationAction, type MedicationItem, MedicationReconciliation, type MedicationReconciliationProps, type MentionOption, type Message, type MessageAction, type MessageAttachment, MessageAvatar, MessageBubble, type MessageBubbleProps, MessageComposer, type MessageComposerProps, type MessageGroup, MessageList, type MessageListProps, type MessageParticipant, type MessageReaction, type MessageStatus, MessageStatusIcon, type MessageStatusIconProps, type MessageStatusIndicator, MessageThread, type MessageThreadProps, type MessageType, type MessagingEventHandlers, type MessagingLoadingState, MessagingSplitView, type MessagingSplitViewProps, type MetricData, MobileBackButton, type MobileBackButtonProps, MobileMenuButton, type MobileMenuButtonProps, MobileMenuPanel, type MobileMenuPanelProps, type ModelInfo, ModelInfoList, type ModelInfoListProps, type ModelStatus, type ModelStatusKey, type NavLink, NavLinks, type NavLinksProps, type NewMessage, NewsletterForm, type NewsletterFormProps, NotFoundPage, type NotFoundPageProps, type Notification, NotificationCenter, type NotificationCenterProps, ORDER_TYPE_META, ORDER_TYPE_SEARCH_DOMAINS, OfflinePage, type OfflinePageProps, OnboardingCompletion, type OnboardingCompletionProps, type OnboardingStep, OnboardingStepQuestion, type OnboardingStepQuestionProps, OnboardingWizard, type OnboardingWizardProps, OpenStatusBadge, OrderCard, type OrderCardProps, type OrderCodeLookupConfig, type OrderCodePick, OrderConfirmation, type OrderConfirmationProps, OrderConfirmationWizard, type OrderConfirmationWizardProps, OrderDetailSidebar, type OrderDetailSidebarProps, type OrderDetails, OrderEditor, type OrderEditorProps, type OrderEmployee, type OrderEmployer, OrderList, type OrderListProps, type OrderListTab, type OrderLookupData, OrderLookupForm, type OrderLookupFormProps, type OrderLookupProps, type OrderLookupResult, type OrderOption, type OrderSearchDomain, type OrderService, OrderSidebar, type OrderSidebarProps, type OrderSidebarTab, OrderSidebarTabs, type OrderSidebarTabsProps, type OrderStatus$1 as OrderStatus, type OrderType, type OzwellConfig, type OzwellMessage, OzwellSettingsMenu, type OzwellSettingsMenuProps, PageHeader, type PageHeaderProps, type PatientData, PatientHeader, type PatientHeaderProps, PatientHistory, type PatientName, type PatientOverflowAction, type Payment, type PaymentFormData, PaymentHistoryTable, type PaymentHistoryTableProps, type PaymentMethod, PaymentMethodBank, type PaymentMethodBankProps, PaymentMethodCard, type PaymentMethodCardProps, PaymentMethodList, type PaymentMethodListProps, type PendingClaim, PendingClaimsTable, type PendingClaimsTableProps, type Permission, type PermissionGroup, PermissionsEditor, type PermissionsEditorProps, type Point, type PostalCodeInfo, type PresentingEntry, PresentingProblems, type PresentingProblemsProps, type PreviewFile, type PricingTier, ProblemList, type ProblemListAction, type ProblemListProps, type ProblemRelevance, ProcedureOrderEditor, ProductVersion, ProductVersionBadge, type ProductVersionBadgeProps, type ProductVersionProps, ProgramsMap, type Provider, type ProviderAddress$1 as ProviderAddress, Breadcrumb as ProviderBreadcrumb, type BreadcrumbItem as ProviderBreadcrumbItem, type BreadcrumbProps as ProviderBreadcrumbProps, ProviderCard, ProviderCardGrid, type ProviderCardGridProps, type ProviderCardProps, ProviderCardSkeleton, type ProviderCardSkeletonProps, type ProviderContact, type ProviderAddress as ProviderDetailAddress, type ProviderDetailData, ProviderDetailHeader, type ProviderDetailHeaderProps, ProviderDetailHeaderSkeleton, type ProviderDetailHeaderSkeletonProps, type ProviderFilters, ProviderLogo, type ProviderLogoProps, type ProviderOption, ProviderOverview, type ProviderOverviewProps, ProviderSearchBar, type ProviderSearchBarProps, ProviderSearchFilters, type ProviderSearchFiltersProps, ProviderSelector, type ProviderSelectorProps, type ProviderService, ProviderSettings, type ProviderSettingsData, type ProviderSettingsProps, SocialMediaLinks$1 as ProviderSocialLinks, type SocialMediaLinksProps$1 as ProviderSocialLinksProps, type ProviderStats, type ProviderUrls, type ProviderUser, ProviderUsersTable, type ProviderUsersTableProps, QuickBookCard, type QuickBookCardProps, type QuickLink, QuickLinksCard, type QuickLinksCardProps, RELEVANCE_LABELS, type RadiusOption, type ReadReceipt, ReadReceiptIndicator, type ReadReceiptIndicatorProps, type RecentActivity, type ReconciliationAcceptedChange, type ReconciliationConfidenceLevel, type ReconciliationProposal, type ReconciliationSource, type RecurringService, RecurringServiceAddCard, type RecurringServiceAddCardProps, RecurringServiceCard, type RecurringServiceCardProps, type RecurringServiceCardState, type RecurringServiceFormData, RecurringServiceGrid, type RecurringServiceGridProps, RecurringServiceSetupModal, type RecurringServiceSetupModalProps, type ReferralData, ReferralEditor, RefreshIcon, type RefreshIconProps, RejectionModal, type RejectionModalProps, type RejectionReason, ReportDashboard, type ReportDashboardProps, ReportDatePicker, type ReportDatePickerProps, ReportLink, type ReportLinkProps, type ReportResult, ReportTimeRange, type ReportTimeRangeProps, ResourceLink, type ResourceLinkProps, type ResultStatus, ResultsEntryCard, type ResultsEntryData, ResultsEntryForm, type ResultsEntryFormProps, ResultsEntryModal, type ResultsEntryModalProps, type Role, type RoleInferenceOptions, type RollingRecorder, RowActionToolbar, type RowActionToolbarProps, RowIconButton, type RowIconButtonProps, type SSOConfigData, SSOConfigForm, type SSOConfigFormProps, type ScannerSource, type ScannerState, ScheduleCalendar, type ScheduleCalendarProps, type SearchResults, SearchResultsMessage, type SearchResultsMessageProps, type SelectableService, SelectedServicesBadges, type SelectedServicesBadgesProps, SendButton, type SendButtonProps, SendIcon, type SendIconProps, ServerErrorPage, type ServerErrorPageProps, ServiceAccordion, type ServiceAccordionProps, ServiceBadge, ServiceBadgeGroup, type ServiceBadgeGroupProps, type ServiceBadgeProps, ServiceCard, type ServiceCardProps, type ServiceCategory$1 as ServiceCategory, ServiceCategoryBadge, type ServiceCategoryBadgeProps, type ServiceFormData, ServiceGeneralSettings, type ServiceGeneralSettingsProps, ServiceGrid, type ServiceGridProps, type ServiceGroup, type ServiceItem, ServiceLink, ServiceList, type ServiceListProps, ServiceMultiSelect, type ServiceOption, ServicePicker, type ServicePickerProps, type ServicePrice, ServicePricingManager, type ServicePricingManagerProps, ServiceSelect, type ServiceSelectProps, ServiceShippingSettings, type ServiceShippingSettingsProps, type ServiceSubCategory, ServiceTagCloud, ServiceTagCloudBadges, type ServiceTagCloudProps as ServiceTagCloudBadgesProps, type ServiceTagCloudProps$1 as ServiceTagCloudProps, SetupServiceModal, type SetupServiceModalProps, type ShippingAddress, Sidebar, SidebarContent, type SidebarContentProps, type SidebarContextValue, SidebarFooter, type SidebarFooterProps, SidebarHeader, type SidebarHeaderProps, SidebarMobileToggle, type SidebarMobileToggleProps, SidebarNav, SidebarNavGroup, type SidebarNavGroupProps, SidebarNavItem, type SidebarNavItemProps, type SidebarNavProps, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarSearch, type SidebarSearchProps, SidebarToggle, type SidebarToggleProps, type SignupData, SimpleFooter, type SimpleFooterProps, SiteFooter, type SiteFooterProps, SiteHeader, type SiteHeaderProps, SiteLogo, type SiteLogoProps, SkeletonMessage, type SkeletonMessageProps, type SocialLink, type SocialProvider, SparklesIcon, type SparklesIconProps, type SpeakerVerifyHandle, SpinnerIcon, type SpinnerIconProps, SpinnerProps, type Step, StepIndicator, type StepIndicatorProps, StripeBadge, type StripeBadgeProps, StripeSecureBadge, type StripeSecureBadgeProps, SuggestedActions, type SuggestedActionsProps, type SupportContact, type SurveillanceOrderPick, type SystemMessageType, type SystemReport, TableOfContents, type TableOfContentsProps, type TimeRange, type TimeSlot, type TimelineEvent, TimelineEventList, type TimelineEventListProps, TimelineProgress, type TimelineProgressProps, type TimelineSize, type TimelineStep, type TimelineStepState, Toast, ToastContainer, type ToastContainerProps, type ToastContextValue, type ToastData, type ToastOptions, type ToastPosition, type ToastProps, ToastProvider, type ToastProviderProps, type ToastVariant, type TocItem, ToolStatusIcon, type TopItem, type TranscriptSegment, type TypedOrderEditorProps, TypingIndicator, type TypingIndicatorProps, type TypingState, type UncertainConditionField, type Uncertainty, UncertaintyBadge, UpdateAvailableOverlay, type UpdateAvailableOverlayProps, type UpdateInfo, type UseConnectionStatusOptions, type UseConnectionStatusReturn, type UseCookieConsentOptions, type UseCookieConsentReturn, type UseDiarizationOptions, type UseDiarizationResult, type UseDropzoneOptions, type UseDropzoneReturn, type UseHeyOzwellOptions, type UseHeyOzwellResult, type UseMessageScrollOptions, type UseMessageScrollReturn, type UseMessagesOptions, type UseMessagesReturn, type UseReadReceiptsOptions, UseScrollSpyOptions, type UseSpeakerVerifyOpts, type UseTypingIndicatorOptions, type UseTypingIndicatorReturn, type UseVisitScribeOptions, type UseVisitScribeResult, type UseVoiceSetupOptions, type UseVoiceSetupResult, type UseWakeWordOpts, UserMenu, type UserMenuProps, type UserProfile, type UserRole, type ValidationError, type VerificationStatus, VerifiedBadge, type VerifiedBadgeProps, type VerifyResult, VisitScribe, type VisitScribeProps, type VoiceInfo, VoiceManager, type VoiceManagerProps, type VoiceMatch, VoiceSetup, type VoiceSetupPhase, type VoiceSetupProps, WEBSITE_TYPES, type WakeWarmState, type WakeWordControls, type WakeWordState, WebChartReportViewer, type WebChartReportViewerProps, WebcamModal, type WebcamModalProps, type WebsiteEntry, WebsiteInput, WebsiteInputGroup, type WebsiteInputGroupProps, type WebsiteInputProps, type WebsiteType, type WhisperLoadState, type WidgetAction, type WidgetTableAction, type WidgetTableColumn, askOzwell, askOzwellStream, attributeSegments, bubbleVariants, calculateDateRange, centroid, chime, clearVoiceprints, clearWhatPrints, clusterEmbeddings, concernGroupKey, concernHistoryContent, cosine, countBadgeVariants, countChipVariants, create24HourSchedule, createDefaultSchedule, createWeekdaySchedule, currentAssertion, decodeTo16kMono, defaultOrderTabs, defaultReconciliationIsEqual, endsWithDone, formatAddressLines, formatAddressSingleLine, formatCityState, formatCityStateZip, formatDateLabel, formatFileSize, formatLastSeen, generateAttachmentId, generateId, getConversationSubtitle, getConversationTitle, getDefaultPresets, getDictationLoad, getExtendedPresets, getFileType, getGoogleMapsSearchUrl, getGoogleMapsUrl, getOzwellConfig, getToolIcon, getVoiceprints, getWakeWarm, groupMessagesByDate, headerVariants$2 as headerVariants, inferSpeakerRoles, isConditionCodetype, isOzwellConfigured, isSameSenderGroup, isValidUrl, isWhisperLoaded, labelClusters, loadWhatPrints, medicationToOrder, mergeTurns, openRollingRecorder, orderToMedication, orderTypeForCodetype, panelVariants as reconciliationPanelVariants, saveWhatPrints, sendButtonVariants, setVoiceprints, stripStopPhrase, subscribeDictationLoad, subscribeWakeWarm, toOzwellMessages, toolbarKeyNav, transcribeBlob, transcribeGate, transcribeSamples, transcribeSegments, transcribeServer, trimTrailingStopPhrase, useCamera, useCodeLookupConfig, useCommandPalette, useConnectionStatus, useCookieConsent, useDiarization, useDocumentDetection, useDropzone, useFileUpload, useHeyOzwell, useMessageScroll, useMessages, useReadReceipts, useSidebar, useSpeakerVerify, useToast, useTypingIndicator, useVisitScribe, useVoiceSetup, useWakeWord, validateFile, warmStopGate, warmWakeModels, warmWhisper, widgetVariants };
|