@mieweb/ui 0.11.0-dev.7 → 0.11.0-dev.9

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 (65) hide show
  1. package/dist/brands/index.cjs +12 -12
  2. package/dist/brands/index.js +3 -3
  3. package/dist/{chunk-WGXJNCRG.cjs → chunk-2GBVJHWN.cjs} +47 -28
  4. package/dist/{chunk-WGXJNCRG.cjs.map → chunk-2GBVJHWN.cjs.map} +1 -1
  5. package/dist/chunk-3TUULOTW.cjs +333 -0
  6. package/dist/chunk-3TUULOTW.cjs.map +1 -0
  7. package/dist/{chunk-OODVC2UD.cjs → chunk-AWSSWNJY.cjs} +2 -2
  8. package/dist/{chunk-OODVC2UD.cjs.map → chunk-AWSSWNJY.cjs.map} +1 -1
  9. package/dist/{chunk-GJPCWR4C.js → chunk-DAAJ3B2T.js} +47 -29
  10. package/dist/chunk-DAAJ3B2T.js.map +1 -0
  11. package/dist/{chunk-QJ2L5RU6.js → chunk-DSQCYX7L.js} +2 -2
  12. package/dist/{chunk-QJ2L5RU6.js.map → chunk-DSQCYX7L.js.map} +1 -1
  13. package/dist/{chunk-JTSKPDPH.cjs → chunk-HIYQ3M5V.cjs} +4 -3
  14. package/dist/chunk-HIYQ3M5V.cjs.map +1 -0
  15. package/dist/chunk-IZY4CMOO.js +715 -0
  16. package/dist/chunk-IZY4CMOO.js.map +1 -0
  17. package/dist/{chunk-753ENNB6.js → chunk-J3QEMZCH.js} +2 -2
  18. package/dist/{chunk-753ENNB6.js.map → chunk-J3QEMZCH.js.map} +1 -1
  19. package/dist/{chunk-VNWJTCBQ.js → chunk-MQOYDQTF.js} +4 -3
  20. package/dist/chunk-MQOYDQTF.js.map +1 -0
  21. package/dist/{chunk-NKG2UNXE.js → chunk-OZKJYLN6.js} +3 -3
  22. package/dist/{chunk-NKG2UNXE.js.map → chunk-OZKJYLN6.js.map} +1 -1
  23. package/dist/{chunk-C66JR43M.cjs → chunk-Q6QLGCL7.cjs} +9 -9
  24. package/dist/{chunk-C66JR43M.cjs.map → chunk-Q6QLGCL7.cjs.map} +1 -1
  25. package/dist/{chunk-NAH65KPK.cjs → chunk-TOJ56HKQ.cjs} +2 -2
  26. package/dist/{chunk-NAH65KPK.cjs.map → chunk-TOJ56HKQ.cjs.map} +1 -1
  27. package/dist/chunk-TRZLN32I.cjs +740 -0
  28. package/dist/chunk-TRZLN32I.cjs.map +1 -0
  29. package/dist/chunk-XQIQX5OB.js +309 -0
  30. package/dist/chunk-XQIQX5OB.js.map +1 -0
  31. package/dist/components/DictationButton/index.cjs +23 -0
  32. package/dist/components/DictationButton/index.cjs.map +1 -0
  33. package/dist/components/DictationButton/index.d.cts +67 -0
  34. package/dist/components/DictationButton/index.d.ts +67 -0
  35. package/dist/components/DictationButton/index.js +6 -0
  36. package/dist/components/DictationButton/index.js.map +1 -0
  37. package/dist/components/Markdown/index.cjs +10 -10
  38. package/dist/components/Markdown/index.js +2 -2
  39. package/dist/components/RecordButton/index.cjs +4 -4
  40. package/dist/components/RecordButton/index.js +1 -1
  41. package/dist/components/SuperChat/index.cjs +3 -3
  42. package/dist/components/SuperChat/index.d.cts +2 -2
  43. package/dist/components/SuperChat/index.d.ts +2 -2
  44. package/dist/components/SuperChat/index.js +1 -1
  45. package/dist/components/SuperChat/plugins/index.cjs +3 -3
  46. package/dist/components/SuperChat/plugins/index.d.cts +2 -2
  47. package/dist/components/SuperChat/plugins/index.d.ts +2 -2
  48. package/dist/components/SuperChat/plugins/index.js +2 -2
  49. package/dist/index.cjs +363 -899
  50. package/dist/index.cjs.map +1 -1
  51. package/dist/index.d.cts +102 -1
  52. package/dist/index.d.ts +102 -1
  53. package/dist/index.js +124 -730
  54. package/dist/index.js.map +1 -1
  55. package/dist/styles.css +1 -1
  56. package/dist/{types-Cx1FHLq2.d.cts → types-DSWbrVkM.d.cts} +1 -1
  57. package/dist/{types-Cx1FHLq2.d.ts → types-DSWbrVkM.d.ts} +1 -1
  58. package/dist/whisperTranscribe-AV752TZI.cjs +81 -0
  59. package/dist/whisperTranscribe-AV752TZI.cjs.map +1 -0
  60. package/dist/whisperTranscribe-UBNUWXUQ.js +4 -0
  61. package/dist/whisperTranscribe-UBNUWXUQ.js.map +1 -0
  62. package/package.json +1 -1
  63. package/dist/chunk-GJPCWR4C.js.map +0 -1
  64. package/dist/chunk-JTSKPDPH.cjs.map +0 -1
  65. 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
- var chunkC66JR43M_cjs = require('./chunk-C66JR43M.cjs');
47
- var chunkWGXJNCRG_cjs = require('./chunk-WGXJNCRG.cjs');
48
- var chunk3AD4HFYI_cjs = require('./chunk-3AD4HFYI.cjs');
49
+ var chunkQ6QLGCL7_cjs = require('./chunk-Q6QLGCL7.cjs');
50
+ var chunk2GBVJHWN_cjs = require('./chunk-2GBVJHWN.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');
@@ -160,8 +162,8 @@ require('./chunk-EUAMEVVI.cjs');
160
162
  var React13 = require('react');
161
163
  var jsxRuntime = require('react/jsx-runtime');
162
164
  var classVarianceAuthority = require('class-variance-authority');
163
- var ReactDOM = require('react-dom');
164
165
  var lucideReact = require('lucide-react');
166
+ var ReactDOM = require('react-dom');
165
167
 
166
168
  function _interopNamespace(e) {
167
169
  if (e && e.__esModule) return e;
@@ -1462,7 +1464,7 @@ function AIEmptyState({
1462
1464
  /* @__PURE__ */ jsxRuntime.jsx(SuggestedActions, { actions: suggestions, onSelect: onSuggestionSelect })
1463
1465
  ] }) : void 0;
