@mieweb/ui 0.11.0-dev.6 → 0.11.0-dev.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/ag-grid.cjs +11 -2
  2. package/dist/ag-grid.cjs.map +1 -1
  3. package/dist/ag-grid.d.cts +8 -0
  4. package/dist/ag-grid.d.ts +8 -0
  5. package/dist/ag-grid.js +11 -2
  6. package/dist/ag-grid.js.map +1 -1
  7. package/dist/brands/index.cjs +12 -12
  8. package/dist/brands/index.js +3 -3
  9. package/dist/chunk-3TUULOTW.cjs +333 -0
  10. package/dist/chunk-3TUULOTW.cjs.map +1 -0
  11. package/dist/{chunk-OODVC2UD.cjs → chunk-AWSSWNJY.cjs} +2 -2
  12. package/dist/{chunk-OODVC2UD.cjs.map → chunk-AWSSWNJY.cjs.map} +1 -1
  13. package/dist/{chunk-QJ2L5RU6.js → chunk-DSQCYX7L.js} +2 -2
  14. package/dist/{chunk-QJ2L5RU6.js.map → chunk-DSQCYX7L.js.map} +1 -1
  15. package/dist/{chunk-JTSKPDPH.cjs → chunk-HIYQ3M5V.cjs} +4 -3
  16. package/dist/chunk-HIYQ3M5V.cjs.map +1 -0
  17. package/dist/chunk-IZY4CMOO.js +715 -0
  18. package/dist/chunk-IZY4CMOO.js.map +1 -0
  19. package/dist/{chunk-753ENNB6.js → chunk-J3QEMZCH.js} +2 -2
  20. package/dist/{chunk-753ENNB6.js.map → chunk-J3QEMZCH.js.map} +1 -1
  21. package/dist/{chunk-VNWJTCBQ.js → chunk-MQOYDQTF.js} +4 -3
  22. package/dist/chunk-MQOYDQTF.js.map +1 -0
  23. package/dist/{chunk-NAH65KPK.cjs → chunk-TOJ56HKQ.cjs} +2 -2
  24. package/dist/{chunk-NAH65KPK.cjs.map → chunk-TOJ56HKQ.cjs.map} +1 -1
  25. package/dist/chunk-TRZLN32I.cjs +740 -0
  26. package/dist/chunk-TRZLN32I.cjs.map +1 -0
  27. package/dist/chunk-XQIQX5OB.js +309 -0
  28. package/dist/chunk-XQIQX5OB.js.map +1 -0
  29. package/dist/components/DictationButton/index.cjs +23 -0
  30. package/dist/components/DictationButton/index.cjs.map +1 -0
  31. package/dist/components/DictationButton/index.d.cts +67 -0
  32. package/dist/components/DictationButton/index.d.ts +67 -0
  33. package/dist/components/DictationButton/index.js +6 -0
  34. package/dist/components/DictationButton/index.js.map +1 -0
  35. package/dist/components/Markdown/index.cjs +10 -10
  36. package/dist/components/Markdown/index.js +2 -2
  37. package/dist/components/RecordButton/index.cjs +4 -4
  38. package/dist/components/RecordButton/index.js +1 -1
  39. package/dist/components/SuperChat/index.d.cts +2 -2
  40. package/dist/components/SuperChat/index.d.ts +2 -2
  41. package/dist/components/SuperChat/plugins/index.d.cts +2 -2
  42. package/dist/components/SuperChat/plugins/index.d.ts +2 -2
  43. package/dist/index.cjs +221 -844
  44. package/dist/index.cjs.map +1 -1
  45. package/dist/index.d.cts +63 -1
  46. package/dist/index.d.ts +63 -1
  47. package/dist/index.js +25 -716
  48. package/dist/index.js.map +1 -1
  49. package/dist/styles.css +1 -1
  50. package/dist/{types-Cx1FHLq2.d.cts → types-DSWbrVkM.d.cts} +1 -1
  51. package/dist/{types-Cx1FHLq2.d.ts → types-DSWbrVkM.d.ts} +1 -1
  52. package/dist/whisperTranscribe-AV752TZI.cjs +81 -0
  53. package/dist/whisperTranscribe-AV752TZI.cjs.map +1 -0
  54. package/dist/whisperTranscribe-UBNUWXUQ.js +4 -0
  55. package/dist/whisperTranscribe-UBNUWXUQ.js.map +1 -0
  56. package/package.json +1 -1
  57. package/dist/chunk-JTSKPDPH.cjs.map +0 -1
  58. package/dist/chunk-VNWJTCBQ.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,21 +1,24 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkUVSODK6V_cjs = require('./chunk-UVSODK6V.cjs');
4
+ var chunkTRZLN32I_cjs = require('./chunk-TRZLN32I.cjs');
4
5
  var chunkOGNADPM4_cjs = require('./chunk-OGNADPM4.cjs');
6
+ var chunkXNPDZANN_cjs = require('./chunk-XNPDZANN.cjs');
5
7
  var chunkIEZXJWHJ_cjs = require('./chunk-IEZXJWHJ.cjs');
6
8
  var chunkPWXDRFJL_cjs = require('./chunk-PWXDRFJL.cjs');
7
9
  var chunkFSWHZY3T_cjs = require('./chunk-FSWHZY3T.cjs');
8
10
  var chunkOIF34LEN_cjs = require('./chunk-OIF34LEN.cjs');
9
- var chunkOODVC2UD_cjs = require('./chunk-OODVC2UD.cjs');
11
+ var chunkAWSSWNJY_cjs = require('./chunk-AWSSWNJY.cjs');
12
+ var chunkX7S76WB7_cjs = require('./chunk-X7S76WB7.cjs');
10
13
  var chunkNM7O7RY5_cjs = require('./chunk-NM7O7RY5.cjs');
11
14
  var chunkLCQGAOAZ_cjs = require('./chunk-LCQGAOAZ.cjs');
12
15
  var chunkZ5J4NTPL_cjs = require('./chunk-Z5J4NTPL.cjs');
13
16
  var chunkU7VQUOLS_cjs = require('./chunk-U7VQUOLS.cjs');
17
+ var chunkUCGUA3QV_cjs = require('./chunk-UCGUA3QV.cjs');
14
18
  var chunkRR2MJBGV_cjs = require('./chunk-RR2MJBGV.cjs');
15
- var chunkX7S76WB7_cjs = require('./chunk-X7S76WB7.cjs');
16
19
  var chunkNGQRS7AW_cjs = require('./chunk-NGQRS7AW.cjs');
17
20
  var chunk3ZWCIPFT_cjs = require('./chunk-3ZWCIPFT.cjs');
18
- var chunkUCGUA3QV_cjs = require('./chunk-UCGUA3QV.cjs');
21
+ require('./chunk-6TTCZY3P.cjs');
19
22
  var chunkA4W5CSK7_cjs = require('./chunk-A4W5CSK7.cjs');
20
23
  var chunkARIJ5OHW_cjs = require('./chunk-ARIJ5OHW.cjs');
21
24
  var chunkBJ6ABRSQ_cjs = require('./chunk-BJ6ABRSQ.cjs');
@@ -23,7 +26,7 @@ var chunkFSGJXCBG_cjs = require('./chunk-FSGJXCBG.cjs');
23
26
  var chunkHNFFFFYH_cjs = require('./chunk-HNFFFFYH.cjs');
24
27
  var chunkDO2YN46R_cjs = require('./chunk-DO2YN46R.cjs');
25
28
  var chunk4ZB7RSMY_cjs = require('./chunk-4ZB7RSMY.cjs');
26
- var chunkXNPDZANN_cjs = require('./chunk-XNPDZANN.cjs');
29
+ var chunkGYXSF6BJ_cjs = require('./chunk-GYXSF6BJ.cjs');
27
30
  var chunkFYAKUU2A_cjs = require('./chunk-FYAKUU2A.cjs');
28
31
  var chunkHCIXGFWR_cjs = require('./chunk-HCIXGFWR.cjs');
29
32
  var chunkZJCPW6MS_cjs = require('./chunk-ZJCPW6MS.cjs');
@@ -34,28 +37,27 @@ require('./chunk-47P5QLX4.cjs');
34
37
  var chunkCLQW724U_cjs = require('./chunk-CLQW724U.cjs');
35
38
  require('./chunk-IWRBJHO3.cjs');
36
39
  require('./chunk-7IRTD4JT.cjs');
37
- require('./chunk-6TTCZY3P.cjs');
40
+ var chunk3AD4HFYI_cjs = require('./chunk-3AD4HFYI.cjs');
38
41
  var chunk3IAA3KCE_cjs = require('./chunk-3IAA3KCE.cjs');
39
42
  var chunkKY67AMQ5_cjs = require('./chunk-KY67AMQ5.cjs');
40
43
  var chunkVTKXM7IE_cjs = require('./chunk-VTKXM7IE.cjs');
41
- var chunkGYXSF6BJ_cjs = require('./chunk-GYXSF6BJ.cjs');
42
44
  var chunkXPWFIDZM_cjs = require('./chunk-XPWFIDZM.cjs');
45
+ var chunkYGA35Z2P_cjs = require('./chunk-YGA35Z2P.cjs');
43
46
  var chunkAHHFFXJR_cjs = require('./chunk-AHHFFXJR.cjs');
44
47
  var chunk7RV6CAP6_cjs = require('./chunk-7RV6CAP6.cjs');
45
48
  var chunkQKW2QCGI_cjs = require('./chunk-QKW2QCGI.cjs');
46
49
  var chunkC66JR43M_cjs = require('./chunk-C66JR43M.cjs');
47
50
  var chunkWGXJNCRG_cjs = require('./chunk-WGXJNCRG.cjs');
48
- var chunk3AD4HFYI_cjs = require('./chunk-3AD4HFYI.cjs');
49
51
  var chunk3SZQRMHM_cjs = require('./chunk-3SZQRMHM.cjs');
50
52
  var chunkOZOSWBSI_cjs = require('./chunk-OZOSWBSI.cjs');
51
53
  var chunkKDW6BD4O_cjs = require('./chunk-KDW6BD4O.cjs');
52
54
  var chunk2S76TRBJ_cjs = require('./chunk-2S76TRBJ.cjs');
53
- var chunkYGA35Z2P_cjs = require('./chunk-YGA35Z2P.cjs');
54
55
  var chunkMGFRGPWI_cjs = require('./chunk-MGFRGPWI.cjs');
55
56
  var chunk2I4IRQQG_cjs = require('./chunk-2I4IRQQG.cjs');
