@voicethere/client 0.7.29 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## 0.8.1 — 2026-09-01
6
+
7
+ ### Fixed
8
+
9
+ - **Mic-denied synthetic fallback** — When microphone permission is denied or unavailable, the synthetic outbound track now sends inaudible looping white noise instead of silence so WebRTC is not DTX-suppressed, the runner receives `ontrack`, and the voice conversation can start. The production embed API `createVoiceThereWidget({ apiBase, projectId, clientKey, mode })` (no `configUrl`) is unchanged.
10
+
11
+ ## 0.8.0 — 2026-08-31
12
+
13
+ ### Added
14
+
15
+ - **Embed presets and CDN config** — `createVoiceThereWidget` supports `preset`, `position`, `launcherLabel`, and `greeting`. Brand `theme` colors overlay preset defaults. `createVoiceThereWidgetAsync` loads appearance from `configUrl` (no credentials); inline options override fetched JSON. Published config schema `VoiceThereWidgetConfigV1` rejects secret-like keys (`clientKey`, `token`, etc.). Presets: `pill-dark`, `pill-light`, `rounded-card`, `minimal-bar`, `voice-orb`.
16
+
17
+ ### Fixed
18
+
19
+ - **Embed widget CDN config** — `createVoiceThereWidgetAsync` still mounts the launcher from inline options when `configUrl` is missing, unreachable, or returns invalid JSON; warns in the console instead of rejecting the promise.
20
+ - **Audio visualizer idle frame** — `attachAudioVisualizer().stop()` and ended MediaStream tracks now clear the canvas and draw a flat midline instead of freezing on the last analyser snapshot.
21
+
5
22
  ## 0.7.29 — 2026-08-28
6
23
 
7
24
  ### Added
@@ -9,5 +9,6 @@ export type AudioVisualizer = {
9
9
  stop: () => void;
10
10
  resume: () => void;
11
11
  };
12
+ export declare function drawIdleVisualizer(ctx: CanvasRenderingContext2D, canvas: HTMLCanvasElement, waveColor?: string): void;
12
13
  export declare function attachAudioVisualizer(options: AudioVisualizerOptions): AudioVisualizer;
13
14
  //# sourceMappingURL=audio-visualizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audio-visualizer.d.ts","sourceRoot":"","sources":["../../src/browser/audio-visualizer.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,sBAAsB,GAC9B,eAAe,CAwGjB"}
