@runtypelabs/persona 4.23.2 → 4.25.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/dist/animations/glyph-cycle.d.cts +1 -1
- package/dist/animations/glyph-cycle.d.ts +1 -1
- package/dist/animations/{types-CI7OckWI.d.cts → types-Db61aI9J.d.cts} +2 -0
- package/dist/animations/{types-CI7OckWI.d.ts → types-Db61aI9J.d.ts} +2 -0
- package/dist/animations/wipe.d.cts +1 -1
- package/dist/animations/wipe.d.ts +1 -1
- package/dist/animations-extra.d.cts +2 -0
- package/dist/animations-extra.d.ts +2 -0
- package/dist/approval-ui-3NMYNXBD.js +1 -0
- package/dist/approval-ui.cjs +2 -2
- package/dist/approval-ui.d.cts +278 -37
- package/dist/approval-ui.d.ts +278 -37
- package/dist/approval-ui.js +2 -2
- package/dist/{artifacts-ui-F4N6VMKF.js → artifacts-ui-IGB5YKLO.js} +4 -4
- package/dist/artifacts-ui.d.cts +273 -25
- package/dist/artifacts-ui.d.ts +273 -25
- package/dist/{chunk-NIKYKSNZ.js → chunk-7CO4T5KB.js} +1 -1
- package/dist/codegen.cjs +11 -11
- package/dist/codegen.js +13 -13
- package/dist/context-mentions.d.cts +273 -25
- package/dist/context-mentions.d.ts +273 -25
- package/dist/event-stream-view.d.cts +273 -25
- package/dist/event-stream-view.d.ts +273 -25
- package/dist/forms-ui.d.cts +319 -27
- package/dist/forms-ui.d.ts +319 -27
- package/dist/history-view.d.cts +2 -0
- package/dist/history-view.d.ts +2 -0
- package/dist/index.cjs +70 -69
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +344 -39
- package/dist/index.d.ts +344 -39
- package/dist/index.global.js +57 -54
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +70 -69
- package/dist/index.js.map +1 -1
- package/dist/install.global.js +1 -1
- package/dist/install.global.js.map +1 -1
- package/dist/launcher.global.js +2 -2
- package/dist/launcher.global.js.map +1 -1
- package/dist/session-reconnect.d.cts +273 -25
- package/dist/session-reconnect.d.ts +273 -25
- package/dist/smart-dom-reader.d.cts +273 -25
- package/dist/smart-dom-reader.d.ts +273 -25
- package/dist/theme-editor-preview.cjs +74 -73
- package/dist/theme-editor-preview.d.cts +280 -25
- package/dist/theme-editor-preview.d.ts +280 -25
- package/dist/theme-editor-preview.js +51 -50
- package/dist/theme-editor.cjs +10 -10
- package/dist/theme-editor.d.cts +293 -27
- package/dist/theme-editor.d.ts +293 -27
- package/dist/theme-editor.js +10 -10
- package/dist/theme-reference.cjs +1 -1
- package/dist/theme-reference.d.cts +1522 -11
- package/dist/theme-reference.d.ts +1522 -11
- package/dist/theme-reference.js +1 -1
- package/dist/voice-runtime-7DA7MJH4.js +1 -0
- package/dist/voice-runtime.cjs +1 -1
- package/dist/voice-runtime.d.cts +33 -0
- package/dist/voice-runtime.d.ts +33 -0
- package/dist/voice-runtime.js +1 -1
- package/dist/widget.css +1 -1
- package/package.json +3 -2
- package/src/__fixtures__/defaults-parity.v4.json +776 -0
- package/src/approval-ui-entry.ts +0 -1
- package/src/approval-ui-loader.ts +5 -4
- package/src/approval-ui.ts +0 -1
- package/src/client-identity-proof.test.ts +193 -0
- package/src/client-session-warm.test.ts +216 -0
- package/src/client-visitor-history.test.ts +6 -0
- package/src/client.ts +122 -30
- package/src/codegen.test.ts +24 -0
- package/src/components/activity-row.test.ts +100 -0
- package/src/components/activity-row.ts +136 -0
- package/src/components/approval-actions.test.ts +8 -5
- package/src/components/approval-actions.ts +19 -6
- package/src/components/approval-bubble.test.ts +56 -9
- package/src/components/approval-bubble.ts +36 -41
- package/src/components/composer-builder.ts +5 -2
- package/src/components/composer-parts.ts +10 -2
- package/src/components/header-builder.test.ts +32 -0
- package/src/components/header-builder.ts +7 -4
- package/src/components/header-layouts.test.ts +12 -0
- package/src/components/header-layouts.ts +3 -2
- package/src/components/launcher.ts +11 -2
- package/src/components/message-bubble.test.ts +22 -0
- package/src/components/message-bubble.ts +7 -3
- package/src/components/panel.test.ts +52 -1
- package/src/components/panel.ts +47 -8
- package/src/components/pill-composer-builder.test.ts +2 -0
- package/src/components/pill-composer-builder.ts +0 -1
- package/src/components/reasoning-bubble.ts +29 -17
- package/src/components/suggestions.test.ts +1 -0
- package/src/components/suggestions.ts +0 -16
- package/src/components/tool-bubble.ts +131 -114
- package/src/components/tool-details.test.ts +87 -0
- package/src/components/tool-details.ts +102 -0
- package/src/components/welcome.test.ts +8 -0
- package/src/components/welcome.ts +4 -2
- package/src/defaults-parity.test.ts +158 -0
- package/src/defaults.test.ts +69 -0
- package/src/defaults.ts +128 -49
- package/src/generated/runtype-openapi-contract.ts +2 -2
- package/src/index-core.ts +4 -0
- package/src/install.test.ts +24 -0
- package/src/install.ts +3 -1
- package/src/launcher-global.ts +2 -1
- package/src/launcher-variants.test.ts +52 -0
- package/src/runtime/init-update-reset.test.ts +21 -0
- package/src/session.ts +59 -7
- package/src/session.voice.test.ts +72 -1
- package/src/styles/widget-styles.test.ts +19 -0
- package/src/styles/widget.css +295 -23
- package/src/theme-editor/index.ts +2 -0
- package/src/theme-editor/preview-utils.test.ts +8 -0
- package/src/theme-editor/preview-utils.ts +7 -3
- package/src/theme-editor/sections.test.ts +31 -0
- package/src/theme-editor/sections.ts +55 -1
- package/src/theme-editor/state-preferences.test.ts +49 -0
- package/src/theme-editor/state.ts +73 -15
- package/src/theme-reference.test.ts +20 -0
- package/src/theme-reference.ts +11 -5
- package/src/tool-call-display-defaults.test.ts +33 -1
- package/src/types/theme.ts +80 -3
- package/src/types.ts +207 -22
- package/src/ui.activity-row.test.ts +91 -0
- package/src/ui.approval-plugin.test.ts +63 -0
- package/src/ui.composer-compact.test.ts +24 -2
- package/src/ui.composer-placement.test.ts +23 -0
- package/src/ui.detached-panel.test.ts +33 -6
- package/src/ui.docked.test.ts +19 -0
- package/src/ui.header-update-stability.test.ts +25 -0
- package/src/ui.identity-proof.test.ts +58 -0
- package/src/ui.launcher-teaser.test.ts +25 -0
- package/src/ui.message-width.test.ts +17 -2
- package/src/ui.reasoning-display.test.ts +92 -0
- package/src/ui.rebuild-composer.test.ts +20 -3
- package/src/ui.scroll.test.ts +32 -0
- package/src/ui.session-init.test.ts +312 -0
- package/src/ui.status-indicator.test.ts +82 -0
- package/src/ui.suggest-replies.test.ts +11 -0
- package/src/ui.ts +422 -74
- package/src/ui.v5-defaults.test.ts +144 -0
- package/src/ui.voice-prewarm.test.ts +222 -0
- package/src/ui.welcome.test.ts +92 -3
- package/src/utils/__snapshots__/tokens-parity.test.ts.snap +811 -140
- package/src/utils/code-generators.ts +14 -0
- package/src/utils/composer-compact.test.ts +0 -2
- package/src/utils/composer-compact.ts +2 -4
- package/src/utils/composer-placement.ts +2 -3
- package/src/utils/config-merge.test.ts +81 -5
- package/src/utils/config-merge.ts +13 -3
- package/src/utils/defaults-provenance.ts +67 -0
- package/src/utils/dock.ts +7 -1
- package/src/utils/launcher-variant.ts +16 -0
- package/src/utils/panel-config.ts +97 -0
- package/src/utils/status-indicator.ts +39 -0
- package/src/utils/theme.test.ts +182 -0
- package/src/utils/theme.ts +131 -18
- package/src/utils/tokens.test.ts +122 -1
- package/src/utils/tokens.ts +177 -17
- package/src/voice/runtype-voice-provider.ts +238 -27
- package/src/voice/voice.test.ts +272 -2
- package/src/welcome.test.ts +23 -0
- package/src/welcome.ts +16 -9
- package/dist/approval-ui-K7R5Q5OC.js +0 -1
- package/dist/voice-runtime-EFR3R5ES.js +0 -1
|
@@ -290,6 +290,7 @@ interface ResolvedWelcomeConfig {
|
|
|
290
290
|
* Optional on the interface, always populated by `resolveWelcomeConfig`:
|
|
291
291
|
* a plugin literal built against an older minor must still type-check.
|
|
292
292
|
*/
|
|
293
|
+
layout?: "top" | "centered";
|
|
293
294
|
anchor?: AgentWidgetWelcomeAnchor;
|
|
294
295
|
/** Percentage string; validated, falls back to "44%". */
|
|
295
296
|
anchorComposerTop?: string;
|
|
@@ -1061,6 +1062,8 @@ interface InputTokens extends ComponentTokenSet {
|
|
|
1061
1062
|
backdropFilter?: string;
|
|
1062
1063
|
}
|
|
1063
1064
|
interface LauncherTokens extends ComponentTokenSet {
|
|
1065
|
+
/** Distance from the viewport edges. Circle default: 20px; pill: 24px. */
|
|
1066
|
+
offset?: string;
|
|
1064
1067
|
size: string;
|
|
1065
1068
|
iconSize: string;
|
|
1066
1069
|
shadow: TokenReference<'shadow'>;
|
|
@@ -1083,6 +1086,15 @@ interface PanelTokens extends ComponentTokenSet {
|
|
|
1083
1086
|
inset?: string;
|
|
1084
1087
|
/** Background of the region revealed behind a detached panel. */
|
|
1085
1088
|
canvasBackground?: string;
|
|
1089
|
+
/** Chrome defaults by rendered panel mode. */
|
|
1090
|
+
modes?: Partial<Record<'floating' | 'inline' | 'sidebar' | 'docked' | 'mobile', {
|
|
1091
|
+
/** Full border shorthand (for example, `"1px solid var(--persona-border)"`). */
|
|
1092
|
+
border?: string;
|
|
1093
|
+
/** Box-shadow token reference or raw CSS shadow. */
|
|
1094
|
+
shadow?: string;
|
|
1095
|
+
/** Corner radius token reference or raw CSS radius. */
|
|
1096
|
+
borderRadius?: TokenReference<'radius'>;
|
|
1097
|
+
}>>;
|
|
1086
1098
|
}
|
|
1087
1099
|
/** Per-element text styling shared by themable text surfaces. */
|
|
1088
1100
|
interface TextStyleTokens {
|
|
@@ -1109,10 +1121,16 @@ interface HeaderTokens extends ComponentTokenSet {
|
|
|
1109
1121
|
*/
|
|
1110
1122
|
border?: TokenReference<'color'>;
|
|
1111
1123
|
borderRadius: TokenReference<'radius'>;
|
|
1124
|
+
/** Standard-header padding. @default "20px 24px" */
|
|
1125
|
+
padding?: string;
|
|
1126
|
+
/** Minimal-header padding. Explicitly wins over `padding`. @default "16px 24px" */
|
|
1127
|
+
minimalPadding?: string;
|
|
1112
1128
|
/** Background of the rounded avatar tile next to the title (Lucide / emoji / image). */
|
|
1113
1129
|
iconBackground: TokenReference<'color'>;
|
|
1114
1130
|
/** Foreground (glyph stroke or emoji text) on the header avatar tile. */
|
|
1115
1131
|
iconForeground: TokenReference<'color'>;
|
|
1132
|
+
/** Header identity glyph size as a fraction of its icon box. @default "0.6" */
|
|
1133
|
+
iconScale?: string;
|
|
1116
1134
|
/**
|
|
1117
1135
|
* Legacy alias of `title.color`; `title.color` wins when both are set.
|
|
1118
1136
|
* Unset, the title takes `foreground`, then the primary color.
|
|
@@ -1151,6 +1169,14 @@ interface HeaderTokens extends ComponentTokenSet {
|
|
|
1151
1169
|
* sibling. @default "1.5"
|
|
1152
1170
|
*/
|
|
1153
1171
|
controlStrokeWidth?: string;
|
|
1172
|
+
/** Header control corner radius. Per-control radius overrides win. */
|
|
1173
|
+
controlBorderRadius?: string;
|
|
1174
|
+
/** Default control hover/focus fill. Explicit button backgrounds win. */
|
|
1175
|
+
controlHoverBackground?: TokenReference<'color'>;
|
|
1176
|
+
/** Default control hover/focus icon color. Explicit button colors win. */
|
|
1177
|
+
controlHoverForeground?: TokenReference<'color'>;
|
|
1178
|
+
/** Keyboard focus outline; unset preserves the browser default. */
|
|
1179
|
+
controlFocusOutline?: string;
|
|
1154
1180
|
/** Box-shadow on the header (e.g., a fade shadow to replace the default border). */
|
|
1155
1181
|
shadow?: string;
|
|
1156
1182
|
/** Override the header bottom border (e.g., `none`). */
|
|
@@ -1325,6 +1351,12 @@ interface MessageGeometryTokens {
|
|
|
1325
1351
|
lineHeight?: string;
|
|
1326
1352
|
}
|
|
1327
1353
|
interface MessageTokens {
|
|
1354
|
+
/** Height of the optional transcript top fade. Default 18px. */
|
|
1355
|
+
topFadeHeight?: string;
|
|
1356
|
+
/** Vertical gap between transcript turns. @default "12px" */
|
|
1357
|
+
gap?: string;
|
|
1358
|
+
/** Gap between turns in fullscreen mode; falls back to `gap`. */
|
|
1359
|
+
fullscreenGap?: string;
|
|
1328
1360
|
user: MessageGeometryTokens & {
|
|
1329
1361
|
background: TokenReference<'color'>;
|
|
1330
1362
|
text: TokenReference<'color'>;
|
|
@@ -1338,6 +1370,8 @@ interface MessageTokens {
|
|
|
1338
1370
|
borderRadius: TokenReference<'radius'>;
|
|
1339
1371
|
/** Assistant bubble border color (CSS color). */
|
|
1340
1372
|
border?: TokenReference<'color'>;
|
|
1373
|
+
/** Border width; set to 0px for a flat assistant response. @default "1px" */
|
|
1374
|
+
borderWidth?: string;
|
|
1341
1375
|
/** Assistant bubble box-shadow (token ref or raw CSS, e.g. `none`). */
|
|
1342
1376
|
shadow?: string;
|
|
1343
1377
|
};
|
|
@@ -1456,12 +1490,40 @@ interface AttachmentTokens {
|
|
|
1456
1490
|
};
|
|
1457
1491
|
}
|
|
1458
1492
|
/** Tool-call row chrome (collapsible tool bubbles). */
|
|
1459
|
-
interface
|
|
1493
|
+
interface ActivityTokens {
|
|
1494
|
+
/** Minimum activity row height. */
|
|
1495
|
+
rowHeight?: string;
|
|
1496
|
+
/** Group child indentation; falls back to indent when unset. V5: 0px. */
|
|
1497
|
+
groupIndent?: string;
|
|
1498
|
+
/** Extra vertical gap between grouped rows. V5: 0px. */
|
|
1499
|
+
groupGap?: string;
|
|
1500
|
+
/** Padding around expanded group children. V5: 0px. */
|
|
1501
|
+
groupPadding?: string;
|
|
1502
|
+
/** Gap between consecutive activity entries. V5: 0px. */
|
|
1503
|
+
transcriptGap?: string;
|
|
1504
|
+
/** Gap from activity to an assistant response. V5: 12px. */
|
|
1505
|
+
responseGap?: string;
|
|
1506
|
+
/** Expanded body padding. V5: 4px 0. */
|
|
1507
|
+
bodyPadding?: string;
|
|
1508
|
+
/** Expanded reasoning text size. V5: 13px. */
|
|
1509
|
+
bodySize?: string;
|
|
1510
|
+
/** Expanded reasoning line height. V5: 1.5. */
|
|
1511
|
+
bodyLineHeight?: string;
|
|
1512
|
+
/** Expanded reasoning font weight. V5: 400. */
|
|
1513
|
+
bodyFontWeight?: string;
|
|
1514
|
+
/** Gap between expanded detail sections. V5: 8px. */
|
|
1515
|
+
sectionGap?: string;
|
|
1516
|
+
labelSize?: string;
|
|
1517
|
+
iconSize?: string;
|
|
1518
|
+
indent?: string;
|
|
1519
|
+
bodySurface?: TokenReference<'color'>;
|
|
1520
|
+
}
|
|
1521
|
+
interface ToolBubbleTokens extends ActivityTokens {
|
|
1460
1522
|
/** Box-shadow for tool bubbles (token ref or raw CSS, e.g. `none`). */
|
|
1461
1523
|
shadow: string;
|
|
1462
1524
|
}
|
|
1463
1525
|
/** Reasoning / “thinking” row chrome. */
|
|
1464
|
-
interface ReasoningBubbleTokens {
|
|
1526
|
+
interface ReasoningBubbleTokens extends ActivityTokens {
|
|
1465
1527
|
shadow: string;
|
|
1466
1528
|
}
|
|
1467
1529
|
/** One event-stream badge chip: fill + text pair. The chip border derives
|
|
@@ -1595,6 +1657,10 @@ interface ComposerChromeTokens {
|
|
|
1595
1657
|
shadow: string;
|
|
1596
1658
|
/** Border color of the composer form. @default semantic.colors.border */
|
|
1597
1659
|
borderColor?: TokenReference<'color'>;
|
|
1660
|
+
/** Focused form border color; falls back to borderColor. V5: a stronger neutral border. */
|
|
1661
|
+
focusBorderColor?: TokenReference<'color'>;
|
|
1662
|
+
/** Outer focus ring (CSS outline shorthand). V4: none; V5: a thin neutral ring. */
|
|
1663
|
+
focusRing?: string;
|
|
1598
1664
|
/** Inner padding of the composer form (raw CSS shorthand). @default "0.75rem 1rem" */
|
|
1599
1665
|
padding?: string;
|
|
1600
1666
|
/** Gap between the textarea row and the actions row. @default "0.5rem" */
|
|
@@ -1613,12 +1679,18 @@ interface ComposerChromeTokens {
|
|
|
1613
1679
|
controlSize?: string;
|
|
1614
1680
|
/** Glyph box inside those controls. @default "24px" */
|
|
1615
1681
|
controlIconSize?: string;
|
|
1682
|
+
/** Send/stop glyph size. Explicit sendButton.iconSize wins. V5: 18px. */
|
|
1683
|
+
sendIconSize?: string;
|
|
1684
|
+
/** Icon-mode submit button radius. V4 inherits the primary button; V5: 9999px. */
|
|
1685
|
+
sendButtonRadius?: string;
|
|
1686
|
+
/** Footer top border (CSS shorthand). V4: 1px solid divider; V5: none. */
|
|
1687
|
+
footerBorder?: string;
|
|
1616
1688
|
/**
|
|
1617
1689
|
* Background painted behind an overlaid composer footer
|
|
1618
1690
|
* (`composer.placement: "overlay"`). Any CSS `background` value, gradients
|
|
1619
1691
|
* included — same convention as the shadow tokens. Inert under
|
|
1620
1692
|
* `placement: "block"`.
|
|
1621
|
-
* @default "transparent"
|
|
1693
|
+
* @default "transparent" (V4); a theme-aware 24px fade (V5)
|
|
1622
1694
|
*/
|
|
1623
1695
|
overlayBand?: string;
|
|
1624
1696
|
/** Segmented mode-group track. */
|
|
@@ -1794,6 +1866,8 @@ interface ScrollToBottomTokens extends ComponentTokenSet {
|
|
|
1794
1866
|
}
|
|
1795
1867
|
/** Visual tokens shared by one suggestion presentation variant. */
|
|
1796
1868
|
interface SuggestionVariantTokens extends ComponentTokenSet {
|
|
1869
|
+
/** Label weight. V4: 500; V5: 400. */
|
|
1870
|
+
fontWeight?: string;
|
|
1797
1871
|
/** Space inside one item, between its icon and its copy. */
|
|
1798
1872
|
gap?: string;
|
|
1799
1873
|
/** Space between suggestion items in the container. */
|
|
@@ -1842,6 +1916,7 @@ interface ComponentTokens {
|
|
|
1842
1916
|
voice: VoiceTokens;
|
|
1843
1917
|
approval: ApprovalTokens;
|
|
1844
1918
|
attachment: AttachmentTokens;
|
|
1919
|
+
activity?: ActivityTokens;
|
|
1845
1920
|
toolBubble: ToolBubbleTokens;
|
|
1846
1921
|
reasoningBubble: ReasoningBubbleTokens;
|
|
1847
1922
|
/** Event-stream inspector badge chips. */
|
|
@@ -4562,6 +4637,14 @@ type AgentWidgetToolCallCollapsedMode = "tool-call" | "tool-name" | "tool-previe
|
|
|
4562
4637
|
*/
|
|
4563
4638
|
type AgentWidgetToolCallLoadingAnimation = "none" | "pulse" | "shimmer" | "shimmer-color" | "rainbow";
|
|
4564
4639
|
type AgentWidgetToolCallDisplayFeature = {
|
|
4640
|
+
/** Activity chrome. Defaults to card in V4 and row with future.v5Defaults. */
|
|
4641
|
+
variant?: "card" | "row";
|
|
4642
|
+
/** Row status icons: always, active/attention-needed only, or never. V5 defaults to active; V4 to always. */
|
|
4643
|
+
iconVisibility?: "always" | "active" | "never";
|
|
4644
|
+
/** Row variant: open when the first content chunk arrives. Default false in V5; true in V4. */
|
|
4645
|
+
autoExpand?: boolean;
|
|
4646
|
+
/** Row variant: collapse once after completion, in ms; false disables. Default 1000. */
|
|
4647
|
+
autoCollapseDelay?: number | false;
|
|
4565
4648
|
/**
|
|
4566
4649
|
* Controls what collapsed tool call rows show in their header/summary area.
|
|
4567
4650
|
* @default "tool-call"
|
|
@@ -4592,9 +4675,10 @@ type AgentWidgetToolCallDisplayFeature = {
|
|
|
4592
4675
|
* Controls how a grouped tool sequence is rendered.
|
|
4593
4676
|
* - `"stack"`: show the group summary and each child tool row.
|
|
4594
4677
|
* - `"summary"`: show one consolidated summary row only.
|
|
4678
|
+
* - `"collapsible"`: expandable activity group (V5 default).
|
|
4595
4679
|
* @default "stack"
|
|
4596
4680
|
*/
|
|
4597
|
-
groupedMode?: "stack" | "summary";
|
|
4681
|
+
groupedMode?: "stack" | "summary" | "collapsible";
|
|
4598
4682
|
/**
|
|
4599
4683
|
* What happens to a tool call row once it completes.
|
|
4600
4684
|
*
|
|
@@ -4625,6 +4709,14 @@ type AgentWidgetToolCallDisplayFeature = {
|
|
|
4625
4709
|
/** See `features.toolCallDisplay.completedVisibility`. */
|
|
4626
4710
|
type AgentWidgetToolCallCompletedVisibility = "kept" | "removed";
|
|
4627
4711
|
type AgentWidgetReasoningDisplayFeature = {
|
|
4712
|
+
/** Activity chrome. Defaults to card in V4 and row with future.v5Defaults. */
|
|
4713
|
+
variant?: "card" | "row";
|
|
4714
|
+
/** Row status icons: always, active/attention-needed only, or never. V5 defaults to active; V4 to always. */
|
|
4715
|
+
iconVisibility?: "always" | "active" | "never";
|
|
4716
|
+
/** Row variant: open when the first content chunk arrives. Default false in V5; true in V4. */
|
|
4717
|
+
autoExpand?: boolean;
|
|
4718
|
+
/** Row variant: collapse once after completion, in ms; false disables. Default 1000. */
|
|
4719
|
+
autoCollapseDelay?: number | false;
|
|
4628
4720
|
/**
|
|
4629
4721
|
* When true, active collapsed reasoning rows can render a lightweight preview block.
|
|
4630
4722
|
* @default false
|
|
@@ -5320,8 +5412,8 @@ interface AgentWidgetHistoryFeature {
|
|
|
5320
5412
|
* otherwise `"browser"`) and narrows it to what the provider advertises, so a
|
|
5321
5413
|
* browser-only provider is never asked for a scope it cannot serve. An
|
|
5322
5414
|
* explicit `features.history.scope` is a hard request and still fails closed
|
|
5323
|
-
* with `unsupported_scope`.
|
|
5324
|
-
*
|
|
5415
|
+
* with `unsupported_scope`. History operations on a supplied provider never
|
|
5416
|
+
* call `getIdentityProof`, and `HistoryOperationContext` carries only the resolved scope;
|
|
5325
5417
|
* report your own identity through `getIdentityStatus()` /
|
|
5326
5418
|
* `subscribeIdentityStatus()`, which is what the scope banner and its retry
|
|
5327
5419
|
* affordance read.
|
|
@@ -5705,7 +5797,7 @@ type EventStreamConfig = {
|
|
|
5705
5797
|
/**
|
|
5706
5798
|
* Fields to extract from event payloads for description text.
|
|
5707
5799
|
* The first matching field value is displayed after the badge.
|
|
5708
|
-
* @default ["flowName", "stepName", "name", "tool", "toolName"]
|
|
5800
|
+
* @default ["flowName", "stepName", "reasoningText", "text", "name", "tool", "toolName"]
|
|
5709
5801
|
*/
|
|
5710
5802
|
descriptionFields?: string[];
|
|
5711
5803
|
/**
|
|
@@ -5916,6 +6008,8 @@ type AgentWidgetComposerBarPeekConfig = {
|
|
|
5916
6008
|
streamAnimation?: AgentWidgetStreamAnimationFeature;
|
|
5917
6009
|
};
|
|
5918
6010
|
type AgentWidgetLauncherConfig = {
|
|
6011
|
+
/** Collapsed launcher shape. V4 defaults to pill; V5 defaults to circle. */
|
|
6012
|
+
variant?: "pill" | "circle";
|
|
5919
6013
|
enabled?: boolean;
|
|
5920
6014
|
title?: string;
|
|
5921
6015
|
subtitle?: string;
|
|
@@ -6659,9 +6753,9 @@ type AgentWidgetComposerConfig = {
|
|
|
6659
6753
|
/**
|
|
6660
6754
|
* Where the composer footer sits relative to the transcript.
|
|
6661
6755
|
*
|
|
6662
|
-
* - `"block"` (default): the footer is a flex sibling below the scroll body.
|
|
6756
|
+
* - `"block"` (V4 default): the footer is a flex sibling below the scroll body.
|
|
6663
6757
|
* Nothing scrolls behind it.
|
|
6664
|
-
* - `"overlay"
|
|
6758
|
+
* - `"overlay"` (V5 default): the footer is absolutely overlaid on the scroll body, so the
|
|
6665
6759
|
* transcript scrolls behind it (the chatgpt.com / claude.ai model, where the
|
|
6666
6760
|
* composer is sticky inside the scroller). The widget reserves the footer's
|
|
6667
6761
|
* live height as bottom padding on the scroll body and on a plugin welcome
|
|
@@ -6673,7 +6767,7 @@ type AgentWidgetComposerConfig = {
|
|
|
6673
6767
|
* included) and `theme.components.input.backdropFilter`.
|
|
6674
6768
|
*
|
|
6675
6769
|
* Ignored in composer-bar mount mode, which owns its own geometry.
|
|
6676
|
-
* @default "block"
|
|
6770
|
+
* @default "block" (V4), "overlay" (V5)
|
|
6677
6771
|
*/
|
|
6678
6772
|
placement?: ComposerPlacement;
|
|
6679
6773
|
/**
|
|
@@ -6687,8 +6781,9 @@ type AgentWidgetComposerConfig = {
|
|
|
6687
6781
|
*
|
|
6688
6782
|
* `"single-row"` describes the IDLE composer only. It composes with the
|
|
6689
6783
|
* compact state, so a wrapped draft, chips, attachment previews, a quote, a
|
|
6690
|
-
* pending card
|
|
6691
|
-
* as `data-persona-composer-compact` does today.
|
|
6784
|
+
* pending card all fall back to the stacked card, exactly
|
|
6785
|
+
* as `data-persona-composer-compact` does today. Recording alone does not
|
|
6786
|
+
* expand the composer; dictated text expands it when it wraps.
|
|
6692
6787
|
*
|
|
6693
6788
|
* Ignored in composer-bar mount mode, whose pill is already one row.
|
|
6694
6789
|
* @default "stacked"
|
|
@@ -6730,7 +6825,14 @@ type AgentWidgetClearChatConfig = {
|
|
|
6730
6825
|
showTooltip?: boolean;
|
|
6731
6826
|
};
|
|
6732
6827
|
type AgentWidgetStatusIndicatorConfig = {
|
|
6828
|
+
/** Show the indicator. Explicit false also hides transient connection states. */
|
|
6733
6829
|
visible?: boolean;
|
|
6830
|
+
/**
|
|
6831
|
+
* "always" shows status beneath the composer; "transient" shows connecting,
|
|
6832
|
+
* reconnecting, and error status above it, hiding normal idle/streaming status.
|
|
6833
|
+
* Available in both defaults states. Default: "always" in v4, "transient" in v5.
|
|
6834
|
+
*/
|
|
6835
|
+
mode?: "always" | "transient";
|
|
6734
6836
|
/** Text alignment. Default: 'right'. */
|
|
6735
6837
|
align?: 'left' | 'center' | 'right';
|
|
6736
6838
|
idleText?: string;
|
|
@@ -6744,6 +6846,22 @@ type AgentWidgetStatusIndicatorConfig = {
|
|
|
6744
6846
|
/** Status text while a reconnect attempt is in flight. */
|
|
6745
6847
|
resumingText?: string;
|
|
6746
6848
|
};
|
|
6849
|
+
/** Built-in `voiceRecognition.prewarm` triggers. See {@link AgentWidgetVoiceRecognitionConfig.prewarm}. */
|
|
6850
|
+
type AgentWidgetVoicePrewarmTrigger = 'hover';
|
|
6851
|
+
/**
|
|
6852
|
+
* Custom `voiceRecognition.prewarm` trigger. Runs while the composer has a mic
|
|
6853
|
+
* button, and again when the button is rebuilt or `update()` swaps in a
|
|
6854
|
+
* different function. Call `warm()` whenever the visitor shows intent to talk
|
|
6855
|
+
* (it is safe to call repeatedly). Return a cleanup to run on replacement.
|
|
6856
|
+
*/
|
|
6857
|
+
type AgentWidgetVoicePrewarmHook = (context: {
|
|
6858
|
+
/** Fire-and-forget voice warm-up; latched and error-swallowing. */
|
|
6859
|
+
warm: () => void;
|
|
6860
|
+
/** The composer's current mic button. */
|
|
6861
|
+
micButton: HTMLButtonElement;
|
|
6862
|
+
/** The widget's mount element. */
|
|
6863
|
+
mount: HTMLElement;
|
|
6864
|
+
}) => void | (() => void);
|
|
6747
6865
|
type AgentWidgetVoiceRecognitionConfig = {
|
|
6748
6866
|
/**
|
|
6749
6867
|
* Enable the mic button and voice input. The mic still only renders when the
|
|
@@ -6809,6 +6927,29 @@ type AgentWidgetVoiceRecognitionConfig = {
|
|
|
6809
6927
|
* Fires once per turn after the reply completes.
|
|
6810
6928
|
*/
|
|
6811
6929
|
onMetrics?: (metrics: VoiceMetrics) => void;
|
|
6930
|
+
/**
|
|
6931
|
+
* Warm the voice path when the visitor shows intent to talk, before the mic
|
|
6932
|
+
* click, so the call starts faster.
|
|
6933
|
+
*
|
|
6934
|
+
* - `'hover'`: when the pointer enters the mic button, it receives focus, or
|
|
6935
|
+
* (on touch) the first pointer-down on it.
|
|
6936
|
+
* - `false`: never.
|
|
6937
|
+
* - A function: custom trigger. Called with `{ warm, micButton, mount }`
|
|
6938
|
+
* while the mic button exists (and again when the button is rebuilt or
|
|
6939
|
+
* `update()` swaps in a different function); call `warm()` whenever you
|
|
6940
|
+
* decide, e.g. when the panel opens. May return a cleanup that runs on
|
|
6941
|
+
* destroy, rebuild, or replacement. Replaces the built-in trigger.
|
|
6942
|
+
*
|
|
6943
|
+
* What `warm()` does depends on the provider: `runtype` fires its prewarm
|
|
6944
|
+
* (see `provider.runtype.prewarmMode`), a `custom` provider's optional
|
|
6945
|
+
* {@link VoiceProvider.prewarm} runs, and the browser (Web Speech) path
|
|
6946
|
+
* starts the client-token session init (as `sessionInit` does), since speech
|
|
6947
|
+
* recognition itself cannot start before the click. Warming is
|
|
6948
|
+
* fire-and-forget, latched, and never surfaces an error or UI state.
|
|
6949
|
+
*
|
|
6950
|
+
* @default 'hover' in client token mode, otherwise `false`
|
|
6951
|
+
*/
|
|
6952
|
+
prewarm?: AgentWidgetVoicePrewarmTrigger | AgentWidgetVoicePrewarmHook | false;
|
|
6812
6953
|
provider?: {
|
|
6813
6954
|
type: 'browser' | 'runtype' | 'custom';
|
|
6814
6955
|
browser?: {
|
|
@@ -6830,6 +6971,23 @@ type AgentWidgetVoiceRecognitionConfig = {
|
|
|
6830
6971
|
* `@runtypelabs/persona/voice-worklet-player` for a jitter-buffered engine.
|
|
6831
6972
|
*/
|
|
6832
6973
|
createPlaybackEngine?: () => VoicePlaybackEngine | Promise<VoicePlaybackEngine>;
|
|
6974
|
+
/**
|
|
6975
|
+
* How `prewarm()` warms the voice path (see `voiceRecognition.prewarm`).
|
|
6976
|
+
*
|
|
6977
|
+
* - `'request'` (default): a fire-and-forget
|
|
6978
|
+
* `POST {host}/v1/client/agents/{agentId}/voice/prewarm`.
|
|
6979
|
+
* - `'attach'`: open the voice WebSocket ahead of the click without
|
|
6980
|
+
* starting a call; the click then starts the call on that socket. It can
|
|
6981
|
+
* create server work before the visitor clicks, so it is opt-in.
|
|
6982
|
+
* @default 'request'
|
|
6983
|
+
*/
|
|
6984
|
+
prewarmMode?: 'request' | 'attach';
|
|
6985
|
+
/**
|
|
6986
|
+
* `'attach'` mode: how long (ms) an attached socket waits for the click
|
|
6987
|
+
* before it closes. The server clamps it to 30000..600000.
|
|
6988
|
+
* @default 30000
|
|
6989
|
+
*/
|
|
6990
|
+
attachIdleMs?: number;
|
|
6833
6991
|
/** @deprecated No-op on the realtime path: the server's STT owns turn-taking. */
|
|
6834
6992
|
pauseDuration?: number;
|
|
6835
6993
|
/** @deprecated No-op on the realtime path: the server's STT owns turn-taking. */
|
|
@@ -7130,6 +7288,13 @@ interface VoiceProvider {
|
|
|
7130
7288
|
deactivateBargeIn?(): Promise<void>;
|
|
7131
7289
|
/** Stop playback / cancel in-flight request without starting recording */
|
|
7132
7290
|
stopPlayback?(): void;
|
|
7291
|
+
/**
|
|
7292
|
+
* Warm the provider ahead of `startListening()` (the widget calls it on mic
|
|
7293
|
+
* intent, see `voiceRecognition.prewarm`). Must be fire-and-forget: never
|
|
7294
|
+
* throw, emit errors or status, or acquire the microphone. May be called
|
|
7295
|
+
* repeatedly; throttle as needed.
|
|
7296
|
+
*/
|
|
7297
|
+
prewarm?(): void;
|
|
7133
7298
|
}
|
|
7134
7299
|
/**
|
|
7135
7300
|
* Extra context for an approval decision, surfaced to `onDecision` and to the
|
|
@@ -7505,7 +7670,8 @@ type AgentWidgetResolvedSuggestion = {
|
|
|
7505
7670
|
};
|
|
7506
7671
|
/** Presentation keys shared by every suggestion surface. */
|
|
7507
7672
|
type AgentWidgetSuggestionSurfaceConfig = {
|
|
7508
|
-
/** Item density.
|
|
7673
|
+
/** Item density. V4 starters: card. V5 starters: chip, or card in fullscreen.
|
|
7674
|
+
* Follow-ups default to chip. */
|
|
7509
7675
|
variant?: AgentWidgetSuggestionVariant;
|
|
7510
7676
|
/** Default click behavior, overridable per item. Defaults to `send`. */
|
|
7511
7677
|
behavior?: AgentWidgetSuggestionBehavior;
|
|
@@ -7516,7 +7682,7 @@ type AgentWidgetSuggestionSurfaceConfig = {
|
|
|
7516
7682
|
* own stacking.
|
|
7517
7683
|
*/
|
|
7518
7684
|
overflow?: "scroll" | "wrap";
|
|
7519
|
-
/** Maximum visible items. Defaults to 4. */
|
|
7685
|
+
/** Maximum visible items. Defaults to 4, or 3 for V5 non-fullscreen starters. */
|
|
7520
7686
|
maxItems?: number;
|
|
7521
7687
|
};
|
|
7522
7688
|
type AgentWidgetStarterSuggestionsConfig = AgentWidgetSuggestionSurfaceConfig & {
|
|
@@ -7570,8 +7736,8 @@ type AgentWidgetSuggestionsConfig = {
|
|
|
7570
7736
|
type AgentWidgetWelcomeVariant = "card" | "hero" | "none";
|
|
7571
7737
|
/**
|
|
7572
7738
|
* When the welcome surface goes away. `"never"` is the default for `"card"`;
|
|
7573
|
-
* `"on-first-message"` is
|
|
7574
|
-
*
|
|
7739
|
+
* `"on-first-message"` is forced for legacy V4 `"hero"`. V5 defaults every
|
|
7740
|
+
* variant to `"on-first-message"`. Explicit layout opts into overridable dismissal.
|
|
7575
7741
|
*/
|
|
7576
7742
|
type AgentWidgetWelcomeDismiss = "never" | "on-first-message";
|
|
7577
7743
|
/**
|
|
@@ -7625,7 +7791,10 @@ type AgentWidgetWelcomeAlign = "start" | "center";
|
|
|
7625
7791
|
* host-set value from a filled-in default.
|
|
7626
7792
|
*/
|
|
7627
7793
|
interface AgentWidgetWelcomeConfig {
|
|
7628
|
-
/**
|
|
7794
|
+
/** Vertical placement: V4 defaults to top; V5 to centered. Fullscreen centered
|
|
7795
|
+
* welcomes also raise the empty composer unless `anchor` is explicitly set. */
|
|
7796
|
+
layout?: "top" | "centered";
|
|
7797
|
+
/** Card or hero title. V4: "Hello 👋". V5: "What can I help with?". */
|
|
7629
7798
|
title?: string;
|
|
7630
7799
|
/**
|
|
7631
7800
|
* Small muted line above the title, e.g. a section name. Omitted when unset
|
|
@@ -7638,19 +7807,22 @@ interface AgentWidgetWelcomeConfig {
|
|
|
7638
7807
|
icon?: AgentWidgetWelcomeIcon;
|
|
7639
7808
|
/**
|
|
7640
7809
|
* Horizontal alignment of the kicker, title, subtitle, and starter
|
|
7641
|
-
* suggestions.
|
|
7810
|
+
* suggestions. Centered layouts default to center. Otherwise unset follows
|
|
7811
|
+
* the variant: `card` starts, `hero` centers.
|
|
7642
7812
|
*/
|
|
7643
7813
|
align?: AgentWidgetWelcomeAlign;
|
|
7644
7814
|
/** @default "card" */
|
|
7645
7815
|
variant?: AgentWidgetWelcomeVariant;
|
|
7646
|
-
/**
|
|
7816
|
+
/** V4: never for card, forced on-first-message for hero. V5: on-first-message
|
|
7817
|
+
* for all variants; explicit values win. Explicit layout also allows overriding
|
|
7818
|
+
* the legacy hero dismissal in V4. */
|
|
7647
7819
|
dismiss?: AgentWidgetWelcomeDismiss;
|
|
7648
7820
|
/**
|
|
7649
7821
|
* Vertical anchoring of the greeting-plus-composer pair in the EMPTY
|
|
7650
7822
|
* conversation only. On the first message the pair drops to the bottom
|
|
7651
7823
|
* (animated; see `data-persona-conversation-state`).
|
|
7652
7824
|
*
|
|
7653
|
-
* - `"bottom"
|
|
7825
|
+
* - `"bottom"`: the composer stays pinned at the bottom.
|
|
7654
7826
|
* - `"center"`: greeting and composer float together so the composer's top
|
|
7655
7827
|
* edge lands at `anchorComposerTop` of the panel column, and the welcome
|
|
7656
7828
|
* surface is end-anchored `composerGap` above it.
|
|
@@ -7658,7 +7830,8 @@ interface AgentWidgetWelcomeConfig {
|
|
|
7658
7830
|
* Composes with either `composer.placement`. Ignored in composer-bar mount
|
|
7659
7831
|
* mode. `renderWelcome` plugin content inherits the anchor: the widget
|
|
7660
7832
|
* positions the overlay host and reserves the composer zone.
|
|
7661
|
-
*
|
|
7833
|
+
* Defaults to bottom, except centered fullscreen layouts, which center the
|
|
7834
|
+
* measured greeting/composer group when no anchor override is supplied.
|
|
7662
7835
|
*/
|
|
7663
7836
|
anchor?: AgentWidgetWelcomeAnchor;
|
|
7664
7837
|
/**
|
|
@@ -8150,6 +8323,9 @@ type AgentWidgetLayoutConfig = {
|
|
|
8150
8323
|
* `launcher.composerBar.contentMaxWidth`)
|
|
8151
8324
|
*/
|
|
8152
8325
|
contentMaxWidth?: string;
|
|
8326
|
+
/** Fade the transcript's top edge when content is scrolled above it.
|
|
8327
|
+
* Defaults to false in V4 and true with future.v5Defaults. */
|
|
8328
|
+
topFade?: boolean;
|
|
8153
8329
|
};
|
|
8154
8330
|
/**
|
|
8155
8331
|
* Token types for marked renderer methods
|
|
@@ -8763,7 +8939,30 @@ type AgentWidgetLoadingIndicatorConfig = {
|
|
|
8763
8939
|
*/
|
|
8764
8940
|
renderIdle?: (context: IdleIndicatorRenderContext) => HTMLElement | null;
|
|
8765
8941
|
};
|
|
8942
|
+
/** Built-in `sessionInit` triggers. See {@link AgentWidgetConfig.sessionInit}. */
|
|
8943
|
+
type AgentWidgetSessionInitTrigger = 'input' | 'focus' | 'mount' | 'send';
|
|
8944
|
+
/**
|
|
8945
|
+
* Custom `sessionInit` trigger. Runs when the widget mounts in client token mode,
|
|
8946
|
+
* and again if `update()` swaps in a different function. Call `warm()` whenever
|
|
8947
|
+
* the visitor shows intent (it is safe to call repeatedly). Return a cleanup to
|
|
8948
|
+
* run when the widget is destroyed or the hook is replaced.
|
|
8949
|
+
*/
|
|
8950
|
+
type AgentWidgetSessionInitHook = (context: {
|
|
8951
|
+
/** Fire-and-forget early session init; latched and error-swallowing. */
|
|
8952
|
+
warm: () => void;
|
|
8953
|
+
/** The widget's mount element. */
|
|
8954
|
+
mount: HTMLElement;
|
|
8955
|
+
}) => void | (() => void);
|
|
8766
8956
|
type AgentWidgetConfig = {
|
|
8957
|
+
/** Opt in to upcoming major-version defaults without changing explicit settings. */
|
|
8958
|
+
future?: {
|
|
8959
|
+
/**
|
|
8960
|
+
* Use the v5 default styling as it rolls out in 4.x. Every affected setting
|
|
8961
|
+
* remains independently configurable. Explicit options and theme tokens win.
|
|
8962
|
+
* @default false
|
|
8963
|
+
*/
|
|
8964
|
+
v5Defaults?: boolean;
|
|
8965
|
+
};
|
|
8767
8966
|
apiUrl?: string;
|
|
8768
8967
|
flowId?: string;
|
|
8769
8968
|
/**
|
|
@@ -8918,6 +9117,46 @@ type AgentWidgetConfig = {
|
|
|
8918
9117
|
* ```
|
|
8919
9118
|
*/
|
|
8920
9119
|
onSessionExpired?: () => void;
|
|
9120
|
+
/**
|
|
9121
|
+
* When the widget calls `/v1/client/init` in client token mode, ahead of the
|
|
9122
|
+
* first send. Ignored outside client token mode.
|
|
9123
|
+
*
|
|
9124
|
+
* - `'input'` (default): on the composer's first user keystroke that leaves
|
|
9125
|
+
* non-empty text. Programmatic value changes (restored drafts,
|
|
9126
|
+
* `setMessage()`, history recall) do not count.
|
|
9127
|
+
* - `'focus'`: when the visitor focuses the composer by pointer or Tab (and
|
|
9128
|
+
* on first input, as a fallback). Programmatic focus, such as
|
|
9129
|
+
* `autoFocusInput` on open or mount, does not count.
|
|
9130
|
+
* - `'mount'`: as soon as the widget mounts (the behavior before this option
|
|
9131
|
+
* existed). Use it when a server-configured welcome message, which arrives
|
|
9132
|
+
* with the init response, must show before the visitor types.
|
|
9133
|
+
* - `'send'`: no early init; the first send initializes the session.
|
|
9134
|
+
* - A function: custom trigger. Called on mount (and when `update()` swaps
|
|
9135
|
+
* in a different function) with a `warm` callback to call whenever you
|
|
9136
|
+
* decide (e.g. on hover); may return a cleanup that runs on destroy or
|
|
9137
|
+
* replacement. Replaces the built-in triggers.
|
|
9138
|
+
*
|
|
9139
|
+
* The early init is fire-and-forget: it runs at most once per session
|
|
9140
|
+
* lifetime (re-armed after expiry or a new conversation), sends exactly the
|
|
9141
|
+
* same request the send would, and swallows errors. A failure resurfaces
|
|
9142
|
+
* when the send retries init. A send during an in-flight early init reuses
|
|
9143
|
+
* it, so only one `/v1/client/init` is issued. When visitor history is
|
|
9144
|
+
* enabled the widget still initializes on mount to restore the conversation.
|
|
9145
|
+
* Hosts can also trigger it imperatively with `controller.warmSession()`.
|
|
9146
|
+
*
|
|
9147
|
+
* @default 'input'
|
|
9148
|
+
*
|
|
9149
|
+
* @example
|
|
9150
|
+
* ```typescript
|
|
9151
|
+
* config: {
|
|
9152
|
+
* clientToken: 'ct_live_...',
|
|
9153
|
+
* sessionInit: ({ warm, mount }) => {
|
|
9154
|
+
* mount.addEventListener('pointerenter', warm, { once: true });
|
|
9155
|
+
* }
|
|
9156
|
+
* }
|
|
9157
|
+
* ```
|
|
9158
|
+
*/
|
|
9159
|
+
sessionInit?: AgentWidgetSessionInitTrigger | AgentWidgetSessionInitHook;
|
|
8921
9160
|
/**
|
|
8922
9161
|
* Get stored session ID for session resumption (client token mode only).
|
|
8923
9162
|
* Called when initializing a new session to check if there's a previous session_id
|
|
@@ -8950,13 +9189,20 @@ type AgentWidgetConfig = {
|
|
|
8950
9189
|
*/
|
|
8951
9190
|
setStoredSessionId?: (sessionId: string) => void;
|
|
8952
9191
|
/**
|
|
8953
|
-
*
|
|
9192
|
+
* With identityProvider, called before every client-token chat POST, including retries, independently of history.
|
|
9193
|
+
* Also called immediately before any cross-device history request and before a
|
|
8954
9194
|
* conversationId resume of a conversation discovered on another device.
|
|
8955
|
-
* Return a fresh end-user access token (rt_eu_… / JWT). Null
|
|
8956
|
-
*
|
|
8957
|
-
* until resetHistoryIdentity()
|
|
9195
|
+
* Return a fresh end-user access token (rt_eu_… / JWT). Null stops identity-enabled chat.
|
|
9196
|
+
* For history only, null uses exact-browser scope for a never-bound visitor;
|
|
9197
|
+
* a bound visitor fails closed until resetHistoryIdentity(). Never cached.
|
|
8958
9198
|
*/
|
|
8959
9199
|
getIdentityProof?: () => string | null | Promise<string | null>;
|
|
9200
|
+
/**
|
|
9201
|
+
* Provider name registered with Runtype, for example "clerk". Enables per-request
|
|
9202
|
+
* chat identity through getIdentityProof without enabling history. A missing or
|
|
9203
|
+
* failed proof stops the turn; omitting this preserves history-only callbacks.
|
|
9204
|
+
*/
|
|
9205
|
+
identityProvider?: string;
|
|
8960
9206
|
/**
|
|
8961
9207
|
* Read the persisted active conversation id (client token mode only).
|
|
8962
9208
|
* Called only after the internal stored-state bootstrap gate resolves.
|
|
@@ -9630,6 +9876,8 @@ type AgentWidgetReasoning = {
|
|
|
9630
9876
|
durationMs?: number;
|
|
9631
9877
|
};
|
|
9632
9878
|
type AgentWidgetToolCall = {
|
|
9879
|
+
/** Optional approval state for activity-row status chrome. */
|
|
9880
|
+
approvalStatus?: "pending" | "approved" | "denied" | "timeout";
|
|
9633
9881
|
id: string;
|
|
9634
9882
|
name?: string;
|
|
9635
9883
|
status: "pending" | "running" | "complete";
|