56
57
  var chunkXWZEECEX_cjs = require('./chunk-XWZEECEX.cjs');
57
58
  var chunk5MXO6PEV_cjs = require('./chunk-5MXO6PEV.cjs');
58
- var chunkJTSKPDPH_cjs = require('./chunk-JTSKPDPH.cjs');
59
+ var chunk3TUULOTW_cjs = require('./chunk-3TUULOTW.cjs');
60
+ var chunkHIYQ3M5V_cjs = require('./chunk-HIYQ3M5V.cjs');
59
61
  var chunkXZNHS7YQ_cjs = require('./chunk-XZNHS7YQ.cjs');
60
62
  var chunkGDKOYVX3_cjs = require('./chunk-GDKOYVX3.cjs');
61
63
  var chunkAJPFQF3H_cjs = require('./chunk-AJPFQF3H.cjs');
@@ -70,11 +72,11 @@ var chunkVINZZQBD_cjs = require('./chunk-VINZZQBD.cjs');
70
72
  var chunkUEDTZYGI_cjs = require('./chunk-UEDTZYGI.cjs');
71
73
  var chunkVV2U36T6_cjs = require('./chunk-VV2U36T6.cjs');
72
74
  var chunkPYI2IWNX_cjs = require('./chunk-PYI2IWNX.cjs');
73
- var chunkNAH65KPK_cjs = require('./chunk-NAH65KPK.cjs');
75
+ var chunkTOJ56HKQ_cjs = require('./chunk-TOJ56HKQ.cjs');
76
+ var chunkIGDO62KR_cjs = require('./chunk-IGDO62KR.cjs');
74
77
  var chunkSW2E7XKY_cjs = require('./chunk-SW2E7XKY.cjs');
75
78
  var chunkERACGSDY_cjs = require('./chunk-ERACGSDY.cjs');
76
79
  var chunk32ZCJOSR_cjs = require('./chunk-32ZCJOSR.cjs');
77
- var chunkIGDO62KR_cjs = require('./chunk-IGDO62KR.cjs');
78
80
  var chunkRIUQP2QS_cjs = require('./chunk-RIUQP2QS.cjs');
79
81
  var chunkNGSDBWKA_cjs = require('./chunk-NGSDBWKA.cjs');
80
82
  var chunk56C7K4MV_cjs = require('./chunk-56C7K4MV.cjs');
