@helpai/elements 0.8.0 → 0.9.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/elements-web-component.esm.js +12 -12
- package/elements-web-component.esm.js.map +3 -3
- package/elements.cjs.js +12 -12
- package/elements.cjs.js.map +3 -3
- package/elements.esm.js +12 -12
- package/elements.esm.js.map +3 -3
- package/elements.js +13 -13
- package/elements.js.map +3 -3
- package/index.d.ts +1 -1
- package/index.mjs +21 -5
- package/package.json +1 -1
- package/schema.d.ts +35 -35
- package/web-component.mjs +21 -5
package/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as Asset, B as BlocksConfig, C as ConnectionConfig, a as ConnectionConfigPartial, L as Link, S as ServerConfig, b as SiteConfig, c as StartSessionResponse, W as WidgetConfig, d as WidgetConfigPartial, e as WidgetSettings, f as WidgetSettingsPartial } from './deployment-
|
|
1
|
+
export { A as Asset, B as BlocksConfig, C as ConnectionConfig, a as ConnectionConfigPartial, L as Link, S as ServerConfig, b as SiteConfig, c as StartSessionResponse, W as WidgetConfig, d as WidgetConfigPartial, e as WidgetSettings, f as WidgetSettingsPartial } from './deployment-B4_b3Sjy.js';
|
|
2
2
|
import 'zod';
|
|
3
3
|
|
|
4
4
|
/**
|
package/index.mjs
CHANGED
|
@@ -1390,10 +1390,19 @@ var AgentTransport = class {
|
|
|
1390
1390
|
* parallel with start-session, so a reply that was streaming when the
|
|
1391
1391
|
* user reloaded keeps flowing).
|
|
1392
1392
|
*
|
|
1393
|
-
*
|
|
1394
|
-
*
|
|
1395
|
-
*
|
|
1396
|
-
*
|
|
1393
|
+
* The endpoint ALWAYS opens a 200 SSE stream (mirrors the AI SDK
|
|
1394
|
+
* resumable-stream lib): it replays the in-flight reply from the buffer, or —
|
|
1395
|
+
* when nothing is in flight (reply finished + the buffer was flushed, or
|
|
1396
|
+
* nothing ever started) — closes an EMPTY stream. So "nothing to resume" is
|
|
1397
|
+
* signalled by a segment that ends without a terminal chunk AND surfaced no
|
|
1398
|
+
* NEW events — not by a status code. We stop gracefully there; the completed
|
|
1399
|
+
* turn comes from the DB via start-session / list-messages.
|
|
1400
|
+
*
|
|
1401
|
+
* Returns (no throw) on a terminal chunk, an empty/no-new-events segment, or
|
|
1402
|
+
* a 204 / non-OK (a backend that signals "nothing" by status, or lacks the
|
|
1403
|
+
* endpoint). Retries only a segment that yielded new events but no finish — a
|
|
1404
|
+
* real mid-reply drop. Throws only if every attempt kept yielding new events
|
|
1405
|
+
* yet never finished: a genuinely stuck, incomplete reply.
|
|
1397
1406
|
*/
|
|
1398
1407
|
async *resumeStreamGen(ctrl, seenIds, immediate) {
|
|
1399
1408
|
for (let attempt = 1; attempt <= MAX_RESUME_ATTEMPTS && !ctrl.signal.aborted; attempt++) {
|
|
@@ -1418,7 +1427,12 @@ var AgentTransport = class {
|
|
|
1418
1427
|
log4.debug("resume \u2192 no in-flight stream", { status: res.status });
|
|
1419
1428
|
return;
|
|
1420
1429
|
}
|
|
1430
|
+
const before = seenIds.size;
|
|
1421
1431
|
if (yield* this.drain(parseChatStream(res, ctrl.signal), seenIds, ctrl)) return;
|
|
1432
|
+
if (seenIds.size === before) {
|
|
1433
|
+
log4.debug("resume \u2192 stream closed with no new events; nothing to resume");
|
|
1434
|
+
return;
|
|
1435
|
+
}
|
|
1422
1436
|
}
|
|
1423
1437
|
if (ctrl.signal.aborted) return;
|
|
1424
1438
|
throw new StreamError("stream incomplete after resume attempts", "server");
|
|
@@ -5494,6 +5508,8 @@ function App({ options, hostElement, bus }) {
|
|
|
5494
5508
|
messagesSig.value = [...messagesSig.value, bubble];
|
|
5495
5509
|
setStreaming(true);
|
|
5496
5510
|
setActiveCancel(() => handle.cancel);
|
|
5511
|
+
const chatTab = chatTabId();
|
|
5512
|
+
if (chatTab) homeNav.switchTab(chatTab);
|
|
5497
5513
|
log16.info("resumed in-flight reply on mount");
|
|
5498
5514
|
}
|
|
5499
5515
|
reducer.apply(evt.chunk);
|
|
@@ -5520,7 +5536,7 @@ function App({ options, hostElement, bus }) {
|
|
|
5520
5536
|
}
|
|
5521
5537
|
}
|
|
5522
5538
|
},
|
|
5523
|
-
[reducer, messagesSig, feedback, bus, options]
|
|
5539
|
+
[reducer, messagesSig, feedback, bus, options, homeNav]
|
|
5524
5540
|
);
|
|
5525
5541
|
useEffect17(() => {
|
|
5526
5542
|
void runStartSession({ newConversation: false });
|
package/package.json
CHANGED
package/schema.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as Asset, B as BlocksConfig, C as ConnectionConfig, a as ConnectionConfigPartial, E as Endpoints, L as Link, P as PAGE_AREA_SUGGESTIONS, g as PageContext, S as ServerConfig, b as SiteConfig, c as StartSessionResponse, U as UserContext, W as WidgetConfig, d as WidgetConfigPartial, e as WidgetSettings, f as WidgetSettingsPartial, h as assetSchema, i as blocksConfigSchema, j as connectionConfigPartialSchema, k as connectionConfigSchema, l as cssColorSchema, m as cssLengthSchema, n as endpointsSchema, o as linkSchema, p as localeSchema, q as pageContextSchema, s as serverConfigSchema, r as siteConfigSchema, t as startSessionResponseSchema, u as userContextSchema, v as uuid7Schema, w as widgetConfigPartialSchema, x as widgetConfigSchema, y as widgetSettingsPartialSchema, z as widgetSettingsSchema } from './deployment-
|
|
1
|
+
export { A as Asset, B as BlocksConfig, C as ConnectionConfig, a as ConnectionConfigPartial, E as Endpoints, L as Link, P as PAGE_AREA_SUGGESTIONS, g as PageContext, S as ServerConfig, b as SiteConfig, c as StartSessionResponse, U as UserContext, W as WidgetConfig, d as WidgetConfigPartial, e as WidgetSettings, f as WidgetSettingsPartial, h as assetSchema, i as blocksConfigSchema, j as connectionConfigPartialSchema, k as connectionConfigSchema, l as cssColorSchema, m as cssLengthSchema, n as endpointsSchema, o as linkSchema, p as localeSchema, q as pageContextSchema, s as serverConfigSchema, r as siteConfigSchema, t as startSessionResponseSchema, u as userContextSchema, v as uuid7Schema, w as widgetConfigPartialSchema, x as widgetConfigSchema, y as widgetSettingsPartialSchema, z as widgetSettingsSchema } from './deployment-B4_b3Sjy.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -56,9 +56,9 @@ declare const presentationSchema: z.ZodObject<{
|
|
|
56
56
|
inset: z.ZodOptional<z.ZodString>;
|
|
57
57
|
initialSize: z.ZodDefault<z.ZodEnum<{
|
|
58
58
|
fullscreen: "fullscreen";
|
|
59
|
-
normal: "normal";
|
|
60
59
|
expanded: "expanded";
|
|
61
60
|
auto: "auto";
|
|
61
|
+
normal: "normal";
|
|
62
62
|
}>>;
|
|
63
63
|
autoSizeBreakpoint: z.ZodDefault<z.ZodNumber>;
|
|
64
64
|
}, z.core.$loose>>;
|
|
@@ -148,9 +148,9 @@ declare const launcherSizeSchema: z.ZodEnum<{
|
|
|
148
148
|
}>;
|
|
149
149
|
type LauncherSize = z.infer<typeof launcherSizeSchema>;
|
|
150
150
|
declare const calloutShapeSchema: z.ZodEnum<{
|
|
151
|
+
callout: "callout";
|
|
151
152
|
pill: "pill";
|
|
152
153
|
bubble: "bubble";
|
|
153
|
-
callout: "callout";
|
|
154
154
|
}>;
|
|
155
155
|
type CalloutShape = z.infer<typeof calloutShapeSchema>;
|
|
156
156
|
declare const calloutPositionSchema: z.ZodEnum<{
|
|
@@ -162,9 +162,9 @@ type CalloutPosition = z.infer<typeof calloutPositionSchema>;
|
|
|
162
162
|
declare const launcherCalloutSchema: z.ZodObject<{
|
|
163
163
|
text: z.ZodDefault<z.ZodString>;
|
|
164
164
|
shape: z.ZodDefault<z.ZodEnum<{
|
|
165
|
+
callout: "callout";
|
|
165
166
|
pill: "pill";
|
|
166
167
|
bubble: "bubble";
|
|
167
|
-
callout: "callout";
|
|
168
168
|
}>>;
|
|
169
169
|
position: z.ZodDefault<z.ZodEnum<{
|
|
170
170
|
auto: "auto";
|
|
@@ -195,9 +195,9 @@ declare const launcherOptionsSchema: z.ZodObject<{
|
|
|
195
195
|
callout: z.ZodOptional<z.ZodObject<{
|
|
196
196
|
text: z.ZodDefault<z.ZodString>;
|
|
197
197
|
shape: z.ZodDefault<z.ZodEnum<{
|
|
198
|
+
callout: "callout";
|
|
198
199
|
pill: "pill";
|
|
199
200
|
bubble: "bubble";
|
|
200
|
-
callout: "callout";
|
|
201
201
|
}>>;
|
|
202
202
|
position: z.ZodDefault<z.ZodEnum<{
|
|
203
203
|
auto: "auto";
|
|
@@ -240,9 +240,9 @@ type LauncherOptions = z.infer<typeof launcherOptionsSchema>;
|
|
|
240
240
|
|
|
241
241
|
declare const initialSizeSchema: z.ZodEnum<{
|
|
242
242
|
fullscreen: "fullscreen";
|
|
243
|
-
normal: "normal";
|
|
244
243
|
expanded: "expanded";
|
|
245
244
|
auto: "auto";
|
|
245
|
+
normal: "normal";
|
|
246
246
|
}>;
|
|
247
247
|
declare const resizeOptionsSchema: z.ZodObject<{
|
|
248
248
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -269,9 +269,9 @@ declare const sizeOptionsSchema: z.ZodObject<{
|
|
|
269
269
|
inset: z.ZodOptional<z.ZodString>;
|
|
270
270
|
initialSize: z.ZodDefault<z.ZodEnum<{
|
|
271
271
|
fullscreen: "fullscreen";
|
|
272
|
-
normal: "normal";
|
|
273
272
|
expanded: "expanded";
|
|
274
273
|
auto: "auto";
|
|
274
|
+
normal: "normal";
|
|
275
275
|
}>>;
|
|
276
276
|
autoSizeBreakpoint: z.ZodDefault<z.ZodNumber>;
|
|
277
277
|
}, z.core.$loose>;
|
|
@@ -321,38 +321,38 @@ type FeatureFlags = z.infer<typeof featureFlagsSchema>;
|
|
|
321
321
|
*/
|
|
322
322
|
|
|
323
323
|
declare const actionNameSchema: z.ZodEnum<{
|
|
324
|
+
close: "close";
|
|
324
325
|
expand: "expand";
|
|
325
326
|
fullscreen: "fullscreen";
|
|
326
327
|
popOut: "popOut";
|
|
327
|
-
|
|
328
|
-
language: "language";
|
|
328
|
+
clear: "clear";
|
|
329
329
|
theme: "theme";
|
|
330
|
+
language: "language";
|
|
330
331
|
history: "history";
|
|
331
|
-
clear: "clear";
|
|
332
332
|
sound: "sound";
|
|
333
333
|
}>;
|
|
334
334
|
type ActionName = z.infer<typeof actionNameSchema>;
|
|
335
335
|
declare const headerActionsSchema: z.ZodObject<{
|
|
336
336
|
main: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
337
|
+
close: "close";
|
|
337
338
|
expand: "expand";
|
|
338
339
|
fullscreen: "fullscreen";
|
|
339
340
|
popOut: "popOut";
|
|
340
|
-
|
|
341
|
-
language: "language";
|
|
341
|
+
clear: "clear";
|
|
342
342
|
theme: "theme";
|
|
343
|
+
language: "language";
|
|
343
344
|
history: "history";
|
|
344
|
-
clear: "clear";
|
|
345
345
|
sound: "sound";
|
|
346
346
|
}>>>;
|
|
347
347
|
overflow: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
348
|
+
close: "close";
|
|
348
349
|
expand: "expand";
|
|
349
350
|
fullscreen: "fullscreen";
|
|
350
351
|
popOut: "popOut";
|
|
351
|
-
|
|
352
|
-
language: "language";
|
|
352
|
+
clear: "clear";
|
|
353
353
|
theme: "theme";
|
|
354
|
+
language: "language";
|
|
354
355
|
history: "history";
|
|
355
|
-
clear: "clear";
|
|
356
356
|
sound: "sound";
|
|
357
357
|
}>>>;
|
|
358
358
|
}, z.core.$loose>;
|
|
@@ -361,25 +361,25 @@ type HeaderActions = z.infer<typeof headerActionsSchema>;
|
|
|
361
361
|
declare const headerSchema: z.ZodObject<{
|
|
362
362
|
actions: z.ZodOptional<z.ZodObject<{
|
|
363
363
|
main: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
364
|
+
close: "close";
|
|
364
365
|
expand: "expand";
|
|
365
366
|
fullscreen: "fullscreen";
|
|
366
367
|
popOut: "popOut";
|
|
367
|
-
|
|
368
|
-
language: "language";
|
|
368
|
+
clear: "clear";
|
|
369
369
|
theme: "theme";
|
|
370
|
+
language: "language";
|
|
370
371
|
history: "history";
|
|
371
|
-
clear: "clear";
|
|
372
372
|
sound: "sound";
|
|
373
373
|
}>>>;
|
|
374
374
|
overflow: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
375
|
+
close: "close";
|
|
375
376
|
expand: "expand";
|
|
376
377
|
fullscreen: "fullscreen";
|
|
377
378
|
popOut: "popOut";
|
|
378
|
-
|
|
379
|
-
language: "language";
|
|
379
|
+
clear: "clear";
|
|
380
380
|
theme: "theme";
|
|
381
|
+
language: "language";
|
|
381
382
|
history: "history";
|
|
382
|
-
clear: "clear";
|
|
383
383
|
sound: "sound";
|
|
384
384
|
}>>>;
|
|
385
385
|
}, z.core.$loose>>;
|
|
@@ -396,33 +396,33 @@ type HeaderOptions = z.infer<typeof headerSchema>;
|
|
|
396
396
|
*/
|
|
397
397
|
|
|
398
398
|
declare const feedbackEventSchema: z.ZodEnum<{
|
|
399
|
+
voiceStart: "voiceStart";
|
|
400
|
+
voiceStop: "voiceStop";
|
|
399
401
|
error: "error";
|
|
400
402
|
messageReceived: "messageReceived";
|
|
401
403
|
messageSent: "messageSent";
|
|
402
|
-
voiceStart: "voiceStart";
|
|
403
|
-
voiceStop: "voiceStop";
|
|
404
404
|
}>;
|
|
405
405
|
type FeedbackEvent = z.infer<typeof feedbackEventSchema>;
|
|
406
406
|
declare const soundOptionsSchema: z.ZodObject<{
|
|
407
407
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
408
408
|
volume: z.ZodDefault<z.ZodNumber>;
|
|
409
409
|
events: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
410
|
+
voiceStart: "voiceStart";
|
|
411
|
+
voiceStop: "voiceStop";
|
|
410
412
|
error: "error";
|
|
411
413
|
messageReceived: "messageReceived";
|
|
412
414
|
messageSent: "messageSent";
|
|
413
|
-
voiceStart: "voiceStart";
|
|
414
|
-
voiceStop: "voiceStop";
|
|
415
415
|
}> & z.core.$partial, z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>>;
|
|
416
416
|
}, z.core.$loose>;
|
|
417
417
|
type SoundOptions = z.infer<typeof soundOptionsSchema>;
|
|
418
418
|
declare const hapticsOptionsSchema: z.ZodObject<{
|
|
419
419
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
420
420
|
events: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
421
|
+
voiceStart: "voiceStart";
|
|
422
|
+
voiceStop: "voiceStop";
|
|
421
423
|
error: "error";
|
|
422
424
|
messageReceived: "messageReceived";
|
|
423
425
|
messageSent: "messageSent";
|
|
424
|
-
voiceStart: "voiceStart";
|
|
425
|
-
voiceStop: "voiceStop";
|
|
426
426
|
}> & z.core.$partial, z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber, z.ZodArray<z.ZodNumber>]>>>;
|
|
427
427
|
}, z.core.$loose>;
|
|
428
428
|
type HapticsOptions = z.infer<typeof hapticsOptionsSchema>;
|
|
@@ -431,21 +431,21 @@ declare const feedbackSchema: z.ZodObject<{
|
|
|
431
431
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
432
432
|
volume: z.ZodDefault<z.ZodNumber>;
|
|
433
433
|
events: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
434
|
+
voiceStart: "voiceStart";
|
|
435
|
+
voiceStop: "voiceStop";
|
|
434
436
|
error: "error";
|
|
435
437
|
messageReceived: "messageReceived";
|
|
436
438
|
messageSent: "messageSent";
|
|
437
|
-
voiceStart: "voiceStart";
|
|
438
|
-
voiceStop: "voiceStop";
|
|
439
439
|
}> & z.core.$partial, z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>>;
|
|
440
440
|
}, z.core.$loose>>;
|
|
441
441
|
haptics: z.ZodOptional<z.ZodObject<{
|
|
442
442
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
443
443
|
events: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
444
|
+
voiceStart: "voiceStart";
|
|
445
|
+
voiceStop: "voiceStop";
|
|
444
446
|
error: "error";
|
|
445
447
|
messageReceived: "messageReceived";
|
|
446
448
|
messageSent: "messageSent";
|
|
447
|
-
voiceStart: "voiceStart";
|
|
448
|
-
voiceStop: "voiceStop";
|
|
449
449
|
}> & z.core.$partial, z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber, z.ZodArray<z.ZodNumber>]>>>;
|
|
450
450
|
}, z.core.$loose>>;
|
|
451
451
|
}, z.core.$loose>;
|
|
@@ -607,18 +607,18 @@ type I18nOptions = z.infer<typeof i18nSchema>;
|
|
|
607
607
|
*/
|
|
608
608
|
|
|
609
609
|
declare const moduleLayoutSchema: z.ZodEnum<{
|
|
610
|
+
home: "home";
|
|
610
611
|
chat: "chat";
|
|
611
612
|
help: "help";
|
|
612
|
-
home: "home";
|
|
613
613
|
news: "news";
|
|
614
614
|
}>;
|
|
615
615
|
type ModuleLayout = z.infer<typeof moduleLayoutSchema>;
|
|
616
616
|
declare const moduleSchema: z.ZodObject<{
|
|
617
617
|
label: z.ZodString;
|
|
618
618
|
layout: z.ZodEnum<{
|
|
619
|
+
home: "home";
|
|
619
620
|
chat: "chat";
|
|
620
621
|
help: "help";
|
|
621
|
-
home: "home";
|
|
622
622
|
news: "news";
|
|
623
623
|
}>;
|
|
624
624
|
contentTags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -644,9 +644,9 @@ type ModuleOptions = z.infer<typeof moduleSchema>;
|
|
|
644
644
|
declare const modulesSchema: z.ZodArray<z.ZodObject<{
|
|
645
645
|
label: z.ZodString;
|
|
646
646
|
layout: z.ZodEnum<{
|
|
647
|
+
home: "home";
|
|
647
648
|
chat: "chat";
|
|
648
649
|
help: "help";
|
|
649
|
-
home: "home";
|
|
650
650
|
news: "news";
|
|
651
651
|
}>;
|
|
652
652
|
contentTags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
package/web-component.mjs
CHANGED
|
@@ -1454,10 +1454,19 @@ var AgentTransport = class {
|
|
|
1454
1454
|
* parallel with start-session, so a reply that was streaming when the
|
|
1455
1455
|
* user reloaded keeps flowing).
|
|
1456
1456
|
*
|
|
1457
|
-
*
|
|
1458
|
-
*
|
|
1459
|
-
*
|
|
1460
|
-
*
|
|
1457
|
+
* The endpoint ALWAYS opens a 200 SSE stream (mirrors the AI SDK
|
|
1458
|
+
* resumable-stream lib): it replays the in-flight reply from the buffer, or —
|
|
1459
|
+
* when nothing is in flight (reply finished + the buffer was flushed, or
|
|
1460
|
+
* nothing ever started) — closes an EMPTY stream. So "nothing to resume" is
|
|
1461
|
+
* signalled by a segment that ends without a terminal chunk AND surfaced no
|
|
1462
|
+
* NEW events — not by a status code. We stop gracefully there; the completed
|
|
1463
|
+
* turn comes from the DB via start-session / list-messages.
|
|
1464
|
+
*
|
|
1465
|
+
* Returns (no throw) on a terminal chunk, an empty/no-new-events segment, or
|
|
1466
|
+
* a 204 / non-OK (a backend that signals "nothing" by status, or lacks the
|
|
1467
|
+
* endpoint). Retries only a segment that yielded new events but no finish — a
|
|
1468
|
+
* real mid-reply drop. Throws only if every attempt kept yielding new events
|
|
1469
|
+
* yet never finished: a genuinely stuck, incomplete reply.
|
|
1461
1470
|
*/
|
|
1462
1471
|
async *resumeStreamGen(ctrl, seenIds, immediate) {
|
|
1463
1472
|
for (let attempt = 1; attempt <= MAX_RESUME_ATTEMPTS && !ctrl.signal.aborted; attempt++) {
|
|
@@ -1482,7 +1491,12 @@ var AgentTransport = class {
|
|
|
1482
1491
|
log4.debug("resume \u2192 no in-flight stream", { status: res.status });
|
|
1483
1492
|
return;
|
|
1484
1493
|
}
|
|
1494
|
+
const before = seenIds.size;
|
|
1485
1495
|
if (yield* this.drain(parseChatStream(res, ctrl.signal), seenIds, ctrl)) return;
|
|
1496
|
+
if (seenIds.size === before) {
|
|
1497
|
+
log4.debug("resume \u2192 stream closed with no new events; nothing to resume");
|
|
1498
|
+
return;
|
|
1499
|
+
}
|
|
1486
1500
|
}
|
|
1487
1501
|
if (ctrl.signal.aborted) return;
|
|
1488
1502
|
throw new StreamError("stream incomplete after resume attempts", "server");
|
|
@@ -5558,6 +5572,8 @@ function App({ options, hostElement, bus }) {
|
|
|
5558
5572
|
messagesSig.value = [...messagesSig.value, bubble];
|
|
5559
5573
|
setStreaming(true);
|
|
5560
5574
|
setActiveCancel(() => handle.cancel);
|
|
5575
|
+
const chatTab = chatTabId();
|
|
5576
|
+
if (chatTab) homeNav.switchTab(chatTab);
|
|
5561
5577
|
log16.info("resumed in-flight reply on mount");
|
|
5562
5578
|
}
|
|
5563
5579
|
reducer.apply(evt.chunk);
|
|
@@ -5584,7 +5600,7 @@ function App({ options, hostElement, bus }) {
|
|
|
5584
5600
|
}
|
|
5585
5601
|
}
|
|
5586
5602
|
},
|
|
5587
|
-
[reducer, messagesSig, feedback, bus, options]
|
|
5603
|
+
[reducer, messagesSig, feedback, bus, options, homeNav]
|
|
5588
5604
|
);
|
|
5589
5605
|
useEffect17(() => {
|
|
5590
5606
|
void runStartSession({ newConversation: false });
|