@helpai/elements 0.50.7 → 0.51.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 +19 -19
- package/elements-web-component.esm.js.map +3 -3
- package/elements.cjs.js +19 -19
- package/elements.cjs.js.map +3 -3
- package/elements.esm.js +19 -19
- package/elements.esm.js.map +3 -3
- package/elements.js +19 -19
- package/elements.js.map +3 -3
- package/index.d.ts +1 -1
- package/index.mjs +119 -21
- package/package.json +1 -1
- package/schema.d.ts +26 -26
- package/web-component.mjs +119 -21
package/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as Asset, B as BlocksConfig, C as ConnectionConfig, a as ConnectionConfigPartial, H as HandshakeResponse, L as Link, S as ServerConfig, b as SiteConfig, W as WidgetConfig, c as WidgetConfigPartial, d as WidgetSettings, e as WidgetSettingsPartial } from './deployment-
|
|
1
|
+
export { A as Asset, B as BlocksConfig, C as ConnectionConfig, a as ConnectionConfigPartial, H as HandshakeResponse, L as Link, S as ServerConfig, b as SiteConfig, W as WidgetConfig, c as WidgetConfigPartial, d as WidgetSettings, e as WidgetSettingsPartial } from './deployment-oSJ2nv2G.js';
|
|
2
2
|
import 'zod';
|
|
3
3
|
|
|
4
4
|
/**
|
package/index.mjs
CHANGED
|
@@ -29,7 +29,7 @@ var BRAND = {
|
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
// src/core/version.ts
|
|
32
|
-
var ELEMENTS_VERSION = true ? "0.
|
|
32
|
+
var ELEMENTS_VERSION = true ? "0.51.0" : "0.0.0-dev";
|
|
33
33
|
var ELEMENTS_VERSION_PARAM = "_ev";
|
|
34
34
|
|
|
35
35
|
// src/i18n/strings.ts
|
|
@@ -2112,6 +2112,13 @@ var AgentTransport = class {
|
|
|
2112
2112
|
// (visitor, conversation) pair.
|
|
2113
2113
|
__publicField(this, "visitorId");
|
|
2114
2114
|
__publicField(this, "conversationId");
|
|
2115
|
+
/**
|
|
2116
|
+
* Outcome of the most recent `resumeStream()` once it found NO replayable SSE — drives the App's
|
|
2117
|
+
* dangling-turn recovery. `live` = a stream was replayed; otherwise the server's JSON recovery status.
|
|
2118
|
+
* `needs-generation` means a durable user turn has no reply (e.g. a fast send→refresh aborted the
|
|
2119
|
+
* deferred LLM run) → the App re-sends to generate it. Reset at the start of each `resumeStream()`.
|
|
2120
|
+
*/
|
|
2121
|
+
__publicField(this, "resumeStatus");
|
|
2115
2122
|
// Host-asserted context (sanitised `userContext` / `pageContext`), refreshed via
|
|
2116
2123
|
// `setContext` and carried as the envelope's optional `context` so the backend
|
|
2117
2124
|
// always sees the visitor's latest context as they navigate.
|
|
@@ -2468,6 +2475,7 @@ var AgentTransport = class {
|
|
|
2468
2475
|
resumeStream() {
|
|
2469
2476
|
const ctrl = new AbortController();
|
|
2470
2477
|
const seenIds = /* @__PURE__ */ new Set();
|
|
2478
|
+
this.resumeStatus = void 0;
|
|
2471
2479
|
const iter = this.resumeStreamGen(ctrl, seenIds, true);
|
|
2472
2480
|
return { iter, cancel: () => ctrl.abort() };
|
|
2473
2481
|
}
|
|
@@ -2522,6 +2530,15 @@ var AgentTransport = class {
|
|
|
2522
2530
|
log6.debug("resume \u2192 no in-flight stream", { status: res.status });
|
|
2523
2531
|
return;
|
|
2524
2532
|
}
|
|
2533
|
+
const contentType = res.headers.get("content-type") ?? "";
|
|
2534
|
+
if (!contentType.includes("text/event-stream")) {
|
|
2535
|
+
const status = await res.json().then((body) => body.status).catch(() => void 0);
|
|
2536
|
+
log6.debug("resume \u2192 no live stream (status response)", { status, attempt });
|
|
2537
|
+
if (status === "pending" && attempt < MAX_RESUME_ATTEMPTS) continue;
|
|
2538
|
+
this.resumeStatus = status === "needs-generation" ? "needs-generation" : "completed";
|
|
2539
|
+
return;
|
|
2540
|
+
}
|
|
2541
|
+
this.resumeStatus = "live";
|
|
2525
2542
|
const before = seenIds.size;
|
|
2526
2543
|
if (yield* this.drain(parseChatStream(res, ctrl.signal), seenIds, ctrl)) return;
|
|
2527
2544
|
if (seenIds.size === before) {
|
|
@@ -2741,6 +2758,7 @@ function toReactive(m) {
|
|
|
2741
2758
|
role: m.role,
|
|
2742
2759
|
createdAt: m.createdAt,
|
|
2743
2760
|
status: m.status,
|
|
2761
|
+
canceled: m.canceled,
|
|
2744
2762
|
errorText: m.errorText,
|
|
2745
2763
|
finishReason: m.finishReason,
|
|
2746
2764
|
serverMessageId: m.serverMessageId,
|
|
@@ -2804,7 +2822,11 @@ function fromWireMessage(w) {
|
|
|
2804
2822
|
// Real send time when the backend provides it; otherwise fall back to now
|
|
2805
2823
|
// (older backends) so the timestamp + day divider still render.
|
|
2806
2824
|
createdAt: parseWireDate(w.createdAt) ?? Date.now(),
|
|
2807
|
-
status:
|
|
2825
|
+
// Map the persisted terminal status onto the bubble's render state: `failed` → an error bubble;
|
|
2826
|
+
// `canceled` → `complete` + the `canceled` flag (an empty canceled turn is hidden on render — see
|
|
2827
|
+
// `message-bubble`); everything else is a normal completed turn.
|
|
2828
|
+
status: w.status === "failed" ? "error" : "complete",
|
|
2829
|
+
canceled: w.status === "canceled",
|
|
2808
2830
|
partsSig: signal(parts)
|
|
2809
2831
|
};
|
|
2810
2832
|
}
|
|
@@ -2814,6 +2836,7 @@ function fromReactive(m) {
|
|
|
2814
2836
|
role: m.role,
|
|
2815
2837
|
createdAt: m.createdAt,
|
|
2816
2838
|
status: m.status,
|
|
2839
|
+
canceled: m.canceled,
|
|
2817
2840
|
errorText: m.errorText,
|
|
2818
2841
|
finishReason: m.finishReason,
|
|
2819
2842
|
serverMessageId: m.serverMessageId,
|
|
@@ -2829,11 +2852,16 @@ function assistantText(m) {
|
|
|
2829
2852
|
}
|
|
2830
2853
|
return out;
|
|
2831
2854
|
}
|
|
2832
|
-
function
|
|
2833
|
-
if (m.role !== "assistant" || m.status === "streaming") return false;
|
|
2855
|
+
function hasNoVisibleAnswer(m) {
|
|
2834
2856
|
if (assistantText(m).trim() !== "") return false;
|
|
2835
2857
|
return !m.partsSig.value.some((p36) => p36.kind === "tool" || p36.kind === "file" || p36.kind === "source");
|
|
2836
2858
|
}
|
|
2859
|
+
function isEmptyAssistantReply(m) {
|
|
2860
|
+
return m.role === "assistant" && m.status !== "streaming" && hasNoVisibleAnswer(m);
|
|
2861
|
+
}
|
|
2862
|
+
function isHiddenCanceledTurn(m) {
|
|
2863
|
+
return m.canceled === true && isEmptyAssistantReply(m);
|
|
2864
|
+
}
|
|
2837
2865
|
function partToReactive(p36) {
|
|
2838
2866
|
if (p36.kind === "text" || p36.kind === "reasoning") {
|
|
2839
2867
|
return { kind: p36.kind, id: p36.id, textSig: signal(p36.text), doneSig: signal(p36.done) };
|
|
@@ -2993,6 +3021,8 @@ var StreamReducer = class {
|
|
|
2993
3021
|
return;
|
|
2994
3022
|
case "data-notification":
|
|
2995
3023
|
return;
|
|
3024
|
+
case "data-conversation-rebind":
|
|
3025
|
+
return;
|
|
2996
3026
|
default: {
|
|
2997
3027
|
const _exhaustive = chunk;
|
|
2998
3028
|
void _exhaustive;
|
|
@@ -5705,6 +5735,7 @@ function MessageBubble({
|
|
|
5705
5735
|
const parts = useComputed5(() => message.partsSig.value);
|
|
5706
5736
|
const partList = parts.value;
|
|
5707
5737
|
const emptyReply = useComputed5(() => isEmptyAssistantReply(message));
|
|
5738
|
+
const hideCanceledHusk = useComputed5(() => isHiddenCanceledTurn(message));
|
|
5708
5739
|
const hasAnswerText = useComputed5(
|
|
5709
5740
|
() => message.partsSig.value.some((part) => part.kind === "text" && part.textSig.value.length > 0)
|
|
5710
5741
|
);
|
|
@@ -5715,6 +5746,7 @@ function MessageBubble({
|
|
|
5715
5746
|
const bufferedHold = responseMode === "buffered" && streaming;
|
|
5716
5747
|
const working = streaming && !hasAnswerText.value;
|
|
5717
5748
|
const showStreamDots = streaming && !bufferedHold && !(reasoningVisible.value && working);
|
|
5749
|
+
if (hideCanceledHusk.value) return null;
|
|
5718
5750
|
const stamp = formatStamp(message.createdAt);
|
|
5719
5751
|
return /* @__PURE__ */ jsx18("div", { class: `${p17}-bubble-row`, "data-role": message.role, "data-testid": tid(TID.messageBubble, message.id), children: /* @__PURE__ */ jsxs15("div", { class: `${p17}-bubble-col`, children: [
|
|
5720
5752
|
/* @__PURE__ */ jsxs15("div", { class: `${p17}-bubble`, children: [
|
|
@@ -6057,6 +6089,7 @@ function MessageList({
|
|
|
6057
6089
|
}
|
|
6058
6090
|
};
|
|
6059
6091
|
for (const m of messages.value) {
|
|
6092
|
+
if (m.role === "assistant" && m.id !== lastId && isEmptyAssistantReply(m)) continue;
|
|
6060
6093
|
flushMarkersBefore(m.createdAt);
|
|
6061
6094
|
const day = dayKey(m.createdAt);
|
|
6062
6095
|
if (day && day !== prevDay) {
|
|
@@ -7514,6 +7547,9 @@ function allToolPartsSettled(msg) {
|
|
|
7514
7547
|
return s === "output-available" || s === "output-error" || s === "output-denied" || s === "approval-responded";
|
|
7515
7548
|
});
|
|
7516
7549
|
}
|
|
7550
|
+
function isAbortError(error) {
|
|
7551
|
+
return error instanceof DOMException ? error.name === "AbortError" : error?.name === "AbortError";
|
|
7552
|
+
}
|
|
7517
7553
|
function App({ options, hostElement, bus }) {
|
|
7518
7554
|
const [persistence] = useState14(
|
|
7519
7555
|
() => createPersistence(options.widgetId, options.storage, options.aiAgentDeploymentId)
|
|
@@ -7656,6 +7692,8 @@ function App({ options, hostElement, bus }) {
|
|
|
7656
7692
|
const homeNavSeeded = useRef9(false);
|
|
7657
7693
|
const resumeActiveRef = useRef9(false);
|
|
7658
7694
|
const resumeBubbleRef = useRef9(null);
|
|
7695
|
+
const regenerateDanglingRef = useRef9(null);
|
|
7696
|
+
const regenInFlightRef = useRef9(false);
|
|
7659
7697
|
useEffect16(() => {
|
|
7660
7698
|
if (!conversationReady || homeNavSeeded.current) return;
|
|
7661
7699
|
homeNavSeeded.current = true;
|
|
@@ -7725,6 +7763,7 @@ function App({ options, hostElement, bus }) {
|
|
|
7725
7763
|
} else {
|
|
7726
7764
|
messagesSig.value = withWelcomeRows([], markers);
|
|
7727
7765
|
}
|
|
7766
|
+
if (transport.resumeStatus === "needs-generation") regenerateDanglingRef.current?.();
|
|
7728
7767
|
} catch (err) {
|
|
7729
7768
|
if (isStale()) return;
|
|
7730
7769
|
log17.warn("loadThread failed; resetting conversationId", { err, conversationId });
|
|
@@ -7854,11 +7893,28 @@ function App({ options, hostElement, bus }) {
|
|
|
7854
7893
|
useEffect16(() => {
|
|
7855
7894
|
if (effectiveLocale !== activeLocale) setActiveLocale(effectiveLocale);
|
|
7856
7895
|
}, [effectiveLocale, activeLocale]);
|
|
7896
|
+
const adoptConversationRebind = useCallback6(
|
|
7897
|
+
(chunk) => {
|
|
7898
|
+
if (chunk.type !== "data-conversation-rebind") return false;
|
|
7899
|
+
const next = chunk.data?.conversationId;
|
|
7900
|
+
if (next && next !== conversationIdSig.value) {
|
|
7901
|
+
const previous = conversationIdSig.value;
|
|
7902
|
+
conversationIdSig.value = next;
|
|
7903
|
+
persistence.saveConversationId(next);
|
|
7904
|
+
transport.primeIdentity(void 0, next);
|
|
7905
|
+
log17.info("conversation rebound (in-stream)", { previous, current: next });
|
|
7906
|
+
if (previous) bus.emit("conversationRebound", { previous, current: next, reason: next });
|
|
7907
|
+
}
|
|
7908
|
+
return true;
|
|
7909
|
+
},
|
|
7910
|
+
[conversationIdSig, persistence, transport, bus]
|
|
7911
|
+
);
|
|
7857
7912
|
const runResume = useCallback6(
|
|
7858
7913
|
async (handle) => {
|
|
7859
7914
|
let bubble = null;
|
|
7860
7915
|
try {
|
|
7861
7916
|
for await (const evt of handle.iter) {
|
|
7917
|
+
if (adoptConversationRebind(evt.chunk)) continue;
|
|
7862
7918
|
if (!bubble) {
|
|
7863
7919
|
bubble = makeAssistantMessage();
|
|
7864
7920
|
resumeBubbleRef.current = bubble;
|
|
@@ -7902,7 +7958,7 @@ function App({ options, hostElement, bus }) {
|
|
|
7902
7958
|
}
|
|
7903
7959
|
}
|
|
7904
7960
|
},
|
|
7905
|
-
[reducer, messagesSig, feedback, bus, options, homeNav]
|
|
7961
|
+
[reducer, messagesSig, feedback, bus, options, homeNav, adoptConversationRebind]
|
|
7906
7962
|
);
|
|
7907
7963
|
const resumeHandleRef = useRef9(null);
|
|
7908
7964
|
useEffect16(() => {
|
|
@@ -7927,16 +7983,22 @@ function App({ options, hostElement, bus }) {
|
|
|
7927
7983
|
setFormsReady(true);
|
|
7928
7984
|
}
|
|
7929
7985
|
})();
|
|
7930
|
-
|
|
7931
|
-
|
|
7932
|
-
|
|
7933
|
-
|
|
7934
|
-
|
|
7935
|
-
|
|
7936
|
-
|
|
7937
|
-
|
|
7938
|
-
|
|
7939
|
-
|
|
7986
|
+
void (async () => {
|
|
7987
|
+
const tasks = [];
|
|
7988
|
+
if (pendingThreadRef.current) {
|
|
7989
|
+
pendingThreadRef.current = false;
|
|
7990
|
+
const persisted = conversationIdSig.value;
|
|
7991
|
+
if (persisted) tasks.push(loadThread(persisted));
|
|
7992
|
+
}
|
|
7993
|
+
if (conversationIdSig.value) {
|
|
7994
|
+
const handle = transport.resumeStream();
|
|
7995
|
+
resumeHandleRef.current = handle;
|
|
7996
|
+
tasks.push(runResume(handle));
|
|
7997
|
+
}
|
|
7998
|
+
if (tasks.length === 0) return;
|
|
7999
|
+
await Promise.allSettled(tasks);
|
|
8000
|
+
if (transport.resumeStatus === "needs-generation") regenerateDanglingRef.current?.();
|
|
8001
|
+
})();
|
|
7940
8002
|
}, [activated]);
|
|
7941
8003
|
const formsLocaleRef = useRef9(null);
|
|
7942
8004
|
useEffect16(() => {
|
|
@@ -8009,6 +8071,7 @@ function App({ options, hostElement, bus }) {
|
|
|
8009
8071
|
setActiveCancel(() => handle.cancel);
|
|
8010
8072
|
try {
|
|
8011
8073
|
for await (const evt of handle.iter) {
|
|
8074
|
+
if (adoptConversationRebind(evt.chunk)) continue;
|
|
8012
8075
|
reducer.apply(evt.chunk);
|
|
8013
8076
|
if (evt.chunk.type === "finish" && evt.chunk.canContinue === false) {
|
|
8014
8077
|
setCanSend(false);
|
|
@@ -8029,11 +8092,19 @@ function App({ options, hostElement, bus }) {
|
|
|
8029
8092
|
emitMessage(bus, options, "assistant", assistantText(assistantMsg));
|
|
8030
8093
|
}
|
|
8031
8094
|
} catch (error) {
|
|
8032
|
-
|
|
8033
|
-
|
|
8034
|
-
|
|
8035
|
-
|
|
8036
|
-
|
|
8095
|
+
if (isAbortError(error)) {
|
|
8096
|
+
if (hasNoVisibleAnswer(assistantMsg)) {
|
|
8097
|
+
messagesSig.value = messagesSig.value.filter((m) => m !== assistantMsg);
|
|
8098
|
+
} else {
|
|
8099
|
+
assistantMsg.status = "complete";
|
|
8100
|
+
}
|
|
8101
|
+
} else {
|
|
8102
|
+
assistantMsg.status = "error";
|
|
8103
|
+
assistantMsg.errorText = errorMessageFor(error, options.strings);
|
|
8104
|
+
feedback.play("error");
|
|
8105
|
+
bus.emit("error", error);
|
|
8106
|
+
options.onError?.(error);
|
|
8107
|
+
}
|
|
8037
8108
|
} finally {
|
|
8038
8109
|
reducer.detach();
|
|
8039
8110
|
setStreaming(false);
|
|
@@ -8041,8 +8112,35 @@ function App({ options, hostElement, bus }) {
|
|
|
8041
8112
|
messagesSig.value = [...messagesSig.value];
|
|
8042
8113
|
}
|
|
8043
8114
|
},
|
|
8044
|
-
[
|
|
8115
|
+
[
|
|
8116
|
+
transport,
|
|
8117
|
+
reducer,
|
|
8118
|
+
messagesSig,
|
|
8119
|
+
conversationIdSig,
|
|
8120
|
+
options,
|
|
8121
|
+
bus,
|
|
8122
|
+
feedback,
|
|
8123
|
+
persistence,
|
|
8124
|
+
visitorId,
|
|
8125
|
+
adoptConversationRebind
|
|
8126
|
+
]
|
|
8045
8127
|
);
|
|
8128
|
+
const regenerateDanglingTurn = useCallback6(() => {
|
|
8129
|
+
if (streaming || regenInFlightRef.current || resumeBubbleRef.current) return;
|
|
8130
|
+
const last = messagesSig.value.filter((m) => !m.ephemeral).at(-1);
|
|
8131
|
+
if (last?.role !== "user") return;
|
|
8132
|
+
regenInFlightRef.current = true;
|
|
8133
|
+
log17.info("regenerating dangling user turn (needs-generation)");
|
|
8134
|
+
const assistantMsg = makeAssistantMessage();
|
|
8135
|
+
messagesSig.value = [...messagesSig.value, assistantMsg];
|
|
8136
|
+
reducer.attach(assistantMsg);
|
|
8137
|
+
void streamAssistant(assistantMsg, { continueExisting: false }).finally(() => {
|
|
8138
|
+
regenInFlightRef.current = false;
|
|
8139
|
+
});
|
|
8140
|
+
}, [streaming, messagesSig, reducer, streamAssistant]);
|
|
8141
|
+
useEffect16(() => {
|
|
8142
|
+
regenerateDanglingRef.current = regenerateDanglingTurn;
|
|
8143
|
+
}, [regenerateDanglingTurn]);
|
|
8046
8144
|
const decideTool = useCallback6(
|
|
8047
8145
|
(toolCallId, mutate) => {
|
|
8048
8146
|
if (streaming) return;
|
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, H as HandshakeResponse, L as Link, P as PAGE_AREA_SUGGESTIONS, f as PageContext, S as ServerConfig, b as SiteConfig, U as UserContext, W as WidgetConfig, c as WidgetConfigPartial, d as WidgetSettings, e as WidgetSettingsPartial, g as assetSchema, h as blocksConfigSchema, i as connectionConfigPartialSchema, j as connectionConfigSchema, k as cssColorSchema, l as cssLengthSchema, m as endpointsSchema, n as handshakeResponseSchema, o as linkSchema, p as localeSchema, q as pageContextSchema, s as serverConfigSchema, r as siteConfigSchema, u as userContextSchema, t as uuid7Schema, w as widgetConfigPartialSchema, v as widgetConfigSchema, x as widgetSettingsPartialSchema, y as widgetSettingsSchema } from './deployment-
|
|
1
|
+
export { A as Asset, B as BlocksConfig, C as ConnectionConfig, a as ConnectionConfigPartial, E as Endpoints, H as HandshakeResponse, L as Link, P as PAGE_AREA_SUGGESTIONS, f as PageContext, S as ServerConfig, b as SiteConfig, U as UserContext, W as WidgetConfig, c as WidgetConfigPartial, d as WidgetSettings, e as WidgetSettingsPartial, g as assetSchema, h as blocksConfigSchema, i as connectionConfigPartialSchema, j as connectionConfigSchema, k as cssColorSchema, l as cssLengthSchema, m as endpointsSchema, n as handshakeResponseSchema, o as linkSchema, p as localeSchema, q as pageContextSchema, s as serverConfigSchema, r as siteConfigSchema, u as userContextSchema, t as uuid7Schema, w as widgetConfigPartialSchema, v as widgetConfigSchema, x as widgetSettingsPartialSchema, y as widgetSettingsSchema } from './deployment-oSJ2nv2G.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";
|
|
59
60
|
expanded: "expanded";
|
|
60
61
|
auto: "auto";
|
|
61
|
-
normal: "normal";
|
|
62
62
|
}>>;
|
|
63
63
|
autoSizeBreakpoint: z.ZodDefault<z.ZodNumber>;
|
|
64
64
|
}, z.core.$loose>>;
|
|
@@ -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";
|
|
243
244
|
expanded: "expanded";
|
|
244
245
|
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";
|
|
272
273
|
expanded: "expanded";
|
|
273
274
|
auto: "auto";
|
|
274
|
-
normal: "normal";
|
|
275
275
|
}>>;
|
|
276
276
|
autoSizeBreakpoint: z.ZodDefault<z.ZodNumber>;
|
|
277
277
|
}, z.core.$loose>;
|
|
@@ -323,40 +323,40 @@ type FeatureFlags = z.infer<typeof featureFlagsSchema>;
|
|
|
323
323
|
*/
|
|
324
324
|
|
|
325
325
|
declare const actionNameSchema: z.ZodEnum<{
|
|
326
|
-
close: "close";
|
|
327
326
|
expand: "expand";
|
|
328
327
|
fullscreen: "fullscreen";
|
|
329
|
-
|
|
330
|
-
theme: "theme";
|
|
328
|
+
close: "close";
|
|
331
329
|
language: "language";
|
|
330
|
+
theme: "theme";
|
|
332
331
|
textSize: "textSize";
|
|
333
332
|
history: "history";
|
|
333
|
+
clear: "clear";
|
|
334
334
|
sound: "sound";
|
|
335
335
|
}>;
|
|
336
336
|
type ActionName = z.infer<typeof actionNameSchema>;
|
|
337
337
|
declare const headerActionsSchema: z.ZodArray<z.ZodEnum<{
|
|
338
|
-
close: "close";
|
|
339
338
|
expand: "expand";
|
|
340
339
|
fullscreen: "fullscreen";
|
|
341
|
-
|
|
342
|
-
theme: "theme";
|
|
340
|
+
close: "close";
|
|
343
341
|
language: "language";
|
|
342
|
+
theme: "theme";
|
|
344
343
|
textSize: "textSize";
|
|
345
344
|
history: "history";
|
|
345
|
+
clear: "clear";
|
|
346
346
|
sound: "sound";
|
|
347
347
|
}>>;
|
|
348
348
|
type HeaderActions = z.infer<typeof headerActionsSchema>;
|
|
349
349
|
/** Section wrapper — `actions` list wrapped under `header` in the dashboard form. */
|
|
350
350
|
declare const headerSchema: z.ZodObject<{
|
|
351
351
|
actions: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
352
|
-
close: "close";
|
|
353
352
|
expand: "expand";
|
|
354
353
|
fullscreen: "fullscreen";
|
|
355
|
-
|
|
356
|
-
theme: "theme";
|
|
354
|
+
close: "close";
|
|
357
355
|
language: "language";
|
|
356
|
+
theme: "theme";
|
|
358
357
|
textSize: "textSize";
|
|
359
358
|
history: "history";
|
|
359
|
+
clear: "clear";
|
|
360
360
|
sound: "sound";
|
|
361
361
|
}>>>;
|
|
362
362
|
}, z.core.$loose>;
|
|
@@ -372,33 +372,33 @@ type HeaderOptions = z.infer<typeof headerSchema>;
|
|
|
372
372
|
*/
|
|
373
373
|
|
|
374
374
|
declare const feedbackEventSchema: z.ZodEnum<{
|
|
375
|
-
voiceStart: "voiceStart";
|
|
376
|
-
voiceStop: "voiceStop";
|
|
377
375
|
error: "error";
|
|
378
376
|
messageReceived: "messageReceived";
|
|
379
377
|
messageSent: "messageSent";
|
|
378
|
+
voiceStart: "voiceStart";
|
|
379
|
+
voiceStop: "voiceStop";
|
|
380
380
|
}>;
|
|
381
381
|
type FeedbackEvent = z.infer<typeof feedbackEventSchema>;
|
|
382
382
|
declare const soundOptionsSchema: z.ZodObject<{
|
|
383
383
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
384
384
|
volume: z.ZodDefault<z.ZodNumber>;
|
|
385
385
|
events: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
386
|
-
voiceStart: "voiceStart";
|
|
387
|
-
voiceStop: "voiceStop";
|
|
388
386
|
error: "error";
|
|
389
387
|
messageReceived: "messageReceived";
|
|
390
388
|
messageSent: "messageSent";
|
|
389
|
+
voiceStart: "voiceStart";
|
|
390
|
+
voiceStop: "voiceStop";
|
|
391
391
|
}> & z.core.$partial, z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>>;
|
|
392
392
|
}, z.core.$loose>;
|
|
393
393
|
type SoundOptions = z.infer<typeof soundOptionsSchema>;
|
|
394
394
|
declare const hapticsOptionsSchema: z.ZodObject<{
|
|
395
395
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
396
396
|
events: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
397
|
-
voiceStart: "voiceStart";
|
|
398
|
-
voiceStop: "voiceStop";
|
|
399
397
|
error: "error";
|
|
400
398
|
messageReceived: "messageReceived";
|
|
401
399
|
messageSent: "messageSent";
|
|
400
|
+
voiceStart: "voiceStart";
|
|
401
|
+
voiceStop: "voiceStop";
|
|
402
402
|
}> & z.core.$partial, z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber, z.ZodArray<z.ZodNumber>]>>>;
|
|
403
403
|
}, z.core.$loose>;
|
|
404
404
|
type HapticsOptions = z.infer<typeof hapticsOptionsSchema>;
|
|
@@ -407,21 +407,21 @@ declare const feedbackSchema: 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";
|
|
412
410
|
error: "error";
|
|
413
411
|
messageReceived: "messageReceived";
|
|
414
412
|
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
|
haptics: z.ZodOptional<z.ZodObject<{
|
|
418
418
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
419
419
|
events: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
420
|
-
voiceStart: "voiceStart";
|
|
421
|
-
voiceStop: "voiceStop";
|
|
422
420
|
error: "error";
|
|
423
421
|
messageReceived: "messageReceived";
|
|
424
422
|
messageSent: "messageSent";
|
|
423
|
+
voiceStart: "voiceStart";
|
|
424
|
+
voiceStop: "voiceStop";
|
|
425
425
|
}> & z.core.$partial, z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber, z.ZodArray<z.ZodNumber>]>>>;
|
|
426
426
|
}, z.core.$loose>>;
|
|
427
427
|
}, z.core.$loose>;
|
|
@@ -856,18 +856,18 @@ type I18nOptions = z.infer<typeof i18nSchema>;
|
|
|
856
856
|
*/
|
|
857
857
|
|
|
858
858
|
declare const moduleLayoutSchema: z.ZodEnum<{
|
|
859
|
-
home: "home";
|
|
860
859
|
chat: "chat";
|
|
861
860
|
help: "help";
|
|
861
|
+
home: "home";
|
|
862
862
|
news: "news";
|
|
863
863
|
}>;
|
|
864
864
|
type ModuleLayout = z.infer<typeof moduleLayoutSchema>;
|
|
865
865
|
declare const moduleSchema: z.ZodObject<{
|
|
866
866
|
label: z.ZodString;
|
|
867
867
|
layout: z.ZodEnum<{
|
|
868
|
-
home: "home";
|
|
869
868
|
chat: "chat";
|
|
870
869
|
help: "help";
|
|
870
|
+
home: "home";
|
|
871
871
|
news: "news";
|
|
872
872
|
}>;
|
|
873
873
|
contentTags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -893,9 +893,9 @@ type ModuleOptions = z.infer<typeof moduleSchema>;
|
|
|
893
893
|
declare const modulesSchema: z.ZodArray<z.ZodObject<{
|
|
894
894
|
label: z.ZodString;
|
|
895
895
|
layout: z.ZodEnum<{
|
|
896
|
-
home: "home";
|
|
897
896
|
chat: "chat";
|
|
898
897
|
help: "help";
|
|
898
|
+
home: "home";
|
|
899
899
|
news: "news";
|
|
900
900
|
}>;
|
|
901
901
|
contentTags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|