@@ -1833,7 +1835,7 @@ function AIChat({
1833
1835
  disabled: isGenerating,
1834
1836
  isSending: isGenerating,
1835
1837
  micSlot: hostMicSlot !== void 0 ? hostMicSlot : hasInputTrailing ? normalizeLegacySlot(inputTrailing) : talkToText ? /* @__PURE__ */ jsxRuntime.jsx(
1836
- chunkJTSKPDPH_cjs.RecordButton,
1838
+ chunkHIYQ3M5V_cjs.RecordButton,
1837
1839
  {
1838
1840
  variant: "ghost",
1839
1841
  size: "sm",
@@ -3100,27 +3102,6 @@ function OzwellSettingsMenu({
3100
3102
  }
3101
3103
  );
3102
3104
  }
3103
-
3104
- // src/components/AI/modelCache.ts
3105
- var registered = /* @__PURE__ */ new Set();
3106
- function registerModelServiceWorker(swUrl = "/ozwell-model-sw.js") {
3107
- if (typeof navigator === "undefined" || !("serviceWorker" in navigator))
3108
- return;
3109
- if (registered.has(swUrl)) return;
3110
- registered.add(swUrl);
3111
- navigator.serviceWorker.register(swUrl).then(
3112
- () => console.log("[modelCache] model service worker registered"),
3113
- (e) => {
3114
- registered.delete(swUrl);
3115
- console.warn(
3116
- "[modelCache] SW registration failed (models will still load, just not cached):",
3117
- e
3118
- );
3119
- }
3120
- );
3121
- }
3122
-
3123
- // src/components/AI/HeyOzwell/WakeWord/useWakeWord.ts
3124
3105
  var DEFAULT_ASSET_BASE = "https://huggingface.co/jlocala/ozwell-voice-assets/resolve/main";
3125
3106
  var DEFAULT_ASSET = `${DEFAULT_ASSET_BASE}/wakeword`;
3126
3107
  var PHRASES = ["hey-ozwell", "ozwell-i'm-done"];
@@ -3248,7 +3229,7 @@ function useWakeWord(opts = {}) {
3248
3229
  );
3249
3230
  return;
3250
3231
  }
3251
- if (registerServiceWorker) registerModelServiceWorker();
3232
+ if (registerServiceWorker) chunkTRZLN32I_cjs.registerModelServiceWorker();
3252
3233
  let cancelled = false;
3253
3234
  (async () => {
3254
3235
  try {
@@ -3399,679 +3380,6 @@ function useWakeWord(opts = {}) {
3399
3380
  }
3400
3381
  };
3401
3382
  }
3402
-
3403
- // src/components/AI/ozwellChat.ts
3404
- var DEFAULT_BASE = "https://api.ozwell.ai";
3405
- var OLLAMA_BASE = "http://localhost:11434";
3406
- var DEFAULTS = {
3407
- model: "gpt-4o-mini",
3408
- system: "You are Ozwell, a concise and helpful clinical assistant. Answer briefly and clearly.",
3409
- temperature: 0.7
3410
- };
3411
- function readWindowGlobal() {
3412
- if (typeof window === "undefined") return {};
3413
- const get = (w) => {
3414
- try {
3415
- return w?.__ozwell;
3416
- } catch {
3417
- return void 0;
3418
- }
3419
- };
3420
- return get(window) || get(window.parent) || get(window.top) || {};
3421
- }
3422
- function sanitizeConfig(o) {
3423
- if (!o || typeof o !== "object") return {};
3424
- const out = {};
3425
- for (const k of Object.keys(o)) {
3426
- if (k === "__proto__" || k === "constructor" || k === "prototype") continue;
3427
- out[k] = o[k];
3428
- }
3429
- return out;
3430
- }
3431
- function readRaw() {
3432
- let stored = {};
3433
- try {
3434
- stored = sanitizeConfig(
3435
- JSON.parse(localStorage.getItem("ozwellConfig") || "{}")
3436
- );
3437
- } catch {
3438
- }
3439
- return { ...stored, ...sanitizeConfig(readWindowGlobal()) };
3440
- }
3441
- function getOzwellConfig() {
3442
- const c = readRaw();
3443
- const apiKey = c.apiKey || "";
3444
- const baseURL = c.baseURL || (apiKey === "ollama" ? OLLAMA_BASE : DEFAULT_BASE);
3445
- return {
3446
- baseURL,
3447
- apiKey,
3448
- model: c.model || DEFAULTS.model,
3449
- system: c.system ?? DEFAULTS.system,
3450
- // Coerce: temperature set via console/localStorage often arrives as a string; a string in the request
3451
- // body can be rejected by OpenAI-compatible servers. Fall back to the default if it's not a real number —
3452
- // and guard the empty/whitespace string explicitly, since Number('') is 0 (a valid-looking temperature)
3453
- // and would silently pin sampling to 0 instead of using the default.
3454
- temperature: c.temperature != null && String(c.temperature).trim() !== "" && Number.isFinite(Number(c.temperature)) ? Number(c.temperature) : DEFAULTS.temperature
3455
- };
3456
- }
3457
- function isOzwellConfigured() {
3458
- return !!getOzwellConfig().apiKey;
3459
- }
3460
- function toOzwellMessages(msgs) {
3461
- const out = [];
3462
- for (const m of msgs) {
3463
- if (m.role !== "user" && m.role !== "assistant") continue;
3464
- const text = (m.content || []).map((c) => c.text || "").join(" ").trim();
3465
- if (text) out.push({ role: m.role, content: text });
3466
- }
3467
- return out;
3468
- }
3469
- function withSystem(messages, system) {
3470
- if (!system || messages.some((m) => m.role === "system")) return messages;
3471
- return [{ role: "system", content: system }, ...messages];
3472
- }
3473
- function buildRequest(messages, cfg, stream) {
3474
- const msgs = typeof messages === "string" ? [{ role: "user", content: messages }] : messages;
3475
- return {
3476
- url: `${cfg.baseURL.replace(/\/$/, "")}/v1/chat/completions`,
3477
- headers: {
3478
- "Content-Type": "application/json",
3479
- // 'ollama' is a sentinel that points baseURL at the local Ollama server, not a real credential —
3480
- // don't send it as a Bearer token (some local OpenAI-compatible servers reject unexpected auth).
3481
- ...cfg.apiKey && cfg.apiKey !== "ollama" ? { Authorization: `Bearer ${cfg.apiKey}` } : {}
3482
- },
3483
- body: JSON.stringify({
3484
- model: cfg.model,
3485
- messages: withSystem(msgs, cfg.system),
3486
- temperature: cfg.temperature,
3487
- stream
3488
- })
3489
- };
3490
- }
3491
- function resolveConfig(opts) {
3492
- const cfg = { ...getOzwellConfig(), ...opts };
3493
- if (opts.apiKey && !opts.baseURL && !readRaw().baseURL) {
3494
- cfg.baseURL = cfg.apiKey === "ollama" ? OLLAMA_BASE : DEFAULT_BASE;
3495
- }
3496
- return cfg;
3497
- }
3498
- async function askOzwell(messages, opts = {}) {
3499
- const cfg = resolveConfig(opts);
3500
- const req = buildRequest(messages, cfg, false);
3501
- const res = await fetch(req.url, {
3502
- method: "POST",
3503
- headers: req.headers,
3504
- body: req.body,
3505
- signal: opts.signal
3506
- });
3507
- if (!res.ok) throw new Error(`Ozwell API ${res.status}: ${res.statusText}`);
3508
- const data = await res.json();
3509
- return (data?.choices?.[0]?.message?.content ?? "").trim();
3510
- }
3511
- async function askOzwellStream(messages, onToken, opts = {}) {
3512
- const cfg = resolveConfig(opts);
3513
- const req = buildRequest(messages, cfg, true);
3514
- const res = await fetch(req.url, {
3515
- method: "POST",
3516
- headers: req.headers,
3517
- body: req.body,
3518
- signal: opts.signal
3519
- });
3520
- if (!res.ok || !res.body)
3521
- throw new Error(`Ozwell API ${res.status}: ${res.statusText}`);
3522
- const reader = res.body.getReader();
3523
- const decoder = new TextDecoder();
3524
- let buf = "";
3525
- let full = "";
3526
- const processEvent = (ev) => {
3527
- for (const line of ev.split(/\r?\n/)) {
3528
- if (!line.startsWith("data:")) continue;
3529
- const payload = line.slice(5).trim();
3530
- if (payload === "[DONE]") return true;
3531
- try {
3532
- const json = JSON.parse(payload);
3533
- const delta = json?.choices?.[0]?.delta?.content || "";
3534
- if (delta) {
3535
- full += delta;
3536
- onToken(delta, full);
3537
- }
3538
- } catch {
3539
- }
3540
- }
3541
- return false;
3542
- };
3543
- try {
3544
- for (; ; ) {
3545
- const { done, value } = await reader.read();
3546
- if (done) break;
3547
- buf += decoder.decode(value, { stream: true });
3548
- const events = buf.split(/\r?\n\r?\n/);
3549
- buf = events.pop() || "";
3550
- for (const ev of events) if (processEvent(ev)) return full;
3551
- }
3552
- buf += decoder.decode();
3553
- if (buf.trim()) processEvent(buf);
3554
- } finally {
3555
- try {
3556
- await reader.cancel();
3557
- } catch {
3558
- }
3559
- }
3560
- return full;
3561
- }
3562
-
3563
- // src/components/AI/whisperTranscribe.ts
3564
- var HF_HOST = "https://huggingface.co";
3565
- var HF_PATH = "{model}/resolve/{revision}/";
3566
- var R2_HOST = "https://pub-64db68afc2cb4e108ff06e7e583f09d1.r2.dev";
3567
- function whisperHost() {
3568
- if (typeof window === "undefined") return R2_HOST;
3569
- const fromWin = (w) => {
3570
- try {
3571
- return w?.__ozwellWhisperHost;
3572
- } catch {
3573
- return void 0;
3574
- }
3575
- };
3576
- const win = fromWin(window) || fromWin(window.parent) || fromWin(window.top);
3577
- if (win) return win.replace(/\/$/, "");
3578
- try {
3579
- const h = JSON.parse(
3580
- localStorage.getItem("ozwellConfig") || "{}"
3581
- ).whisperHost;
3582
- if (h) return String(h).replace(/\/$/, "");
3583
- } catch {
3584
- }
3585
- return R2_HOST;
3586
- }
3587
- var SMALL_MODELS = {
3588
- tiny: "Xenova/whisper-tiny.en",
3589
- "tiny.en": "Xenova/whisper-tiny.en",
3590
- base: "Xenova/whisper-base.en",
3591
- "base.en": "Xenova/whisper-base.en",
3592
- small: "Xenova/whisper-small.en",
3593
- "small.en": "Xenova/whisper-small.en"
3594
- };
3595
- var GATE_MODEL = "Xenova/whisper-base.en";
3596
- function whisperPref() {
3597
- if (typeof window === "undefined") return null;
3598
- const fromWin = (w) => {
3599
- try {
3600
- return w?.__ozwell?.whisper;
3601
- } catch {
3602
- return void 0;
3603
- }
3604
- };
3605
- const win = fromWin(window) || fromWin(window.parent) || fromWin(window.top);
3606
- if (win) return win;
3607
- try {
3608
- return JSON.parse(localStorage.getItem("ozwellConfig") || "{}").whisper || null;
3609
- } catch {
3610
- return null;
3611
- }
3612
- }
3613
- function whisperDevice() {
3614
- if (typeof window === "undefined") return null;
3615
- const fromWin = (w) => {
3616
- try {
3617
- return w?.__ozwell?.whisperDevice;
3618
- } catch {
3619
- return void 0;
3620
- }
3621
- };
3622
- const win = fromWin(window) || fromWin(window.parent) || fromWin(window.top);
3623
- if (win) return win;
3624
- try {
3625
- return JSON.parse(localStorage.getItem("ozwellConfig") || "{}").whisperDevice || null;
3626
- } catch {
3627
- return null;
3628
- }
3629
- }
3630
- function whisperDtype() {
3631
- if (typeof window === "undefined") return null;
3632
- const fromWin = (w) => {
3633
- try {
3634
- return w?.__ozwell?.whisperDtype;
3635
- } catch {
3636
- return void 0;
3637
- }
3638
- };
3639
- const win = fromWin(window) || fromWin(window.parent) || fromWin(window.top);
3640
- if (win) return win;
3641
- try {
3642
- return JSON.parse(localStorage.getItem("ozwellConfig") || "{}").whisperDtype || null;
3643
- } catch {
3644
- return null;
3645
- }
3646
- }
3647
- var DEFAULT_TRANSFORMERS_URL = "https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.8.1";
3648
- function transformersUrl() {
3649
- try {
3650
- const w = window.__ozwellTransformersUrl;
3651
- if (w) return w;
3652
- const ls = localStorage.getItem("ozwellTransformersUrl");
3653
- if (ls) return ls;
3654
- } catch {
3655
- }
3656
- return DEFAULT_TRANSFORMERS_URL;
3657
- }
3658
- var dictationLoad = {
3659
- active: false,
3660
- progress: 0,
3661
- done: false
3662
- };
3663
- var loadListeners = /* @__PURE__ */ new Set();
3664
- function setDictationLoad(patch) {
3665
- dictationLoad = { ...dictationLoad, ...patch };
3666
- loadListeners.forEach((l) => l());
3667
- }
3668
- function getDictationLoad() {
3669
- return dictationLoad;
3670
- }
3671
- function subscribeDictationLoad(cb) {
3672
- loadListeners.add(cb);
3673
- return () => {
3674
- loadListeners.delete(cb);
3675
- };
3676
- }
3677
- var WORKER_SRC = `
3678
- let cfg = null, modP = null, pipeP = null, gateP = null, isMulti = false;
3679
- let chain = Promise.resolve();
3680
- const serialize = (fn) => { const r = chain.then(fn, fn); chain = r.then(() => {}, () => {}); return r; };
3681
-
3682
- function getMod() {
3683
- if (modP) return modP;
3684
- modP = (async () => {
3685
- const mod = await import(cfg.transformersUrl);
3686
- mod.env.allowLocalModels = false;
3687
- // transformers.js's OWN cache STREAMS the model straight to the Cache API (how whisper-web caches this
3688
- // 1.2GB turbo model). A hand-rolled SW that buffers the whole file chokes (QuotaExceeded).
3689
- mod.env.useBrowserCache = true;
3690
- mod.env.backends.onnx.wasm.numThreads = 1;
3691
- try { if (navigator.storage && navigator.storage.persist) await navigator.storage.persist(); } catch (e) {}
3692
- return mod;
3693
- })();
3694
- return modP;
3695
- }
3696
-
3697
- function progressCb() {
3698
- const frac = {};
3699
- const report = () => {
3700
- const v = Object.values(frac);
3701
- self.postMessage({ type: 'progress', frac: v.length ? v.reduce((a, b) => a + b, 0) / v.length : 0 });
3702
- };
3703
- return (p) => {
3704
- if (!p || !p.file) return;
3705
- if (p.status === 'initiate') { frac[p.file] = frac[p.file] || 0; report(); }
3706
- else if (p.status === 'done') { frac[p.file] = 1; report(); }
3707
- else if (p.status === 'progress' && typeof p.progress === 'number') { frac[p.file] = p.progress / 100; report(); }
3708
- };
3709
- }
3710
-
3711
- async function buildEnglish(modelId) {
3712
- const mod = await getMod();
3713
- mod.env.remoteHost = cfg.hfHost;
3714
- mod.env.remotePathTemplate = cfg.hfPath;
3715
- if ((cfg.whisperDevice || '').toLowerCase() !== 'wasm') {
3716
- try {
3717
- const gpuDtype = cfg.whisperDtype || 'q8';
3718
- const pipe = await mod.pipeline('automatic-speech-recognition', modelId, { device: 'webgpu', dtype: gpuDtype, progress_callback: progressCb() });
3719
- console.log('[whisper] ready (' + modelId + ' / WebGPU ' + gpuDtype + ', worker)');
3720
- return pipe;
3721
- } catch (e) { /* fall through to wasm */ }
3722
- }
3723
- const pipe = await mod.pipeline('automatic-speech-recognition', modelId, { dtype: 'q8', progress_callback: progressCb() });
3724
- console.log('[whisper] ready (' + modelId + ' / wasm, worker)');
3725
- return pipe;
3726
- }
3727
-
3728
- async function buildTurbo() {
3729
- const mod = await getMod();
3730
- mod.env.remoteHost = cfg.whisperHost;
3731
- mod.env.remotePathTemplate = '{model}/';
3732
- const pipe = await mod.pipeline('automatic-speech-recognition', 'whisper-turbo', {
3733
- device: 'webgpu',
3734
- dtype: { encoder_model: 'fp16', decoder_model_merged: 'q4' },
3735
- progress_callback: progressCb(),
3736
- });
3737
- isMulti = true;
3738
- console.log('[whisper] ready (turbo / worker)');
3739
- return pipe;
3740
- }
3741
-
3742
- function loadWhisper() {
3743
- if (pipeP) return pipeP;
3744
- self.postMessage({ type: 'loadState', patch: { active: true, progress: 0, done: false } });
3745
- pipeP = (async () => {
3746
- const pref = (cfg.whisperPref || '').toLowerCase();
3747
- if (pref && pref !== 'turbo' && cfg.smallModels[pref]) {
3748
- console.log('[whisper] loading ' + pref + ' (forced via ozwellConfig.whisper)\u2026');
3749
- return serialize(() => buildEnglish(cfg.smallModels[pref]));
3750
- }
3751
- console.log('[whisper] loading turbo\u2026');
3752
- try { return await serialize(() => buildTurbo()); }
3753
- catch (e) {
3754
- console.log('[whisper] turbo unavailable (' + (e && e.message ? e.message : e) + ') \u2192 base.en fallback');
3755
- return serialize(() => buildEnglish(cfg.gateModel));
3756
- }
3757
- })();
3758
- pipeP.then(
3759
- () => self.postMessage({ type: 'loadState', patch: { active: false, progress: 1, done: true } }),
3760
- () => { pipeP = null; self.postMessage({ type: 'loadState', patch: { active: false } }); }
3761
- );
3762
- return pipeP;
3763
- }
3764
-
3765
- function loadGate() {
3766
- if (gateP) return gateP;
3767
- console.log('[whisper] loading stop-confirm gate (base.en)\u2026');
3768
- gateP = serialize(() => buildEnglish(cfg.gateModel));
3769
- gateP.catch(() => { gateP = null; });
3770
- return gateP;
3771
- }
3772
-
3773
- self.onmessage = async (e) => {
3774
- const m = e.data;
3775
- if (!m) return;
3776
- if (m.type === 'init') { cfg = m.cfg; return; }
3777
- if (m.type === 'warm') { loadWhisper().catch(() => {}); return; }
3778
- if (m.type === 'warmGate') { loadGate().catch(() => {}); return; }
3779
- if (m.type === 'transcribe') {
3780
- try {
3781
- let pipe, opts;
3782
- if (m.want === 'gate') { pipe = await loadGate(); opts = { chunk_length_s: 30 }; }
3783
- else {
3784
- pipe = await loadWhisper();
3785
- if (m.want === 'segments' || m.want === 'words') opts = Object.assign({ chunk_length_s: 30, return_timestamps: m.want === 'words' ? 'word' : true }, isMulti ? { language: 'english', task: 'transcribe' } : {});
3786
- else opts = isMulti ? { chunk_length_s: 30, language: 'english', task: 'transcribe' } : { chunk_length_s: 30 };
3787
- }
3788
- const out = await pipe(m.samples, opts);
3789
- self.postMessage({ type: 'result', id: m.id, text: (out && out.text ? out.text : '').trim(), chunks: (out && out.chunks) || null });
3790
- } catch (err) {
3791
- self.postMessage({ type: 'error', id: m.id, message: err && err.message ? err.message : String(err) });
3792
- }
3793
- }
3794
- };
3795
- `;
3796
- var worker = null;
3797
- var reqId = 0;
3798
- var pending = /* @__PURE__ */ new Map();
3799
- function buildWorkerCfg() {
3800
- return {
3801
- transformersUrl: transformersUrl(),
3802
- whisperHost: whisperHost(),
3803
- whisperPref: whisperPref(),
3804
- whisperDevice: whisperDevice(),
3805
- whisperDtype: whisperDtype(),
3806
- hfHost: HF_HOST,
3807
- hfPath: HF_PATH,
3808
- smallModels: SMALL_MODELS,
3809
- gateModel: GATE_MODEL
3810
- };
3811
- }
3812
- function getWorker() {
3813
- if (worker) return worker;
3814
- registerModelServiceWorker();
3815
- const url = URL.createObjectURL(
3816
- new Blob([WORKER_SRC], { type: "application/javascript" })
3817
- );
3818
- const w = new Worker(url, { type: "module" });
3819
- w.onmessage = (e) => {
3820
- const m = e.data;
3821
- if (!m) return;
3822
- if (m.type === "loadState") {
3823
- setDictationLoad(m.patch);
3824
- return;
3825
- }
3826
- if (m.type === "progress") {
3827
- setDictationLoad({ progress: m.frac });
3828
- return;
3829
- }
3830
- if (m.type === "result") {
3831
- const p = pending.get(m.id);
3832
- if (p) {
3833
- pending.delete(m.id);
3834
- p.resolve({ text: m.text, chunks: m.chunks });
3835
- }
3836
- return;
3837
- }
3838
- if (m.type === "error") {
3839
- const p = pending.get(m.id);
3840
- if (p) {
3841
- pending.delete(m.id);
3842
- p.reject(new Error(m.message));
3843
- }
3844
- return;
3845
- }
3846
- };
3847
- w.onerror = (e) => {
3848
- const err = new Error(
3849
- `whisper worker error: ${e.message || "failed to load"}`
3850
- );
3851
- pending.forEach((p) => p.reject(err));
3852
- pending.clear();
3853
- setDictationLoad({ active: false });
3854
- };
3855
- w.postMessage({ type: "init", cfg: buildWorkerCfg() });
3856
- worker = w;
3857
- return worker;
3858
- }
3859
- function callWorker(want, samples) {
3860
- const w = getWorker();
3861
- const id = ++reqId;
3862
- return new Promise((resolve, reject) => {
3863
- pending.set(id, { resolve, reject });
3864
- w.postMessage({ type: "transcribe", id, want, samples }, [samples.buffer]);
3865
- });
3866
- }
3867
- function isWhisperLoaded() {
3868
- return getDictationLoad().done;
3869
- }
3870
- function warmWhisper() {
3871
- getWorker().postMessage({ type: "warm" });
3872
- }
3873
- function warmStopGate() {
3874
- getWorker().postMessage({ type: "warmGate" });
3875
- }
3876
- function downmixToMono(audio) {
3877
- if (audio.numberOfChannels <= 1) return audio.getChannelData(0);
3878
- const n = audio.length;
3879
- const out = new Float32Array(n);
3880
- for (let ch = 0; ch < audio.numberOfChannels; ch++) {
3881
- const data = audio.getChannelData(ch);
3882
- for (let i = 0; i < n; i++) out[i] += data[i];
3883
- }
3884
- for (let i = 0; i < n; i++) out[i] /= audio.numberOfChannels;
3885
- return out;
3886
- }
3887
- function resampleTo16kMono(src, sampleRate) {
3888
- const ratio = 16e3 / sampleRate;
3889
- const n = Math.round(src.length * ratio);
3890
- const out = new Float32Array(n);
3891
- for (let i = 0; i < n; i++) {
3892
- const t = i / ratio;
3893
- const i0 = Math.floor(t);
3894
- const i1 = Math.min(i0 + 1, src.length - 1);
3895
- out[i] = src[i0] + (src[i1] - src[i0]) * (t - i0);
3896
- }
3897
- return out;
3898
- }
3899
- async function decodeTo16kMono(blob) {
3900
- const Ctx = window.AudioContext || window.webkitAudioContext;
3901
- const ctx = new Ctx();
3902
- try {
3903
- const audio = await ctx.decodeAudioData(await blob.arrayBuffer());
3904
- return resampleTo16kMono(downmixToMono(audio), audio.sampleRate);
3905
- } finally {
3906
- void ctx.close();
3907
- }
3908
- }
3909
- function encodeWav16kMono(samples) {
3910
- const sr = 16e3;
3911
- const buf = new ArrayBuffer(44 + samples.length * 2);
3912
- const view = new DataView(buf);
3913
- const str = (o2, s) => {
3914
- for (let i = 0; i < s.length; i++) view.setUint8(o2 + i, s.charCodeAt(i));
3915
- };
3916
- str(0, "RIFF");
3917
- view.setUint32(4, 36 + samples.length * 2, true);
3918
- str(8, "WAVE");
3919
- str(12, "fmt ");
3920
- view.setUint32(16, 16, true);
3921
- view.setUint16(20, 1, true);
3922
- view.setUint16(22, 1, true);
3923
- view.setUint32(24, sr, true);
3924
- view.setUint32(28, sr * 2, true);
3925
- view.setUint16(32, 2, true);
3926
- view.setUint16(34, 16, true);
3927
- str(36, "data");
3928
- view.setUint32(40, samples.length * 2, true);
3929
- let o = 44;
3930
- for (let i = 0; i < samples.length; i++) {
3931
- const s = Math.max(-1, Math.min(1, samples[i]));
3932
- view.setInt16(o, s < 0 ? s * 32768 : s * 32767, true);
3933
- o += 2;
3934
- }
3935
- return new Blob([buf], { type: "audio/wav" });
3936
- }
3937
- async function trimTrailingStopPhrase(blob, phraseHintSec = 0) {
3938
- let samples;
3939
- try {
3940
- samples = await decodeTo16kMono(blob);
3941
- } catch {
3942
- return blob;
3943
- }
3944
- const SR2 = 16e3;
3945
- const n = samples.length;
3946
- if (n < SR2 * 0.8) return blob;
3947
- const fr = Math.round(SR2 * 0.03);
3948
- const nf = Math.ceil(n / fr);
3949
- const e = new Float32Array(nf);
3950
- let peak = 0;
3951
- for (let f = 0; f < nf; f++) {
3952
- const a = f * fr, b = Math.min(n, a + fr);
3953
- let s = 0;
3954
- for (let i = a; i < b; i++) s += samples[i] * samples[i];
3955
- e[f] = Math.sqrt(s / (b - a));
3956
- if (e[f] > peak) peak = e[f];
3957
- }
3958
- const sil = Math.max(8e-3, peak * 0.15);
3959
- const minGap = Math.max(1, Math.round(0.15 * SR2 / fr));
3960
- const maxTrimFrames = Math.round(2.2 * SR2 / fr);
3961
- const floor = Math.max(0, nf - maxTrimFrames);
3962
- let cutFrame;
3963
- if (phraseHintSec > 0.2) {
3964
- const anchor = Math.max(0, nf - Math.round(phraseHintSec * SR2 / fr));
3965
- const win = Math.round(0.35 * SR2 / fr);
3966
- let best = -1, bestDist = Infinity;
3967
- for (let f = Math.max(0, anchor - win); f <= Math.min(nf - 1, anchor + win); f++) {
3968
- if (e[f] < sil) {
3969
- const dist = Math.abs(f - anchor);
3970
- if (dist < bestDist) {
3971
- bestDist = dist;
3972
- best = f;
3973
- }
3974
- }
3975
- }
3976
- cutFrame = best >= 0 ? best : anchor;
3977
- } else {
3978
- let k = nf - 1;
3979
- while (k >= floor && e[k] < sil) k--;
3980
- cutFrame = -1;
3981
- while (k >= floor) {
3982
- if (e[k] < sil) {
3983
- let m = k;
3984
- while (m >= floor && e[m] < sil) m--;
3985
- if (k - m >= minGap) {
3986
- cutFrame = k + 1;
3987
- break;
3988
- }
3989
- k = m;
3990
- } else k--;
3991
- }
3992
- if (cutFrame < 0) cutFrame = Math.max(0, nf - Math.round(1.1 * SR2 / fr));
3993
- }
3994
- cutFrame = Math.max(cutFrame, floor);
3995
- const cutSample = Math.min(n, cutFrame * fr);
3996
- if (cutSample < SR2 * 0.2) return blob;
3997
- return encodeWav16kMono(samples.subarray(0, cutSample));
3998
- }
3999
- async function transcribeBlob(blob, trimEndSeconds = 0) {
4000
- let samples = await decodeTo16kMono(blob);
4001
- if (trimEndSeconds > 0) {
4002
- const cut = Math.round(trimEndSeconds * 16e3);
4003
- if (samples.length > cut + 16e3)
4004
- samples = samples.slice(0, samples.length - cut);
4005
- }
4006
- const out = await callWorker("text", samples);
4007
- return (out.text ?? "").trim();
4008
- }
4009
- async function transcribeSamples(samples, sampleRate) {
4010
- const out = await callWorker("text", resampleTo16kMono(samples, sampleRate));
4011
- return (out.text ?? "").trim();
4012
- }
4013
- function chunksToSegments(chunks) {
4014
- return (chunks ?? []).map((c) => ({
4015
- start: c.timestamp?.[0] ?? 0,
4016
- end: c.timestamp?.[1] ?? c.timestamp?.[0] ?? 0,
4017
- text: (c.text ?? "").trim()
4018
- })).filter((s) => s.text);
4019
- }
4020
- async function transcribeSegments(blob) {
4021
- const samples = await decodeTo16kMono(blob);
4022
- const out = await callWorker("segments", samples);
4023
- return chunksToSegments(out.chunks);
4024
- }
4025
- function serverAsrModel() {
4026
- try {
4027
- return JSON.parse(localStorage.getItem("ozwellConfig") || "{}").serverWhisper || "whisper-1";
4028
- } catch {
4029
- return "whisper-1";
4030
- }
4031
- }
4032
- async function transcribeServer(blob) {
4033
- const cfg = getOzwellConfig();
4034
- const form = new FormData();
4035
- form.append("file", blob, "audio.webm");
4036
- form.append("model", serverAsrModel());
4037
- const url = `${cfg.baseURL.replace(/\/$/, "")}/v1/audio/transcriptions`;
4038
- const headers = {};
4039
- if (cfg.apiKey && cfg.apiKey !== "ollama")
4040
- headers.Authorization = `Bearer ${cfg.apiKey}`;
4041
- const res = await fetch(url, { method: "POST", headers, body: form });
4042
- if (!res.ok) {
4043
- const body = await res.text().catch(() => "");
4044
- throw new Error(
4045
- `Server ASR ${res.status}: ${res.statusText || body.slice(0, 200) || "request failed"}`
4046
- );
4047
- }
4048
- const data = await res.json();
4049
- return (typeof data?.text === "string" ? data.text : "").trim();
4050
- }
4051
- async function transcribeGate(samples, sampleRate) {
4052
- const out = await callWorker("gate", resampleTo16kMono(samples, sampleRate));
4053
- return (out.text ?? "").trim();
4054
- }
4055
- function stripStopPhrase(text) {
4056
- const tail = /(?:\b(?:oz\s{0,4}well|all(?:['’]?s|\s{1,4}was)?\s{0,4}well|as\s{0,4}well|also|oswald)\b[\s,]{0,6}i(?:['’]?m|\s{1,4}am)\s{1,4}done\b|\b(?:oz\s{0,4}well|all(?:['’]?s|\s{1,4}was)?\s{0,4}well|oswald)\b|\bi(?:['’]?m|\s{1,4}am)\s{1,4}done\b|\b(?:that\s{1,4}was\s{1,4}|was\s{1,4})?well\s{1,4}done\b|\bthat['’]?s?\s{1,4}(?:was\s{1,4})?all\b|\bthank(?:s|\s{1,4}you)(?:\s{1,4}for\s{1,4}watching)?\b|\bbye\b)[\s.,!?-]{0,24}$/i;
4057
- let prev = null;
4058
- let t = text;
4059
- while (t !== prev && t) {
4060
- prev = t;
4061
- t = trimTrailingPunct(t.replace(tail, ""));
4062
- }
4063
- return t.trim();
4064
- }
4065
- function trimTrailingPunct(s) {
4066
- let end = s.length;
4067
- while (end > 0 && /[\s.,!?-]/.test(s[end - 1])) end--;
4068
- return end === s.length ? s : s.slice(0, end);
4069
- }
4070
- function endsWithDone(text) {
4071
- return /\b(?:i(?:['’]?m|\s{1,4}am)\s{1,4}|all\s{1,4}|well\s{1,4})?done\b[\s.,!?-]{0,24}$/i.test(
4072
- text
4073
- );
4074
- }
4075
3383
  function useSpeakerVerify(opts = {}) {
4076
3384
  const { enabled = true, voiceprintNamespace } = opts;
4077
3385
  const [ready, setReady] = React13__namespace.useState(false);
@@ -4313,7 +3621,7 @@ function useDiarization(options = {}) {
4313
3621
  const [error, setError] = React13__namespace.useState(null);
4314
3622
  const [result, setResult] = React13__namespace.useState(null);
4315
3623
  React13__namespace.useEffect(() => {
4316
- if (enabled) warmWhisper();
3624
+ if (enabled) chunkTRZLN32I_cjs.warmWhisper();
4317
3625
  }, [enabled]);
4318
3626
  const diarize = React13__namespace.useCallback(
4319
3627
  async (blob) => {
@@ -4327,8 +3635,8 @@ function useDiarization(options = {}) {
4327
3635
  throw new Error("voiceprint namespace changed during diarization");
4328
3636
  };
4329
3637
  const [segments, samples] = await Promise.all([
4330
- transcribeSegments(blob),
4331
- decodeTo16kMono(blob)
3638
+ chunkTRZLN32I_cjs.transcribeSegments(blob),
3639
+ chunkTRZLN32I_cjs.decodeTo16kMono(blob)
4332
3640
  ]);
4333
3641
  assertNamespace();
4334
3642
  if (!segments.length) {
@@ -4378,9 +3686,9 @@ function useDiarization(options = {}) {
4378
3686
  }
4379
3687
  const labels = labelClusters(segCluster, names);
4380
3688
  let out = attributeSegments(segments, segCluster, labels);
4381
- if (inferRoles && isOzwellConfigured()) {
3689
+ if (inferRoles && chunkTRZLN32I_cjs.isOzwellConfigured()) {
4382
3690
  try {
4383
- out = await inferSpeakerRoles(out, (p) => askOzwell(p));
3691
+ out = await inferSpeakerRoles(out, (p) => chunkTRZLN32I_cjs.askOzwell(p));
4384
3692
  } catch {
4385
3693
  }
4386
3694
  }
@@ -4596,8 +3904,8 @@ function useHeyOzwell(options = {}) {
4596
3904
  const [phase, setPhase] = React13__namespace.useState("listening");
4597
3905
  const [typed, setTyped] = React13__namespace.useState("");
4598
3906
  const dictLoad = React13__namespace.useSyncExternalStore(
4599
- subscribeDictationLoad,
4600
- getDictationLoad
3907
+ chunkTRZLN32I_cjs.subscribeDictationLoad,
3908
+ chunkTRZLN32I_cjs.getDictationLoad
4601
3909
  );
4602
3910
  const wakeWarm2 = React13__namespace.useSyncExternalStore(subscribeWakeWarm, getWakeWarm);
4603
3911
  const counterRef = React13__namespace.useRef(0);
@@ -4681,7 +3989,7 @@ function useHeyOzwell(options = {}) {
4681
3989
  onSendRef.current(t);
4682
3990
  return;
4683
3991
  }
4684
- if (!isOzwellConfigured()) {
3992
+ if (!chunkTRZLN32I_cjs.isOzwellConfigured()) {
4685
3993
  window.setTimeout(
4686
3994
  () => setMessages((m) => [
4687
3995
  ...m,
@@ -4695,7 +4003,7 @@ function useHeyOzwell(options = {}) {
4695
4003
  return;
4696
4004
  }
4697
4005
  const history = [
4698
- ...toOzwellMessages(messagesRef.current),
4006
+ ...chunkTRZLN32I_cjs.toOzwellMessages(messagesRef.current),
4699
4007
  { role: "user", content: t }
4700
4008
  ];
4701
4009
  const id = `assistant-${++counterRef.current}`;
@@ -4718,7 +4026,7 @@ function useHeyOzwell(options = {}) {
4718
4026
  streamAbortRef.current?.abort();
4719
4027
  const ac = new AbortController();
4720
4028
  streamAbortRef.current = ac;
4721
- askOzwellStream(history, (_d, full) => patch(full, "streaming"), {
4029
+ chunkTRZLN32I_cjs.askOzwellStream(history, (_d, full) => patch(full, "streaming"), {
4722
4030
  signal: ac.signal
4723
4031
  }).then((full) => patch(full || "(no response)", "complete")).catch((e) => {
4724
4032
  if (e?.name === "AbortError") return;
@@ -4759,7 +4067,7 @@ function useHeyOzwell(options = {}) {
4759
4067
  const tail = acc.snapshotFrom(liveCursorRef.current);
4760
4068
  liveBusyRef.current = true;
4761
4069
  try {
4762
- const t = (await transcribeSamples(tail, acc.sampleRate)).trim();
4070
+ const t = (await chunkTRZLN32I_cjs.transcribeSamples(tail, acc.sampleRate)).trim();
4763
4071
  if (!liveRecRef.current) return;
4764
4072
  const committed = liveCommittedRef.current;
4765
4073
  setLiveText(committed ? t ? `${committed} ${t}` : committed : t);
@@ -4791,7 +4099,7 @@ function useHeyOzwell(options = {}) {
4791
4099
  const dur = wakeRef.current?.getLastWakeDuration() ?? 0;
4792
4100
  const hint = dur > 0 ? dur + stopTrimLeadIn() : 0;
4793
4101
  try {
4794
- blob = await trimTrailingStopPhrase(blob, hint);
4102
+ blob = await chunkTRZLN32I_cjs.trimTrailingStopPhrase(blob, hint);
4795
4103
  } catch {
4796
4104
  }
4797
4105
  }
@@ -4799,21 +4107,21 @@ function useHeyOzwell(options = {}) {
4799
4107
  if (conversationMode && diarRef.current.ready) {
4800
4108
  const turns = await diarRef.current.diarize(blob);
4801
4109
  const joined = turns.map((t) => `${t.speaker}: ${t.text}`).join("\n");
4802
- text = stripStopPhrase(joined) || stripStopPhrase(await transcribeBlob(blob));
4110
+ text = chunkTRZLN32I_cjs.stripStopPhrase(joined) || chunkTRZLN32I_cjs.stripStopPhrase(await chunkTRZLN32I_cjs.transcribeBlob(blob));
4803
4111
  } else if (transcription === "server") {
4804
4112
  let raw;
4805
4113
  try {
4806
- raw = await transcribeServer(blob);
4114
+ raw = await chunkTRZLN32I_cjs.transcribeServer(blob);
4807
4115
  } catch (e) {
4808
4116
  console.warn(
4809
4117
  "[hey-ozwell] server ASR failed \u2192 on-device fallback",
4810
4118
  e
4811
4119
  );
4812
- raw = await transcribeBlob(blob);
4120
+ raw = await chunkTRZLN32I_cjs.transcribeBlob(blob);
4813
4121
  }
4814
- text = stripStopPhrase(raw);
4122
+ text = chunkTRZLN32I_cjs.stripStopPhrase(raw);
4815
4123
  } else {
4816
- text = stripStopPhrase(await transcribeBlob(blob));
4124
+ text = chunkTRZLN32I_cjs.stripStopPhrase(await chunkTRZLN32I_cjs.transcribeBlob(blob));
4817
4125
  }
4818
4126
  if (text) {
4819
4127
  if (reviewBeforeSend) setTyped(text);
@@ -4900,7 +4208,7 @@ function useHeyOzwell(options = {}) {
4900
4208
  void warmWakeModels(assetBase);
4901
4209
  }, [assetBase]);
4902
4210
  React13__namespace.useEffect(() => {
4903
- if (active) warmWhisper();
4211
+ if (active) chunkTRZLN32I_cjs.warmWhisper();
4904
4212
  }, [active]);
4905
4213
  const toggle = React13__namespace.useCallback(
4906
4214
  (next) => {
@@ -5194,7 +4502,7 @@ function useVoiceSetup(options = {}) {
5194
4502
  const [adding, setAdding] = React13__namespace.useState(startAdding);
5195
4503
  const total = PHRASES2.length * REPS;
5196
4504
  React13__namespace.useEffect(() => {
5197
- warmWhisper();
4505
+ chunkTRZLN32I_cjs.warmWhisper();
5198
4506
  let cancelled = false;
5199
4507
  whatRef.current = {};
5200
4508
  void chunkOGNADPM4_cjs.loadWhatPrints(voiceprintNamespace).then((w) => {
@@ -5862,7 +5170,7 @@ function HandsFreeChat({
5862
5170
  style: { display: "inline-flex" },
5863
5171
  title: "Dictate \u2014 or just say \u201Chey ozwell\u201D",
5864
5172
  children: /* @__PURE__ */ jsxRuntime.jsx(
5865
- chunkJTSKPDPH_cjs.RecordButton,
5173
+ chunkHIYQ3M5V_cjs.RecordButton,
5866
5174
  {
5867
5175
  variant: "ghost",
5868
5176
  size: "sm",
@@ -6010,7 +5318,7 @@ function useVisitScribe(options = {}) {
6010
5318
  acc.discardBefore(liveCursorRef.current);
6011
5319
  liveBusyRef.current = true;
6012
5320
  try {
6013
- const text = (await transcribeSamples(window2, acc.sampleRate)).trim();
5321
+ const text = (await chunkTRZLN32I_cjs.transcribeSamples(window2, acc.sampleRate)).trim();
6014
5322
  if (text && liveRecRef.current)
6015
5323
  setLiveText((prev) => prev ? `${prev} ${text}` : text);
6016
5324
  } catch {
@@ -12901,7 +12209,7 @@ function CheckrIntegration({
12901
12209
  viewReports = "View Reports",
12902
12210
  noReports = "No background checks yet",
12903
12211
  refresh = "Refresh",
12904
- pending: pending2 = "Pending",
12212
+ pending = "Pending",
12905
12213
  running = "Running",
12906
12214
  complete = "Complete",
12907
12215
  failed = "Failed",
@@ -12933,7 +12241,7 @@ function CheckrIntegration({
12933
12241
  setSelectedReports((prev) => prev.size > 0 ? /* @__PURE__ */ new Set() : prev);
12934
12242
  }, [reports, connected]);
12935
12243
  const statusLabels = {
12936
- pending: pending2,
12244
+ pending,
12937
12245
  running,
12938
12246
  complete,
12939
12247
  failed,
@@ -39723,13 +39031,13 @@ var DEFAULT_SERVICE_PRICING_MANAGER_LABELS = {
39723
39031
  function ServiceNote({ service, onNoteChange, labels }) {
39724
39032
  const [editing, setEditing] = React13__namespace.useState(false);
39725
39033
  const [draft, setDraft] = React13__namespace.useState("");
39726
- const [pending2, setPending] = React13__namespace.useState(null);
39034
+ const [pending, setPending] = React13__namespace.useState(null);
39727
39035
  const [failed, setFailed] = React13__namespace.useState(false);
39728
39036
  const inputRef = React13__namespace.useRef(null);
39729
39037
  const buttonRef = React13__namespace.useRef(null);
39730
39038
  const cancelRef = React13__namespace.useRef(false);
39731
39039
  const refocusRef = React13__namespace.useRef(false);
39732
- const note = pending2 ?? service.note ?? "";
39040
+ const note = pending ?? service.note ?? "";
39733
39041
  React13__namespace.useEffect(() => {
39734
39042
  if (editing) inputRef.current?.focus();
39735
39043
  else if (refocusRef.current) {
@@ -39783,12 +39091,12 @@ function ServiceNote({ service, onNoteChange, labels }) {
39783
39091
  ref: buttonRef,
39784
39092
  type: "button",
39785
39093
  onClick: () => {
39786
- if (pending2 !== null) return;
39094
+ if (pending !== null) return;
39787
39095
  setDraft(note);
39788
39096
  setEditing(true);
39789
39097
  },
39790
- "aria-disabled": pending2 !== null,
39791
- "aria-busy": pending2 !== null,
39098
+ "aria-disabled": pending !== null,
39099
+ "aria-busy": pending !== null,
39792
39100
  "aria-label": `${labels.noteLabel(service.serviceName)}: ${note || labels.addNote}`,
39793
39101
  className: chunkS5RVSXDV_cjs.cn(
39794
39102
  "w-full truncate rounded text-start text-sm",
@@ -44828,6 +44136,82 @@ function WebsiteInputGroup({
44828
44136
  }
44829
44137
  WebsiteInputGroup.displayName = "WebsiteInputGroup";
44830
44138
 
44139
+ Object.defineProperty(exports, "askOzwell", {
44140
+ enumerable: true,
44141
+ get: function () { return chunkTRZLN32I_cjs.askOzwell; }
44142
+ });
44143
+ Object.defineProperty(exports, "askOzwellStream", {
44144
+ enumerable: true,
44145
+ get: function () { return chunkTRZLN32I_cjs.askOzwellStream; }
44146
+ });
44147
+ Object.defineProperty(exports, "decodeTo16kMono", {
44148
+ enumerable: true,
44149
+ get: function () { return chunkTRZLN32I_cjs.decodeTo16kMono; }
44150
+ });
44151
+ Object.defineProperty(exports, "endsWithDone", {
44152
+ enumerable: true,
44153
+ get: function () { return chunkTRZLN32I_cjs.endsWithDone; }
44154
+ });
44155
+ Object.defineProperty(exports, "getDictationLoad", {
44156
+ enumerable: true,
44157
+ get: function () { return chunkTRZLN32I_cjs.getDictationLoad; }
44158
+ });
44159
+ Object.defineProperty(exports, "getOzwellConfig", {
44160
+ enumerable: true,
44161
+ get: function () { return chunkTRZLN32I_cjs.getOzwellConfig; }
44162
+ });
44163
+ Object.defineProperty(exports, "isOzwellConfigured", {
44164
+ enumerable: true,
44165
+ get: function () { return chunkTRZLN32I_cjs.isOzwellConfigured; }
44166
+ });
44167
+ Object.defineProperty(exports, "isWhisperLoaded", {
44168
+ enumerable: true,
44169
+ get: function () { return chunkTRZLN32I_cjs.isWhisperLoaded; }
44170
+ });
44171
+ Object.defineProperty(exports, "stripStopPhrase", {
44172
+ enumerable: true,
44173
+ get: function () { return chunkTRZLN32I_cjs.stripStopPhrase; }
44174
+ });
44175
+ Object.defineProperty(exports, "subscribeDictationLoad", {
44176
+ enumerable: true,
44177
+ get: function () { return chunkTRZLN32I_cjs.subscribeDictationLoad; }
44178
+ });
44179
+ Object.defineProperty(exports, "toOzwellMessages", {
44180
+ enumerable: true,
44181
+ get: function () { return chunkTRZLN32I_cjs.toOzwellMessages; }
44182
+ });
44183
+ Object.defineProperty(exports, "transcribeBlob", {
44184
+ enumerable: true,
44185
+ get: function () { return chunkTRZLN32I_cjs.transcribeBlob; }
44186
+ });
44187
+ Object.defineProperty(exports, "transcribeGate", {
44188
+ enumerable: true,
44189
+ get: function () { return chunkTRZLN32I_cjs.transcribeGate; }
44190
+ });
44191
+ Object.defineProperty(exports, "transcribeSamples", {
44192
+ enumerable: true,
44193
+ get: function () { return chunkTRZLN32I_cjs.transcribeSamples; }
44194
+ });
44195
+ Object.defineProperty(exports, "transcribeSegments", {
44196
+ enumerable: true,
44197
+ get: function () { return chunkTRZLN32I_cjs.transcribeSegments; }
44198
+ });
44199
+ Object.defineProperty(exports, "transcribeServer", {
44200
+ enumerable: true,
44201
+ get: function () { return chunkTRZLN32I_cjs.transcribeServer; }
44202
+ });
44203
+ Object.defineProperty(exports, "trimTrailingStopPhrase", {
44204
+ enumerable: true,
44205
+ get: function () { return chunkTRZLN32I_cjs.trimTrailingStopPhrase; }
44206
+ });
44207
+ Object.defineProperty(exports, "warmStopGate", {
44208
+ enumerable: true,
44209
+ get: function () { return chunkTRZLN32I_cjs.warmStopGate; }
44210
+ });
44211
+ Object.defineProperty(exports, "warmWhisper", {
44212
+ enumerable: true,
44213
+ get: function () { return chunkTRZLN32I_cjs.warmWhisper; }
44214
+ });
44831
44215
  Object.defineProperty(exports, "clearVoiceprints", {
44832
44216
  enumerable: true,
44833
44217
  get: function () { return chunkOGNADPM4_cjs.clearVoiceprints; }
@@ -44852,6 +44236,22 @@ Object.defineProperty(exports, "setVoiceprints", {
44852
44236
  enumerable: true,
44853
44237
  get: function () { return chunkOGNADPM4_cjs.setVoiceprints; }
44854
44238
  });
44239
+ Object.defineProperty(exports, "Rating", {
44240
+ enumerable: true,
44241
+ get: function () { return chunkXNPDZANN_cjs.Rating; }
44242
+ });
44243
+ Object.defineProperty(exports, "ReviewCard", {
44244
+ enumerable: true,
44245
+ get: function () { return chunkXNPDZANN_cjs.ReviewCard; }
44246
+ });
44247
+ Object.defineProperty(exports, "defaultRatingLabels", {
44248
+ enumerable: true,
44249
+ get: function () { return chunkXNPDZANN_cjs.defaultRatingLabels; }
44250
+ });
44251
+ Object.defineProperty(exports, "defaultReviewCardLabels", {
44252
+ enumerable: true,
44253
+ get: function () { return chunkXNPDZANN_cjs.defaultReviewCardLabels; }
44254
+ });
44855
44255
  Object.defineProperty(exports, "RecordHeader", {
44856
44256
  enumerable: true,
44857
44257
  get: function () { return chunkIEZXJWHJ_cjs.RecordHeader; }
@@ -44886,7 +44286,11 @@ Object.defineProperty(exports, "defaultUserPickerLabels", {
44886
44286
  });
44887
44287
  Object.defineProperty(exports, "brands", {
44888
44288
  enumerable: true,
44889
- get: function () { return chunkOODVC2UD_cjs.brands; }
44289
+ get: function () { return chunkAWSSWNJY_cjs.brands; }
44290
+ });
44291
+ Object.defineProperty(exports, "defaultBrand", {
44292
+ enumerable: true,
44293
+ get: function () { return chunkX7S76WB7_cjs.defaultBrand; }
44890
44294
  });
44891
44295
  Object.defineProperty(exports, "enterpriseHealthBrand", {
44892
44296
  enumerable: true,
@@ -44904,13 +44308,13 @@ Object.defineProperty(exports, "webchartBrand", {
44904
44308
  enumerable: true,
44905
44309
  get: function () { return chunkU7VQUOLS_cjs.webchartBrand; }
44906
44310
  });
44907
- Object.defineProperty(exports, "ozwellBrand", {
44311
+ Object.defineProperty(exports, "ccmeBrand", {
44908
44312
  enumerable: true,
44909
- get: function () { return chunkRR2MJBGV_cjs.ozwellBrand; }
44313
+ get: function () { return chunkUCGUA3QV_cjs.ccmeBrand; }
44910
44314
  });
44911
- Object.defineProperty(exports, "defaultBrand", {
44315
+ Object.defineProperty(exports, "ozwellBrand", {
44912
44316
  enumerable: true,
44913
- get: function () { return chunkX7S76WB7_cjs.defaultBrand; }
44317
+ get: function () { return chunkRR2MJBGV_cjs.ozwellBrand; }
44914
44318
  });
44915
44319
  Object.defineProperty(exports, "createBrandPreset", {
44916
44320
  enumerable: true,
@@ -44928,10 +44332,6 @@ Object.defineProperty(exports, "bluehiveBrand", {
44928
44332
  enumerable: true,
44929
44333
  get: function () { return chunk3ZWCIPFT_cjs.bluehiveBrand; }
44930
44334
  });
44931
- Object.defineProperty(exports, "ccmeBrand", {
44932
- enumerable: true,
44933
- get: function () { return chunkUCGUA3QV_cjs.ccmeBrand; }
44934
- });
44935
44335
  Object.defineProperty(exports, "CalendarHeatmap", {
44936
44336
  enumerable: true,
44937
44337
  get: function () { return chunkA4W5CSK7_cjs.CalendarHeatmap; }
@@ -44992,21 +44392,9 @@ Object.defineProperty(exports, "defaultInlineEditLabels", {
44992
44392
  enumerable: true,
44993
44393
  get: function () { return chunk4ZB7RSMY_cjs.defaultInlineEditLabels; }
44994
44394
  });
44995
- Object.defineProperty(exports, "Rating", {
44996
- enumerable: true,
44997
- get: function () { return chunkXNPDZANN_cjs.Rating; }
44998
- });
44999
- Object.defineProperty(exports, "ReviewCard", {
45000
- enumerable: true,
45001
- get: function () { return chunkXNPDZANN_cjs.ReviewCard; }
45002
- });
45003
- Object.defineProperty(exports, "defaultRatingLabels", {
45004
- enumerable: true,
45005
- get: function () { return chunkXNPDZANN_cjs.defaultRatingLabels; }
45006
- });
45007
- Object.defineProperty(exports, "defaultReviewCardLabels", {
44395
+ Object.defineProperty(exports, "ViewSet", {
45008
44396
  enumerable: true,
45009
- get: function () { return chunkXNPDZANN_cjs.defaultReviewCardLabels; }
44397
+ get: function () { return chunkGYXSF6BJ_cjs.ViewSet; }
45010
44398
  });
45011
44399
  Object.defineProperty(exports, "TranscriptView", {
45012
44400
  enumerable: true,
@@ -45068,6 +44456,38 @@ Object.defineProperty(exports, "defaultAssociationListLabels", {
45068
44456
  enumerable: true,
45069
44457
  get: function () { return chunkCLQW724U_cjs.defaultAssociationListLabels; }
45070
44458
  });
44459
+ Object.defineProperty(exports, "Table", {
44460
+ enumerable: true,
44461
+ get: function () { return chunk3AD4HFYI_cjs.Table; }
44462
+ });
44463
+ Object.defineProperty(exports, "TableBody", {
44464
+ enumerable: true,
44465
+ get: function () { return chunk3AD4HFYI_cjs.TableBody; }
44466
+ });
44467
+ Object.defineProperty(exports, "TableCaption", {
44468
+ enumerable: true,
44469
+ get: function () { return chunk3AD4HFYI_cjs.TableCaption; }
44470
+ });
44471
+ Object.defineProperty(exports, "TableCell", {
44472
+ enumerable: true,
44473
+ get: function () { return chunk3AD4HFYI_cjs.TableCell; }
44474
+ });
44475
+ Object.defineProperty(exports, "TableFooter", {
44476
+ enumerable: true,
44477
+ get: function () { return chunk3AD4HFYI_cjs.TableFooter; }
44478
+ });
44479
+ Object.defineProperty(exports, "TableHead", {
44480
+ enumerable: true,
44481
+ get: function () { return chunk3AD4HFYI_cjs.TableHead; }
44482
+ });
44483
+ Object.defineProperty(exports, "TableHeader", {
44484
+ enumerable: true,
44485
+ get: function () { return chunk3AD4HFYI_cjs.TableHeader; }
44486
+ });
44487
+ Object.defineProperty(exports, "TableRow", {
44488
+ enumerable: true,
44489
+ get: function () { return chunk3AD4HFYI_cjs.TableRow; }
44490
+ });
45071
44491
  Object.defineProperty(exports, "SmallMuted", {
45072
44492
  enumerable: true,
45073
44493
  get: function () { return chunk3IAA3KCE_cjs.SmallMuted; }
@@ -45112,10 +44532,6 @@ Object.defineProperty(exports, "toggleVariants", {
45112
44532
  enumerable: true,
45113
44533
  get: function () { return chunkVTKXM7IE_cjs.toggleVariants; }
45114
44534
  });
45115
- Object.defineProperty(exports, "ViewSet", {
45116
- enumerable: true,
45117
- get: function () { return chunkGYXSF6BJ_cjs.ViewSet; }
45118
- });
45119
44535
  Object.defineProperty(exports, "ViewSwitcher", {
45120
44536
  enumerable: true,
45121
44537
  get: function () { return chunkXPWFIDZM_cjs.ViewSwitcher; }
@@ -45124,6 +44540,26 @@ Object.defineProperty(exports, "viewSwitcherVariants", {
45124
44540
  enumerable: true,
45125
44541
  get: function () { return chunkXPWFIDZM_cjs.viewSwitcherVariants; }
45126
44542
  });
44543
+ Object.defineProperty(exports, "Skeleton", {
44544
+ enumerable: true,
44545
+ get: function () { return chunkYGA35Z2P_cjs.Skeleton; }
44546
+ });
44547
+ Object.defineProperty(exports, "SkeletonCard", {
44548
+ enumerable: true,
44549
+ get: function () { return chunkYGA35Z2P_cjs.SkeletonCard; }
44550
+ });
44551
+ Object.defineProperty(exports, "SkeletonTable", {
44552
+ enumerable: true,
44553
+ get: function () { return chunkYGA35Z2P_cjs.SkeletonTable; }
44554
+ });
44555
+ Object.defineProperty(exports, "SkeletonText", {
44556
+ enumerable: true,
44557
+ get: function () { return chunkYGA35Z2P_cjs.SkeletonText; }
44558
+ });
44559
+ Object.defineProperty(exports, "skeletonVariants", {
44560
+ enumerable: true,
44561
+ get: function () { return chunkYGA35Z2P_cjs.skeletonVariants; }
44562
+ });
45127
44563
  Object.defineProperty(exports, "SourceTip", {
45128
44564
  enumerable: true,
45129
44565
  get: function () { return chunkAHHFFXJR_cjs.SourceTip; }
@@ -45356,38 +44792,6 @@ Object.defineProperty(exports, "validateFile", {
45356
44792
  enumerable: true,
45357
44793
  get: function () { return chunkWGXJNCRG_cjs.validateFile; }
45358
44794
  });
45359
- Object.defineProperty(exports, "Table", {
45360
- enumerable: true,
45361
- get: function () { return chunk3AD4HFYI_cjs.Table; }
45362
- });
45363
- Object.defineProperty(exports, "TableBody", {
45364
- enumerable: true,
45365
- get: function () { return chunk3AD4HFYI_cjs.TableBody; }
45366
- });
45367
- Object.defineProperty(exports, "TableCaption", {
45368
- enumerable: true,
45369
- get: function () { return chunk3AD4HFYI_cjs.TableCaption; }
45370
- });
45371
- Object.defineProperty(exports, "TableCell", {
45372
- enumerable: true,
45373
- get: function () { return chunk3AD4HFYI_cjs.TableCell; }
45374
- });
45375
- Object.defineProperty(exports, "TableFooter", {
45376
- enumerable: true,
45377
- get: function () { return chunk3AD4HFYI_cjs.TableFooter; }
45378
- });
45379
- Object.defineProperty(exports, "TableHead", {
45380
- enumerable: true,
45381
- get: function () { return chunk3AD4HFYI_cjs.TableHead; }
45382
- });
45383
- Object.defineProperty(exports, "TableHeader", {
45384
- enumerable: true,
45385
- get: function () { return chunk3AD4HFYI_cjs.TableHeader; }
45386
- });
45387
- Object.defineProperty(exports, "TableRow", {
45388
- enumerable: true,
45389
- get: function () { return chunk3AD4HFYI_cjs.TableRow; }
45390
- });
45391
44795
  Object.defineProperty(exports, "DateButton", {
45392
44796
  enumerable: true,
45393
44797
  get: function () { return chunk3SZQRMHM_cjs.DateButton; }
@@ -45444,26 +44848,6 @@ Object.defineProperty(exports, "SliderCalculator", {
45444
44848
  enumerable: true,
45445
44849
  get: function () { return chunk2S76TRBJ_cjs.SliderCalculator; }
45446
44850
  });
45447
- Object.defineProperty(exports, "Skeleton", {
45448
- enumerable: true,
45449
- get: function () { return chunkYGA35Z2P_cjs.Skeleton; }
45450
- });
45451
- Object.defineProperty(exports, "SkeletonCard", {
45452
- enumerable: true,
45453
- get: function () { return chunkYGA35Z2P_cjs.SkeletonCard; }
45454
- });
45455
- Object.defineProperty(exports, "SkeletonTable", {
45456
- enumerable: true,
45457
- get: function () { return chunkYGA35Z2P_cjs.SkeletonTable; }
45458
- });
45459
- Object.defineProperty(exports, "SkeletonText", {
45460
- enumerable: true,
45461
- get: function () { return chunkYGA35Z2P_cjs.SkeletonText; }
45462
- });
45463
- Object.defineProperty(exports, "skeletonVariants", {
45464
- enumerable: true,
45465
- get: function () { return chunkYGA35Z2P_cjs.skeletonVariants; }
45466
- });
45467
44851
  Object.defineProperty(exports, "PhoneInput", {
45468
44852
  enumerable: true,
45469
44853
  get: function () { return chunkMGFRGPWI_cjs.PhoneInput; }
@@ -45516,17 +44900,29 @@ Object.defineProperty(exports, "ReadingProgressBar", {
45516
44900
  enumerable: true,
45517
44901
  get: function () { return chunk5MXO6PEV_cjs.ReadingProgressBar; }
45518
44902
  });
44903
+ Object.defineProperty(exports, "DictationButton", {
44904
+ enumerable: true,
44905
+ get: function () { return chunk3TUULOTW_cjs.DictationButton; }
44906
+ });
44907
+ Object.defineProperty(exports, "defaultDictationLabels", {
44908
+ enumerable: true,
44909
+ get: function () { return chunk3TUULOTW_cjs.defaultDictationLabels; }
44910
+ });
44911
+ Object.defineProperty(exports, "useDictation", {
44912
+ enumerable: true,
44913
+ get: function () { return chunk3TUULOTW_cjs.useDictation; }
44914
+ });
45519
44915
  Object.defineProperty(exports, "RecordButton", {
45520
44916
  enumerable: true,
45521
- get: function () { return chunkJTSKPDPH_cjs.RecordButton; }
44917
+ get: function () { return chunkHIYQ3M5V_cjs.RecordButton; }
45522
44918
  });
45523
44919
  Object.defineProperty(exports, "formatDuration", {
45524
44920
  enumerable: true,
45525
- get: function () { return chunkJTSKPDPH_cjs.formatDuration; }
44921
+ get: function () { return chunkHIYQ3M5V_cjs.formatDuration; }
45526
44922
  });
45527
44923
  Object.defineProperty(exports, "recordButtonVariants", {
45528
44924
  enumerable: true,
45529
- get: function () { return chunkJTSKPDPH_cjs.recordButtonVariants; }
44925
+ get: function () { return chunkHIYQ3M5V_cjs.recordButtonVariants; }
45530
44926
  });
45531
44927
  Object.defineProperty(exports, "FillerWordsModal", {
45532
44928
  enumerable: true,
@@ -45658,19 +45054,23 @@ Object.defineProperty(exports, "listViewItemVariants", {
45658
45054
  });
45659
45055
  Object.defineProperty(exports, "CodeBlock", {
45660
45056
  enumerable: true,
45661
- get: function () { return chunkNAH65KPK_cjs.CodeBlock; }
45057
+ get: function () { return chunkTOJ56HKQ_cjs.CodeBlock; }
45662
45058
  });
45663
45059
  Object.defineProperty(exports, "MarkdownRenderer", {
45664
45060
  enumerable: true,
45665
- get: function () { return chunkNAH65KPK_cjs.MarkdownRenderer; }
45061
+ get: function () { return chunkTOJ56HKQ_cjs.MarkdownRenderer; }
45666
45062
  });
45667
45063
  Object.defineProperty(exports, "highlightCode", {
45668
45064
  enumerable: true,
45669
- get: function () { return chunkNAH65KPK_cjs.highlightCode; }
45065
+ get: function () { return chunkTOJ56HKQ_cjs.highlightCode; }
45670
45066
  });
45671
45067
  Object.defineProperty(exports, "useMarkdown", {
45672
45068
  enumerable: true,
45673
- get: function () { return chunkNAH65KPK_cjs.useMarkdown; }
45069
+ get: function () { return chunkTOJ56HKQ_cjs.useMarkdown; }
45070
+ });
45071
+ Object.defineProperty(exports, "SurveyBlock", {
45072
+ enumerable: true,
45073
+ get: function () { return chunkIGDO62KR_cjs.SurveyBlock; }
45674
45074
  });
45675
45075
  Object.defineProperty(exports, "CsvBlock", {
45676
45076
  enumerable: true,
@@ -45684,10 +45084,6 @@ Object.defineProperty(exports, "MermaidBlock", {
45684
45084
  enumerable: true,
45685
45085
  get: function () { return chunk32ZCJOSR_cjs.MermaidBlock; }
45686
45086
  });
45687
- Object.defineProperty(exports, "SurveyBlock", {
45688
- enumerable: true,
45689
- get: function () { return chunkIGDO62KR_cjs.SurveyBlock; }
45690
- });
45691
45087
  Object.defineProperty(exports, "FenceBlock", {
45692
45088
  enumerable: true,
45693
45089
  get: function () { return chunkRIUQP2QS_cjs.FenceBlock; }
@@ -47796,8 +47192,6 @@ exports.WebChartReportViewer = WebChartReportViewer;
47796
47192
  exports.WebcamModal = WebcamModal;
47797
47193
  exports.WebsiteInput = WebsiteInput;
47798
47194
  exports.WebsiteInputGroup = WebsiteInputGroup;
47799
- exports.askOzwell = askOzwell;
47800
- exports.askOzwellStream = askOzwellStream;
47801
47195
  exports.attributeSegments = attributeSegments;
47802
47196
  exports.calculateDateRange = calculateDateRange;
47803
47197
  exports.centroid = centroid;
@@ -47812,28 +47206,22 @@ exports.create24HourSchedule = create24HourSchedule;
47812
47206
  exports.createDefaultSchedule = createDefaultSchedule;
47813
47207
  exports.createWeekdaySchedule = createWeekdaySchedule;
47814
47208
  exports.currentAssertion = currentAssertion;
47815
- exports.decodeTo16kMono = decodeTo16kMono;
47816
47209
  exports.defaultCaseManagementHeaderLabels = defaultCaseManagementHeaderLabels;
47817
47210
  exports.defaultOrderTabs = defaultOrderTabs;
47818
47211
  exports.defaultReconciliationIsEqual = defaultReconciliationIsEqual;
47819
- exports.endsWithDone = endsWithDone;
47820
47212
  exports.formatAddressLines = formatAddressLines;
47821
47213
  exports.formatAddressSingleLine = formatAddressSingleLine;
47822
47214
  exports.formatCityState = formatCityState;
47823
47215
  exports.formatCityStateZip = formatCityStateZip;
47824
47216
  exports.generateId = generateId;
47825
47217
  exports.getDefaultPresets = getDefaultPresets;
47826
- exports.getDictationLoad = getDictationLoad;
47827
47218
  exports.getExtendedPresets = getExtendedPresets;
47828
47219
  exports.getGoogleMapsSearchUrl = getGoogleMapsSearchUrl;
47829
47220
  exports.getGoogleMapsUrl = getGoogleMapsUrl;
47830
- exports.getOzwellConfig = getOzwellConfig;
47831
47221
  exports.getWakeWarm = getWakeWarm;
47832
47222
  exports.inferSpeakerRoles = inferSpeakerRoles;
47833
47223
  exports.isConditionCodetype = isConditionCodetype;
47834
- exports.isOzwellConfigured = isOzwellConfigured;
47835
47224
  exports.isValidUrl = isValidUrl;
47836
- exports.isWhisperLoaded = isWhisperLoaded;
47837
47225
  exports.labelClusters = labelClusters;
47838
47226
  exports.medicationToOrder = medicationToOrder;
47839
47227
  exports.mergeTurns = mergeTurns;
@@ -47844,16 +47232,7 @@ exports.orderToMedication = orderToMedication;
47844
47232
  exports.orderTypeForCodetype = orderTypeForCodetype;
47845
47233
  exports.parseTimeInput = parseTimeInput;
47846
47234
  exports.reconciliationPanelVariants = panelVariants;
47847
- exports.stripStopPhrase = stripStopPhrase;
47848
- exports.subscribeDictationLoad = subscribeDictationLoad;
47849
47235
  exports.subscribeWakeWarm = subscribeWakeWarm;
47850
- exports.toOzwellMessages = toOzwellMessages;
47851
- exports.transcribeBlob = transcribeBlob;
47852
- exports.transcribeGate = transcribeGate;
47853
- exports.transcribeSamples = transcribeSamples;
47854
- exports.transcribeSegments = transcribeSegments;
47855
- exports.transcribeServer = transcribeServer;
47856
- exports.trimTrailingStopPhrase = trimTrailingStopPhrase;
47857
47236
  exports.useCamera = useCamera;
47858
47237
  exports.useCommandPalette = useCommandPalette;
47859
47238
  exports.useConnectionStatus = useConnectionStatus;
@@ -47870,9 +47249,7 @@ exports.useToast = useToast;
47870
47249
  exports.useVisitScribe = useVisitScribe;
47871
47250
  exports.useVoiceSetup = useVoiceSetup;
47872
47251
  exports.useWakeWord = useWakeWord;
47873
- exports.warmStopGate = warmStopGate;
47874
47252
  exports.warmWakeModels = warmWakeModels;
47875
- exports.warmWhisper = warmWhisper;
47876
47253
  exports.widgetVariants = widgetVariants;
47877
47254
  //# sourceMappingURL=index.cjs.map
47878
47255
  //# sourceMappingURL=index.cjs.map