@voicethere/client 0.7.29 → 0.8.0

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,17 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## 0.8.0 — 2026-08-31
6
+
7
+ ### Added
8
+
9
+ - **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`.
10
+
11
+ ### Fixed
12
+
13
+ - **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.
14
+ - **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.
15
+
5
16
  ## 0.7.29 — 2026-08-28
6
17
 
7
18
  ### 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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"}
@@ -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":"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"}
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.0",
4
4
  "description": "VoiceThere browser/Node client — cloud gateway, browser voice/chat, embed widget",
5
5
  "type": "module",
6
6
  "exports": {