@helpai/elements 0.6.0 → 0.7.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 +18 -18
- package/elements-web-component.esm.js.map +4 -4
- package/elements.cjs.js +18 -18
- package/elements.cjs.js.map +4 -4
- package/elements.esm.js +18 -18
- package/elements.esm.js.map +4 -4
- package/elements.js +18 -18
- package/elements.js.map +4 -4
- package/index.d.ts +1 -1
- package/index.mjs +13 -19
- package/package.json +1 -1
- package/schema.d.ts +35 -35
- package/web-component.mjs +13 -19
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-DhWwzofY.js';
|
|
2
2
|
import 'zod';
|
|
3
3
|
|
|
4
4
|
/**
|
package/index.mjs
CHANGED
|
@@ -2169,6 +2169,12 @@ var FeedbackBus = class {
|
|
|
2169
2169
|
}
|
|
2170
2170
|
};
|
|
2171
2171
|
|
|
2172
|
+
// src/ui/error-message.ts
|
|
2173
|
+
function errorMessageFor(error, strings) {
|
|
2174
|
+
if (error instanceof StreamError && error.status === 429) return strings.errorRateLimited;
|
|
2175
|
+
return strings.errorGeneric;
|
|
2176
|
+
}
|
|
2177
|
+
|
|
2172
2178
|
// src/ui/launcher.tsx
|
|
2173
2179
|
import { useEffect, useState } from "preact/hooks";
|
|
2174
2180
|
|
|
@@ -4585,6 +4591,7 @@ function ArticleRow({ article, nav }) {
|
|
|
4585
4591
|
function HelpRoot({ transport, strings, config, nav, panelProps }) {
|
|
4586
4592
|
const tags = config.contentTags;
|
|
4587
4593
|
const [state, setState] = useState6("loading");
|
|
4594
|
+
const [errorMsg, setErrorMsg] = useState6(strings.errorGeneric);
|
|
4588
4595
|
const [items, setItems] = useState6([]);
|
|
4589
4596
|
const [query, setQuery] = useState6("");
|
|
4590
4597
|
const [reloadKey, setReloadKey] = useState6(0);
|
|
@@ -4598,6 +4605,7 @@ function HelpRoot({ transport, strings, config, nav, panelProps }) {
|
|
|
4598
4605
|
}).catch((err) => {
|
|
4599
4606
|
if (cancelled) return;
|
|
4600
4607
|
log12.warn("listContent (help) failed", { err });
|
|
4608
|
+
setErrorMsg(errorMessageFor(err, strings));
|
|
4601
4609
|
setState("error");
|
|
4602
4610
|
});
|
|
4603
4611
|
return () => {
|
|
@@ -4612,15 +4620,7 @@ function HelpRoot({ transport, strings, config, nav, panelProps }) {
|
|
|
4612
4620
|
}
|
|
4613
4621
|
if (state === "loading") return /* @__PURE__ */ jsx25(ModuleState, { message: strings.helpLoading, strings });
|
|
4614
4622
|
if (state === "error") {
|
|
4615
|
-
return /* @__PURE__ */ jsx25(
|
|
4616
|
-
ModuleState,
|
|
4617
|
-
{
|
|
4618
|
-
tone: "error",
|
|
4619
|
-
message: strings.errorGeneric,
|
|
4620
|
-
onRetry: () => setReloadKey((k) => k + 1),
|
|
4621
|
-
strings
|
|
4622
|
-
}
|
|
4623
|
-
);
|
|
4623
|
+
return /* @__PURE__ */ jsx25(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
|
|
4624
4624
|
}
|
|
4625
4625
|
if (items.length === 0) return /* @__PURE__ */ jsx25(ModuleState, { message: strings.helpEmpty, strings });
|
|
4626
4626
|
return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs20("section", { class: `${p18}-help-group`, children: [
|
|
@@ -4770,6 +4770,7 @@ var log14 = logger.scope("news");
|
|
|
4770
4770
|
function NewsRoot({ transport, strings, config, nav, panelProps }) {
|
|
4771
4771
|
const tags = config.contentTags;
|
|
4772
4772
|
const [state, setState] = useState8("loading");
|
|
4773
|
+
const [errorMsg, setErrorMsg] = useState8(strings.errorGeneric);
|
|
4773
4774
|
const [items, setItems] = useState8([]);
|
|
4774
4775
|
const [reloadKey, setReloadKey] = useState8(0);
|
|
4775
4776
|
useEffect13(() => {
|
|
@@ -4782,6 +4783,7 @@ function NewsRoot({ transport, strings, config, nav, panelProps }) {
|
|
|
4782
4783
|
}).catch((err) => {
|
|
4783
4784
|
if (cancelled) return;
|
|
4784
4785
|
log14.warn("listContent (news) failed", { err });
|
|
4786
|
+
setErrorMsg(errorMessageFor(err, strings));
|
|
4785
4787
|
setState("error");
|
|
4786
4788
|
});
|
|
4787
4789
|
return () => {
|
|
@@ -4791,15 +4793,7 @@ function NewsRoot({ transport, strings, config, nav, panelProps }) {
|
|
|
4791
4793
|
function renderBody() {
|
|
4792
4794
|
if (state === "loading") return /* @__PURE__ */ jsx28(ModuleState, { message: strings.newsLoading, strings });
|
|
4793
4795
|
if (state === "error") {
|
|
4794
|
-
return /* @__PURE__ */ jsx28(
|
|
4795
|
-
ModuleState,
|
|
4796
|
-
{
|
|
4797
|
-
tone: "error",
|
|
4798
|
-
message: strings.errorGeneric,
|
|
4799
|
-
onRetry: () => setReloadKey((k) => k + 1),
|
|
4800
|
-
strings
|
|
4801
|
-
}
|
|
4802
|
-
);
|
|
4796
|
+
return /* @__PURE__ */ jsx28(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
|
|
4803
4797
|
}
|
|
4804
4798
|
if (items.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.newsEmpty, strings });
|
|
4805
4799
|
return /* @__PURE__ */ jsx28("div", { class: `${p21}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs22(
|
|
@@ -5506,7 +5500,7 @@ function App({ options, hostElement, bus }) {
|
|
|
5506
5500
|
emitMessage(bus, options, "assistant", assistantText(assistantMsg));
|
|
5507
5501
|
} catch (error) {
|
|
5508
5502
|
assistantMsg.status = "error";
|
|
5509
|
-
assistantMsg.errorText = error
|
|
5503
|
+
assistantMsg.errorText = errorMessageFor(error, options.strings);
|
|
5510
5504
|
feedback.play("error");
|
|
5511
5505
|
bus.emit("error", error);
|
|
5512
5506
|
options.onError?.(error);
|
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-DhWwzofY.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
|
+
expanded: "expanded";
|
|
59
60
|
auto: "auto";
|
|
60
61
|
normal: "normal";
|
|
61
|
-
expanded: "expanded";
|
|
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
|
+
expanded: "expanded";
|
|
243
244
|
auto: "auto";
|
|
244
245
|
normal: "normal";
|
|
245
|
-
expanded: "expanded";
|
|
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
|
+
expanded: "expanded";
|
|
272
273
|
auto: "auto";
|
|
273
274
|
normal: "normal";
|
|
274
|
-
expanded: "expanded";
|
|
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
|
@@ -2233,6 +2233,12 @@ var FeedbackBus = class {
|
|
|
2233
2233
|
}
|
|
2234
2234
|
};
|
|
2235
2235
|
|
|
2236
|
+
// src/ui/error-message.ts
|
|
2237
|
+
function errorMessageFor(error, strings) {
|
|
2238
|
+
if (error instanceof StreamError && error.status === 429) return strings.errorRateLimited;
|
|
2239
|
+
return strings.errorGeneric;
|
|
2240
|
+
}
|
|
2241
|
+
|
|
2236
2242
|
// src/ui/launcher.tsx
|
|
2237
2243
|
import { useEffect, useState } from "preact/hooks";
|
|
2238
2244
|
|
|
@@ -4649,6 +4655,7 @@ function ArticleRow({ article, nav }) {
|
|
|
4649
4655
|
function HelpRoot({ transport, strings, config, nav, panelProps }) {
|
|
4650
4656
|
const tags = config.contentTags;
|
|
4651
4657
|
const [state, setState] = useState6("loading");
|
|
4658
|
+
const [errorMsg, setErrorMsg] = useState6(strings.errorGeneric);
|
|
4652
4659
|
const [items, setItems] = useState6([]);
|
|
4653
4660
|
const [query, setQuery] = useState6("");
|
|
4654
4661
|
const [reloadKey, setReloadKey] = useState6(0);
|
|
@@ -4662,6 +4669,7 @@ function HelpRoot({ transport, strings, config, nav, panelProps }) {
|
|
|
4662
4669
|
}).catch((err) => {
|
|
4663
4670
|
if (cancelled) return;
|
|
4664
4671
|
log12.warn("listContent (help) failed", { err });
|
|
4672
|
+
setErrorMsg(errorMessageFor(err, strings));
|
|
4665
4673
|
setState("error");
|
|
4666
4674
|
});
|
|
4667
4675
|
return () => {
|
|
@@ -4676,15 +4684,7 @@ function HelpRoot({ transport, strings, config, nav, panelProps }) {
|
|
|
4676
4684
|
}
|
|
4677
4685
|
if (state === "loading") return /* @__PURE__ */ jsx25(ModuleState, { message: strings.helpLoading, strings });
|
|
4678
4686
|
if (state === "error") {
|
|
4679
|
-
return /* @__PURE__ */ jsx25(
|
|
4680
|
-
ModuleState,
|
|
4681
|
-
{
|
|
4682
|
-
tone: "error",
|
|
4683
|
-
message: strings.errorGeneric,
|
|
4684
|
-
onRetry: () => setReloadKey((k) => k + 1),
|
|
4685
|
-
strings
|
|
4686
|
-
}
|
|
4687
|
-
);
|
|
4687
|
+
return /* @__PURE__ */ jsx25(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
|
|
4688
4688
|
}
|
|
4689
4689
|
if (items.length === 0) return /* @__PURE__ */ jsx25(ModuleState, { message: strings.helpEmpty, strings });
|
|
4690
4690
|
return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs20("section", { class: `${p18}-help-group`, children: [
|
|
@@ -4834,6 +4834,7 @@ var log14 = logger.scope("news");
|
|
|
4834
4834
|
function NewsRoot({ transport, strings, config, nav, panelProps }) {
|
|
4835
4835
|
const tags = config.contentTags;
|
|
4836
4836
|
const [state, setState] = useState8("loading");
|
|
4837
|
+
const [errorMsg, setErrorMsg] = useState8(strings.errorGeneric);
|
|
4837
4838
|
const [items, setItems] = useState8([]);
|
|
4838
4839
|
const [reloadKey, setReloadKey] = useState8(0);
|
|
4839
4840
|
useEffect13(() => {
|
|
@@ -4846,6 +4847,7 @@ function NewsRoot({ transport, strings, config, nav, panelProps }) {
|
|
|
4846
4847
|
}).catch((err) => {
|
|
4847
4848
|
if (cancelled) return;
|
|
4848
4849
|
log14.warn("listContent (news) failed", { err });
|
|
4850
|
+
setErrorMsg(errorMessageFor(err, strings));
|
|
4849
4851
|
setState("error");
|
|
4850
4852
|
});
|
|
4851
4853
|
return () => {
|
|
@@ -4855,15 +4857,7 @@ function NewsRoot({ transport, strings, config, nav, panelProps }) {
|
|
|
4855
4857
|
function renderBody() {
|
|
4856
4858
|
if (state === "loading") return /* @__PURE__ */ jsx28(ModuleState, { message: strings.newsLoading, strings });
|
|
4857
4859
|
if (state === "error") {
|
|
4858
|
-
return /* @__PURE__ */ jsx28(
|
|
4859
|
-
ModuleState,
|
|
4860
|
-
{
|
|
4861
|
-
tone: "error",
|
|
4862
|
-
message: strings.errorGeneric,
|
|
4863
|
-
onRetry: () => setReloadKey((k) => k + 1),
|
|
4864
|
-
strings
|
|
4865
|
-
}
|
|
4866
|
-
);
|
|
4860
|
+
return /* @__PURE__ */ jsx28(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
|
|
4867
4861
|
}
|
|
4868
4862
|
if (items.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.newsEmpty, strings });
|
|
4869
4863
|
return /* @__PURE__ */ jsx28("div", { class: `${p21}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs22(
|
|
@@ -5570,7 +5564,7 @@ function App({ options, hostElement, bus }) {
|
|
|
5570
5564
|
emitMessage(bus, options, "assistant", assistantText(assistantMsg));
|
|
5571
5565
|
} catch (error) {
|
|
5572
5566
|
assistantMsg.status = "error";
|
|
5573
|
-
assistantMsg.errorText = error
|
|
5567
|
+
assistantMsg.errorText = errorMessageFor(error, options.strings);
|
|
5574
5568
|
feedback.play("error");
|
|
5575
5569
|
bus.emit("error", error);
|
|
5576
5570
|
options.onError?.(error);
|