1
+ {"version":3,"file":"audio-visualizer.d.ts","sourceRoot":"","sources":["../../src/browser/audio-visualizer.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,iBAAiB,EACzB,SAAS,SAAY,GACpB,IAAI,CAUN;AAkBD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,sBAAsB,GAC9B,eAAe,CA+GjB"}
@@ -1,3 +1,27 @@
1
+ export function drawIdleVisualizer(ctx, canvas, waveColor = "#38bdf8") {
2
+ const width = canvas.width;
3
+ const height = canvas.height;
4
+ ctx.clearRect(0, 0, width, height);
5
+ ctx.lineWidth = 2;
6
+ ctx.strokeStyle = waveColor;
7
+ ctx.beginPath();
8
+ ctx.moveTo(0, height / 2);
9
+ ctx.lineTo(width, height / 2);
10
+ ctx.stroke();
11
+ }
12
+ function getTappedMediaStream(mediaStream, audioElement) {
13
+ if (mediaStream)
14
+ return mediaStream;
15
+ if (audioElement?.srcObject instanceof MediaStream) {
16
+ return audioElement.srcObject;
17
+ }
18
+ return null;
19
+ }
20
+ function hasLiveAudioTrack(stream) {
21
+ if (!stream)
22
+ return false;
23
+ return stream.getAudioTracks().some((track) => track.readyState === "live");
24
+ }
1
25
  export function attachAudioVisualizer(options) {
2
26
  const { canvas, audioElement, mediaStream, waveColor = "#38bdf8", barColor = "#818cf8", } = options;
3
27
  if (!audioElement && !mediaStream) {
@@ -45,6 +69,11 @@ export function attachAudioVisualizer(options) {
45
69
  if (stopped)
46
70
  return;
47
71
  rafId = requestAnimationFrame(draw);
72
+ const tappedStream = getTappedMediaStream(mediaStream, audioElement);
73
+ if (tappedStream !== null && !hasLiveAudioTrack(tappedStream)) {
74
+ drawIdleVisualizer(ctx, canvas, waveColor);
75
+ return;
76
+ }
48
77
  const width = canvas.width;
49
78
  const height = canvas.height;
50
79
  ctx.clearRect(0, 0, width, height);
@@ -78,6 +107,7 @@ export function attachAudioVisualizer(options) {
78
107
  stop: () => {
79
108
  stopped = true;
80
109
  cancelAnimationFrame(rafId);
110
+ drawIdleVisualizer(ctx, canvas, waveColor);
81
111
  void audioCtx.close();
82
112
  },
83
113
  resume: ensureRunning,
@@ -1 +1 @@
1
- {"version":3,"file":"audio-visualizer.js","sourceRoot":"","sources":["../../src/browser/audio-visualizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audio-visualizer.js","sourceRoot":"","sources":["../../src/browser/audio-visualizer.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
1
  /**
2
- * Browser microphone acquisition with silent synthetic fallback when GUM is denied
3
- * or unavailable. Used by voice sessions to keep an outbound audio track live.
2
+ * Browser microphone acquisition with low-level noise synthetic fallback when GUM
3
+ * is denied or unavailable. Used by voice sessions to keep an outbound audio track
4
+ * live so WebRTC sends RTP (silent gain=0 is DTX-suppressed and the runner never
5
+ * receives ontrack).
4
6
  */
5
7
  export type AudioInputState = "live" | "denied" | "unavailable" | "synthetic";
8
+ /** Peak gain for synthetic mic white noise — inaudible but enough to avoid DTX. */
9
+ export declare const SYNTHETIC_MIC_NOISE_GAIN = 0.004;
6
10
  export type AudioInputDevice = {
7
11
  deviceId: string;
8
12
  label: string;
@@ -21,16 +25,19 @@ export type AcquireAudioInputResult = {
21
25
  /** Stop every track on a stream (no-op for null). */
22
26
  export declare function stopMicStream(stream: MediaStream | null): void;
23
27
  /**
24
- * Silent outbound mic substitute — keeps WebRTC outbound audio negotiation alive
25
- * when real microphone access is denied or unavailable.
28
+ * Low-level noise outbound mic substitute — keeps WebRTC outbound audio negotiation
29
+ * alive when real microphone access is denied or unavailable. Emits looping white
30
+ * noise at {@link SYNTHETIC_MIC_NOISE_GAIN} so RTP is not DTX-suppressed and the
31
+ * runner receives ontrack and can start VoiceAgent.
26
32
  */
27
33
  export declare function createSyntheticMicStream(): {
28
34
  stream: MediaStream;
29
35
  dispose: () => void;
30
36
  };
31
37
  /**
32
- * Acquire microphone audio, falling back to a silent synthetic stream on deny or error.
33
- * Never throws solely because GUM failed — callers always receive a usable stream.
38
+ * Acquire microphone audio, falling back to a low-level noise synthetic stream on
39
+ * deny or error. Never throws solely because GUM failed — callers always receive a
40
+ * usable stream that produces outbound RTP for the runner.
34
41
  */
35
42
  export declare function acquireAudioInput(options?: AcquireAudioInputOptions): Promise<AcquireAudioInputResult>;
36
43
  /** List audio input devices (empty when `mediaDevices` is unavailable). */
@@ -1 +1 @@
1
- {"version":3,"file":"microphone.d.ts","sourceRoot":"","sources":["../../src/browser/microphone.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,CAAC;AAE9E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,YAAY,CAAC,EAAE,CACb,WAAW,EAAE,sBAAsB,KAChC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gFAAgF;IAChF,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AA2CF,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAQ9D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI;IAC1C,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAmDA;AAcD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CAsBlC;AAED,2EAA2E;AAC3E,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAczE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAG3E"}
1
+ {"version":3,"file":"microphone.d.ts","sourceRoot":"","sources":["../../src/browser/microphone.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,CAAC;AAE9E,mFAAmF;AACnF,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAK9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,sBAAsB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7E,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gFAAgF;IAChF,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AA2CF,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAQ9D;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI;IAC1C,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAmEA;AAcD;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CAsBlC;AAED,2EAA2E;AAC3E,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAczE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAG3E"}
@@ -1,7 +1,13 @@
1
1
  /**
2
- * Browser microphone acquisition with silent synthetic fallback when GUM is denied
3
- * or unavailable. Used by voice sessions to keep an outbound audio track live.
2
+ * Browser microphone acquisition with low-level noise synthetic fallback when GUM
3
+ * is denied or unavailable. Used by voice sessions to keep an outbound audio track
4
+ * live so WebRTC sends RTP (silent gain=0 is DTX-suppressed and the runner never
5
+ * receives ontrack).
4
6
  */
7
+ /** Peak gain for synthetic mic white noise — inaudible but enough to avoid DTX. */
8
+ export const SYNTHETIC_MIC_NOISE_GAIN = 0.004;
9
+ /** Duration of one loop of synthetic white noise (seconds). */
10
+ const SYNTHETIC_MIC_NOISE_BUFFER_SECONDS = 0.25;
5
11
  function buildAudioConstraints(deviceId) {
6
12
  if (deviceId) {
7
13
  return { deviceId: { ideal: deviceId } };
@@ -47,8 +53,10 @@ export function stopMicStream(stream) {
47
53
  });
48
54
  }
49
55
  /**
50
- * Silent outbound mic substitute — keeps WebRTC outbound audio negotiation alive
51
- * when real microphone access is denied or unavailable.
56
+ * Low-level noise outbound mic substitute — keeps WebRTC outbound audio negotiation
57
+ * alive when real microphone access is denied or unavailable. Emits looping white
58
+ * noise at {@link SYNTHETIC_MIC_NOISE_GAIN} so RTP is not DTX-suppressed and the
59
+ * runner receives ontrack and can start VoiceAgent.
52
60
  */
53
61
  export function createSyntheticMicStream() {
54
62
  const AudioCtx = typeof globalThis.AudioContext !== "undefined"
@@ -77,19 +85,27 @@ export function createSyntheticMicStream() {
77
85
  };
78
86
  }
79
87
  const ctx = new AudioCtx();
88
+ void ctx.resume();
80
89
  const dest = ctx.createMediaStreamDestination();
81
90
  const gain = ctx.createGain();
82
- gain.gain.value = 0;
83
- const osc = ctx.createOscillator();
84
- osc.connect(gain);
91
+ gain.gain.value = SYNTHETIC_MIC_NOISE_GAIN;
92
+ const buffer = ctx.createBuffer(1, Math.ceil(ctx.sampleRate * SYNTHETIC_MIC_NOISE_BUFFER_SECONDS), ctx.sampleRate);
93
+ const channel = buffer.getChannelData(0);
94
+ for (let i = 0; i < channel.length; i++) {
95
+ channel[i] = Math.random() * 2 - 1;
96
+ }
97
+ const source = ctx.createBufferSource();
98
+ source.buffer = buffer;
99
+ source.loop = true;
100
+ source.connect(gain);
85
101
  gain.connect(dest);
86
- osc.start();
102
+ source.start();
87
103
  const stream = dest.stream;
88
104
  return {
89
105
  stream,
90
106
  dispose: () => {
91
107
  try {
92
- osc.stop();
108
+ source.stop();
93
109
  }
94
110
  catch {
95
111
  /* ignore */
@@ -109,8 +125,9 @@ function syntheticAcquireResult(state) {
109
125
  };
110
126
  }
111
127
  /**
112
- * Acquire microphone audio, falling back to a silent synthetic stream on deny or error.
113
- * Never throws solely because GUM failed — callers always receive a usable stream.
128
+ * Acquire microphone audio, falling back to a low-level noise synthetic stream on
129
+ * deny or error. Never throws solely because GUM failed — callers always receive a
130
+ * usable stream that produces outbound RTP for the runner.
114
131
  */
115
132
  export async function acquireAudioInput(options = {}) {
116
133
  const getUserMedia = options.getUserMedia;
@@ -1 +1 @@
1
- {"version":3,"file":"microphone.js","sourceRoot":"","sources":["../../src/browser/microphone.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"microphone.js","sourceRoot":"","sources":["../../src/browser/microphone.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,mFAAmF;AACnF,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAE9C,+DAA+D;AAC/D,MAAM,kCAAkC,GAAG,IAAI,CAAC;AAoBhD,SAAS,qBAAqB,CAC5B,QAAwB;IAExB,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;QAClC,IACE,KAAK,CAAC,IAAI,KAAK,iBAAiB;YAChC,KAAK,CAAC,IAAI,KAAK,uBAAuB,EACtC,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IACE,KAAK,CAAC,IAAI,KAAK,eAAe;YAC9B,KAAK,CAAC,IAAI,KAAK,sBAAsB;YACrC,KAAK,CAAC,IAAI,KAAK,sBAAsB,EACrC,CAAC;YACD,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,IAAI,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAmB;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,QAAQ,EAAE,QAAQ,CAAC;IAC9B,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,aAAa,CAAC,MAA0B;IACtD,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACpC,IAAI,CAAC;YACH,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IAKtC,MAAM,QAAQ,GACZ,OAAO,UAAU,CAAC,YAAY,KAAK,WAAW;QAC5C,CAAC,CAAC,UAAU,CAAC,YAAY;QACzB,CAAC,CAAE,UAA2D;aACzD,kBAAkB,CAAC;IAE5B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,UAAU,GAA0B,MAAM,CAAC;QAC/C,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,OAAO;YACb,IAAI,UAAU;gBACZ,OAAO,UAAU,CAAC;YACpB,CAAC;YACD,IAAI,EAAE,GAAG,EAAE;gBACT,UAAU,GAAG,OAAO,CAAC;YACvB,CAAC;YACD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;SACJ,CAAC;QACtB,MAAM,MAAM,GAAG;YACb,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC;YAC7B,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC;SACV,CAAC;QACjB,OAAO;YACL,MAAM;YACN,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE;SAC5B,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC3B,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;IAElB,MAAM,IAAI,GAAG,GAAG,CAAC,4BAA4B,EAAE,CAAC;IAChD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,wBAAwB,CAAC;IAE3C,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAC7B,CAAC,EACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,kCAAkC,CAAC,EAC9D,GAAG,CAAC,UAAU,CACf,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC;IACxC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,OAAO;QACL,MAAM;QACN,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;YACD,aAAa,CAAC,MAAM,CAAC,CAAC;YACtB,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAuE;IAEvE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,wBAAwB,EAAE,CAAC;IACvD,OAAO;QACL,MAAM;QACN,KAAK;QACL,QAAQ,EAAE,IAAI;QACd,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAoC,EAAE;IAEtC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;YAChC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC9C,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO;YACL,MAAM;YACN,KAAK,EAAE,MAAM;YACb,QAAQ;YACR,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;SACrC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;QAC/C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAChE,OAAO,OAAO;SACX,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC;SAChD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAC5B,CAAC,CAAC,MAAM,CAAC,KAAK;YACd,CAAC,CAAC,cAAc,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,SAAS,EAAE;KAC/D,CAAC,CAAC,CAAC;AACR,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAA0B;IAC1D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { BrowserSessionMode } from "../browser/browser-session.js";
2
+ export type VoiceThereWidgetTheme = {
3
+ primary?: string;
4
+ background?: string;
5
+ text?: string;
6
+ };
7
+ export declare const WIDGET_PRESET_IDS: readonly ["pill-dark", "pill-light", "rounded-card", "minimal-bar", "voice-orb"];
8
+ export type WidgetPresetId = (typeof WIDGET_PRESET_IDS)[number];
9
+ export declare function isWidgetPresetId(value: string): value is WidgetPresetId;
10
+ export declare const WIDGET_CONFIG_VERSION: 1;
11
+ export type WidgetPosition = "bottom-right" | "bottom-left";
12
+ export type WidgetConfigMode = "chat" | "voice";
13
+ export type VoiceThereWidgetConfigV1 = {
14
+ v: typeof WIDGET_CONFIG_VERSION;
15
+ publicId?: string;
16
+ projectId?: string;
17
+ apiBase?: string;
18
+ revision?: number;
19
+ preset?: WidgetPresetId;
20
+ theme?: VoiceThereWidgetTheme;
21
+ launcherLabel?: string;
22
+ greeting?: string;
23
+ position?: WidgetPosition;
24
+ mode?: WidgetConfigMode;
25
+ };
26
+ export declare class WidgetConfigError extends Error {
27
+ constructor(message: string);
28
+ }
29
+ export declare function parseVoiceThereWidgetConfigV1(input: unknown): VoiceThereWidgetConfigV1;
30
+ export declare function parseVoiceThereWidgetConfigJson(json: string): VoiceThereWidgetConfigV1;
31
+ export declare function widgetConfigModeToSessionMode(mode: WidgetConfigMode | undefined): BrowserSessionMode | undefined;
32
+ export declare function fetchVoiceThereWidgetConfig(configUrl: string, fetchImpl?: typeof fetch): Promise<VoiceThereWidgetConfigV1>;
33
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/embed/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,iBAAiB,kFAMpB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,cAAc,CAEvE;AAED,eAAO,MAAM,qBAAqB,EAAG,CAAU,CAAC;AAEhD,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,aAAa,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhD,MAAM,MAAM,wBAAwB,GAAG;IACrC,CAAC,EAAE,OAAO,qBAAqB,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB,CAAC;AAqCF,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AA4HD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,GACb,wBAAwB,CAiC1B;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,GACX,wBAAwB,CAQ1B;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,gBAAgB,GAAG,SAAS,GACjC,kBAAkB,GAAG,SAAS,CAKhC;AAED,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CAmBnC"}
@@ -0,0 +1,204 @@
1
+ import { BrowserSessionModeType } from "../browser/browser-session.js";
2
+ export const WIDGET_PRESET_IDS = [
3
+ "pill-dark",
4
+ "pill-light",
5
+ "rounded-card",
6
+ "minimal-bar",
7
+ "voice-orb",
8
+ ];
9
+ export function isWidgetPresetId(value) {
10
+ return WIDGET_PRESET_IDS.includes(value);
11
+ }
12
+ export const WIDGET_CONFIG_VERSION = 1;
13
+ const ALLOWED_TOP_LEVEL_KEYS = new Set([
14
+ "v",
15
+ "publicId",
16
+ "projectId",
17
+ "apiBase",
18
+ "revision",
19
+ "preset",
20
+ "theme",
21
+ "launcherLabel",
22
+ "greeting",
23
+ "position",
24
+ "mode",
25
+ ]);
26
+ const ALLOWED_THEME_KEYS = new Set(["primary", "background", "text"]);
27
+ const SECRET_LIKE_KEYS = new Set([
28
+ "clientkey",
29
+ "authorization",
30
+ "token",
31
+ "apikey",
32
+ "secret",
33
+ "bearertoken",
34
+ "accesstoken",
35
+ "refreshtoken",
36
+ ]);
37
+ const MAX_PROJECT_ID_LEN = 128;
38
+ const MAX_API_BASE_LEN = 512;
39
+ const MAX_PUBLIC_ID_LEN = 64;
40
+ const MAX_LAUNCHER_LABEL_LEN = 64;
41
+ const MAX_GREETING_LEN = 500;
42
+ const HEX_COLOR_RE = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;
43
+ export class WidgetConfigError extends Error {
44
+ constructor(message) {
45
+ super(message);
46
+ this.name = "WidgetConfigError";
47
+ }
48
+ }
49
+ function isPlainObject(value) {
50
+ return typeof value === "object" && value !== null && !Array.isArray(value);
51
+ }
52
+ function assertNoSecretLikeKeys(obj, path = "") {
53
+ for (const key of Object.keys(obj)) {
54
+ const normalized = key.toLowerCase();
55
+ if (SECRET_LIKE_KEYS.has(normalized)) {
56
+ throw new WidgetConfigError(`Forbidden config key${path}: ${key} (secrets must not appear in CDN config)`);
57
+ }
58
+ }
59
+ }
60
+ function rejectUnknownKeys(obj, allowed, path) {
61
+ for (const key of Object.keys(obj)) {
62
+ if (!allowed.has(key)) {
63
+ throw new WidgetConfigError(`Unknown config key${path}: ${key}`);
64
+ }
65
+ }
66
+ }
67
+ function parseString(value, field, maxLen) {
68
+ if (typeof value !== "string") {
69
+ throw new WidgetConfigError(`${field} must be a string`);
70
+ }
71
+ const trimmed = value.trim();
72
+ if (!trimmed) {
73
+ throw new WidgetConfigError(`${field} must not be empty`);
74
+ }
75
+ if (trimmed.length > maxLen) {
76
+ throw new WidgetConfigError(`${field} exceeds max length ${maxLen}`);
77
+ }
78
+ return trimmed;
79
+ }
80
+ function parseOptionalString(value, field, maxLen) {
81
+ if (value === undefined)
82
+ return undefined;
83
+ return parseString(value, field, maxLen);
84
+ }
85
+ function parseHexColor(value, field) {
86
+ const color = parseString(value, field, 7);
87
+ if (!HEX_COLOR_RE.test(color)) {
88
+ throw new WidgetConfigError(`${field} must be a hex color (#RGB or #RRGGBB)`);
89
+ }
90
+ return color;
91
+ }
92
+ function parseTheme(value) {
93
+ if (value === undefined)
94
+ return undefined;
95
+ if (!isPlainObject(value)) {
96
+ throw new WidgetConfigError("theme must be an object");
97
+ }
98
+ assertNoSecretLikeKeys(value, ".theme");
99
+ rejectUnknownKeys(value, ALLOWED_THEME_KEYS, ".theme");
100
+ const theme = {};
101
+ if (value.primary !== undefined) {
102
+ theme.primary = parseHexColor(value.primary, "theme.primary");
103
+ }
104
+ if (value.background !== undefined) {
105
+ theme.background = parseHexColor(value.background, "theme.background");
106
+ }
107
+ if (value.text !== undefined) {
108
+ theme.text = parseHexColor(value.text, "theme.text");
109
+ }
110
+ return theme;
111
+ }
112
+ function parsePosition(value) {
113
+ if (value === undefined)
114
+ return undefined;
115
+ if (value !== "bottom-right" && value !== "bottom-left") {
116
+ throw new WidgetConfigError('position must be "bottom-right" or "bottom-left"');
117
+ }
118
+ return value;
119
+ }
120
+ function parseMode(value) {
121
+ if (value === undefined)
122
+ return undefined;
123
+ if (value !== "chat" && value !== "voice") {
124
+ throw new WidgetConfigError('mode must be "chat" or "voice"');
125
+ }
126
+ return value;
127
+ }
128
+ function parsePreset(value) {
129
+ if (value === undefined)
130
+ return undefined;
131
+ const id = parseString(value, "preset", 64);
132
+ if (!isWidgetPresetId(id)) {
133
+ throw new WidgetConfigError(`preset must be one of: ${WIDGET_PRESET_IDS.join(", ")}`);
134
+ }
135
+ return id;
136
+ }
137
+ function parseRevision(value) {
138
+ if (value === undefined)
139
+ return undefined;
140
+ if (typeof value !== "number" || !Number.isInteger(value) || value < 0) {
141
+ throw new WidgetConfigError("revision must be a non-negative integer");
142
+ }
143
+ return value;
144
+ }
145
+ export function parseVoiceThereWidgetConfigV1(input) {
146
+ if (!isPlainObject(input)) {
147
+ throw new WidgetConfigError("Config must be a JSON object");
148
+ }
149
+ assertNoSecretLikeKeys(input);
150
+ rejectUnknownKeys(input, ALLOWED_TOP_LEVEL_KEYS, "");
151
+ if (input.v !== WIDGET_CONFIG_VERSION) {
152
+ throw new WidgetConfigError(`Config v must be ${WIDGET_CONFIG_VERSION}`);
153
+ }
154
+ return {
155
+ v: WIDGET_CONFIG_VERSION,
156
+ publicId: parseOptionalString(input.publicId, "publicId", MAX_PUBLIC_ID_LEN),
157
+ projectId: parseOptionalString(input.projectId, "projectId", MAX_PROJECT_ID_LEN),
158
+ apiBase: parseOptionalString(input.apiBase, "apiBase", MAX_API_BASE_LEN),
159
+ revision: parseRevision(input.revision),
160
+ preset: parsePreset(input.preset),
161
+ theme: parseTheme(input.theme),
162
+ launcherLabel: parseOptionalString(input.launcherLabel, "launcherLabel", MAX_LAUNCHER_LABEL_LEN),
163
+ greeting: parseOptionalString(input.greeting, "greeting", MAX_GREETING_LEN),
164
+ position: parsePosition(input.position),
165
+ mode: parseMode(input.mode),
166
+ };
167
+ }
168
+ export function parseVoiceThereWidgetConfigJson(json) {
169
+ let parsed;
170
+ try {
171
+ parsed = JSON.parse(json);
172
+ }
173
+ catch {
174
+ throw new WidgetConfigError("Config JSON is invalid");
175
+ }
176
+ return parseVoiceThereWidgetConfigV1(parsed);
177
+ }
178
+ export function widgetConfigModeToSessionMode(mode) {
179
+ if (mode === undefined)
180
+ return undefined;
181
+ return mode === "voice"
182
+ ? BrowserSessionModeType.Voice
183
+ : BrowserSessionModeType.Chat;
184
+ }
185
+ export async function fetchVoiceThereWidgetConfig(configUrl, fetchImpl = fetch) {
186
+ const url = parseString(configUrl, "configUrl", MAX_API_BASE_LEN);
187
+ let response;
188
+ try {
189
+ response = await fetchImpl(url, {
190
+ method: "GET",
191
+ credentials: "omit",
192
+ cache: "no-store",
193
+ });
194
+ }
195
+ catch {
196
+ throw new WidgetConfigError(`Failed to fetch config from ${url}`);
197
+ }
198
+ if (!response.ok) {
199
+ throw new WidgetConfigError(`Config fetch failed (${response.status}) from ${url}`);
200
+ }
201
+ const text = await response.text();
202
+ return parseVoiceThereWidgetConfigJson(text);
203
+ }
204
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/embed/config.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,26 @@
1
1
  import { type BrowserSessionMode } from "../browser/browser-session.js";
2
- export type VoiceThereWidgetTheme = {
3
- primary?: string;
4
- background?: string;
5
- text?: string;
6
- };
2
+ import { type VoiceThereWidgetConfigV1, type VoiceThereWidgetTheme, type WidgetPosition, type WidgetPresetId } from "./config.js";
3
+ export type { VoiceThereWidgetConfigV1, VoiceThereWidgetTheme, WidgetPosition, WidgetPresetId, };
4
+ export { WidgetConfigError, fetchVoiceThereWidgetConfig, parseVoiceThereWidgetConfigJson, parseVoiceThereWidgetConfigV1, WIDGET_CONFIG_VERSION, WIDGET_PRESET_IDS, } from "./config.js";
5
+ export { applyPreset, getWidgetPreset } from "./presets.js";
7
6
  export type VoiceThereWidgetOptions = {
8
- projectId: string;
9
- apiBase: string;
10
7
  clientKey: string;
8
+ projectId?: string;
9
+ apiBase?: string;
11
10
  mode?: BrowserSessionMode;
12
11
  theme?: VoiceThereWidgetTheme;
13
12
  mount?: HTMLElement;
13
+ preset?: WidgetPresetId;
14
+ configUrl?: string;
15
+ launcherLabel?: string;
16
+ greeting?: string;
17
+ position?: WidgetPosition;
14
18
  };
15
19
  export type VoiceThereWidget = {
16
20
  open: () => void;
17
21
  close: () => void;
18
22
  destroy: () => void;
19
23
  };
24
+ export declare function createVoiceThereWidgetAsync(options: VoiceThereWidgetOptions): Promise<VoiceThereWidget>;
20
25
  export declare function createVoiceThereWidget(options: VoiceThereWidgetOptions): VoiceThereWidget;
21
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embed/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,kBAAkB,EAExB,MAAM,+BAA+B,CAAC;AAGvC,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAmCF,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,gBAAgB,CA4SlB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embed/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,kBAAkB,EAExB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAIL,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAOrB,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,cAAc,EACd,cAAc,GACf,CAAC;AACF,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,+BAA+B,EAC/B,6BAA6B,EAC7B,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAmDF,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CAiB3B;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,gBAAgB,CAOlB"}
@@ -1,4 +1,55 @@
1
1
  import { BrowserSessionModeType, connectBrowserSession, createDebugConsole, startSession, unlockAudioPlayback, } from "../browser/browser-session.js";
2
+ import { fetchVoiceThereWidgetConfig, WidgetConfigError, widgetConfigModeToSessionMode, } from "./config.js";
3
+ import { applyPreset, applyWidgetPosition, } from "./presets.js";
4
+ export { WidgetConfigError, fetchVoiceThereWidgetConfig, parseVoiceThereWidgetConfigJson, parseVoiceThereWidgetConfigV1, WIDGET_CONFIG_VERSION, WIDGET_PRESET_IDS, } from "./config.js";
5
+ export { applyPreset, getWidgetPreset } from "./presets.js";
6
+ function mergeWidgetOptions(inline, remote) {
7
+ const projectId = inline.projectId ?? remote?.projectId;
8
+ const apiBase = inline.apiBase ?? remote?.apiBase;
9
+ if (!projectId) {
10
+ throw new Error("VoiceThere widget requires projectId (inline or from configUrl)");
11
+ }
12
+ if (!apiBase) {
13
+ throw new Error("VoiceThere widget requires apiBase (inline or from configUrl)");
14
+ }
15
+ const mode = inline.mode ??
16
+ widgetConfigModeToSessionMode(remote?.mode) ??
17
+ BrowserSessionModeType.Chat;
18
+ return {
19
+ projectId,
20
+ apiBase,
21
+ clientKey: inline.clientKey,
22
+ mode,
23
+ theme: inline.theme ?? remote?.theme,
24
+ mount: inline.mount,
25
+ preset: inline.preset ?? remote?.preset ?? "pill-dark",
26
+ launcherLabel: inline.launcherLabel ?? remote?.launcherLabel ?? "Chat",
27
+ greeting: inline.greeting ?? remote?.greeting,
28
+ position: inline.position ?? remote?.position ?? "bottom-right",
29
+ };
30
+ }
31
+ export async function createVoiceThereWidgetAsync(options) {
32
+ let remote;
33
+ if (options.configUrl) {
34
+ try {
35
+ remote = await fetchVoiceThereWidgetConfig(options.configUrl);
36
+ }
37
+ catch (error) {
38
+ const detail = error instanceof WidgetConfigError || error instanceof Error
39
+ ? error.message
40
+ : String(error);
41
+ console.warn(`VoiceThere widget: CDN config unavailable (${options.configUrl}): ${detail}`);
42
+ remote = undefined;
43
+ }
44
+ }
45
+ return buildVoiceThereWidget(mergeWidgetOptions(options, remote));
46
+ }
47
+ export function createVoiceThereWidget(options) {
48
+ if (options.configUrl) {
49
+ throw new Error("configUrl requires createVoiceThereWidgetAsync(); fetch CDN config before mounting");
50
+ }
51
+ return buildVoiceThereWidget(mergeWidgetOptions(options));
52
+ }
2
53
  function formatWebRtcStatus(status) {
3
54
  if (status.ready)
4
55
  return "Connected";
@@ -28,34 +79,36 @@ function isVoiceSessionMode(mode) {
28
79
  return (mode === BrowserSessionModeType.Voice ||
29
80
  mode === BrowserSessionModeType.VoiceAndData);
30
81
  }
31
- export function createVoiceThereWidget(options) {
82
+ function applyAccentTheme(elements, theme) {
83
+ for (const el of elements) {
84
+ el.style.background = theme.primary;
85
+ el.style.color = theme.text;
86
+ }
87
+ }
88
+ function buildVoiceThereWidget(options) {
32
89
  const mount = options.mount ?? document.body;
33
- const mode = options.mode ?? BrowserSessionModeType.Chat;
34
- const theme = options.theme ?? {};
90
+ const mode = options.mode;
35
91
  const root = document.createElement("div");
36
92
  root.style.position = "fixed";
37
- root.style.bottom = "16px";
38
- root.style.right = "16px";
39
93
  root.style.zIndex = "99999";
40
94
  root.style.fontFamily = "system-ui, sans-serif";
41
95
  const launcher = document.createElement("button");
42
- launcher.textContent = "Chat";
43
- launcher.style.background = theme.primary ?? "#06b6d4";
44
- launcher.style.color = theme.text ?? "#0f172a";
96
+ launcher.textContent = options.launcherLabel;
45
97
  launcher.style.border = "none";
46
- launcher.style.borderRadius = "999px";
47
- launcher.style.padding = "12px 16px";
48
98
  launcher.style.cursor = "pointer";
49
99
  const panel = document.createElement("div");
50
100
  panel.style.display = "none";
51
- panel.style.width = "320px";
52
- panel.style.height = "420px";
53
- panel.style.background = theme.background ?? "#0b1220";
54
- panel.style.color = theme.text ?? "#e2e8f0";
55
- panel.style.border = "1px solid rgba(255,255,255,0.1)";
56
- panel.style.borderRadius = "12px";
57
- panel.style.padding = "12px";
58
- panel.style.boxShadow = "0 8px 30px rgba(0,0,0,0.35)";
101
+ panel.style.boxSizing = "border-box";
102
+ const theme = applyPreset({ root, launcher, panel }, options.preset, options.theme);
103
+ applyWidgetPosition(root, options.position, options.preset);
104
+ const greeting = document.createElement("div");
105
+ greeting.setAttribute("data-voicethere-greeting", "");
106
+ greeting.style.display = options.greeting ? "block" : "none";
107
+ greeting.style.fontSize = "13px";
108
+ greeting.style.lineHeight = "1.4";
109
+ greeting.style.marginBottom = "8px";
110
+ greeting.style.color = theme.text;
111
+ greeting.textContent = options.greeting ?? "";
59
112
  const status = document.createElement("div");
60
113
  status.style.fontSize = "12px";
61
114
  status.style.marginBottom = "8px";
@@ -110,8 +163,6 @@ export function createVoiceThereWidget(options) {
110
163
  micRequestBtn.style.padding = "6px 10px";
111
164
  micRequestBtn.style.borderRadius = "6px";
112
165
  micRequestBtn.style.border = "none";
113
- micRequestBtn.style.background = theme.primary ?? "#06b6d4";
114
- micRequestBtn.style.color = theme.text ?? "#0f172a";
115
166
  micRequestBtn.style.cursor = "pointer";
116
167
  micRequestBtn.style.fontSize = "11px";
117
168
  micWarning.append(micRequestBtn);
@@ -135,11 +186,10 @@ export function createVoiceThereWidget(options) {
135
186
  playbackEnableBtn.style.padding = "6px 10px";
136
187
  playbackEnableBtn.style.borderRadius = "6px";
137
188
  playbackEnableBtn.style.border = "none";
138
- playbackEnableBtn.style.background = theme.primary ?? "#06b6d4";
139
- playbackEnableBtn.style.color = theme.text ?? "#0f172a";
140
189
  playbackEnableBtn.style.cursor = "pointer";
141
190
  playbackEnableBtn.style.fontSize = "11px";
142
191
  playbackWarning.append(playbackEnableBtn);
192
+ applyAccentTheme([micRequestBtn, playbackEnableBtn], theme);
143
193
  const hideSessionNotices = () => {
144
194
  micWarning.style.display = "none";
145
195
  playbackWarning.style.display = "none";
@@ -169,7 +219,7 @@ export function createVoiceThereWidget(options) {
169
219
  input.style.borderRadius = "8px";
170
220
  input.style.border = "1px solid rgba(255,255,255,0.15)";
171
221
  input.style.background = "#111827";
172
- input.style.color = "#e2e8f0";
222
+ input.style.color = theme.text;
173
223
  const connectBtn = document.createElement("button");
174
224
  connectBtn.textContent = "Connect";
175
225
  connectBtn.style.marginTop = "8px";
@@ -177,10 +227,9 @@ export function createVoiceThereWidget(options) {
177
227
  connectBtn.style.padding = "8px";
178
228
  connectBtn.style.borderRadius = "8px";
179
229
  connectBtn.style.border = "none";
180
- connectBtn.style.background = theme.primary ?? "#06b6d4";
181
- connectBtn.style.color = theme.text ?? "#0f172a";
182
230
  connectBtn.style.cursor = "pointer";
183
- panel.append(status, micWarning, playbackWarning, log, input, connectBtn);
231
+ applyAccentTheme([connectBtn], theme);
232
+ panel.append(greeting, status, micWarning, playbackWarning, log, input, connectBtn);
184
233
  root.append(launcher, panel, inboundAudio);
185
234
  mount.append(root);
186
235
  let session = null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embed/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,GAGpB,MAAM,+BAA+B,CAAC;AAwBvC,SAAS,kBAAkB,CAAC,MAA8B;IACxD,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,WAAW,CAAC;IACrC,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,oBAAoB,CAAC;QAC9B,KAAK,aAAa;YAChB,OAAO,qBAAqB,CAAC;QAC/B,KAAK,YAAY;YACf,OAAO,oBAAoB,CAAC;QAC9B,KAAK,gBAAgB;YACnB,OAAO,2BAA2B,CAAC;QACrC,KAAK,mBAAmB;YACtB,OAAO,wBAAwB,CAAC;QAClC,KAAK,QAAQ;YACX,OAAO,0BAA0B,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,cAAc,CAAC;QACxB;YACE,OAAO,aAAa,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAsB;IAC/C,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,WAAW,CAAC;AAChF,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAwB;IAClD,OAAO,CACL,IAAI,KAAK,sBAAsB,CAAC,KAAK;QACrC,IAAI,KAAK,sBAAsB,CAAC,YAAY,CAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAgC;IAEhC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC;IACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAElC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,uBAAuB,CAAC;IAEhD,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC;IACvD,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC;IAC/C,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IAElC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5C,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC7B,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;IAC5B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IAC7B,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC;IACvD,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC;IAC5C,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,iCAAiC,CAAC;IACvD,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC;IAClC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC7B,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,6BAA6B,CAAC;IAEtD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC/B,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IAClC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC9B,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;IACnC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;IACzB,MAAM,CAAC,WAAW,GAAG,cAAc,CAAC;IAEpC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrD,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IACrC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;IACnC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACpC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,mCAAmC,CAAC;IACjE,aAAa,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC;IAC/C,aAAa,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IACzC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,sCAAsC,CAAC;IACvE,aAAa,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAElD,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAEzC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,8BAA8B,CAAC,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,EAAE,GAAG,8BAA8B,CAAC;QAC1C,KAAK,CAAC,WAAW;YACf,kEAAkE,CAAC;QACrE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,OAAO,GAAG,KAAK,EAAE,EAAE;QACzD,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;QAC9B,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;IAClE,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACrD,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAC7C,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAEpC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACjD,UAAU,CAAC,YAAY,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;IAC3D,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAClC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;IACnC,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;IACpC,UAAU,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IACtC,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IACjC,UAAU,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IACtC,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,0BAA0B,CAAC;IACzD,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,oCAAoC,CAAC;IAC/D,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IACnC,UAAU,CAAC,WAAW;QACpB,gOAAgO,CAAC;IAEnO,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvD,aAAa,CAAC,YAAY,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;IAC9D,aAAa,CAAC,IAAI,GAAG,QAAQ,CAAC;IAC9B,aAAa,CAAC,WAAW,GAAG,oBAAoB,CAAC;IACjD,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IACtC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;IACzC,aAAa,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IACzC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACpC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC;IAC5D,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC;IACpD,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IACvC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;IACtC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAEjC,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACtD,eAAe,CAAC,YAAY,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC;IACrE,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IACvC,eAAe,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;IACxC,eAAe,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;IACzC,eAAe,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IAC3C,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IACtC,eAAe,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IAC3C,eAAe,CAAC,KAAK,CAAC,UAAU,GAAG,0BAA0B,CAAC;IAC9D,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,oCAAoC,CAAC;IACpE,eAAe,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IACxC,eAAe,CAAC,WAAW,GAAG,sBAAsB,CAAC;IAErD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3D,iBAAiB,CAAC,YAAY,CAAC,iCAAiC,EAAE,EAAE,CAAC,CAAC;IACtE,iBAAiB,CAAC,IAAI,GAAG,QAAQ,CAAC;IAClC,iBAAiB,CAAC,WAAW,GAAG,cAAc,CAAC;IAC/C,iBAAiB,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IAC1C,iBAAiB,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;IAC7C,iBAAiB,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IAC7C,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACxC,iBAAiB,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC;IAChE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC;IACxD,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IAC3C,iBAAiB,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC1C,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE1C,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAClC,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IACzC,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,IAAI,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAClC,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC9C,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5E,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;IACrB,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC5B,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,kBAAkB,CAAC;IAC1C,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IAC1B,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IAC/B,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IAC3B,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;IAElC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,WAAW,GAAG,iBAAiB,CAAC;IACtC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;IAC3B,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IAC9B,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IAC5B,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IACjC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,kCAAkC,CAAC;IACxD,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;IACnC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IAE9B,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpD,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC;IACnC,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IACnC,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;IAChC,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IACjC,UAAU,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IACtC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACjC,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC;IACzD,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC;IACjD,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IAEpC,KAAK,CAAC,MAAM,CACV,MAAM,EACN,UAAU,EACV,eAAe,EACf,GAAG,EACH,KAAK,EACL,UAAU,CACX,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAC3C,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEnB,IAAI,OAAO,GAA6D,IAAI,CAAC;IAE7E,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;IAEpD,aAAa,CAAC,OAAO,GAAG,GAAG,EAAE;QAC3B,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,MAAM,OAAO,CAAC,uBAAuB,EAAE,CAAC;YACxC,gBAAgB,EAAE,CAAC;YACnB,SAAS,EAAE,CAAC;QACd,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,CAAC;IAEF,iBAAiB,CAAC,OAAO,GAAG,GAAG,EAAE;QAC/B,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAC/C,IAAI,EAAE,EAAE,CAAC;gBACP,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACzC,CAAC;YACD,SAAS,EAAE,CAAC;QACd,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,CAAC;IAEF,UAAU,CAAC,OAAO,GAAG,GAAG,EAAE;QACxB,KAAK,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACvC,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,UAAU,EAAE,CAAC;gBACrB,OAAO,GAAG,IAAI,CAAC;gBACf,kBAAkB,EAAE,CAAC;gBACrB,gBAAgB,CAAC,cAAc,CAAC,CAAC;gBACjC,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC;gBACnC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;gBACjC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,SAAS,EAAE,EAAE;gBACzD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACd,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBAC3B,MAAM,QAAQ,GACZ,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpE,gBAAgB,CAAC,uBAAuB,QAAQ,GAAG,EAAE,IAAI,CAAC,CAAC;oBAC7D,CAAC;yBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;wBACjC,gBAAgB,CAAC,CAAC,CAAC,eAAe,IAAI,qBAAqB,CAAC,CAAC;oBAC/D,CAAC;gBACH,CAAC;gBACD,KAAK;aACN,CAAC,CAAC;YAEH,SAAS,EAAE,CAAC;YAEZ,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAChB,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAClC,OAAO;YACT,CAAC;YAED,OAAO,GAAG,MAAM,qBAAqB,CAAC;gBACpC,IAAI;gBACJ,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,YAAY,EAAE,YAAY;gBAC1B,YAAY,EAAE,KAAK;gBACnB,kBAAkB,EAAE,CAAC,gBAAgB,EAAE,EAAE;oBACvC,gBAAgB,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACzD,CAAC;gBACD,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE;oBAC1B,gBAAgB,CAAC,iBAAiB,OAAO,IAAI,EAAE,IAAI,CAAC,CAAC;gBACvD,CAAC;gBACD,eAAe,EAAE,CAAC,aAAa,EAAE,EAAE;oBACjC,eAAe,CAAC,KAAK,CAAC,OAAO;wBAC3B,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;gBACnD,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACjC,gBAAgB,CAAC,kBAAkB,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;YACpE,gBAAgB,EAAE,CAAC;YACnB,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC;YACtC,UAAU,CAAC,KAAK;gBACd,6EAA6E,CAAC;YAChF,SAAS,EAAE,CAAC;QACd,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,CAAC;IAEF,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1C,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,OAAO;YAAE,OAAO;QAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACjB,SAAS,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,GAAG,GAAG,EAAE;QACtB,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1E,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,GAAG,EAAE;YACT,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,EAAE,UAAU,EAAE,CAAC;YACtB,YAAY,CAAC,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embed/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { VoiceThereWidgetTheme, WidgetPresetId } from "./config.js";
2
+ export type WidgetPresetLayout = {
3
+ launcherBorderRadius: string;
4
+ launcherPadding: string;
5
+ launcherMinWidth: string;
6
+ launcherMinHeight: string;
7
+ panelBorderRadius: string;
8
+ panelPadding: string;
9
+ panelWidth: string;
10
+ panelHeight: string;
11
+ panelBorder: string;
12
+ panelBoxShadow: string;
13
+ defaultTheme: Required<VoiceThereWidgetTheme>;
14
+ /** Distinct marker for tests — preset-specific layout token. */
15
+ layoutToken: string;
16
+ };
17
+ export declare function getWidgetPreset(id: WidgetPresetId): WidgetPresetLayout;
18
+ export type ApplyPresetTarget = {
19
+ root: HTMLElement;
20
+ launcher: HTMLButtonElement;
21
+ panel: HTMLDivElement;
22
+ };
23
+ export type ResolvedWidgetTheme = Required<VoiceThereWidgetTheme>;
24
+ export declare function resolveWidgetTheme(presetId: WidgetPresetId, themeOverride?: VoiceThereWidgetTheme): ResolvedWidgetTheme;
25
+ export declare function applyPreset(target: ApplyPresetTarget, presetId: WidgetPresetId, themeOverride?: VoiceThereWidgetTheme): ResolvedWidgetTheme;
26
+ export declare function applyWidgetPosition(root: HTMLElement, position: "bottom-right" | "bottom-left", presetId: WidgetPresetId): void;
27
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/embed/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEzE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAC9C,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AA+FF,wBAAgB,eAAe,CAAC,EAAE,EAAE,cAAc,GAAG,kBAAkB,CAEtE;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,cAAc,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AAElE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,EACxB,aAAa,CAAC,EAAE,qBAAqB,GACpC,mBAAmB,CAOrB;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,cAAc,EACxB,aAAa,CAAC,EAAE,qBAAqB,GACpC,mBAAmB,CAgCrB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,cAAc,GAAG,aAAa,EACxC,QAAQ,EAAE,cAAc,GACvB,IAAI,CAkBN"}
@@ -0,0 +1,151 @@
1
+ const PRESETS = {
2
+ "pill-dark": {
3
+ launcherBorderRadius: "999px",
4
+ launcherPadding: "12px 16px",
5
+ launcherMinWidth: "",
6
+ launcherMinHeight: "",
7
+ panelBorderRadius: "12px",
8
+ panelPadding: "12px",
9
+ panelWidth: "320px",
10
+ panelHeight: "420px",
11
+ panelBorder: "1px solid rgba(255,255,255,0.1)",
12
+ panelBoxShadow: "0 8px 30px rgba(0,0,0,0.35)",
13
+ defaultTheme: {
14
+ primary: "#06b6d4",
15
+ background: "#0b1220",
16
+ text: "#e2e8f0",
17
+ },
18
+ layoutToken: "pill-dark",
19
+ },
20
+ "pill-light": {
21
+ launcherBorderRadius: "999px",
22
+ launcherPadding: "12px 16px",
23
+ launcherMinWidth: "",
24
+ launcherMinHeight: "",
25
+ panelBorderRadius: "12px",
26
+ panelPadding: "12px",
27
+ panelWidth: "320px",
28
+ panelHeight: "420px",
29
+ panelBorder: "1px solid rgba(15,23,42,0.12)",
30
+ panelBoxShadow: "0 8px 24px rgba(15,23,42,0.12)",
31
+ defaultTheme: {
32
+ primary: "#0891b2",
33
+ background: "#f8fafc",
34
+ text: "#0f172a",
35
+ },
36
+ layoutToken: "pill-light",
37
+ },
38
+ "rounded-card": {
39
+ launcherBorderRadius: "20px",
40
+ launcherPadding: "14px 20px",
41
+ launcherMinWidth: "",
42
+ launcherMinHeight: "",
43
+ panelBorderRadius: "20px",
44
+ panelPadding: "16px",
45
+ panelWidth: "340px",
46
+ panelHeight: "440px",
47
+ panelBorder: "1px solid rgba(255,255,255,0.12)",
48
+ panelBoxShadow: "0 12px 40px rgba(0,0,0,0.4)",
49
+ defaultTheme: {
50
+ primary: "#06b6d4",
51
+ background: "#0b1220",
52
+ text: "#e2e8f0",
53
+ },
54
+ layoutToken: "rounded-card",
55
+ },
56
+ "minimal-bar": {
57
+ launcherBorderRadius: "8px",
58
+ launcherPadding: "10px 14px",
59
+ launcherMinWidth: "100%",
60
+ launcherMinHeight: "",
61
+ panelBorderRadius: "0",
62
+ panelPadding: "12px 16px",
63
+ panelWidth: "100%",
64
+ panelHeight: "360px",
65
+ panelBorder: "1px solid rgba(255,255,255,0.08)",
66
+ panelBoxShadow: "0 -4px 24px rgba(0,0,0,0.25)",
67
+ defaultTheme: {
68
+ primary: "#06b6d4",
69
+ background: "#0b1220",
70
+ text: "#e2e8f0",
71
+ },
72
+ layoutToken: "minimal-bar",
73
+ },
74
+ "voice-orb": {
75
+ launcherBorderRadius: "50%",
76
+ launcherPadding: "0",
77
+ launcherMinWidth: "56px",
78
+ launcherMinHeight: "56px",
79
+ panelBorderRadius: "16px",
80
+ panelPadding: "12px",
81
+ panelWidth: "320px",
82
+ panelHeight: "420px",
83
+ panelBorder: "1px solid rgba(255,255,255,0.1)",
84
+ panelBoxShadow: "0 8px 30px rgba(0,0,0,0.35)",
85
+ defaultTheme: {
86
+ primary: "#06b6d4",
87
+ background: "#0b1220",
88
+ text: "#e2e8f0",
89
+ },
90
+ layoutToken: "voice-orb",
91
+ },
92
+ };
93
+ export function getWidgetPreset(id) {
94
+ return PRESETS[id];
95
+ }
96
+ export function resolveWidgetTheme(presetId, themeOverride) {
97
+ const preset = getWidgetPreset(presetId);
98
+ return {
99
+ primary: themeOverride?.primary ?? preset.defaultTheme.primary,
100
+ background: themeOverride?.background ?? preset.defaultTheme.background,
101
+ text: themeOverride?.text ?? preset.defaultTheme.text,
102
+ };
103
+ }
104
+ export function applyPreset(target, presetId, themeOverride) {
105
+ const preset = getWidgetPreset(presetId);
106
+ const theme = resolveWidgetTheme(presetId, themeOverride);
107
+ const { root, launcher, panel } = target;
108
+ root.dataset.voicetherePreset = preset.layoutToken;
109
+ launcher.style.borderRadius = preset.launcherBorderRadius;
110
+ launcher.style.padding = preset.launcherPadding;
111
+ launcher.style.minWidth = preset.launcherMinWidth;
112
+ launcher.style.minHeight = preset.launcherMinHeight;
113
+ launcher.style.background = theme.primary;
114
+ launcher.style.color = theme.text;
115
+ panel.style.borderRadius = preset.panelBorderRadius;
116
+ panel.style.padding = preset.panelPadding;
117
+ panel.style.width = preset.panelWidth;
118
+ panel.style.height = preset.panelHeight;
119
+ panel.style.border = preset.panelBorder;
120
+ panel.style.boxShadow = preset.panelBoxShadow;
121
+ panel.style.background = theme.background;
122
+ panel.style.color = theme.text;
123
+ if (presetId === "minimal-bar") {
124
+ root.style.left = "0";
125
+ root.style.right = "0";
126
+ root.style.width = "100%";
127
+ }
128
+ else {
129
+ root.style.width = "";
130
+ }
131
+ return theme;
132
+ }
133
+ export function applyWidgetPosition(root, position, presetId) {
134
+ root.style.bottom = "16px";
135
+ root.dataset.voicetherePosition = position;
136
+ if (presetId === "minimal-bar") {
137
+ root.style.left = "0";
138
+ root.style.right = "0";
139
+ root.style.bottom = "0";
140
+ return;
141
+ }
142
+ if (position === "bottom-left") {
143
+ root.style.left = "16px";
144
+ root.style.right = "";
145
+ }
146
+ else {
147
+ root.style.right = "16px";
148
+ root.style.left = "";
149
+ }
150
+ }
151
+ //# sourceMappingURL=presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/embed/presets.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voicethere/client",
3
- "version": "0.7.29",
3
+ "version": "0.8.1",
4
4
  "description": "VoiceThere browser/Node client — cloud gateway, browser voice/chat, embed widget",
5
5
  "type": "module",
6
6
  "exports": {