1464
1466
  return /* @__PURE__ */ jsxRuntime.jsx(
1465
- chunkC66JR43M_cjs.EmptyState,
1467
+ chunkQ6QLGCL7_cjs.EmptyState,
1466
1468
  {
1467
1469
  title,
1468
1470
  description,
@@ -1523,7 +1525,7 @@ function AIChat({
1523
1525
  renderMessageFooter
1524
1526
  }) {
1525
1527
  React13__namespace.useEffect(() => {
1526
- chunkWGXJNCRG_cjs.notifyComposerMigrationOnce("AIChat");
1528
+ chunk2GBVJHWN_cjs.notifyComposerMigrationOnce("AIChat");
1527
1529
  }, []);
1528
1530
  const messages = React13__namespace.useMemo(
1529
1531
  () => session?.messages || messagesProp || [],
@@ -1659,7 +1661,7 @@ function AIChat({
1659
1661
  },
1660
1662
  [isHostControlled, hostOnValueChange]
1661
1663
  );
1662
- const { stopTyping } = chunkC66JR43M_cjs.useTypingEmulation({
1664
+ const { stopTyping } = chunkQ6QLGCL7_cjs.useTypingEmulation({
1663
1665
  value: composerValue,
1664
1666
  onTypingStart,
1665
1667
  onTypingStop
@@ -1826,14 +1828,14 @@ function AIChat({
1826
1828
  }
1827
1829
  ) }),
1828
1830
  /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "ai-chat-composer", className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsx(
1829
- chunkWGXJNCRG_cjs.ChatComposer,
1831
+ chunk2GBVJHWN_cjs.ChatComposer,
1830
1832
  {
1831
1833
  onSend: hostOnSend ? (message) => sendWithRestore(message, hostOnSend) : handleSend,
1832
1834
  placeholder: inputPlaceholder,
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",
@@ -1848,8 +1850,8 @@ function AIChat({
1848
1850
  allowAttachments: composerRest.allowAttachments ?? legacyAttachments,
1849
1851
  maxLength: composerRest.maxLength ?? 1600,
1850
1852
  inputLabel: composerRest.inputLabel ?? "Message",
1851
- acceptedFileTypes: composerRest.acceptedFileTypes ?? (legacyAttachments ? chunkWGXJNCRG_cjs.DEFAULT_ACCEPTED_FILE_TYPES : void 0),
1852
- maxFileSize: composerRest.maxFileSize ?? (legacyAttachments ? chunkWGXJNCRG_cjs.DEFAULT_MAX_FILE_SIZE : void 0),
1853
+ acceptedFileTypes: composerRest.acceptedFileTypes ?? (legacyAttachments ? chunk2GBVJHWN_cjs.DEFAULT_ACCEPTED_FILE_TYPES : void 0),
1854
+ maxFileSize: composerRest.maxFileSize ?? (legacyAttachments ? chunk2GBVJHWN_cjs.DEFAULT_MAX_FILE_SIZE : void 0),
1853
1855
  value: composerValue,
1854
1856
  onValueChange: handleComposerValueChange
1855
1857
  }
@@ -2889,6 +2891,91 @@ function HeyOzwellToggle({
2889
2891
  }
2890
2892
  );
2891
2893
  }
2894
+ var defaultHeyOzwellSelectorLabels = {
2895
+ name: "Hey Ozwell",
2896
+ activate: "Activate",
2897
+ activateDescription: 'Listen for "Hey Ozwell"',
2898
+ disable: "Disable",
2899
+ disableDescription: "Wake word off",
2900
+ settings: "Voice settings\u2026",
2901
+ off: "Hey Ozwell is off",
2902
+ loading: "Hey Ozwell is starting",
2903
+ listening: 'Listening for "Hey Ozwell"',
2904
+ error: "Hey Ozwell could not start"
2905
+ };
2906
+ var iconClasses = "h-3.5 w-3.5 shrink-0";
2907
+ var phaseIcons = {
2908
+ off: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AudioWaveform, { className: iconClasses, "aria-hidden": "true" }),
2909
+ loading: /* @__PURE__ */ jsxRuntime.jsx(
2910
+ chunkL7L5S2HO_cjs.Loader2,
2911
+ {
2912
+ className: chunkS5RVSXDV_cjs.cn(iconClasses, "animate-spin"),
2913
+ "aria-hidden": "true"
2914
+ }
2915
+ ),
2916
+ listening: /* @__PURE__ */ jsxRuntime.jsx(
2917
+ lucideReact.AudioWaveform,
2918
+ {
2919
+ className: chunkS5RVSXDV_cjs.cn(iconClasses, "text-success"),
2920
+ "aria-hidden": "true"
2921
+ }
2922
+ ),
2923
+ error: /* @__PURE__ */ jsxRuntime.jsx(
2924
+ chunkL7L5S2HO_cjs.AlertTriangle,
2925
+ {
2926
+ className: chunkS5RVSXDV_cjs.cn(iconClasses, "text-destructive"),
2927
+ "aria-hidden": "true"
2928
+ }
2929
+ )
2930
+ };
2931
+ function HeyOzwellSelector({
2932
+ phase,
2933
+ onChange,
2934
+ onOpenSettings,
2935
+ error,
2936
+ disabled,
2937
+ labels: labelOverrides
2938
+ }) {
2939
+ const labels = { ...defaultHeyOzwellSelectorLabels, ...labelOverrides };
2940
+ const active = phase !== "off";
2941
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2942
+ /* @__PURE__ */ jsxRuntime.jsx(
2943
+ chunk2GBVJHWN_cjs.ComposerSelector,
2944
+ {
2945
+ options: [
2946
+ {
2947
+ id: "on",
2948
+ label: labels.activate,
2949
+ description: phase === "error" ? error ?? labels.error : labels.activateDescription
2950
+ },
2951
+ {
2952
+ id: "off",
2953
+ label: labels.disable,
2954
+ description: labels.disableDescription
2955
+ }
2956
+ ],
2957
+ value: active ? "on" : "off",
2958
+ onChange: (id) => {
2959
+ const next = id === "on";
2960
+ if (next !== active || phase === "error") onChange(next);
2961
+ },
2962
+ actions: onOpenSettings && [
2963
+ {
2964
+ id: "settings",
2965
+ label: labels.settings,
2966
+ icon: /* @__PURE__ */ jsxRuntime.jsx(chunkL7L5S2HO_cjs.Settings, { className: "h-4 w-4", "aria-hidden": "true" }),
2967
+ onSelect: onOpenSettings
2968
+ }
2969
+ ],
2970
+ label: labels.name,
2971
+ triggerLabel: labels.name,
2972
+ icon: phaseIcons[phase],
2973
+ disabled
2974
+ }
2975
+ ),
2976
+ /* @__PURE__ */ jsxRuntime.jsx("span", { role: "status", className: "sr-only", children: labels[phase] })
2977
+ ] });
2978
+ }
2892
2979
 
2893
2980
  // src/components/AI/HeyOzwell/modelManifest.ts
2894
2981
  var MODEL_MANIFEST = [
@@ -3100,27 +3187,6 @@ function OzwellSettingsMenu({
3100
3187
  }
3101
3188
  );
3102
3189
  }
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
3190
  var DEFAULT_ASSET_BASE = "https://huggingface.co/jlocala/ozwell-voice-assets/resolve/main";
3125
3191
  var DEFAULT_ASSET = `${DEFAULT_ASSET_BASE}/wakeword`;
3126
3192
  var PHRASES = ["hey-ozwell", "ozwell-i'm-done"];
@@ -3248,7 +3314,7 @@ function useWakeWord(opts = {}) {
3248
3314
  );
3249
3315
  return;
3250
3316
  }
3251
- if (registerServiceWorker) registerModelServiceWorker();
3317
+ if (registerServiceWorker) chunkTRZLN32I_cjs.registerModelServiceWorker();
3252
3318
  let cancelled = false;
3253
3319
  (async () => {
3254
3320
  try {
@@ -3399,679 +3465,6 @@ function useWakeWord(opts = {}) {
3399
3465
  }
3400
3466
  };
3401
3467
  }
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
3468
  function useSpeakerVerify(opts = {}) {
4076
3469
  const { enabled = true, voiceprintNamespace } = opts;
4077
3470
  const [ready, setReady] = React13__namespace.useState(false);
@@ -4313,7 +3706,7 @@ function useDiarization(options = {}) {
4313
3706
  const [error, setError] = React13__namespace.useState(null);
4314
3707
  const [result, setResult] = React13__namespace.useState(null);
4315
3708
  React13__namespace.useEffect(() => {
4316
- if (enabled) warmWhisper();
3709
+ if (enabled) chunkTRZLN32I_cjs.warmWhisper();
4317
3710
  }, [enabled]);
4318
3711
  const diarize = React13__namespace.useCallback(
4319
3712
  async (blob) => {
@@ -4327,8 +3720,8 @@ function useDiarization(options = {}) {
4327
3720
  throw new Error("voiceprint namespace changed during diarization");
4328
3721
  };
4329
3722
  const [segments, samples] = await Promise.all([
4330
- transcribeSegments(blob),
4331
- decodeTo16kMono(blob)
3723
+ chunkTRZLN32I_cjs.transcribeSegments(blob),
3724
+ chunkTRZLN32I_cjs.decodeTo16kMono(blob)
4332
3725
  ]);
4333
3726
  assertNamespace();
4334
3727
  if (!segments.length) {
@@ -4378,9 +3771,9 @@ function useDiarization(options = {}) {
4378
3771
  }
4379
3772
  const labels = labelClusters(segCluster, names);
4380
3773
  let out = attributeSegments(segments, segCluster, labels);
4381
- if (inferRoles && isOzwellConfigured()) {
3774
+ if (inferRoles && chunkTRZLN32I_cjs.isOzwellConfigured()) {
4382
3775
  try {
4383
- out = await inferSpeakerRoles(out, (p) => askOzwell(p));
3776
+ out = await inferSpeakerRoles(out, (p) => chunkTRZLN32I_cjs.askOzwell(p));
4384
3777
  } catch {
4385
3778
  }
4386
3779
  }
@@ -4596,8 +3989,8 @@ function useHeyOzwell(options = {}) {
4596
3989
  const [phase, setPhase] = React13__namespace.useState("listening");
4597
3990
  const [typed, setTyped] = React13__namespace.useState("");
4598
3991
  const dictLoad = React13__namespace.useSyncExternalStore(
4599
- subscribeDictationLoad,
4600
- getDictationLoad
3992
+ chunkTRZLN32I_cjs.subscribeDictationLoad,
3993
+ chunkTRZLN32I_cjs.getDictationLoad
4601
3994
  );
4602
3995
  const wakeWarm2 = React13__namespace.useSyncExternalStore(subscribeWakeWarm, getWakeWarm);
4603
3996
  const counterRef = React13__namespace.useRef(0);
@@ -4681,7 +4074,7 @@ function useHeyOzwell(options = {}) {
4681
4074
  onSendRef.current(t);
4682
4075
  return;
4683
4076
  }
4684
- if (!isOzwellConfigured()) {
4077
+ if (!chunkTRZLN32I_cjs.isOzwellConfigured()) {
4685
4078
  window.setTimeout(
4686
4079
  () => setMessages((m) => [
4687
4080
  ...m,
@@ -4695,7 +4088,7 @@ function useHeyOzwell(options = {}) {
4695
4088
  return;
4696
4089
  }
4697
4090
  const history = [
4698
- ...toOzwellMessages(messagesRef.current),
4091
+ ...chunkTRZLN32I_cjs.toOzwellMessages(messagesRef.current),
4699
4092
  { role: "user", content: t }
4700
4093
  ];
4701
4094
  const id = `assistant-${++counterRef.current}`;
@@ -4718,7 +4111,7 @@ function useHeyOzwell(options = {}) {
4718
4111
  streamAbortRef.current?.abort();
4719
4112
  const ac = new AbortController();
4720
4113
  streamAbortRef.current = ac;
4721
- askOzwellStream(history, (_d, full) => patch(full, "streaming"), {
4114
+ chunkTRZLN32I_cjs.askOzwellStream(history, (_d, full) => patch(full, "streaming"), {
4722
4115
  signal: ac.signal
4723
4116
  }).then((full) => patch(full || "(no response)", "complete")).catch((e) => {
4724
4117
  if (e?.name === "AbortError") return;
@@ -4759,7 +4152,7 @@ function useHeyOzwell(options = {}) {
4759
4152
  const tail = acc.snapshotFrom(liveCursorRef.current);
4760
4153
  liveBusyRef.current = true;
4761
4154
  try {
4762
- const t = (await transcribeSamples(tail, acc.sampleRate)).trim();
4155
+ const t = (await chunkTRZLN32I_cjs.transcribeSamples(tail, acc.sampleRate)).trim();
4763
4156
  if (!liveRecRef.current) return;
4764
4157
  const committed = liveCommittedRef.current;
4765
4158
  setLiveText(committed ? t ? `${committed} ${t}` : committed : t);
@@ -4791,7 +4184,7 @@ function useHeyOzwell(options = {}) {
4791
4184
  const dur = wakeRef.current?.getLastWakeDuration() ?? 0;
4792
4185
  const hint = dur > 0 ? dur + stopTrimLeadIn() : 0;
4793
4186
  try {
4794
- blob = await trimTrailingStopPhrase(blob, hint);
4187
+ blob = await chunkTRZLN32I_cjs.trimTrailingStopPhrase(blob, hint);
4795
4188
  } catch {
4796
4189
  }
4797
4190
  }
@@ -4799,21 +4192,21 @@ function useHeyOzwell(options = {}) {
4799
4192
  if (conversationMode && diarRef.current.ready) {
4800
4193
  const turns = await diarRef.current.diarize(blob);
4801
4194
  const joined = turns.map((t) => `${t.speaker}: ${t.text}`).join("\n");
4802
- text = stripStopPhrase(joined) || stripStopPhrase(await transcribeBlob(blob));
4195
+ text = chunkTRZLN32I_cjs.stripStopPhrase(joined) || chunkTRZLN32I_cjs.stripStopPhrase(await chunkTRZLN32I_cjs.transcribeBlob(blob));
4803
4196
  } else if (transcription === "server") {
4804
4197
  let raw;
4805
4198
  try {
4806
- raw = await transcribeServer(blob);
4199
+ raw = await chunkTRZLN32I_cjs.transcribeServer(blob);
4807
4200
  } catch (e) {
4808
4201
  console.warn(
4809
4202
  "[hey-ozwell] server ASR failed \u2192 on-device fallback",
4810
4203
  e
4811
4204
  );
4812
- raw = await transcribeBlob(blob);
4205
+ raw = await chunkTRZLN32I_cjs.transcribeBlob(blob);
4813
4206
  }
4814
- text = stripStopPhrase(raw);
4207
+ text = chunkTRZLN32I_cjs.stripStopPhrase(raw);
4815
4208
  } else {
4816
- text = stripStopPhrase(await transcribeBlob(blob));
4209
+ text = chunkTRZLN32I_cjs.stripStopPhrase(await chunkTRZLN32I_cjs.transcribeBlob(blob));
4817
4210
  }
4818
4211
  if (text) {
4819
4212
  if (reviewBeforeSend) setTyped(text);
@@ -4900,7 +4293,7 @@ function useHeyOzwell(options = {}) {
4900
4293
  void warmWakeModels(assetBase);
4901
4294
  }, [assetBase]);
4902
4295
  React13__namespace.useEffect(() => {
4903
- if (active) warmWhisper();
4296
+ if (active) chunkTRZLN32I_cjs.warmWhisper();
4904
4297
  }, [active]);
4905
4298
  const toggle = React13__namespace.useCallback(
4906
4299
  (next) => {
@@ -5194,7 +4587,7 @@ function useVoiceSetup(options = {}) {
5194
4587
  const [adding, setAdding] = React13__namespace.useState(startAdding);
5195
4588
  const total = PHRASES2.length * REPS;
5196
4589
  React13__namespace.useEffect(() => {
5197
- warmWhisper();
4590
+ chunkTRZLN32I_cjs.warmWhisper();
5198
4591
  let cancelled = false;
5199
4592
  whatRef.current = {};
5200
4593
  void chunkOGNADPM4_cjs.loadWhatPrints(voiceprintNamespace).then((w) => {
@@ -5862,7 +5255,7 @@ function HandsFreeChat({
5862
5255
  style: { display: "inline-flex" },
5863
5256
  title: "Dictate \u2014 or just say \u201Chey ozwell\u201D",
5864
5257
  children: /* @__PURE__ */ jsxRuntime.jsx(
5865
- chunkJTSKPDPH_cjs.RecordButton,
5258
+ chunkHIYQ3M5V_cjs.RecordButton,
5866
5259
  {
5867
5260
  variant: "ghost",
5868
5261
  size: "sm",
@@ -6010,7 +5403,7 @@ function useVisitScribe(options = {}) {
6010
5403
  acc.discardBefore(liveCursorRef.current);
6011
5404
  liveBusyRef.current = true;
6012
5405
  try {
6013
- const text = (await transcribeSamples(window2, acc.sampleRate)).trim();
5406
+ const text = (await chunkTRZLN32I_cjs.transcribeSamples(window2, acc.sampleRate)).trim();
6014
5407
  if (text && liveRecRef.current)
6015
5408
  setLiveText((prev) => prev ? `${prev} ${text}` : text);
6016
5409
  } catch {
@@ -12901,7 +12294,7 @@ function CheckrIntegration({
12901
12294
  viewReports = "View Reports",
12902
12295
  noReports = "No background checks yet",
12903
12296
  refresh = "Refresh",
12904
- pending: pending2 = "Pending",
12297
+ pending = "Pending",
12905
12298
  running = "Running",
12906
12299
  complete = "Complete",
12907
12300
  failed = "Failed",
@@ -12933,7 +12326,7 @@ function CheckrIntegration({
12933
12326
  setSelectedReports((prev) => prev.size > 0 ? /* @__PURE__ */ new Set() : prev);
12934
12327
  }, [reports, connected]);
12935
12328
  const statusLabels = {
12936
- pending: pending2,
12329
+ pending,
12937
12330
  running,
12938
12331
  complete,
12939
12332
  failed,
@@ -22760,21 +22153,21 @@ function ActionButton({ label, onClick, href, variant }) {
22760
22153
  );
22761
22154
  }
22762
22155
  function DefaultIllustration({ type }) {
22763
- const iconClasses = "h-24 w-24 text-muted-foreground";
22156
+ const iconClasses2 = "h-24 w-24 text-muted-foreground";
22764
22157
  switch (type) {
22765
22158
  case "404":
22766
- return /* @__PURE__ */ jsxRuntime.jsx(Search404Icon, { className: iconClasses });
22159
+ return /* @__PURE__ */ jsxRuntime.jsx(Search404Icon, { className: iconClasses2 });
22767
22160
  case "500":
22768
- return /* @__PURE__ */ jsxRuntime.jsx(ServerErrorIcon, { className: iconClasses });
22161
+ return /* @__PURE__ */ jsxRuntime.jsx(ServerErrorIcon, { className: iconClasses2 });
22769
22162
  case "403":
22770
22163
  case "401":
22771
- return /* @__PURE__ */ jsxRuntime.jsx(LockIcon, { className: iconClasses });
22164
+ return /* @__PURE__ */ jsxRuntime.jsx(LockIcon, { className: iconClasses2 });
22772
22165
  case "offline":
22773
- return /* @__PURE__ */ jsxRuntime.jsx(WifiOffIcon, { className: iconClasses });
22166
+ return /* @__PURE__ */ jsxRuntime.jsx(WifiOffIcon, { className: iconClasses2 });
22774
22167
  case "maintenance":
22775
- return /* @__PURE__ */ jsxRuntime.jsx(WrenchIcon, { className: iconClasses });
22168
+ return /* @__PURE__ */ jsxRuntime.jsx(WrenchIcon, { className: iconClasses2 });
22776
22169
  default:
22777
- return /* @__PURE__ */ jsxRuntime.jsx(AlertIcon, { className: iconClasses });
22170
+ return /* @__PURE__ */ jsxRuntime.jsx(AlertIcon, { className: iconClasses2 });
22778
22171
  }
22779
22172
  }
22780
22173
  function Search404Icon({ className }) {
@@ -39723,13 +39116,13 @@ var DEFAULT_SERVICE_PRICING_MANAGER_LABELS = {
39723
39116
  function ServiceNote({ service, onNoteChange, labels }) {
39724
39117
  const [editing, setEditing] = React13__namespace.useState(false);
39725
39118
  const [draft, setDraft] = React13__namespace.useState("");
39726
- const [pending2, setPending] = React13__namespace.useState(null);
39119
+ const [pending, setPending] = React13__namespace.useState(null);
39727
39120
  const [failed, setFailed] = React13__namespace.useState(false);
39728
39121
  const inputRef = React13__namespace.useRef(null);
39729
39122
  const buttonRef = React13__namespace.useRef(null);
39730
39123
  const cancelRef = React13__namespace.useRef(false);
39731
39124
  const refocusRef = React13__namespace.useRef(false);
39732
- const note = pending2 ?? service.note ?? "";
39125
+ const note = pending ?? service.note ?? "";
39733
39126
  React13__namespace.useEffect(() => {
39734
39127
  if (editing) inputRef.current?.focus();
39735
39128
  else if (refocusRef.current) {
@@ -39783,12 +39176,12 @@ function ServiceNote({ service, onNoteChange, labels }) {
39783
39176
  ref: buttonRef,
39784
39177
  type: "button",
39785
39178
  onClick: () => {
39786
- if (pending2 !== null) return;
39179
+ if (pending !== null) return;
39787
39180
  setDraft(note);
39788
39181
  setEditing(true);
39789
39182
  },
39790
- "aria-disabled": pending2 !== null,
39791
- "aria-busy": pending2 !== null,
39183
+ "aria-disabled": pending !== null,
39184
+ "aria-busy": pending !== null,
39792
39185
  "aria-label": `${labels.noteLabel(service.serviceName)}: ${note || labels.addNote}`,
39793
39186
  className: chunkS5RVSXDV_cjs.cn(
39794
39187
  "w-full truncate rounded text-start text-sm",
@@ -44828,6 +44221,82 @@ function WebsiteInputGroup({
44828
44221
  }
44829
44222
  WebsiteInputGroup.displayName = "WebsiteInputGroup";
44830
44223
 
44224
+ Object.defineProperty(exports, "askOzwell", {
44225
+ enumerable: true,
44226
+ get: function () { return chunkTRZLN32I_cjs.askOzwell; }
44227
+ });
44228
+ Object.defineProperty(exports, "askOzwellStream", {
44229
+ enumerable: true,
44230
+ get: function () { return chunkTRZLN32I_cjs.askOzwellStream; }
44231
+ });
44232
+ Object.defineProperty(exports, "decodeTo16kMono", {
44233
+ enumerable: true,
44234
+ get: function () { return chunkTRZLN32I_cjs.decodeTo16kMono; }
44235
+ });
44236
+ Object.defineProperty(exports, "endsWithDone", {
44237
+ enumerable: true,
44238
+ get: function () { return chunkTRZLN32I_cjs.endsWithDone; }
44239
+ });
44240
+ Object.defineProperty(exports, "getDictationLoad", {
44241
+ enumerable: true,
44242
+ get: function () { return chunkTRZLN32I_cjs.getDictationLoad; }
44243
+ });
44244
+ Object.defineProperty(exports, "getOzwellConfig", {
44245
+ enumerable: true,
44246
+ get: function () { return chunkTRZLN32I_cjs.getOzwellConfig; }
44247
+ });
44248
+ Object.defineProperty(exports, "isOzwellConfigured", {
44249
+ enumerable: true,
44250
+ get: function () { return chunkTRZLN32I_cjs.isOzwellConfigured; }
44251
+ });
44252
+ Object.defineProperty(exports, "isWhisperLoaded", {
44253
+ enumerable: true,
44254
+ get: function () { return chunkTRZLN32I_cjs.isWhisperLoaded; }
44255
+ });
44256
+ Object.defineProperty(exports, "stripStopPhrase", {
44257
+ enumerable: true,
44258
+ get: function () { return chunkTRZLN32I_cjs.stripStopPhrase; }
44259
+ });
44260
+ Object.defineProperty(exports, "subscribeDictationLoad", {
44261
+ enumerable: true,
44262
+ get: function () { return chunkTRZLN32I_cjs.subscribeDictationLoad; }
44263
+ });
44264
+ Object.defineProperty(exports, "toOzwellMessages", {
44265
+ enumerable: true,
44266
+ get: function () { return chunkTRZLN32I_cjs.toOzwellMessages; }
44267
+ });
44268
+ Object.defineProperty(exports, "transcribeBlob", {
44269
+ enumerable: true,
44270
+ get: function () { return chunkTRZLN32I_cjs.transcribeBlob; }
44271
+ });
44272
+ Object.defineProperty(exports, "transcribeGate", {
44273
+ enumerable: true,
44274
+ get: function () { return chunkTRZLN32I_cjs.transcribeGate; }
44275
+ });
44276
+ Object.defineProperty(exports, "transcribeSamples", {
44277
+ enumerable: true,
44278
+ get: function () { return chunkTRZLN32I_cjs.transcribeSamples; }
44279
+ });
44280
+ Object.defineProperty(exports, "transcribeSegments", {
44281
+ enumerable: true,
44282
+ get: function () { return chunkTRZLN32I_cjs.transcribeSegments; }
44283
+ });
44284
+ Object.defineProperty(exports, "transcribeServer", {
44285
+ enumerable: true,
44286
+ get: function () { return chunkTRZLN32I_cjs.transcribeServer; }
44287
+ });
44288
+ Object.defineProperty(exports, "trimTrailingStopPhrase", {
44289
+ enumerable: true,
44290
+ get: function () { return chunkTRZLN32I_cjs.trimTrailingStopPhrase; }
44291
+ });
44292
+ Object.defineProperty(exports, "warmStopGate", {
44293
+ enumerable: true,
44294
+ get: function () { return chunkTRZLN32I_cjs.warmStopGate; }
44295
+ });
44296
+ Object.defineProperty(exports, "warmWhisper", {
44297
+ enumerable: true,
44298
+ get: function () { return chunkTRZLN32I_cjs.warmWhisper; }
44299
+ });
44831
44300
  Object.defineProperty(exports, "clearVoiceprints", {
44832
44301
  enumerable: true,
44833
44302
  get: function () { return chunkOGNADPM4_cjs.clearVoiceprints; }
@@ -44852,6 +44321,22 @@ Object.defineProperty(exports, "setVoiceprints", {
44852
44321
  enumerable: true,
44853
44322
  get: function () { return chunkOGNADPM4_cjs.setVoiceprints; }
44854
44323
  });
44324
+ Object.defineProperty(exports, "Rating", {
44325
+ enumerable: true,
44326
+ get: function () { return chunkXNPDZANN_cjs.Rating; }
44327
+ });
44328
+ Object.defineProperty(exports, "ReviewCard", {
44329
+ enumerable: true,
44330
+ get: function () { return chunkXNPDZANN_cjs.ReviewCard; }
44331
+ });
44332
+ Object.defineProperty(exports, "defaultRatingLabels", {
44333
+ enumerable: true,
44334
+ get: function () { return chunkXNPDZANN_cjs.defaultRatingLabels; }
44335
+ });
44336
+ Object.defineProperty(exports, "defaultReviewCardLabels", {
44337
+ enumerable: true,
44338
+ get: function () { return chunkXNPDZANN_cjs.defaultReviewCardLabels; }
44339
+ });
44855
44340
  Object.defineProperty(exports, "RecordHeader", {
44856
44341
  enumerable: true,
44857
44342
  get: function () { return chunkIEZXJWHJ_cjs.RecordHeader; }
@@ -44886,7 +44371,11 @@ Object.defineProperty(exports, "defaultUserPickerLabels", {
44886
44371
  });
44887
44372
  Object.defineProperty(exports, "brands", {
44888
44373
  enumerable: true,
44889
- get: function () { return chunkOODVC2UD_cjs.brands; }
44374
+ get: function () { return chunkAWSSWNJY_cjs.brands; }
44375
+ });
44376
+ Object.defineProperty(exports, "defaultBrand", {
44377
+ enumerable: true,
44378
+ get: function () { return chunkX7S76WB7_cjs.defaultBrand; }
44890
44379
  });
44891
44380
  Object.defineProperty(exports, "enterpriseHealthBrand", {
44892
44381
  enumerable: true,
@@ -44904,13 +44393,13 @@ Object.defineProperty(exports, "webchartBrand", {
44904
44393
  enumerable: true,
44905
44394
  get: function () { return chunkU7VQUOLS_cjs.webchartBrand; }
44906
44395
  });
44907
- Object.defineProperty(exports, "ozwellBrand", {
44396
+ Object.defineProperty(exports, "ccmeBrand", {
44908
44397
  enumerable: true,
44909
- get: function () { return chunkRR2MJBGV_cjs.ozwellBrand; }
44398
+ get: function () { return chunkUCGUA3QV_cjs.ccmeBrand; }
44910
44399
  });
44911
- Object.defineProperty(exports, "defaultBrand", {
44400
+ Object.defineProperty(exports, "ozwellBrand", {
44912
44401
  enumerable: true,
44913
- get: function () { return chunkX7S76WB7_cjs.defaultBrand; }
44402
+ get: function () { return chunkRR2MJBGV_cjs.ozwellBrand; }
44914
44403
  });
44915
44404
  Object.defineProperty(exports, "createBrandPreset", {
44916
44405
  enumerable: true,
@@ -44928,10 +44417,6 @@ Object.defineProperty(exports, "bluehiveBrand", {
44928
44417
  enumerable: true,
44929
44418
  get: function () { return chunk3ZWCIPFT_cjs.bluehiveBrand; }
44930
44419
  });
44931
- Object.defineProperty(exports, "ccmeBrand", {
44932
- enumerable: true,
44933
- get: function () { return chunkUCGUA3QV_cjs.ccmeBrand; }
44934
- });
44935
44420
  Object.defineProperty(exports, "CalendarHeatmap", {
44936
44421
  enumerable: true,
44937
44422
  get: function () { return chunkA4W5CSK7_cjs.CalendarHeatmap; }
@@ -44992,21 +44477,9 @@ Object.defineProperty(exports, "defaultInlineEditLabels", {
44992
44477
  enumerable: true,
44993
44478
  get: function () { return chunk4ZB7RSMY_cjs.defaultInlineEditLabels; }
44994
44479
  });
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", {
44480
+ Object.defineProperty(exports, "ViewSet", {
45008
44481
  enumerable: true,
45009
- get: function () { return chunkXNPDZANN_cjs.defaultReviewCardLabels; }
44482
+ get: function () { return chunkGYXSF6BJ_cjs.ViewSet; }
45010
44483
  });
45011
44484
  Object.defineProperty(exports, "TranscriptView", {
45012
44485
  enumerable: true,
@@ -45068,6 +44541,38 @@ Object.defineProperty(exports, "defaultAssociationListLabels", {
45068
44541
  enumerable: true,
45069
44542
  get: function () { return chunkCLQW724U_cjs.defaultAssociationListLabels; }
45070
44543
  });
44544
+ Object.defineProperty(exports, "Table", {
44545
+ enumerable: true,
44546
+ get: function () { return chunk3AD4HFYI_cjs.Table; }
44547
+ });
44548
+ Object.defineProperty(exports, "TableBody", {
44549
+ enumerable: true,
44550
+ get: function () { return chunk3AD4HFYI_cjs.TableBody; }
44551
+ });
44552
+ Object.defineProperty(exports, "TableCaption", {
44553
+ enumerable: true,
44554
+ get: function () { return chunk3AD4HFYI_cjs.TableCaption; }
44555
+ });
44556
+ Object.defineProperty(exports, "TableCell", {
44557
+ enumerable: true,
44558
+ get: function () { return chunk3AD4HFYI_cjs.TableCell; }
44559
+ });
44560
+ Object.defineProperty(exports, "TableFooter", {
44561
+ enumerable: true,
44562
+ get: function () { return chunk3AD4HFYI_cjs.TableFooter; }
44563
+ });
44564
+ Object.defineProperty(exports, "TableHead", {
44565
+ enumerable: true,
44566
+ get: function () { return chunk3AD4HFYI_cjs.TableHead; }
44567
+ });
44568
+ Object.defineProperty(exports, "TableHeader", {
44569
+ enumerable: true,
44570
+ get: function () { return chunk3AD4HFYI_cjs.TableHeader; }
44571
+ });
44572
+ Object.defineProperty(exports, "TableRow", {
44573
+ enumerable: true,
44574
+ get: function () { return chunk3AD4HFYI_cjs.TableRow; }
44575
+ });
45071
44576
  Object.defineProperty(exports, "SmallMuted", {
45072
44577
  enumerable: true,
45073
44578
  get: function () { return chunk3IAA3KCE_cjs.SmallMuted; }
@@ -45112,10 +44617,6 @@ Object.defineProperty(exports, "toggleVariants", {
45112
44617
  enumerable: true,
45113
44618
  get: function () { return chunkVTKXM7IE_cjs.toggleVariants; }
45114
44619
  });
45115
- Object.defineProperty(exports, "ViewSet", {
45116
- enumerable: true,
45117
- get: function () { return chunkGYXSF6BJ_cjs.ViewSet; }
45118
- });
45119
44620
  Object.defineProperty(exports, "ViewSwitcher", {
45120
44621
  enumerable: true,
45121
44622
  get: function () { return chunkXPWFIDZM_cjs.ViewSwitcher; }
@@ -45124,6 +44625,26 @@ Object.defineProperty(exports, "viewSwitcherVariants", {
45124
44625
  enumerable: true,
45125
44626
  get: function () { return chunkXPWFIDZM_cjs.viewSwitcherVariants; }
45126
44627
  });
44628
+ Object.defineProperty(exports, "Skeleton", {
44629
+ enumerable: true,
44630
+ get: function () { return chunkYGA35Z2P_cjs.Skeleton; }
44631
+ });
44632
+ Object.defineProperty(exports, "SkeletonCard", {
44633
+ enumerable: true,
44634
+ get: function () { return chunkYGA35Z2P_cjs.SkeletonCard; }
44635
+ });
44636
+ Object.defineProperty(exports, "SkeletonTable", {
44637
+ enumerable: true,
44638
+ get: function () { return chunkYGA35Z2P_cjs.SkeletonTable; }
44639
+ });
44640
+ Object.defineProperty(exports, "SkeletonText", {
44641
+ enumerable: true,
44642
+ get: function () { return chunkYGA35Z2P_cjs.SkeletonText; }
44643
+ });
44644
+ Object.defineProperty(exports, "skeletonVariants", {
44645
+ enumerable: true,
44646
+ get: function () { return chunkYGA35Z2P_cjs.skeletonVariants; }
44647
+ });
45127
44648
  Object.defineProperty(exports, "SourceTip", {
45128
44649
  enumerable: true,
45129
44650
  get: function () { return chunkAHHFFXJR_cjs.SourceTip; }
@@ -45202,191 +44723,159 @@ Object.defineProperty(exports, "getToolIcon", {
45202
44723
  });
45203
44724
  Object.defineProperty(exports, "AttachmentPreview", {
45204
44725
  enumerable: true,
45205
- get: function () { return chunkC66JR43M_cjs.AttachmentPreview; }
44726
+ get: function () { return chunkQ6QLGCL7_cjs.AttachmentPreview; }
45206
44727
  });
45207
44728
  Object.defineProperty(exports, "ConversationHeader", {
45208
44729
  enumerable: true,
45209
- get: function () { return chunkC66JR43M_cjs.ConversationHeader; }
44730
+ get: function () { return chunkQ6QLGCL7_cjs.ConversationHeader; }
45210
44731
  });
45211
44732
  Object.defineProperty(exports, "ConversationListItem", {
45212
44733
  enumerable: true,
45213
- get: function () { return chunkC66JR43M_cjs.ConversationListItem; }
44734
+ get: function () { return chunkQ6QLGCL7_cjs.ConversationListItem; }
45214
44735
  });
45215
44736
  Object.defineProperty(exports, "ConversationListSkeleton", {
45216
44737
  enumerable: true,
45217
- get: function () { return chunkC66JR43M_cjs.ConversationListSkeleton; }
44738
+ get: function () { return chunkQ6QLGCL7_cjs.ConversationListSkeleton; }
45218
44739
  });
45219
44740
  Object.defineProperty(exports, "DateSeparator", {
45220
44741
  enumerable: true,
45221
- get: function () { return chunkC66JR43M_cjs.DateSeparator; }
44742
+ get: function () { return chunkQ6QLGCL7_cjs.DateSeparator; }
45222
44743
  });
45223
44744
  Object.defineProperty(exports, "EmptyState", {
45224
44745
  enumerable: true,
45225
- get: function () { return chunkC66JR43M_cjs.EmptyState; }
44746
+ get: function () { return chunkQ6QLGCL7_cjs.EmptyState; }
45226
44747
  });
45227
44748
  Object.defineProperty(exports, "LightboxModal", {
45228
44749
  enumerable: true,
45229
- get: function () { return chunkC66JR43M_cjs.LightboxModal; }
44750
+ get: function () { return chunkQ6QLGCL7_cjs.LightboxModal; }
45230
44751
  });
45231
44752
  Object.defineProperty(exports, "LoadMoreButton", {
45232
44753
  enumerable: true,
45233
- get: function () { return chunkC66JR43M_cjs.LoadMoreButton; }
44754
+ get: function () { return chunkQ6QLGCL7_cjs.LoadMoreButton; }
45234
44755
  });
45235
44756
  Object.defineProperty(exports, "MessageBubble", {
45236
44757
  enumerable: true,
45237
- get: function () { return chunkC66JR43M_cjs.MessageBubble; }
44758
+ get: function () { return chunkQ6QLGCL7_cjs.MessageBubble; }
45238
44759
  });
45239
44760
  Object.defineProperty(exports, "MessageList", {
45240
44761
  enumerable: true,
45241
- get: function () { return chunkC66JR43M_cjs.MessageList; }
44762
+ get: function () { return chunkQ6QLGCL7_cjs.MessageList; }
45242
44763
  });
45243
44764
  Object.defineProperty(exports, "MessageStatusIcon", {
45244
44765
  enumerable: true,
45245
- get: function () { return chunkC66JR43M_cjs.MessageStatusIcon; }
44766
+ get: function () { return chunkQ6QLGCL7_cjs.MessageStatusIcon; }
45246
44767
  });
45247
44768
  Object.defineProperty(exports, "MessageThread", {
45248
44769
  enumerable: true,
45249
- get: function () { return chunkC66JR43M_cjs.MessageThread; }
44770
+ get: function () { return chunkQ6QLGCL7_cjs.MessageThread; }
45250
44771
  });
45251
44772
  Object.defineProperty(exports, "MessagingSplitView", {
45252
44773
  enumerable: true,
45253
- get: function () { return chunkC66JR43M_cjs.MessagingSplitView; }
44774
+ get: function () { return chunkQ6QLGCL7_cjs.MessagingSplitView; }
45254
44775
  });
45255
44776
  Object.defineProperty(exports, "ReadReceiptIndicator", {
45256
44777
  enumerable: true,
45257
- get: function () { return chunkC66JR43M_cjs.ReadReceiptIndicator; }
44778
+ get: function () { return chunkQ6QLGCL7_cjs.ReadReceiptIndicator; }
45258
44779
  });
45259
44780
  Object.defineProperty(exports, "SkeletonMessage", {
45260
44781
  enumerable: true,
45261
- get: function () { return chunkC66JR43M_cjs.SkeletonMessage; }
44782
+ get: function () { return chunkQ6QLGCL7_cjs.SkeletonMessage; }
45262
44783
  });
45263
44784
  Object.defineProperty(exports, "TypingIndicator", {
45264
44785
  enumerable: true,
45265
- get: function () { return chunkC66JR43M_cjs.TypingIndicator; }
44786
+ get: function () { return chunkQ6QLGCL7_cjs.TypingIndicator; }
45266
44787
  });
45267
44788
  Object.defineProperty(exports, "bubbleVariants", {
45268
44789
  enumerable: true,
45269
- get: function () { return chunkC66JR43M_cjs.bubbleVariants; }
44790
+ get: function () { return chunkQ6QLGCL7_cjs.bubbleVariants; }
45270
44791
  });
45271
44792
  Object.defineProperty(exports, "formatDateLabel", {
45272
44793
  enumerable: true,
45273
- get: function () { return chunkC66JR43M_cjs.formatDateLabel; }
44794
+ get: function () { return chunkQ6QLGCL7_cjs.formatDateLabel; }
45274
44795
  });
45275
44796
  Object.defineProperty(exports, "formatFileSize", {
45276
44797
  enumerable: true,
45277
- get: function () { return chunkC66JR43M_cjs.formatFileSize; }
44798
+ get: function () { return chunkQ6QLGCL7_cjs.formatFileSize; }
45278
44799
  });
45279
44800
  Object.defineProperty(exports, "formatLastSeen", {
45280
44801
  enumerable: true,
45281
- get: function () { return chunkC66JR43M_cjs.formatLastSeen; }
44802
+ get: function () { return chunkQ6QLGCL7_cjs.formatLastSeen; }
45282
44803
  });
45283
44804
  Object.defineProperty(exports, "getConversationSubtitle", {
45284
44805
  enumerable: true,
45285
- get: function () { return chunkC66JR43M_cjs.getConversationSubtitle; }
44806
+ get: function () { return chunkQ6QLGCL7_cjs.getConversationSubtitle; }
45286
44807
  });
45287
44808
  Object.defineProperty(exports, "getConversationTitle", {
45288
44809
  enumerable: true,
45289
- get: function () { return chunkC66JR43M_cjs.getConversationTitle; }
44810
+ get: function () { return chunkQ6QLGCL7_cjs.getConversationTitle; }
45290
44811
  });
45291
44812
  Object.defineProperty(exports, "groupMessagesByDate", {
45292
44813
  enumerable: true,
45293
- get: function () { return chunkC66JR43M_cjs.groupMessagesByDate; }
44814
+ get: function () { return chunkQ6QLGCL7_cjs.groupMessagesByDate; }
45294
44815
  });
45295
44816
  Object.defineProperty(exports, "headerVariants", {
45296
44817
  enumerable: true,
45297
- get: function () { return chunkC66JR43M_cjs.headerVariants; }
44818
+ get: function () { return chunkQ6QLGCL7_cjs.headerVariants; }
45298
44819
  });
45299
44820
  Object.defineProperty(exports, "isSameSenderGroup", {
45300
44821
  enumerable: true,
45301
- get: function () { return chunkC66JR43M_cjs.isSameSenderGroup; }
44822
+ get: function () { return chunkQ6QLGCL7_cjs.isSameSenderGroup; }
45302
44823
  });
45303
44824
  Object.defineProperty(exports, "useMessageScroll", {
45304
44825
  enumerable: true,
45305
- get: function () { return chunkC66JR43M_cjs.useMessageScroll; }
44826
+ get: function () { return chunkQ6QLGCL7_cjs.useMessageScroll; }
45306
44827
  });
45307
44828
  Object.defineProperty(exports, "useMessages", {
45308
44829
  enumerable: true,
45309
- get: function () { return chunkC66JR43M_cjs.useMessages; }
44830
+ get: function () { return chunkQ6QLGCL7_cjs.useMessages; }
45310
44831
  });
45311
44832
  Object.defineProperty(exports, "useReadReceipts", {
45312
44833
  enumerable: true,
45313
- get: function () { return chunkC66JR43M_cjs.useReadReceipts; }
44834
+ get: function () { return chunkQ6QLGCL7_cjs.useReadReceipts; }
45314
44835
  });
45315
44836
  Object.defineProperty(exports, "useTypingEmulation", {
45316
44837
  enumerable: true,
45317
- get: function () { return chunkC66JR43M_cjs.useTypingEmulation; }
44838
+ get: function () { return chunkQ6QLGCL7_cjs.useTypingEmulation; }
45318
44839
  });
45319
44840
  Object.defineProperty(exports, "useTypingIndicator", {
45320
44841
  enumerable: true,
45321
- get: function () { return chunkC66JR43M_cjs.useTypingIndicator; }
44842
+ get: function () { return chunkQ6QLGCL7_cjs.useTypingIndicator; }
45322
44843
  });
45323
44844
  Object.defineProperty(exports, "AttachmentPicker", {
45324
44845
  enumerable: true,
45325
- get: function () { return chunkWGXJNCRG_cjs.AttachmentPicker; }
44846
+ get: function () { return chunk2GBVJHWN_cjs.AttachmentPicker; }
45326
44847
  });
45327
44848
  Object.defineProperty(exports, "AttachmentPreviewItem", {
45328
44849
  enumerable: true,
45329
- get: function () { return chunkWGXJNCRG_cjs.AttachmentPreviewItem; }
44850
+ get: function () { return chunk2GBVJHWN_cjs.AttachmentPreviewItem; }
45330
44851
  });
45331
44852
  Object.defineProperty(exports, "CameraButton", {
45332
44853
  enumerable: true,
45333
- get: function () { return chunkWGXJNCRG_cjs.CameraButton; }
44854
+ get: function () { return chunk2GBVJHWN_cjs.CameraButton; }
45334
44855
  });
45335
44856
  Object.defineProperty(exports, "ChatComposer", {
45336
44857
  enumerable: true,
45337
- get: function () { return chunkWGXJNCRG_cjs.ChatComposer; }
44858
+ get: function () { return chunk2GBVJHWN_cjs.ChatComposer; }
45338
44859
  });
45339
44860
  Object.defineProperty(exports, "ComposerModelSelector", {
45340
44861
  enumerable: true,
45341
- get: function () { return chunkWGXJNCRG_cjs.ComposerModelSelector; }
44862
+ get: function () { return chunk2GBVJHWN_cjs.ComposerModelSelector; }
45342
44863
  });
45343
44864
  Object.defineProperty(exports, "DragDropZone", {
45344
44865
  enumerable: true,
45345
- get: function () { return chunkWGXJNCRG_cjs.DragDropZone; }
44866
+ get: function () { return chunk2GBVJHWN_cjs.DragDropZone; }
45346
44867
  });
45347
44868
  Object.defineProperty(exports, "generateAttachmentId", {
45348
44869
  enumerable: true,
45349
- get: function () { return chunkWGXJNCRG_cjs.generateAttachmentId; }
44870
+ get: function () { return chunk2GBVJHWN_cjs.generateAttachmentId; }
45350
44871
  });
45351
44872
  Object.defineProperty(exports, "getFileType", {
45352
44873
  enumerable: true,
45353
- get: function () { return chunkWGXJNCRG_cjs.getFileType; }
44874
+ get: function () { return chunk2GBVJHWN_cjs.getFileType; }
45354
44875
  });
45355
44876
  Object.defineProperty(exports, "validateFile", {
45356
44877
  enumerable: true,
45357
- get: function () { return chunkWGXJNCRG_cjs.validateFile; }
45358
- });
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; }
44878
+ get: function () { return chunk2GBVJHWN_cjs.validateFile; }
45390
44879
  });
45391
44880
  Object.defineProperty(exports, "DateButton", {
45392
44881
  enumerable: true,
@@ -45444,26 +44933,6 @@ Object.defineProperty(exports, "SliderCalculator", {
45444
44933
  enumerable: true,
45445
44934
  get: function () { return chunk2S76TRBJ_cjs.SliderCalculator; }
45446
44935
  });
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
44936
  Object.defineProperty(exports, "PhoneInput", {
45468
44937
  enumerable: true,
45469
44938
  get: function () { return chunkMGFRGPWI_cjs.PhoneInput; }
@@ -45516,17 +44985,29 @@ Object.defineProperty(exports, "ReadingProgressBar", {
45516
44985
  enumerable: true,
45517
44986
  get: function () { return chunk5MXO6PEV_cjs.ReadingProgressBar; }
45518
44987
  });
44988
+ Object.defineProperty(exports, "DictationButton", {
44989
+ enumerable: true,
44990
+ get: function () { return chunk3TUULOTW_cjs.DictationButton; }
44991
+ });
44992
+ Object.defineProperty(exports, "defaultDictationLabels", {
44993
+ enumerable: true,
44994
+ get: function () { return chunk3TUULOTW_cjs.defaultDictationLabels; }
44995
+ });
44996
+ Object.defineProperty(exports, "useDictation", {
44997
+ enumerable: true,
44998
+ get: function () { return chunk3TUULOTW_cjs.useDictation; }
44999
+ });
45519
45000
  Object.defineProperty(exports, "RecordButton", {
45520
45001
  enumerable: true,
45521
- get: function () { return chunkJTSKPDPH_cjs.RecordButton; }
45002
+ get: function () { return chunkHIYQ3M5V_cjs.RecordButton; }
45522
45003
  });
45523
45004
  Object.defineProperty(exports, "formatDuration", {
45524
45005
  enumerable: true,
45525
- get: function () { return chunkJTSKPDPH_cjs.formatDuration; }
45006
+ get: function () { return chunkHIYQ3M5V_cjs.formatDuration; }
45526
45007
  });
45527
45008
  Object.defineProperty(exports, "recordButtonVariants", {
45528
45009
  enumerable: true,
45529
- get: function () { return chunkJTSKPDPH_cjs.recordButtonVariants; }
45010
+ get: function () { return chunkHIYQ3M5V_cjs.recordButtonVariants; }
45530
45011
  });
45531
45012
  Object.defineProperty(exports, "FillerWordsModal", {
45532
45013
  enumerable: true,
@@ -45658,19 +45139,23 @@ Object.defineProperty(exports, "listViewItemVariants", {
45658
45139
  });
45659
45140
  Object.defineProperty(exports, "CodeBlock", {
45660
45141
  enumerable: true,
45661
- get: function () { return chunkNAH65KPK_cjs.CodeBlock; }
45142
+ get: function () { return chunkTOJ56HKQ_cjs.CodeBlock; }
45662
45143
  });
45663
45144
  Object.defineProperty(exports, "MarkdownRenderer", {
45664
45145
  enumerable: true,
45665
- get: function () { return chunkNAH65KPK_cjs.MarkdownRenderer; }
45146
+ get: function () { return chunkTOJ56HKQ_cjs.MarkdownRenderer; }
45666
45147
  });
45667
45148
  Object.defineProperty(exports, "highlightCode", {
45668
45149
  enumerable: true,
45669
- get: function () { return chunkNAH65KPK_cjs.highlightCode; }
45150
+ get: function () { return chunkTOJ56HKQ_cjs.highlightCode; }
45670
45151
  });
45671
45152
  Object.defineProperty(exports, "useMarkdown", {
45672
45153
  enumerable: true,
45673
- get: function () { return chunkNAH65KPK_cjs.useMarkdown; }
45154
+ get: function () { return chunkTOJ56HKQ_cjs.useMarkdown; }
45155
+ });
45156
+ Object.defineProperty(exports, "SurveyBlock", {
45157
+ enumerable: true,
45158
+ get: function () { return chunkIGDO62KR_cjs.SurveyBlock; }
45674
45159
  });
45675
45160
  Object.defineProperty(exports, "CsvBlock", {
45676
45161
  enumerable: true,
@@ -45684,10 +45169,6 @@ Object.defineProperty(exports, "MermaidBlock", {
45684
45169
  enumerable: true,
45685
45170
  get: function () { return chunk32ZCJOSR_cjs.MermaidBlock; }
45686
45171
  });
45687
- Object.defineProperty(exports, "SurveyBlock", {
45688
- enumerable: true,
45689
- get: function () { return chunkIGDO62KR_cjs.SurveyBlock; }
45690
- });
45691
45172
  Object.defineProperty(exports, "FenceBlock", {
45692
45173
  enumerable: true,
45693
45174
  get: function () { return chunkRIUQP2QS_cjs.FenceBlock; }
@@ -47646,6 +47127,7 @@ exports.HealthSurveillance = HealthSurveillance;
47646
47127
  exports.HelpSupportPanel = HelpSupportPanel;
47647
47128
  exports.HeroSearchBar = HeroSearchBar;
47648
47129
  exports.HeyOzwell = HeyOzwell;
47130
+ exports.HeyOzwellSelector = HeyOzwellSelector;
47649
47131
  exports.HeyOzwellToggle = HeyOzwellToggle;
47650
47132
  exports.HoursSummary = HoursSummary;
47651
47133
  exports.ImagingOrderEditor = ImagingOrderEditor;
@@ -47796,8 +47278,6 @@ exports.WebChartReportViewer = WebChartReportViewer;
47796
47278
  exports.WebcamModal = WebcamModal;
47797
47279
  exports.WebsiteInput = WebsiteInput;
47798
47280
  exports.WebsiteInputGroup = WebsiteInputGroup;
47799
- exports.askOzwell = askOzwell;
47800
- exports.askOzwellStream = askOzwellStream;
47801
47281
  exports.attributeSegments = attributeSegments;
47802
47282
  exports.calculateDateRange = calculateDateRange;
47803
47283
  exports.centroid = centroid;
@@ -47812,28 +47292,23 @@ exports.create24HourSchedule = create24HourSchedule;
47812
47292
  exports.createDefaultSchedule = createDefaultSchedule;
47813
47293
  exports.createWeekdaySchedule = createWeekdaySchedule;
47814
47294
  exports.currentAssertion = currentAssertion;
47815
- exports.decodeTo16kMono = decodeTo16kMono;
47816
47295
  exports.defaultCaseManagementHeaderLabels = defaultCaseManagementHeaderLabels;
47296
+ exports.defaultHeyOzwellSelectorLabels = defaultHeyOzwellSelectorLabels;
47817
47297
  exports.defaultOrderTabs = defaultOrderTabs;
47818
47298
  exports.defaultReconciliationIsEqual = defaultReconciliationIsEqual;
47819
- exports.endsWithDone = endsWithDone;
47820
47299
  exports.formatAddressLines = formatAddressLines;
47821
47300
  exports.formatAddressSingleLine = formatAddressSingleLine;
47822
47301
  exports.formatCityState = formatCityState;
47823
47302
  exports.formatCityStateZip = formatCityStateZip;
47824
47303
  exports.generateId = generateId;
47825
47304
  exports.getDefaultPresets = getDefaultPresets;
47826
- exports.getDictationLoad = getDictationLoad;
47827
47305
  exports.getExtendedPresets = getExtendedPresets;
47828
47306
  exports.getGoogleMapsSearchUrl = getGoogleMapsSearchUrl;
47829
47307
  exports.getGoogleMapsUrl = getGoogleMapsUrl;
47830
- exports.getOzwellConfig = getOzwellConfig;
47831
47308
  exports.getWakeWarm = getWakeWarm;
47832
47309
  exports.inferSpeakerRoles = inferSpeakerRoles;
47833
47310
  exports.isConditionCodetype = isConditionCodetype;
47834
- exports.isOzwellConfigured = isOzwellConfigured;
47835
47311
  exports.isValidUrl = isValidUrl;
47836
- exports.isWhisperLoaded = isWhisperLoaded;
47837
47312
  exports.labelClusters = labelClusters;
47838
47313
  exports.medicationToOrder = medicationToOrder;
47839
47314
  exports.mergeTurns = mergeTurns;
@@ -47844,16 +47319,7 @@ exports.orderToMedication = orderToMedication;
47844
47319
  exports.orderTypeForCodetype = orderTypeForCodetype;
47845
47320
  exports.parseTimeInput = parseTimeInput;
47846
47321
  exports.reconciliationPanelVariants = panelVariants;
47847
- exports.stripStopPhrase = stripStopPhrase;
47848
- exports.subscribeDictationLoad = subscribeDictationLoad;
47849
47322
  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
47323
  exports.useCamera = useCamera;
47858
47324
  exports.useCommandPalette = useCommandPalette;
47859
47325
  exports.useConnectionStatus = useConnectionStatus;
@@ -47870,9 +47336,7 @@ exports.useToast = useToast;
47870
47336
  exports.useVisitScribe = useVisitScribe;
47871
47337
  exports.useVoiceSetup = useVoiceSetup;
47872
47338
  exports.useWakeWord = useWakeWord;
47873
- exports.warmStopGate = warmStopGate;
47874
47339
  exports.warmWakeModels = warmWakeModels;
47875
- exports.warmWhisper = warmWhisper;
47876
47340
  exports.widgetVariants = widgetVariants;
47877
47341
  //# sourceMappingURL=index.cjs.map
47878
47342
  //# sourceMappingURL=index.cjs.map