ugly-app 0.1.283 → 0.1.285

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,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.283";
1
+ export declare const CLI_VERSION = "0.1.285";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.283";
2
+ export const CLI_VERSION = "0.1.285";
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSTT.d.ts","sourceRoot":"","sources":["../../../src/client/audio/useSTT.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,wBAAgB,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,GAAE,UAAe;;;;;;;EA+HrE"}
1
+ {"version":3,"file":"useSTT.d.ts","sourceRoot":"","sources":["../../../src/client/audio/useSTT.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,wBAAgB,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,GAAE,UAAe;;;;;;;EAkIrE"}
@@ -30,10 +30,20 @@ export function useSTT(socket, options = {}) {
30
30
  setListening(true);
31
31
  const mode = options.mode ?? 'auto';
32
32
  console.log(`[STT] start streamId=${streamId} mode=${mode} lang=${options.lang ?? 'auto'}`);
33
+ // Start mic acquisition in parallel with socket connection for faster startup
34
+ if (!recorderRef.current)
35
+ recorderRef.current = new AudioRecorder();
36
+ let chunkCount = 0;
37
+ const micReady = recorderRef.current.start((audio) => {
38
+ chunkCount++;
39
+ if (chunkCount <= 3 || chunkCount % 50 === 0) {
40
+ console.log(`[STT] audio chunk #${chunkCount} (${audio.length} b64 chars)`);
41
+ }
42
+ socket.send('stt:audio', { streamId, audio });
43
+ });
33
44
  await socket.acquire();
34
45
  console.log('[STT] socket acquired');
35
46
  cleanupListeners();
36
- let chunkCount = 0;
37
47
  unsubsRef.current.push(socket.on('stt:ready', (data) => {
38
48
  if (data.streamId !== streamId)
39
49
  return;
@@ -86,15 +96,7 @@ export function useSTT(socket, options = {}) {
86
96
  console.log('[STT] cancelled before recording started');
87
97
  return;
88
98
  }
89
- if (!recorderRef.current)
90
- recorderRef.current = new AudioRecorder();
91
- await recorderRef.current.start((audio) => {
92
- chunkCount++;
93
- if (chunkCount <= 3 || chunkCount % 50 === 0) {
94
- console.log(`[STT] audio chunk #${chunkCount} (${audio.length} b64 chars)`);
95
- }
96
- socket.send('stt:audio', { streamId, audio });
97
- });
99
+ await micReady;
98
100
  console.log('[STT] recording started');
99
101
  }, [socket, listening, options.mode, options.lang]);
100
102
  const stop = useCallback(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"useSTT.js","sourceRoot":"","sources":["../../../src/client/audio/useSTT.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useSTT.js","sourceRoot":"","sources":["../../../src/client/audio/useSTT.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,7 @@ export function bootstrapApp(options) {
34
34
  socket
35
35
  .connect(token)
36
36
  .then(({ user, appToken }) => {
37
- const uglyBotSocket = appToken ? createUglyBotSocket(appToken) : null;
37
+ const uglyBotSocket = appToken ? createUglyBotSocket(appToken, uglyBotUrl) : null;
38
38
  renderWithRouter(true, false, _jsx(AppProvider, { socket: socket, uglyBotSocket: uglyBotSocket, userId: userId, user: user, children: renderApp() }));
39
39
  })
40
40
  .catch((err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrapApp.js","sourceRoot":"","sources":["../../src/client/bootstrapApp.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrapApp.js","sourceRoot":"","sources":["../../src/client/bootstrapApp.tsx"],"names":[],"mappings":"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"}
@@ -8,6 +8,6 @@ export interface UglyBotSocket {
8
8
  acquire(): Promise<void>;
9
9
  release(): void;
10
10
  }
11
- export declare function createUglyBotSocket(appToken: string): UglyBotSocket;
11
+ export declare function createUglyBotSocket(appToken: string, baseUrl?: string): UglyBotSocket;
12
12
  export {};
13
13
  //# sourceMappingURL=uglyBotSocket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uglyBotSocket.d.ts","sourceRoot":"","sources":["../../src/client/uglyBotSocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE,KAAK,WAAW,GAAG,MAAM,IAAI,CAAC;AAC9B,KAAK,aAAa,GAAG,MAAM,eAAe,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,CAAC,SAAS,aAAa,EAC1B,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GACpC,IAAI,CAAC;IACR,EAAE,CAAC,CAAC,SAAS,aAAa,EACxB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GACvD,WAAW,CAAC;IACf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,IAAI,IAAI,CAAC;CACjB;AAID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAyGnE"}
1
+ {"version":3,"file":"uglyBotSocket.d.ts","sourceRoot":"","sources":["../../src/client/uglyBotSocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,KAAK,WAAW,GAAG,MAAM,IAAI,CAAC;AAC9B,KAAK,aAAa,GAAG,MAAM,eAAe,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,CAAC,SAAS,aAAa,EAC1B,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GACpC,IAAI,CAAC;IACR,EAAE,CAAC,CAAC,SAAS,aAAa,EACxB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GACvD,WAAW,CAAC;IACf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,IAAI,IAAI,CAAC;CACjB;AAID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAqHrF"}
@@ -1,6 +1,5 @@
1
- import { getUglyBotWsUrl } from '../shared/uglyBotUrl.js';
2
1
  const IDLE_TIMEOUT_MS = 10_000;
3
- export function createUglyBotSocket(appToken) {
2
+ export function createUglyBotSocket(appToken, baseUrl) {
4
3
  let ws = null;
5
4
  let connectPromise = null;
6
5
  let refCount = 0;
@@ -8,10 +7,16 @@ export function createUglyBotSocket(appToken) {
8
7
  const listeners = new Map();
9
8
  function handleMessage(event) {
10
9
  const msg = JSON.parse(event.data);
11
- const set = listeners.get(msg.type);
10
+ const type = msg.type;
11
+ // Support both { type, data: {...} } and flat { type, streamId, audio, ... } formats
12
+ const data = msg.data !== undefined ? msg.data : (() => {
13
+ const { type: _t, ...rest } = msg;
14
+ return Object.keys(rest).length > 0 ? rest : {};
15
+ })();
16
+ const set = listeners.get(type);
12
17
  if (set) {
13
18
  for (const handler of set)
14
- handler(msg.data);
19
+ handler(data);
15
20
  }
16
21
  }
17
22
  function ensureConnection() {
@@ -21,18 +26,24 @@ export function createUglyBotSocket(appToken) {
21
26
  if (connectPromise)
22
27
  return connectPromise;
23
28
  connectPromise = new Promise((resolve, reject) => {
24
- const url = `${getUglyBotWsUrl()}/ws?token=${encodeURIComponent(appToken)}`;
29
+ const httpBase = baseUrl ?? 'https://ugly.bot';
30
+ const wsBase = httpBase.replace(/^http/, 'ws');
31
+ const url = `${wsBase}/ws?token=${encodeURIComponent(appToken)}`;
32
+ console.log(`[UglyBotSocket] connecting to ${url.replace(/token=[^&]+/, 'token=***')}`);
25
33
  const socket = new WebSocket(url);
26
34
  socket.addEventListener('open', () => {
35
+ console.log('[UglyBotSocket] connected');
27
36
  ws = socket;
28
37
  connectPromise = null;
29
38
  resolve();
30
39
  });
31
- socket.addEventListener('error', () => {
40
+ socket.addEventListener('error', (e) => {
41
+ console.error('[UglyBotSocket] connection error', e);
32
42
  connectPromise = null;
33
43
  reject(new Error('ugly.bot WebSocket connection failed'));
34
44
  });
35
- socket.addEventListener('close', () => {
45
+ socket.addEventListener('close', (e) => {
46
+ console.log(`[UglyBotSocket] closed code=${e.code} reason=${e.reason}`);
36
47
  if (ws === socket)
37
48
  ws = null;
38
49
  connectPromise = null;
@@ -65,8 +76,12 @@ export function createUglyBotSocket(appToken) {
65
76
  return {
66
77
  send(type, data) {
67
78
  if (ws && ws.readyState === WebSocket.OPEN) {
79
+ console.log(`[UglyBotSocket] send ${type}`, data);
68
80
  ws.send(JSON.stringify({ type, data }));
69
81
  }
82
+ else {
83
+ console.error(`[UglyBotSocket] send DROPPED ${type} — ws ${ws ? `readyState=${ws.readyState}` : 'null'}`);
84
+ }
70
85
  },
71
86
  on(event, handler) {
72
87
  let set = listeners.get(event);
@@ -1 +1 @@
1
- {"version":3,"file":"uglyBotSocket.js","sourceRoot":"","sources":["../../src/client/uglyBotSocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uglyBotSocket.js","sourceRoot":"","sources":["../../src/client/uglyBotSocket.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Socket.d.ts","sourceRoot":"","sources":["../../src/server/Socket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,IAAI,mBAAmB,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AA+ClD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,kBAAkB,EAC/B,QAAQ,EAAE,aAAa,GAAG,IAAI,EAE9B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAErB,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,EAC5B,MAAM,SAAS,EACf,uBAAuB,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,EAAE;AACtF;yEACyE;AACzE,WAAW,CAAC,EAAE,eAAe;AAC7B;+EAC+E;AAC/E,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACzF,eAAe,CAiYjB"}
1
+ {"version":3,"file":"Socket.d.ts","sourceRoot":"","sources":["../../src/server/Socket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,IAAI,mBAAmB,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AA+ClD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,kBAAkB,EAC/B,QAAQ,EAAE,aAAa,GAAG,IAAI,EAE9B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAErB,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,EAC5B,MAAM,SAAS,EACf,uBAAuB,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,EAAE;AACtF;yEACyE;AACzE,WAAW,CAAC,EAAE,eAAe;AAC7B;+EAC+E;AAC/E,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACzF,eAAe,CA4ZjB"}
@@ -29,7 +29,33 @@ onAuth) {
29
29
  const sessions = new Map();
30
30
  wss.on('connection', (ws, req) => {
31
31
  let session = null;
32
+ // Support URL token auth: ws://host/ws?token=JWT
33
+ // This allows direct connections (e.g. UglyBotSocket) without a message-based auth handshake.
34
+ const connUrl = new URL(req.url ?? '/', `http://${req.headers.host ?? 'localhost'}`);
35
+ const urlToken = connUrl.searchParams.get('token');
36
+ let urlAuthPromise = null;
37
+ if (urlToken) {
38
+ urlAuthPromise = (async () => {
39
+ try {
40
+ const userId = await verifyToken(urlToken);
41
+ const user = { _id: userId, userId };
42
+ const unregisterPush = await registerPushConnection(userId, ws);
43
+ session = { userId, ws, subscriptions: new Map(), unregisterPush };
44
+ sessions.set(ws, session);
45
+ if (onAuth)
46
+ await onAuth(ws, userId, req);
47
+ }
48
+ catch {
49
+ ws.close(4001, 'Invalid token');
50
+ }
51
+ })();
52
+ }
32
53
  ws.on('message', async (data) => {
54
+ // If URL token auth is in progress, wait for it to complete
55
+ if (urlAuthPromise) {
56
+ await urlAuthPromise;
57
+ urlAuthPromise = null;
58
+ }
33
59
  let msg;
34
60
  try {
35
61
  msg = JSON.parse(String(data));
@@ -38,7 +64,7 @@ onAuth) {
38
64
  ws.close();
39
65
  return;
40
66
  }
41
- // Auth handshake must be first message
67
+ // Auth handshake must be first message (unless URL token was used)
42
68
  if (!session) {
43
69
  if (msg.type !== 'auth') {
44
70
  ws.close();
@@ -1 +1 @@
1
- {"version":3,"file":"Socket.js","sourceRoot":"","sources":["../../src/server/Socket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Socket.js","sourceRoot":"","sources":["../../src/server/Socket.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugly-app",
3
- "version": "0.1.283",
3
+ "version": "0.1.285",
4
4
  "type": "module",
5
5
  "main": "./dist/server/index.js",
6
6
  "exports": {
@@ -1,2 +1,2 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.283";
2
+ export const CLI_VERSION = "0.1.285";
@@ -41,11 +41,21 @@ export function useSTT(socket: UglyBotSocket, options: STTOptions = {}) {
41
41
  const mode = options.mode ?? 'auto';
42
42
  console.log(`[STT] start streamId=${streamId} mode=${mode} lang=${options.lang ?? 'auto'}`);
43
43
 
44
+ // Start mic acquisition in parallel with socket connection for faster startup
45
+ if (!recorderRef.current) recorderRef.current = new AudioRecorder();
46
+ let chunkCount = 0;
47
+ const micReady = recorderRef.current.start((audio) => {
48
+ chunkCount++;
49
+ if (chunkCount <= 3 || chunkCount % 50 === 0) {
50
+ console.log(`[STT] audio chunk #${chunkCount} (${audio.length} b64 chars)`);
51
+ }
52
+ socket.send('stt:audio', { streamId, audio });
53
+ });
54
+
44
55
  await socket.acquire();
45
56
  console.log('[STT] socket acquired');
46
57
 
47
58
  cleanupListeners();
48
- let chunkCount = 0;
49
59
  unsubsRef.current.push(
50
60
  socket.on('stt:ready', (data) => {
51
61
  if (data.streamId !== streamId) return;
@@ -103,14 +113,7 @@ export function useSTT(socket: UglyBotSocket, options: STTOptions = {}) {
103
113
  return;
104
114
  }
105
115
 
106
- if (!recorderRef.current) recorderRef.current = new AudioRecorder();
107
- await recorderRef.current.start((audio) => {
108
- chunkCount++;
109
- if (chunkCount <= 3 || chunkCount % 50 === 0) {
110
- console.log(`[STT] audio chunk #${chunkCount} (${audio.length} b64 chars)`);
111
- }
112
- socket.send('stt:audio', { streamId, audio });
113
- });
116
+ await micReady;
114
117
  console.log('[STT] recording started');
115
118
  }, [socket, listening, options.mode, options.lang]);
116
119
 
@@ -95,7 +95,7 @@ export function bootstrapApp(options: BootstrapAppOptions): void {
95
95
  socket
96
96
  .connect(token)
97
97
  .then(({ user, appToken }) => {
98
- const uglyBotSocket = appToken ? createUglyBotSocket(appToken) : null;
98
+ const uglyBotSocket = appToken ? createUglyBotSocket(appToken, uglyBotUrl) : null;
99
99
  renderWithRouter(
100
100
  true,
101
101
  false,
@@ -1,6 +1,5 @@
1
1
  import type { MessageData } from '../shared/Api.js';
2
2
  import type { UglyBotMessages } from '../shared/UglyBotMessages.js';
3
- import { getUglyBotWsUrl } from '../shared/uglyBotUrl.js';
4
3
 
5
4
  type Unsubscribe = () => void;
6
5
  type UglyBotMsgKey = keyof UglyBotMessages;
@@ -20,7 +19,7 @@ export interface UglyBotSocket {
20
19
 
21
20
  const IDLE_TIMEOUT_MS = 10_000;
22
21
 
23
- export function createUglyBotSocket(appToken: string): UglyBotSocket {
22
+ export function createUglyBotSocket(appToken: string, baseUrl?: string): UglyBotSocket {
24
23
  let ws: WebSocket | null = null;
25
24
  let connectPromise: Promise<void> | null = null;
26
25
  let refCount = 0;
@@ -29,13 +28,16 @@ export function createUglyBotSocket(appToken: string): UglyBotSocket {
29
28
  const listeners = new Map<string, Set<(data: unknown) => void>>();
30
29
 
31
30
  function handleMessage(event: MessageEvent) {
32
- const msg = JSON.parse(event.data as string) as {
33
- type: string;
34
- data?: unknown;
35
- };
36
- const set = listeners.get(msg.type);
31
+ const msg = JSON.parse(event.data as string) as Record<string, unknown>;
32
+ const type = msg.type as string;
33
+ // Support both { type, data: {...} } and flat { type, streamId, audio, ... } formats
34
+ const data = msg.data !== undefined ? msg.data : (() => {
35
+ const { type: _t, ...rest } = msg;
36
+ return Object.keys(rest).length > 0 ? rest : {};
37
+ })();
38
+ const set = listeners.get(type);
37
39
  if (set) {
38
- for (const handler of set) handler(msg.data);
40
+ for (const handler of set) handler(data);
39
41
  }
40
42
  }
41
43
 
@@ -46,21 +48,27 @@ export function createUglyBotSocket(appToken: string): UglyBotSocket {
46
48
  if (connectPromise) return connectPromise;
47
49
 
48
50
  connectPromise = new Promise<void>((resolve, reject) => {
49
- const url = `${getUglyBotWsUrl()}/ws?token=${encodeURIComponent(appToken)}`;
51
+ const httpBase = baseUrl ?? 'https://ugly.bot';
52
+ const wsBase = httpBase.replace(/^http/, 'ws');
53
+ const url = `${wsBase}/ws?token=${encodeURIComponent(appToken)}`;
54
+ console.log(`[UglyBotSocket] connecting to ${url.replace(/token=[^&]+/, 'token=***')}`);
50
55
  const socket = new WebSocket(url);
51
56
 
52
57
  socket.addEventListener('open', () => {
58
+ console.log('[UglyBotSocket] connected');
53
59
  ws = socket;
54
60
  connectPromise = null;
55
61
  resolve();
56
62
  });
57
63
 
58
- socket.addEventListener('error', () => {
64
+ socket.addEventListener('error', (e) => {
65
+ console.error('[UglyBotSocket] connection error', e);
59
66
  connectPromise = null;
60
67
  reject(new Error('ugly.bot WebSocket connection failed'));
61
68
  });
62
69
 
63
- socket.addEventListener('close', () => {
70
+ socket.addEventListener('close', (e) => {
71
+ console.log(`[UglyBotSocket] closed code=${e.code} reason=${e.reason}`);
64
72
  if (ws === socket) ws = null;
65
73
  connectPromise = null;
66
74
  });
@@ -97,7 +105,10 @@ export function createUglyBotSocket(appToken: string): UglyBotSocket {
97
105
  return {
98
106
  send(type, data) {
99
107
  if (ws && ws.readyState === WebSocket.OPEN) {
108
+ console.log(`[UglyBotSocket] send ${type as string}`, data);
100
109
  ws.send(JSON.stringify({ type, data }));
110
+ } else {
111
+ console.error(`[UglyBotSocket] send DROPPED ${type as string} — ws ${ws ? `readyState=${ws.readyState}` : 'null'}`);
101
112
  }
102
113
  },
103
114
 
@@ -88,7 +88,34 @@ export function initWebSocketServer(
88
88
 
89
89
  wss.on('connection', (ws, req) => {
90
90
  let session: Session | null = null;
91
+
92
+ // Support URL token auth: ws://host/ws?token=JWT
93
+ // This allows direct connections (e.g. UglyBotSocket) without a message-based auth handshake.
94
+ const connUrl = new URL(req.url ?? '/', `http://${req.headers.host ?? 'localhost'}`);
95
+ const urlToken = connUrl.searchParams.get('token');
96
+ let urlAuthPromise: Promise<void> | null = null;
97
+ if (urlToken) {
98
+ urlAuthPromise = (async () => {
99
+ try {
100
+ const userId = await verifyToken(urlToken);
101
+ const user = { _id: userId, userId };
102
+ const unregisterPush = await registerPushConnection(userId, ws);
103
+ session = { userId, ws, subscriptions: new Map(), unregisterPush };
104
+ sessions.set(ws, session);
105
+ if (onAuth) await onAuth(ws, userId, req);
106
+ } catch {
107
+ ws.close(4001, 'Invalid token');
108
+ }
109
+ })();
110
+ }
111
+
91
112
  ws.on('message', async (data) => {
113
+ // If URL token auth is in progress, wait for it to complete
114
+ if (urlAuthPromise) {
115
+ await urlAuthPromise;
116
+ urlAuthPromise = null;
117
+ }
118
+
92
119
  let msg: IncomingMessage;
93
120
  try {
94
121
  msg = JSON.parse(String(data)) as IncomingMessage;
@@ -97,7 +124,7 @@ export function initWebSocketServer(
97
124
  return;
98
125
  }
99
126
 
100
- // Auth handshake must be first message
127
+ // Auth handshake must be first message (unless URL token was used)
101
128
  if (!session) {
102
129
  if (msg.type !== 'auth') {
103
130
  ws.close();
@@ -285,7 +285,7 @@ function STTSection({ socket }: { socket: UglyBotSocket }) {
285
285
  unsubAll();
286
286
  unsubsRef.current.push(
287
287
  socket.on('stt:transcript', (data) => {
288
- if (data.streamId !== streamId) return;
288
+ if (data.streamId && data.streamId !== streamId) return;
289
289
  addLog(`Transcript${data.isFinal ? ' (final)' : ''}: ${data.text ?? ''}`, data.isFinal ? 'ok' : 'info');
290
290
  setTranscript(data.text ?? '');
291
291
  if (data.isFinal && data.text) {
@@ -294,13 +294,15 @@ function STTSection({ socket }: { socket: UglyBotSocket }) {
294
294
  }
295
295
  }),
296
296
  socket.on('stt:error', (data) => {
297
- if (data.streamId !== streamId) return;
297
+ if (data.streamId && data.streamId !== streamId) return;
298
298
  addLog(`STT error: ${data.message ?? 'unknown'}`, 'err');
299
299
  stopListening();
300
300
  }),
301
301
  socket.on('stt:stopped', (data) => {
302
- if (data.streamId !== streamId) return;
302
+ if (data.streamId && data.streamId !== streamId) return;
303
303
  addLog(`STT stopped — sent ${chunkCountRef.current} audio chunks`, 'ok');
304
+ unsubAll();
305
+ socket.release();
304
306
  }),
305
307
  );
306
308
  }
@@ -315,6 +317,17 @@ function STTSection({ socket }: { socket: UglyBotSocket }) {
315
317
  const started = Date.now();
316
318
  addLog(`Mode: ${sttMode}${sttMode === 'continuous' ? ' (VAD enabled)' : ''}`);
317
319
 
320
+ // Start mic + socket in parallel for faster startup
321
+ if (!recorderRef.current) recorderRef.current = new AudioRecorder();
322
+ const micReady = Promise.all([
323
+ mic.start(),
324
+ recorderRef.current.start((audio) => {
325
+ chunkCountRef.current++;
326
+ console.log(`[STT] audio chunk #${chunkCountRef.current} (${audio.length} b64 chars)`);
327
+ socket.send('stt:audio', { streamId, audio });
328
+ }),
329
+ ]);
330
+
318
331
  await socket.acquire();
319
332
  subscribe(streamId);
320
333
 
@@ -328,7 +341,7 @@ function STTSection({ socket }: { socket: UglyBotSocket }) {
328
341
  await new Promise<void>((resolve) => {
329
342
  let resolved = false;
330
343
  const unsub = socket.on('stt:ready', (data) => {
331
- if (data.streamId === streamId) {
344
+ if (!data.streamId || data.streamId === streamId) {
332
345
  resolved = true;
333
346
  unsub();
334
347
  resolve();
@@ -344,15 +357,7 @@ function STTSection({ socket }: { socket: UglyBotSocket }) {
344
357
 
345
358
  addLog(`Ready in ${fmt(Date.now() - started)}`, 'ok');
346
359
 
347
- // Start mic for visualization
348
- await mic.start();
349
-
350
- // Start recording with AudioRecorder (uses AudioWorkletNode)
351
- if (!recorderRef.current) recorderRef.current = new AudioRecorder();
352
- await recorderRef.current.start((audio) => {
353
- chunkCountRef.current++;
354
- socket.send('stt:audio', { streamId, audio });
355
- });
360
+ await micReady;
356
361
  addLog('Recording started', 'ok');
357
362
 
358
363
  setListening(true);
@@ -365,8 +370,7 @@ function STTSection({ socket }: { socket: UglyBotSocket }) {
365
370
  if (streamIdRef.current) {
366
371
  socket.send('stt:stop', { streamId: streamIdRef.current });
367
372
  }
368
- unsubAll();
369
- socket.release();
373
+ // Don't unsubAll/release here — wait for stt:stopped handler to clean up
370
374
  setListening(false);
371
375
  }
372
376
 
@@ -428,12 +432,14 @@ function STTSection({ socket }: { socket: UglyBotSocket }) {
428
432
  <div style={{ marginTop: 12 }}>
429
433
  {sttMode === 'continuous' ? (
430
434
  <Button
435
+ data-id="stt-toggle"
431
436
  onClick={listening ? stopListening : () => void startListening()}
432
437
  >
433
438
  {listening ? 'Stop Listening' : 'Start Listening'}
434
439
  </Button>
435
440
  ) : (
436
441
  <button
442
+ data-id="stt-ptt"
437
443
  onPointerDown={handlePTTDown}
438
444
  onPointerUp={handlePTTUp}
439
445
  onPointerLeave={listening ? handlePTTUp : undefined}
@@ -471,9 +477,9 @@ function STTSection({ socket }: { socket: UglyBotSocket }) {
471
477
 
472
478
  {/* Logs */}
473
479
  {logs.length > 0 && (
474
- <div style={{ marginTop: 8, fontSize: '0.85em', opacity: 0.7 }}>
480
+ <div data-id="stt-logs" style={{ marginTop: 8, fontSize: '0.85em', opacity: 0.7 }}>
475
481
  {logs.map((entry, i) => (
476
- <div key={i}>
482
+ <div key={i} data-log-kind={entry.kind}>
477
483
  {entry.kind === 'err' ? '✗' : entry.kind === 'ok' ? '✓' : '·'}{' '}
478
484
  {entry.msg}
479
485
  </div>
@@ -516,16 +522,19 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
516
522
 
517
523
  function subscribe(streamId: string) {
518
524
  unsubAll();
525
+ addLog(`Subscribing to events for stream ${streamId}`);
519
526
  unsubsRef.current.push(
520
527
  socket.on('tts:chunk', (data) => {
528
+ addLog(`Got tts:chunk streamId=${data.streamId} (expected=${streamId}) audioLen=${data.audio?.length ?? 0}`);
521
529
  if (data.streamId !== streamId) return;
522
530
  if (data.audio) {
523
531
  ttsAudio.playChunk(data.audio);
524
- addLog(`Received audio chunk (${data.audio.length} b64 chars)`);
532
+ addLog(`Queued audio chunk (${data.audio.length} b64 chars)`, 'ok');
525
533
  }
526
534
  }),
527
535
  socket.on('tts:word', (data) => {
528
536
  if (data.streamId !== streamId) return;
537
+ addLog(`Word: "${data.word}"`);
529
538
  if (data.word) {
530
539
  setCurrentWord(data.word);
531
540
  activeWordIdxRef.current++;
@@ -540,6 +549,7 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
540
549
  }
541
550
  }),
542
551
  socket.on('tts:done', (data) => {
552
+ addLog(`Got tts:done streamId=${data.streamId}`);
543
553
  if (data.streamId !== streamId) return;
544
554
  setPlaying(false);
545
555
  setCurrentWord('');
@@ -548,6 +558,7 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
548
558
  socket.release();
549
559
  }),
550
560
  socket.on('tts:error', (data) => {
561
+ addLog(`Got tts:error streamId=${data.streamId} msg=${data.message}`, 'err');
551
562
  if (data.streamId !== streamId) return;
552
563
  setPlaying(false);
553
564
  addLog(`TTS error: ${data.message ?? 'unknown'}`, 'err');
@@ -573,16 +584,29 @@ function TTSSection({ socket }: { socket: UglyBotSocket }) {
573
584
 
574
585
  ttsAudio.init();
575
586
  addLog(`Voice: ${voice || 'default'}`);
576
- addLog('Streaming…');
587
+ addLog(`Stream ID: ${streamId}`);
588
+ addLog('Acquiring socket…');
589
+
590
+ try {
591
+ await socket.acquire();
592
+ addLog('Socket acquired', 'ok');
593
+ } catch (err) {
594
+ addLog(`Socket acquire failed: ${err}`, 'err');
595
+ setPlaying(false);
596
+ return;
597
+ }
577
598
 
578
- await socket.acquire();
579
599
  subscribe(streamId);
580
- socket.send('tts:start', {
600
+
601
+ const payload = {
581
602
  streamId,
582
603
  text: text.trim(),
583
604
  ...(voice ? { voice } : {}),
584
605
  requestVisemes: false,
585
- });
606
+ };
607
+ addLog(`Sending tts:start ${JSON.stringify(payload).slice(0, 200)}`);
608
+ socket.send('tts:start', payload);
609
+ addLog('tts:start sent, waiting for chunks…');
586
610
  }
587
611
 
588
612
  function handleStop() {