@leia-org/luke-client 0.1.0 → 0.1.2

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.
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import type { UseLukeReturn, LukeProviderProps } from '../types.js';
3
- export declare function LukeProvider({ serverUrl, authToken, autoConnect, children, }: LukeProviderProps): React.ReactElement;
3
+ export declare function LukeProvider({ serverUrl, authToken, autoConnect, persistence, persistenceKey, children, }: LukeProviderProps): React.ReactElement;
4
4
  export declare function useLukeContext(): UseLukeReturn;
5
5
  //# sourceMappingURL=LukeProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LukeProvider.d.ts","sourceRoot":"","sources":["../../src/components/LukeProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMpE,wBAAgB,YAAY,CAAC,EACzB,SAAS,EACT,SAAS,EACT,WAAmB,EACnB,QAAQ,GACX,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAYxC;AAGD,wBAAgB,cAAc,IAAI,aAAa,CAQ9C"}
1
+ {"version":3,"file":"LukeProvider.d.ts","sourceRoot":"","sources":["../../src/components/LukeProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMpE,wBAAgB,YAAY,CAAC,EACzB,SAAS,EACT,SAAS,EACT,WAAmB,EACnB,WAAW,EACX,cAAc,EACd,QAAQ,GACX,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAcxC;AAGD,wBAAgB,cAAc,IAAI,aAAa,CAQ9C"}
@@ -6,11 +6,13 @@ import { useLuke } from '../hooks/useLuke.js';
6
6
  // Context for Luke state
7
7
  const LukeContext = createContext(null);
8
8
  // Provider component wraps children with Luke context
9
- export function LukeProvider({ serverUrl, authToken, autoConnect = false, children, }) {
9
+ export function LukeProvider({ serverUrl, authToken, autoConnect = false, persistence, persistenceKey, children, }) {
10
10
  const luke = useLuke({
11
11
  serverUrl,
12
12
  authToken,
13
13
  autoConnect,
14
+ persistence,
15
+ persistenceKey,
14
16
  });
15
17
  return (_jsx(LukeContext.Provider, { value: luke, children: children }));
16
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LukeProvider.js","sourceRoot":"","sources":["../../src/components/LukeProvider.tsx"],"names":[],"mappings":";AAAA,yBAAyB;AACzB,6DAA6D;AAE7D,OAAc,EAAE,aAAa,EAAE,UAAU,EAAW,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,yBAAyB;AACzB,MAAM,WAAW,GAAG,aAAa,CAAuB,IAAI,CAAC,CAAC;AAE9D,sDAAsD;AACtD,MAAM,UAAU,YAAY,CAAC,EACzB,SAAS,EACT,SAAS,EACT,WAAW,GAAG,KAAK,EACnB,QAAQ,GACQ;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC;QACjB,SAAS;QACT,SAAS;QACT,WAAW;KACd,CAAC,CAAC;IAEH,OAAO,CACH,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YAC5B,QAAQ,GACU,CAC1B,CAAC;AACN,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,cAAc;IAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAExC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"LukeProvider.js","sourceRoot":"","sources":["../../src/components/LukeProvider.tsx"],"names":[],"mappings":";AAAA,yBAAyB;AACzB,6DAA6D;AAE7D,OAAc,EAAE,aAAa,EAAE,UAAU,EAAW,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,yBAAyB;AACzB,MAAM,WAAW,GAAG,aAAa,CAAuB,IAAI,CAAC,CAAC;AAE9D,sDAAsD;AACtD,MAAM,UAAU,YAAY,CAAC,EACzB,SAAS,EACT,SAAS,EACT,WAAW,GAAG,KAAK,EACnB,WAAW,EACX,cAAc,EACd,QAAQ,GACQ;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC;QACjB,SAAS;QACT,SAAS;QACT,WAAW;QACX,WAAW;QACX,cAAc;KACjB,CAAC,CAAC;IAEH,OAAO,CACH,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YAC5B,QAAQ,GACU,CAC1B,CAAC;AACN,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,cAAc;IAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAExC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLuke.d.ts","sourceRoot":"","sources":["../../src/hooks/useLuke.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,aAAa,EACb,aAAa,EAOhB,MAAM,aAAa,CAAC;AAErB,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAya5D"}
1
+ {"version":3,"file":"useLuke.d.ts","sourceRoot":"","sources":["../../src/hooks/useLuke.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,aAAa,EACb,aAAa,EAOhB,MAAM,aAAa,CAAC;AAErB,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAmiB5D"}
@@ -16,16 +16,35 @@ export function useLuke(config) {
16
16
  const [isRecording, setIsRecording] = useState(false);
17
17
  const [audioLevel, setAudioLevel] = useState(0);
18
18
  // Transcription state
19
- const [transcription, setTranscription] = useState([]);
19
+ const [transcription, setTranscription] = useState(() => {
20
+ // Only load from localStorage if explicitly enabled (client-side persistence)
21
+ if (config.persistence) {
22
+ const key = config.persistenceKey || 'luke_transcription';
23
+ try {
24
+ const stored = sessionStorage.getItem(key);
25
+ return stored ? JSON.parse(stored) : [];
26
+ }
27
+ catch {
28
+ return [];
29
+ }
30
+ }
31
+ return [];
32
+ });
20
33
  // Refs for WebSocket and audio
21
34
  const wsRef = useRef(null);
22
35
  const audioContextRef = useRef(null);
23
36
  const mediaStreamRef = useRef(null);
24
37
  const workletNodeRef = useRef(null);
38
+ const workerRef = useRef(null);
25
39
  const isRecordingRef = useRef(false);
40
+ // Reconnection state
41
+ const isIntentionalDisconnect = useRef(false);
42
+ const reconnectAttempts = useRef(0);
43
+ const reconnectTimeout = useRef(undefined);
26
44
  // Playback queue for received audio
27
45
  const playbackQueueRef = useRef([]);
28
46
  const isPlayingRef = useRef(false);
47
+ const nextPlayTimeRef = useRef(0);
29
48
  // Build WebSocket URL with auth token
30
49
  const buildWsUrl = useCallback(() => {
31
50
  const url = new URL(config.serverUrl);
@@ -120,8 +139,20 @@ export function useLuke(config) {
120
139
  // Model finished speaking
121
140
  break;
122
141
  case 'interrupted':
123
- // Clear playback queue on interruption
142
+ // Clear playback queue and reset scheduling on interruption
124
143
  playbackQueueRef.current = [];
144
+ nextPlayTimeRef.current = 0;
145
+ isPlayingRef.current = false;
146
+ break;
147
+ case 'history':
148
+ // Always accept history from server if sent
149
+ if (message.messages) {
150
+ setTranscription((prev) => {
151
+ // Replace current state with server history
152
+ // (Ideally we might want to merge, but usually history is authoritative on connect)
153
+ return message.messages;
154
+ });
155
+ }
125
156
  break;
126
157
  case 'error':
127
158
  const err = new Error(`${message.code}: ${message.message}`);
@@ -144,6 +175,11 @@ export function useLuke(config) {
144
175
  const connect = useCallback(() => {
145
176
  if (wsRef.current)
146
177
  return;
178
+ isIntentionalDisconnect.current = false;
179
+ if (reconnectTimeout.current) {
180
+ clearTimeout(reconnectTimeout.current);
181
+ reconnectTimeout.current = undefined;
182
+ }
147
183
  setConnectionState('connecting');
148
184
  setError(null);
149
185
  const ws = new WebSocket(buildWsUrl());
@@ -151,6 +187,11 @@ export function useLuke(config) {
151
187
  ws.binaryType = 'arraybuffer';
152
188
  ws.onopen = () => {
153
189
  // Wait for handshake message
190
+ reconnectAttempts.current = 0;
191
+ if (reconnectTimeout.current) {
192
+ clearTimeout(reconnectTimeout.current);
193
+ reconnectTimeout.current = undefined;
194
+ }
154
195
  };
155
196
  ws.onmessage = handleServerMessage;
156
197
  ws.onerror = () => {
@@ -162,6 +203,26 @@ export function useLuke(config) {
162
203
  setConnectionState('disconnected');
163
204
  setSessionId(null);
164
205
  config.onDisconnect?.();
206
+ // Handle auto-reconnection
207
+ if (!isIntentionalDisconnect.current && (config.reconnect ?? true)) {
208
+ const maxAttempts = config.maxReconnectAttempts ?? 5;
209
+ const baseInterval = config.reconnectInterval ?? 1000;
210
+ if (reconnectAttempts.current < maxAttempts) {
211
+ reconnectAttempts.current++;
212
+ const delay = baseInterval * Math.pow(2, reconnectAttempts.current - 1);
213
+ console.log(`[Luke] Connection lost. Reconnecting in ${delay}ms (Attempt ${reconnectAttempts.current}/${maxAttempts})`);
214
+ setConnectionState('connecting');
215
+ reconnectTimeout.current = setTimeout(() => {
216
+ connect();
217
+ }, delay);
218
+ }
219
+ else {
220
+ const err = new Error(`Connection lost. Max reconnection attempts (${maxAttempts}) reached.`);
221
+ setError(err);
222
+ config.onError?.(err);
223
+ setConnectionState('error');
224
+ }
225
+ }
165
226
  };
166
227
  }, [buildWsUrl, handleServerMessage, config]);
167
228
  // Audio encoding helper (inline, no worker needed)
@@ -193,7 +254,9 @@ export function useLuke(config) {
193
254
  }, []);
194
255
  // Audio decoding helper
195
256
  const decodeAudio = useCallback((pcmData) => {
196
- const pcm = new Int16Array(pcmData);
257
+ // Ensure even byte length for Int16Array (truncate trailing byte if odd)
258
+ const byteLength = pcmData.byteLength & ~1;
259
+ const pcm = new Int16Array(pcmData, 0, byteLength / 2);
197
260
  const float32 = new Float32Array(pcm.length);
198
261
  for (let i = 0; i < pcm.length; i++) {
199
262
  float32[i] = pcm[i] / (pcm[i] < 0 ? 0x8000 : 0x7fff);
@@ -211,35 +274,6 @@ export function useLuke(config) {
211
274
  }
212
275
  return resampled;
213
276
  }, []);
214
- // Disconnect from server
215
- const disconnect = useCallback(() => {
216
- stopRecording();
217
- wsRef.current?.close();
218
- wsRef.current = null;
219
- audioContextRef.current?.close();
220
- audioContextRef.current = null;
221
- }, []);
222
- // Select provider
223
- const selectProvider = useCallback((providerId, voiceId) => {
224
- const provider = providers.find((p) => p.id === providerId);
225
- if (!provider)
226
- return;
227
- setSelectedProvider(provider);
228
- const voice = voiceId ? provider.voices.find((v) => v.id === voiceId) : provider.voices[0];
229
- setSelectedVoice(voice ?? null);
230
- sendMessage({ type: 'select_provider', providerId, voiceId: voice?.id });
231
- }, [providers, sendMessage]);
232
- // Select voice
233
- const selectVoice = useCallback((voiceId) => {
234
- if (!selectedProvider)
235
- return;
236
- const voice = selectedProvider.voices.find((v) => v.id === voiceId);
237
- if (voice) {
238
- setSelectedVoice(voice);
239
- // Re-select provider with new voice
240
- sendMessage({ type: 'select_provider', providerId: selectedProvider.id, voiceId });
241
- }
242
- }, [selectedProvider, sendMessage]);
243
277
  // Start recording audio
244
278
  const startRecording = useCallback(async () => {
245
279
  if (isRecording)
@@ -257,8 +291,23 @@ export function useLuke(config) {
257
291
  });
258
292
  mediaStreamRef.current = stream;
259
293
  // Create audio context
260
- const ctx = new AudioContext({ sampleRate: 48000 });
294
+ // Use standard sample rate, but we'll detect what the browser actually gives us
295
+ const ctx = new (window.AudioContext || window.webkitAudioContext)({
296
+ sampleRate: 48000,
297
+ latencyHint: 'interactive',
298
+ });
261
299
  audioContextRef.current = ctx;
300
+ // Initialize worker
301
+ const worker = new Worker(new URL('../worker/audio.worker.js', import.meta.url), {
302
+ type: 'module',
303
+ });
304
+ workerRef.current = worker;
305
+ // Configure worker with REAL sample rate and target rate
306
+ worker.postMessage({
307
+ type: 'configure',
308
+ sampleRate: sampleRate || 16000, // Target rate
309
+ sourceSampleRate: ctx.sampleRate, // Real browser rate
310
+ });
262
311
  // Load audio worklet
263
312
  await ctx.audioWorklet.addModule(URL.createObjectURL(new Blob([AUDIO_WORKLET_CODE], { type: 'application/javascript' })));
264
313
  // Create worklet node
@@ -285,7 +334,17 @@ export function useLuke(config) {
285
334
  setError(error);
286
335
  config.onError?.(error);
287
336
  }
288
- }, [isRecording, config]);
337
+ }, [isRecording, config, encodeAudio, sampleRate]);
338
+ // Reconfigure worker when sampleRate changes (e.g. provider switch)
339
+ useEffect(() => {
340
+ if (workerRef.current && sampleRate) {
341
+ workerRef.current.postMessage({
342
+ type: 'configure',
343
+ sampleRate: sampleRate,
344
+ sourceSampleRate: audioContextRef.current?.sampleRate
345
+ });
346
+ }
347
+ }, [sampleRate]);
289
348
  // Stop recording
290
349
  const stopRecording = useCallback(() => {
291
350
  if (!isRecording)
@@ -306,32 +365,83 @@ export function useLuke(config) {
306
365
  setIsRecording(false);
307
366
  setAudioLevel(0);
308
367
  }, [isRecording]);
309
- // Play queued audio
310
- const playNextAudio = useCallback(() => {
311
- if (isPlayingRef.current || playbackQueueRef.current.length === 0)
368
+ // Disconnect from server
369
+ const disconnect = useCallback(() => {
370
+ isIntentionalDisconnect.current = true;
371
+ if (reconnectTimeout.current) {
372
+ clearTimeout(reconnectTimeout.current);
373
+ reconnectTimeout.current = undefined;
374
+ }
375
+ stopRecording();
376
+ wsRef.current?.close();
377
+ wsRef.current = null;
378
+ audioContextRef.current?.close();
379
+ audioContextRef.current = null;
380
+ }, [stopRecording]);
381
+ // Select provider
382
+ const selectProvider = useCallback((providerId, voiceId) => {
383
+ const provider = providers.find((p) => p.id === providerId);
384
+ if (!provider)
312
385
  return;
313
- if (!audioContextRef.current)
386
+ setSelectedProvider(provider);
387
+ const voice = voiceId ? provider.voices.find((v) => v.id === voiceId) : provider.voices[0];
388
+ setSelectedVoice(voice ?? null);
389
+ sendMessage({ type: 'select_provider', providerId, voiceId: voice?.id });
390
+ }, [providers, sendMessage]);
391
+ // Select voice
392
+ const selectVoice = useCallback((voiceId) => {
393
+ if (!selectedProvider)
394
+ return;
395
+ const voice = selectedProvider.voices.find((v) => v.id === voiceId);
396
+ if (voice) {
397
+ setSelectedVoice(voice);
398
+ // Re-select provider with new voice
399
+ sendMessage({ type: 'select_provider', providerId: selectedProvider.id, voiceId });
400
+ }
401
+ }, [selectedProvider, sendMessage]);
402
+ // Play queued audio with precise scheduling (no gaps between chunks)
403
+ const playNextAudio = useCallback(() => {
404
+ if (!audioContextRef.current || playbackQueueRef.current.length === 0)
314
405
  return;
315
406
  isPlayingRef.current = true;
316
- const samples = playbackQueueRef.current.shift();
317
- // Create new Float32Array with explicit ArrayBuffer type
318
- const audioData = new Float32Array(samples.length);
319
- audioData.set(samples);
320
- const buffer = audioContextRef.current.createBuffer(1, audioData.length, 48000);
321
- buffer.copyToChannel(audioData, 0);
322
- const source = audioContextRef.current.createBufferSource();
323
- source.buffer = buffer;
324
- source.connect(audioContextRef.current.destination);
325
- source.onended = () => {
326
- isPlayingRef.current = false;
327
- playNextAudio();
328
- };
329
- source.start();
407
+ const ctx = audioContextRef.current;
408
+ // Schedule all queued chunks back-to-back
409
+ while (playbackQueueRef.current.length > 0) {
410
+ const samples = playbackQueueRef.current.shift();
411
+ const audioData = new Float32Array(samples.length);
412
+ audioData.set(samples);
413
+ const buffer = ctx.createBuffer(1, audioData.length, 48000);
414
+ buffer.copyToChannel(audioData, 0);
415
+ const source = ctx.createBufferSource();
416
+ source.buffer = buffer;
417
+ source.connect(ctx.destination);
418
+ // Schedule to start exactly when the previous chunk ends
419
+ const startTime = Math.max(ctx.currentTime, nextPlayTimeRef.current);
420
+ source.start(startTime);
421
+ nextPlayTimeRef.current = startTime + buffer.duration;
422
+ // Track when the last scheduled chunk finishes
423
+ source.onended = () => {
424
+ if (playbackQueueRef.current.length === 0) {
425
+ isPlayingRef.current = false;
426
+ }
427
+ };
428
+ }
330
429
  }, []);
331
430
  // Clear transcription
332
431
  const clearTranscription = useCallback(() => {
333
432
  setTranscription([]);
334
- }, []);
433
+ if (config.persistence) {
434
+ const key = config.persistenceKey || 'luke_transcription';
435
+ sessionStorage.removeItem(key);
436
+ }
437
+ }, [config.persistence, config.persistenceKey]);
438
+ // Persist to sessionStorage if enabled
439
+ useEffect(() => {
440
+ if (config.persistence) {
441
+ const key = config.persistenceKey || 'luke_transcription';
442
+ sessionStorage.setItem(key, JSON.stringify(transcription));
443
+ }
444
+ }, [transcription, config.persistence, config.persistenceKey]);
335
445
  // Auto-connect if configured
336
446
  useEffect(() => {
337
447
  if (config.autoConnect) {
@@ -1 +1 @@
1
- {"version":3,"file":"useLuke.js","sourceRoot":"","sources":["../../src/hooks/useLuke.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useLuke.js","sourceRoot":"","sources":["../../src/hooks/useLuke.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- // @luke/client - React client for realtime AI voice communication
1
+ // @leia-org/luke-client - React client for realtime AI voice communication
2
2
  // Main entry point and public exports
3
3
  // Components
4
4
  export { LukeProvider, useLukeContext } from './components/LukeProvider.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,sCAAsC;AAEtC,aAAa;AACb,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,QAAQ;AACR,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAgB7C,KAAK;AACL,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,sCAAsC;AAEtC,aAAa;AACb,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,QAAQ;AACR,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAgB7C,KAAK;AACL,cAAc,eAAe,CAAC"}
package/dist/types.d.ts CHANGED
@@ -23,6 +23,11 @@ export interface UseLukeConfig {
23
23
  onError?: (error: Error) => void;
24
24
  onConnect?: () => void;
25
25
  onDisconnect?: () => void;
26
+ reconnect?: boolean;
27
+ reconnectInterval?: number;
28
+ maxReconnectAttempts?: number;
29
+ persistence?: boolean;
30
+ persistenceKey?: string;
26
31
  }
27
32
  export interface UseLukeReturn {
28
33
  connectionState: ConnectionState;
@@ -49,6 +54,8 @@ export interface LukeProviderProps {
49
54
  serverUrl: string;
50
55
  authToken?: string;
51
56
  autoConnect?: boolean;
57
+ persistence?: boolean;
58
+ persistenceKey?: string;
52
59
  children: React.ReactNode;
53
60
  }
54
61
  export type ServerMessage = {
@@ -59,6 +66,9 @@ export type ServerMessage = {
59
66
  type: 'session_ready';
60
67
  sessionId: string;
61
68
  sampleRate: number;
69
+ } | {
70
+ type: 'history';
71
+ messages: TranscriptionMessage[];
62
72
  } | {
63
73
  type: 'transcription';
64
74
  role: 'user' | 'assistant';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,4 +1,4 @@
1
- // Types for @luke/client
1
+ // Types for @leia-org/luke-client
2
2
  // Shared types between client components and hooks
3
3
  export {};
4
4
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,mDAAmD"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,mDAAmD"}
@@ -3,14 +3,17 @@
3
3
  import { floatTo16BitPCM, pcm16ToFloat32, resampleAudio, calculateAudioLevel } from './audio-utils.js';
4
4
  // Target sample rate (set by server based on provider)
5
5
  let targetSampleRate = 16000;
6
- // Browser audio context typically runs at 44100 or 48000 Hz
7
- const BROWSER_SAMPLE_RATE = 48000;
6
+ // Browser audio context sample rate (configured by main thread)
7
+ let sourceSampleRate = 48000;
8
8
  // Handle incoming messages
9
9
  self.onmessage = (event) => {
10
10
  const message = event.data;
11
11
  switch (message.type) {
12
12
  case 'configure':
13
13
  targetSampleRate = message.sampleRate;
14
+ if (message.sourceSampleRate) {
15
+ sourceSampleRate = message.sourceSampleRate;
16
+ }
14
17
  break;
15
18
  case 'encode':
16
19
  encodeAudio(message.samples);
@@ -22,8 +25,8 @@ self.onmessage = (event) => {
22
25
  };
23
26
  // Encode Float32 audio from browser to PCM for server
24
27
  function encodeAudio(samples) {
25
- // Resample to target rate
26
- const resampled = resampleAudio(samples, BROWSER_SAMPLE_RATE, targetSampleRate);
28
+ // Resample to target rate using actual source rate
29
+ const resampled = resampleAudio(samples, sourceSampleRate, targetSampleRate);
27
30
  // Calculate audio level before encoding
28
31
  const level = calculateAudioLevel(resampled);
29
32
  // Convert to 16-bit PCM
@@ -46,7 +49,7 @@ function decodeAudio(pcmData) {
46
49
  // Convert to Float32
47
50
  const float32 = pcm16ToFloat32(pcm);
48
51
  // Resample from server rate (24kHz output) to browser rate
49
- const resampled = resampleAudio(float32, 24000, BROWSER_SAMPLE_RATE);
52
+ const resampled = resampleAudio(float32, 24000, sourceSampleRate);
50
53
  // Create copy of samples to ensure clean transfer
51
54
  const result = new Float32Array(resampled.length);
52
55
  result.set(resampled);
@@ -1 +1 @@
1
- {"version":3,"file":"audio.worker.js","sourceRoot":"","sources":["../../src/worker/audio.worker.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,sEAAsE;AAEtE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAiCvG,uDAAuD;AACvD,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,4DAA4D;AAC5D,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAKlC,2BAA2B;AAC3B,IAAI,CAAC,SAAS,GAAG,CAAC,KAAkC,EAAE,EAAE;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;IAE3B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,WAAW;YACZ,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;YACtC,MAAM;QAEV,KAAK,QAAQ;YACT,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC7B,MAAM;QAEV,KAAK,QAAQ;YACT,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC7B,MAAM;IACd,CAAC;AACL,CAAC,CAAC;AAEF,sDAAsD;AACtD,SAAS,WAAW,CAAC,OAAqB;IACtC,0BAA0B;IAC1B,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;IAEhF,wCAAwC;IACxC,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAE7C,wBAAwB;IACxB,MAAM,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAEvC,sDAAsD;IACtD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEhC,2BAA2B;IAC3B,MAAM,QAAQ,GAAoB;QAC9B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,MAAM;QACf,KAAK;KACR,CAAC;IACF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,iDAAiD;AACjD,SAAS,WAAW,CAAC,OAAoB;IACrC,4BAA4B;IAC5B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpC,qBAAqB;IACrB,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAEpC,2DAA2D;IAC3D,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;IAErE,kDAAkD;IAClD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEtB,2BAA2B;IAC3B,MAAM,QAAQ,GAAoB;QAC9B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,MAAM;KAClB,CAAC;IACF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"audio.worker.js","sourceRoot":"","sources":["../../src/worker/audio.worker.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,sEAAsE;AAEtE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAkCvG,uDAAuD;AACvD,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,gEAAgE;AAChE,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAK7B,2BAA2B;AAC3B,IAAI,CAAC,SAAS,GAAG,CAAC,KAAkC,EAAE,EAAE;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;IAE3B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,WAAW;YACZ,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;YACtC,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC3B,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAChD,CAAC;YACD,MAAM;QAEV,KAAK,QAAQ;YACT,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC7B,MAAM;QAEV,KAAK,QAAQ;YACT,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC7B,MAAM;IACd,CAAC;AACL,CAAC,CAAC;AAEF,sDAAsD;AACtD,SAAS,WAAW,CAAC,OAAqB;IACtC,mDAAmD;IACnD,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAE7E,wCAAwC;IACxC,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAE7C,wBAAwB;IACxB,MAAM,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAEvC,sDAAsD;IACtD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEhC,2BAA2B;IAC3B,MAAM,QAAQ,GAAoB;QAC9B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,MAAM;QACf,KAAK;KACR,CAAC;IACF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,iDAAiD;AACjD,SAAS,WAAW,CAAC,OAAoB;IACrC,4BAA4B;IAC5B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpC,qBAAqB;IACrB,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAEpC,2DAA2D;IAC3D,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAElE,kDAAkD;IAClD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEtB,2BAA2B;IAC3B,MAAM,QAAQ,GAAoB;QAC9B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,MAAM;KAClB,CAAC;IACF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.0",
2
+ "version": "0.1.2",
3
3
  "name": "@leia-org/luke-client",
4
4
  "publishConfig": {
5
5
  "access": "public"
@@ -15,6 +15,13 @@
15
15
  },
16
16
  "./style.css": "./dist/Luke.css"
17
17
  },
18
+ "scripts": {
19
+ "build": "tsc",
20
+ "dev": "tsc --watch",
21
+ "test": "vitest run",
22
+ "lint": "tsc --noEmit",
23
+ "postbuild": "cp src/ui/Luke.css dist/Luke.css"
24
+ },
18
25
  "devDependencies": {
19
26
  "@types/react": "^19.0.2",
20
27
  "typescript": "^5.7.2",
@@ -26,12 +33,5 @@
26
33
  "files": [
27
34
  "dist"
28
35
  ],
29
- "license": "MIT",
30
- "scripts": {
31
- "build": "tsc",
32
- "dev": "tsc --watch",
33
- "test": "vitest run",
34
- "lint": "tsc --noEmit",
35
- "postbuild": "cp src/ui/Luke.css dist/Luke.css"
36
- }
37
- }
36
+ "license": "MIT"
37
+ }