@oxvo/ai-live-assist 7.3.4 → 7.4.23

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.
Files changed (67) hide show
  1. package/cjs/AiLiveAssist.d.ts +588 -6
  2. package/cjs/AiLiveAssist.js +14892 -1240
  3. package/cjs/client.d.ts +71 -10
  4. package/cjs/client.js +316 -58
  5. package/cjs/context.d.ts +15 -5
  6. package/cjs/context.js +568 -73
  7. package/cjs/control.d.ts +72 -7
  8. package/cjs/control.js +594 -71
  9. package/cjs/dialogFocusScope.d.ts +37 -0
  10. package/cjs/dialogFocusScope.js +227 -0
  11. package/cjs/experienceState.js +1 -1
  12. package/cjs/index.d.ts +1 -1
  13. package/cjs/index.js +2 -2
  14. package/cjs/media.d.ts +14 -3
  15. package/cjs/media.js +128 -19
  16. package/cjs/messages.js +26 -3
  17. package/cjs/messengerLoader.d.ts +3 -0
  18. package/cjs/messengerLoader.js +156 -0
  19. package/cjs/pageAssistancePreference.d.ts +78 -0
  20. package/cjs/pageAssistancePreference.js +488 -0
  21. package/cjs/preview.d.ts +33 -0
  22. package/cjs/preview.js +567 -0
  23. package/cjs/tabLock.d.ts +54 -3
  24. package/cjs/tabLock.js +752 -72
  25. package/cjs/types.d.ts +152 -4
  26. package/cjs/ui.d.ts +200 -10
  27. package/cjs/ui.js +6946 -523
  28. package/cjs/version.d.ts +1 -1
  29. package/cjs/version.js +1 -1
  30. package/cjs/voicePresenceUi.d.ts +48 -9
  31. package/cjs/voicePresenceUi.js +863 -125
  32. package/lib/AiLiveAssist.d.ts +588 -6
  33. package/lib/AiLiveAssist.js +14897 -1248
  34. package/lib/client.d.ts +71 -10
  35. package/lib/client.js +313 -57
  36. package/lib/context.d.ts +15 -5
  37. package/lib/context.js +566 -72
  38. package/lib/control.d.ts +72 -7
  39. package/lib/control.js +594 -71
  40. package/lib/dialogFocusScope.d.ts +37 -0
  41. package/lib/dialogFocusScope.js +223 -0
  42. package/lib/experienceState.js +1 -1
  43. package/lib/index.d.ts +1 -1
  44. package/lib/index.js +2 -2
  45. package/lib/media.d.ts +14 -3
  46. package/lib/media.js +128 -19
  47. package/lib/messages.js +26 -3
  48. package/lib/messengerLoader.d.ts +3 -0
  49. package/lib/messengerLoader.js +151 -0
  50. package/lib/pageAssistancePreference.d.ts +78 -0
  51. package/lib/pageAssistancePreference.js +482 -0
  52. package/lib/preview.d.ts +33 -0
  53. package/lib/preview.js +561 -0
  54. package/lib/tabLock.d.ts +54 -3
  55. package/lib/tabLock.js +752 -72
  56. package/lib/types.d.ts +152 -4
  57. package/lib/ui.d.ts +200 -10
  58. package/lib/ui.js +6947 -524
  59. package/lib/version.d.ts +1 -1
  60. package/lib/version.js +1 -1
  61. package/lib/voicePresenceUi.d.ts +48 -9
  62. package/lib/voicePresenceUi.js +863 -125
  63. package/package.json +8 -3
  64. package/cjs/recordingPolicy.d.ts +0 -2
  65. package/cjs/recordingPolicy.js +0 -12
  66. package/lib/recordingPolicy.d.ts +0 -2
  67. package/lib/recordingPolicy.js +0 -8
package/lib/types.d.ts CHANGED
@@ -48,7 +48,86 @@ export type VoicePresenceConfig = {
48
48
  maxCuesPerMinute: number;
49
49
  };
50
50
  };
51
+ export type MessengerCompanionConfig = {
52
+ enabled: boolean;
53
+ title: string;
54
+ greeting: string;
55
+ voiceLabel: string;
56
+ inputPlaceholder: string;
57
+ suggestedQuestions: string[];
58
+ webWidget?: MessengerWebWidgetDescriptor;
59
+ };
60
+ export type MessengerWebWidgetDescriptor = {
61
+ inboxId: string;
62
+ baseUrl: string;
63
+ sdkUrl: string;
64
+ websiteToken: string;
65
+ };
66
+ export type MessengerConversationState = {
67
+ state: "connected";
68
+ conversationDisplayId: string;
69
+ inboxId: string;
70
+ };
71
+ export type MessengerSupportAgent = {
72
+ id: string | null;
73
+ name: string | null;
74
+ type: "agent";
75
+ };
76
+ export type MessengerSupportState = {
77
+ conversationId: string;
78
+ latestAgentMessageAt: number | null;
79
+ latestAgentMessageAuthor: MessengerSupportAgent | null;
80
+ latestAgentMessageId: string | null;
81
+ latestAgentMessageSeen: boolean | null;
82
+ messengerOpen: boolean;
83
+ unreadCount: number;
84
+ };
85
+ export type AiGuideCompanionState = {
86
+ schemaVersion: 1;
87
+ linkId: string;
88
+ activeSurface: "ai" | "messenger";
89
+ lastAiMode: AssistMode;
90
+ ownerEpoch: number;
91
+ currentAiSessionId: string | null;
92
+ expiresAt: string;
93
+ switchGrant: string;
94
+ };
51
95
  export type AssistMode = "text" | "voice";
96
+ export type WidgetActivity = "idle" | "ready" | "connecting" | "listening" | "thinking" | "speaking" | "acting" | "error" | "ending";
97
+ export type AiGuideOpenInput = {
98
+ mode?: AssistMode;
99
+ question?: string;
100
+ requestId?: string;
101
+ };
102
+ export type AiGuideControllerState = {
103
+ ready: boolean;
104
+ available: boolean;
105
+ open: boolean;
106
+ active: boolean;
107
+ mode: AssistMode | null;
108
+ phase: string;
109
+ companion: boolean;
110
+ pendingQuestion: boolean;
111
+ };
112
+ export type AiGuidePreviewDisplay = "launcher" | "expanded";
113
+ export type AiGuidePreviewInput = {
114
+ config: unknown;
115
+ display?: AiGuidePreviewDisplay;
116
+ mode?: AssistMode;
117
+ };
118
+ export type AiGuidePreviewControllerState = {
119
+ ready: true;
120
+ display: AiGuidePreviewDisplay;
121
+ mode: AssistMode;
122
+ };
123
+ export type AiGuidePreviewController = {
124
+ update: (input: AiGuidePreviewInput) => void;
125
+ getState: () => AiGuidePreviewControllerState;
126
+ destroy: () => void;
127
+ };
128
+ export type AiGuidePreviewBridge = {
129
+ destroy: () => void;
130
+ };
52
131
  export type BrowserAction = "scroll" | "highlight" | "focus" | "click" | "type" | "select" | "submit";
53
132
  export type Sensitivity = "none" | "private" | "password" | "otp" | "payment" | "banking" | "recovery" | "authentication_secret" | "api_secret";
54
133
  export type BootstrapConfig = {
@@ -71,6 +150,8 @@ export type BootstrapConfig = {
71
150
  captions: boolean;
72
151
  pageContext: boolean;
73
152
  browserControl: boolean;
153
+ pageAssistance?: boolean;
154
+ statefulButtonActionProof?: boolean;
74
155
  visualContext: boolean;
75
156
  voicePresence: boolean;
76
157
  presentation: boolean;
@@ -89,19 +170,30 @@ export type BootstrapConfig = {
89
170
  brandName: string;
90
171
  launcherLabel: string;
91
172
  accent: string;
92
- position: "left" | "right";
173
+ position: "left" | "center" | "right";
93
174
  panelWidth: number;
94
175
  glassEffect: boolean;
176
+ inputGlowEnabled?: boolean;
177
+ widgetCornerGlowEnabled?: boolean;
95
178
  hideLauncherWhenVisitorLimited: boolean;
96
179
  attribution?: {
97
180
  enabled: boolean;
98
181
  };
99
182
  welcomeMessage: string | null;
183
+ suggestedPrompts?: string[];
100
184
  voicePresence?: VoicePresenceConfig;
185
+ messengerCompanion?: MessengerCompanionConfig;
101
186
  };
102
187
  visitorEligibility?: {
103
188
  status: "eligible" | "visitor_active" | "visitor_limited" | "cooldown_limited";
104
189
  };
190
+ humanHandoffRecovery?: {
191
+ state: "human_connected";
192
+ conversationDisplayId: string;
193
+ inboxId: string;
194
+ };
195
+ messengerConversation?: MessengerConversationState;
196
+ companion?: AiGuideCompanionState;
105
197
  consent?: {
106
198
  disclosure: string;
107
199
  disclosureChecksum: string;
@@ -125,6 +217,21 @@ export type BootstrapConfig = {
125
217
  maxAgeSeconds: number;
126
218
  };
127
219
  };
220
+ export type PageAssistanceDecision = "allow_session" | "allow_persistent" | "decline";
221
+ export type PageAssistanceActionCategory = "guidance" | "navigation" | "form_fill" | "page_interaction" | "submission" | "consequential";
222
+ export type PageAssistanceRequest = {
223
+ requestId: string;
224
+ actionCategory: PageAssistanceActionCategory;
225
+ action: string;
226
+ safeActionDescription: string;
227
+ safeTargetLabel: string;
228
+ configRevision: number;
229
+ policyVersion: number;
230
+ proposalChecksum: string;
231
+ authorityEpoch: number;
232
+ expiresAt: string;
233
+ persistenceEligible: boolean;
234
+ };
128
235
  export type LaunchResult = {
129
236
  schemaVersion: 1 | 2;
130
237
  protocolVersion: 1 | 2;
@@ -136,6 +243,7 @@ export type LaunchResult = {
136
243
  resumeCredential: string;
137
244
  feedbackCredential: string;
138
245
  expiresAt: string;
246
+ resumeExpiresAt?: string;
139
247
  feedbackExpiresAt: string;
140
248
  controlUrl: string;
141
249
  realtimeOfferUrl: string;
@@ -145,9 +253,24 @@ export type LaunchResult = {
145
253
  voice: string | null;
146
254
  welcomeMessage: string | null;
147
255
  };
148
- state?: "reconnecting";
256
+ state?: "reconnecting" | "paused";
257
+ mode?: AssistMode;
149
258
  correlationId?: string;
150
259
  };
260
+ export type HandoffRecoveryResult = {
261
+ schemaVersion: 1 | 2;
262
+ protocolVersion: 1 | 2;
263
+ recoveryKind: "messenger_handoff_control";
264
+ sessionId: string;
265
+ state: "handoff_pending" | "human_controlled";
266
+ messengerBindingChallengeId: string;
267
+ controlCredential: string;
268
+ controlExpiresAt: string;
269
+ controlUrl: string;
270
+ fencingToken: number;
271
+ clientSequence: number;
272
+ };
273
+ export type RuntimeAuthorization = LaunchResult | HandoffRecoveryResult;
151
274
  export type ControlServerEnvelope = {
152
275
  v: 1 | 2;
153
276
  id: string;
@@ -185,6 +308,8 @@ export type SanitizedTarget = {
185
308
  enabled: boolean;
186
309
  covered?: boolean;
187
310
  checked?: boolean;
311
+ expanded?: boolean;
312
+ pressed?: boolean;
188
313
  };
189
314
  options?: SanitizedOption[];
190
315
  };
@@ -234,21 +359,42 @@ export type VisualContextRequest = {
234
359
  expiresAt: string;
235
360
  approvalMode: "manual" | "automatic";
236
361
  };
362
+ export type HandoffContextRequest = {
363
+ requestId: string;
364
+ requestChecksum: string;
365
+ title: string;
366
+ description: string;
367
+ configRevision: number;
368
+ expiresAt: string;
369
+ };
370
+ export type HandoffContextStatus = "granted" | "declined" | "expired" | "unavailable";
237
371
  export type ActionGrant = {
238
372
  grant: string;
239
373
  actionId: string;
374
+ proposalChecksum: string;
240
375
  action: BrowserAction;
241
376
  targetId: string;
242
377
  domRevision: number;
378
+ pageId: string;
379
+ pageUrl: string;
380
+ targetFingerprint: string;
381
+ destinationPath?: string;
382
+ configRevision: number;
383
+ configChecksum: string;
384
+ policyVersion: number;
385
+ authorityEpoch: number;
243
386
  fencingToken: number;
244
387
  expiresAt: string;
245
388
  value?: string;
246
389
  optionValueId?: string;
247
390
  desiredChecked?: boolean;
391
+ desiredExpanded?: boolean;
392
+ desiredPressed?: boolean;
248
393
  };
249
394
  export type ActionExecutionResult = {
250
- grant: string;
395
+ grant?: string;
251
396
  actionId: string;
397
+ executionId?: string;
252
398
  status: "executed" | "blocked" | "stale" | "failed";
253
399
  observed: {
254
400
  url?: string;
@@ -256,6 +402,8 @@ export type ActionExecutionResult = {
256
402
  targetState: "unchanged" | "changed" | "detached" | "unknown";
257
403
  safeSummary: string;
258
404
  checked?: boolean;
405
+ expanded?: boolean;
406
+ pressed?: boolean;
259
407
  };
260
408
  };
261
409
  export type PresentationKind = "pointer" | "spotlight" | "underline" | "circle" | "arrow" | "connector" | "sequence_marker" | "callout" | "clear";
@@ -286,7 +434,7 @@ export type PresentationTarget = {
286
434
  rect: DOMRectReadOnly;
287
435
  safe: boolean;
288
436
  };
289
- export type WidgetMessageKey = "launcher" | "introTitle" | "disclosure" | "requiredConsent" | "consentAgreement" | "legalDetails" | "legalTitle" | "legalClose" | "termsOfService" | "microphoneConsent" | "pageConsent" | "controlConsent" | "visualConsent" | "visualRequest" | "shareVisual" | "declineVisual" | "visualShared" | "visualUnavailable" | "pauseVisual" | "resumeVisual" | "handoffConsent" | "retentionConsent" | "startText" | "startVoice" | "connecting" | "listening" | "thinking" | "speaking" | "ready" | "paused" | "reconnecting" | "end" | "restart" | "close" | "minimize" | "maximize" | "activeCall" | "movePanel" | "mute" | "unmute" | "interrupt" | "usePushToTalk" | "useAutomaticTurns" | "automaticTurnsUnavailable" | "startSpeaking" | "sendVoiceTurn" | "microphoneUnavailable" | "pauseActions" | "resumeActions" | "captionsOn" | "captionsOff" | "textOnly" | "send" | "messagePlaceholder" | "requestHuman" | "continueWithFullAssist" | "requestHumanFallback" | "approve" | "decline" | "actionRequest" | "actionRunning" | "actionVerified" | "actionFailed" | "limitReached" | "ended" | "idleEnded" | "feedbackQuestion" | "resolved" | "partiallyResolved" | "notResolved" | "submitFeedback" | "error" | "retry" | "activeElsewhere" | "visitorLimitReached" | "visitorCooldown" | "visitorAlreadyActive" | "safetyBoundary" | "privacyPolicy" | "moreControls" | "emptyConversation" | "audioPaused" | "humanConnected" | "humanConnecting" | "humanUnavailable" | "textMode" | "reconnectFailed" | "connectedTool" | "approvedService" | "approvedToolEffect";
437
+ export type WidgetMessageKey = "launcher" | "introTitle" | "disclosure" | "requiredConsent" | "consentAgreement" | "pageAssistanceTitle" | "pageAssistanceAlways" | "pageAssistanceAgreement" | "pageAssistanceAgreementConnector" | "pageAssistanceAgreementTerminator" | "pageAssistanceAppliesTo" | "pageAssistanceAllow" | "pageAssistanceNotNow" | "pageAssistanceRevoke" | "legalDetails" | "legalTitle" | "legalClose" | "termsOfService" | "microphoneConsent" | "pageConsent" | "controlConsent" | "visualConsent" | "visualRequest" | "shareVisual" | "declineVisual" | "visualShared" | "visualUnavailable" | "pauseVisual" | "resumeVisual" | "handoffConsent" | "handoffContextShare" | "handoffContextNotNow" | "retentionConsent" | "startText" | "startVoice" | "connecting" | "listening" | "thinking" | "speaking" | "ready" | "paused" | "reconnecting" | "ending" | "handoffEnding" | "endRetry" | "end" | "restart" | "close" | "minimize" | "maximize" | "activeCall" | "movePanel" | "mute" | "muted" | "unmute" | "interrupt" | "usePushToTalk" | "useAutomaticTurns" | "automaticTurnsUnavailable" | "startSpeaking" | "sendVoiceTurn" | "microphoneUnavailable" | "pauseActions" | "resumeActions" | "captionsOn" | "captionsOff" | "textOnly" | "modeSwitch" | "chatMode" | "voiceMode" | "stopVoice" | "send" | "messagePlaceholder" | "requestHuman" | "support" | "supportReply" | "viewSupport" | "continueWithFullAssist" | "requestHumanFallback" | "approve" | "decline" | "actionRequest" | "actionRunning" | "actionVerified" | "actionFailed" | "actionVerificationExpired" | "limitReached" | "ended" | "idleEnded" | "feedbackQuestion" | "resolved" | "partiallyResolved" | "notResolved" | "submitFeedback" | "error" | "retry" | "activeElsewhere" | "visitorLimitReached" | "visitorCooldown" | "visitorAlreadyActive" | "safetyBoundary" | "privacyPolicy" | "moreControls" | "emptyConversation" | "audioPaused" | "humanConnected" | "humanConnecting" | "humanUnavailable" | "textMode" | "reconnectFailed" | "connectedTool" | "approvedService" | "approvedToolEffect";
290
438
  export type PluginOptions = {
291
439
  enabled?: boolean;
292
440
  recordReplay?: boolean;
package/lib/ui.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { AssistMode, BootstrapConfig, ConsentScope, VisualContextRequest, WidgetMessageKey } from "./types.js";
1
+ import type { AssistMode, BootstrapConfig, CapabilityTier, ConsentScope, HandoffContextRequest, HandoffContextStatus, PageAssistanceDecision, PageAssistanceRequest, VisualContextRequest, WidgetActivity, WidgetMessageKey } from "./types.js";
2
2
  type Confirmation = {
3
3
  actionId: string;
4
4
  proposalChecksum: string;
@@ -9,7 +9,8 @@ type Confirmation = {
9
9
  expiresAt: string;
10
10
  };
11
11
  export type WidgetCallbacks = {
12
- onStart: (mode: AssistMode, scopes: ConsentScope[]) => void;
12
+ onStart: (mode: AssistMode, scopes: ConsentScope[], initialQuestion?: string) => boolean;
13
+ onRestart?: () => boolean;
13
14
  onEnd: () => void;
14
15
  onMute: (muted: boolean) => void;
15
16
  onInterrupt: () => void;
@@ -18,11 +19,15 @@ export type WidgetCallbacks = {
18
19
  onPause: (paused: boolean) => void;
19
20
  onCaptions: (enabled: boolean) => void;
20
21
  onTextOnly: () => void;
21
- onText: (text: string) => void;
22
+ onModeChange?: (mode: AssistMode) => void;
23
+ onText: (text: string) => boolean;
22
24
  onHuman: () => void;
23
25
  onConfirmation: (actionId: string, checksum: string, approved: boolean) => void;
24
26
  onVisualContext: (request: VisualContextRequest, approved: boolean) => void;
27
+ onHandoffContext?: (request: HandoffContextRequest, approved: boolean) => void;
25
28
  onVisualPause: (paused: boolean) => void;
29
+ onPageAssistance?: (request: PageAssistanceRequest, decision: PageAssistanceDecision) => void;
30
+ onPageAssistanceRevoke?: () => void;
26
31
  onFeedback: (outcome: "resolved" | "partially_resolved" | "not_resolved") => void;
27
32
  onRetry: () => void;
28
33
  onPlaybackState: (value: {
@@ -31,12 +36,16 @@ export type WidgetCallbacks = {
31
36
  utteranceId: string | null;
32
37
  sampledAt: string;
33
38
  }) => void;
39
+ onOpenChange?: (open: boolean) => void;
40
+ };
41
+ export type WidgetViewOptions = {
42
+ persistentState?: boolean;
43
+ initialPanelView?: "compact" | "expanded";
34
44
  };
35
45
  export declare class WidgetView {
36
46
  private readonly callbacks;
37
47
  private host;
38
48
  private shadow;
39
- private launcher;
40
49
  private panel;
41
50
  private body;
42
51
  private status;
@@ -51,70 +60,183 @@ export declare class WidgetView {
51
60
  private feedback;
52
61
  private attribution;
53
62
  private ambient;
63
+ private widgetCornerGlow;
54
64
  private highlight;
55
65
  private tooltip;
56
66
  private audio;
57
67
  private muted;
68
+ private statusBeforeMute;
58
69
  private manualTurn;
59
70
  private pushActive;
60
71
  private voiceActive;
72
+ private modeTransitionPending;
73
+ private startingVoicePresentation;
74
+ private modeTransitionOrigin;
75
+ private preferredFocusAfterTransition;
61
76
  private automaticTurnsAvailable;
62
77
  private paused;
63
78
  private captionsEnabled;
64
79
  private visualPaused;
65
80
  private active;
81
+ private endRequested;
82
+ private launcherSuppressed;
83
+ private introMinimized;
84
+ private introTransitionTarget;
66
85
  private compact;
86
+ private compactBeforeError;
87
+ private errorRetryable;
67
88
  private panelViewInitialized;
68
89
  private launchUnavailable;
69
90
  private activeElsewhere;
70
91
  private currentConfirmation;
71
92
  private currentVisualRequest;
93
+ private currentHandoffContextRequest;
94
+ private handoffRequestPreparing;
95
+ private currentPageAssistanceRequest;
96
+ private safetyInteractionIdentity;
97
+ private introComposing;
98
+ private legalOpenedPanel;
72
99
  private highlightedElement;
73
100
  private dragState;
101
+ private suggestionDragState;
102
+ private suppressSuggestionClick;
74
103
  private tooltipTarget;
75
104
  private tooltipTimer;
76
105
  private ambientHideTimer;
77
106
  private attributionTimer;
107
+ private feedbackExitTimer;
108
+ private assistantReadyVisualTimer;
78
109
  private sessionStartedAt;
79
110
  private durationInterval;
80
111
  private compactCaptionTimers;
112
+ private compactCaptionContentTimers;
113
+ private captionHeightGlides;
114
+ private captionResizeObserver;
115
+ private introTransitionTimers;
116
+ private panelTransitionTimers;
117
+ private panelTransitionSettlers;
118
+ private companionTransferRestoreExpanded;
119
+ private panelViewTransition;
120
+ private pendingPanelViewCommit;
121
+ private panelTransitionClone;
122
+ private panelTransitionInnerClone;
123
+ private primaryMorphFinalize;
124
+ private capabilityTier;
125
+ private reducedMotionQuery;
126
+ private welcomePresented;
127
+ private pendingWelcomeBubble;
128
+ private advancedSessionControlsVisible;
129
+ private initialQuestionStaged;
130
+ private stagedLaunchMode;
131
+ private activity;
132
+ private semanticActivity;
133
+ private semanticStatus;
81
134
  private assistantState;
135
+ private assistantCaptionPhase;
136
+ private actionStateRunning;
137
+ private supportCompanion;
82
138
  private messages;
83
139
  private config;
84
- constructor(config: BootstrapConfig, overrides: Partial<Record<WidgetMessageKey, string>>, callbacks: WidgetCallbacks);
140
+ private readonly dialogFocus;
141
+ private readonly persistentState;
142
+ private readonly initialPanelView;
143
+ constructor(config: BootstrapConfig, overrides: Partial<Record<WidgetMessageKey, string>>, callbacks: WidgetCallbacks, options?: WidgetViewOptions);
85
144
  setRemoteStream(stream: MediaStream): void;
86
145
  private bindPlaybackState;
87
146
  private emitPlaybackState;
88
147
  setStatus(value: string): void;
148
+ private applyStatus;
149
+ setActivity(value: WidgetActivity): void;
150
+ setCapabilityTier(tier: CapabilityTier): void;
151
+ updatePreviewConfig(config: BootstrapConfig): boolean;
152
+ private disablePreviewNavigation;
153
+ private applyActivity;
154
+ private effectsCanRun;
155
+ private isReducedMotionRequested;
156
+ private syncEffectMotion;
157
+ private onEffectVisibilityChange;
158
+ private onReducedMotionChange;
89
159
  message(key: WidgetMessageKey): string;
160
+ setAdvancedSessionControlsVisible(visible: boolean): void;
161
+ open(mode?: AssistMode): void;
162
+ restartSession(): boolean;
163
+ startPreparedSession(mode: AssistMode): boolean;
164
+ close(): void;
165
+ minimizeForCompanionTransfer(): Promise<void> | null;
166
+ companionTransferMorphBudgetMs(): number;
167
+ restoreAfterCompanionTransferFailure(restoreFocus: boolean): void;
168
+ get isOpen(): boolean;
169
+ rootElement(): HTMLElement;
170
+ get hasFocus(): boolean;
171
+ setLauncherSuppressed(value: boolean): void;
90
172
  setAssistantState(state: "listening" | "thinking" | "speaking" | "ready"): void;
91
- showConnecting(resume?: boolean, mode?: AssistMode): void;
173
+ private applyAssistantState;
174
+ private shouldHoldAssistantBusyIndicator;
175
+ private clearAssistantReadyVisualTimer;
176
+ showConnecting(resume?: boolean, mode?: AssistMode, staged?: boolean): void;
92
177
  showActive(welcomeMessage?: string | null): void;
93
- addCaption(role: "assistant" | "user", text: string, final: boolean): void;
178
+ private presentWelcome;
179
+ private defaultWelcomeMessage;
180
+ private ensureWelcomeSkeleton;
181
+ private clearPendingWelcomeSkeleton;
182
+ private scrollCaptionsToBottom;
183
+ addCaption(role: "assistant" | "user", text: string, final: boolean, options?: {
184
+ restored?: boolean;
185
+ }): void;
94
186
  private ensurePendingCaption;
95
187
  private renderPendingDots;
188
+ private renderLiveCaption;
189
+ private commitCaptionHeightGlide;
190
+ private cancelCaptionHeightGlide;
191
+ private captionRenderedHeight;
192
+ private beginCompactCaptionContentTransition;
193
+ private clearCompactCaptionContentTransition;
96
194
  private clearPendingCaptions;
97
195
  private suspendPendingCaption;
98
196
  private addCompactCaption;
197
+ private flipCompactCaptionStack;
99
198
  private scheduleCompactCaptionRemoval;
100
- private discardExitingCompactCaptions;
199
+ private startCompactCaptionExit;
101
200
  private removeCompactCaption;
102
201
  private layoutCompactCaptions;
103
202
  private clearCompactCaptions;
203
+ private settleCompactCaptionMotion;
104
204
  showConfirmation(value: Confirmation): void;
105
- showActionState(status: "running" | "verified" | "failed"): void;
205
+ showActionState(status: "running" | "verified" | "failed" | "unconfirmed"): void;
106
206
  dismissActionState(): void;
107
207
  showVisualRequest(value: VisualContextRequest): void;
108
208
  showVisualResult(shared: boolean): void;
209
+ showHandoffRequestPreparing(title: string, description: string): void;
210
+ dismissHandoffRequestPreparing(): void;
211
+ showHandoffContextRequest(value: HandoffContextRequest): boolean;
212
+ dismissHandoffContextRequest(): void;
213
+ showHandoffContextResult(status: HandoffContextStatus): void;
214
+ showPageAssistanceRequest(value: PageAssistanceRequest): void;
215
+ private syncPageAssistanceFooter;
216
+ dismissPageAssistanceRequest(): void;
217
+ setPageAssistancePersistentAllowed(value: boolean): void;
218
+ setSupportCompanion(linked: boolean): void;
219
+ showSupportReplyNotice(visible: boolean): void;
109
220
  setVisualAvailable(available: boolean, paused?: boolean): void;
110
221
  setVisualPaused(paused: boolean): void;
111
222
  setPaused(value: boolean): void;
112
223
  setMuted(value: boolean): void;
113
224
  configureVoiceControls(voiceActive: boolean, manualTurn: boolean, automaticTurnsAvailable: boolean): void;
225
+ setModeTransitionPending(mode: AssistMode | null): void;
226
+ private beginStartingVoicePresentation;
227
+ private cancelStartingVoicePresentation;
228
+ private discardStartingVoicePresentation;
229
+ private requestSessionMode;
230
+ private syncSessionModeUi;
114
231
  setManualTurn(value: boolean): void;
115
232
  setPushActive(value: boolean): void;
116
233
  interruptPlayback(): void;
234
+ private clearErrorPresentation;
235
+ private clearEndingPresentation;
117
236
  showError(message?: string, retryable?: boolean, sessionActive?: boolean): void;
237
+ showEndingDetached(message?: string): void;
238
+ showEndRetry(message?: string): void;
239
+ showResumeStopped(): void;
118
240
  showEnded(message?: string): void;
119
241
  showLimit(message?: string): void;
120
242
  showActiveElsewhere(active: boolean): void;
@@ -127,14 +249,67 @@ export declare class WidgetView {
127
249
  private applyConfig;
128
250
  private renderLegalScopes;
129
251
  private start;
252
+ private submitIntroQuestion;
253
+ private setIntroMinimized;
254
+ private scheduleIntroTransition;
255
+ private clearIntroTransition;
256
+ private settleIntroTransitionForStaticMotion;
257
+ private focusIntroView;
258
+ private syncIntroMinimizedState;
259
+ private syncIntroSendState;
260
+ private focusIntroControl;
261
+ private resolvePageAssistance;
130
262
  private resolveConfirmation;
263
+ private restoreVoicePresenceAfterPrompt;
264
+ private requestEnd;
265
+ private syncEndControls;
266
+ private syncComposerDraftState;
267
+ private renderSuggestedPrompts;
268
+ private onSuggestionClick;
269
+ private onSuggestionWheel;
270
+ private onSuggestionPointerDown;
271
+ private onSuggestionPointerMove;
272
+ private onSuggestionPointerEnd;
131
273
  private setComposerEnabled;
132
274
  private syncStartAvailability;
133
275
  private resolveVisualContext;
276
+ private resolveHandoffContext;
277
+ private resolveContextPermission;
278
+ private presentContextPermissionDialog;
279
+ private restoreContextPermissionDialogAttributes;
280
+ private bindSafetyInteraction;
281
+ private consumeSafetyInteraction;
282
+ private currentSafetyIdentity;
283
+ private dialogFallbackFocus;
284
+ private openPanelFromSource;
285
+ private transitionCompactPanelFromSource;
286
+ private focusCompactPresenceSurface;
287
+ private focusVoicePresenceSurface;
288
+ private clearPanelEntryAnimation;
289
+ private settlePanelTransitionWaiters;
290
+ private settlePanelTransitionForStaticMotion;
291
+ private schedulePanelTransition;
292
+ private syncSurfaceEffectOwner;
293
+ private prefersReducedMotion;
134
294
  private openPanel;
135
295
  private closePanel;
136
296
  private initializePanelView;
137
297
  private setCompact;
298
+ private commitCompact;
299
+ private settleExpandedBubbleMotion;
300
+ private transitionPanelView;
301
+ private capturePanelTransitionSnapshot;
302
+ private createCompactTransitionClone;
303
+ private refreshCompactTransitionClone;
304
+ private createIntroTransitionClone;
305
+ private createComposerTransitionClone;
306
+ private createPrimarySurfaceTransitionClone;
307
+ private prepareSessionTransitionClone;
308
+ private runPrimarySurfaceMorph;
309
+ private revealPanelDestinationSurface;
310
+ private clearPanelDestinationSurface;
311
+ private setTransitionRect;
312
+ private focusPanelView;
138
313
  private readPanelView;
139
314
  private readPanelVisibility;
140
315
  private writePanelVisibility;
@@ -142,18 +317,27 @@ export declare class WidgetView {
142
317
  private clearPanelSessionState;
143
318
  private syncLauncherState;
144
319
  cancelPendingConfirmation(): boolean;
145
- resolvePendingConfirmation(approved: boolean): boolean;
320
+ resolvePendingConfirmation(approved: boolean, expected?: {
321
+ actionId: string;
322
+ proposalChecksum: string;
323
+ }): boolean;
146
324
  private ensureAmbient;
325
+ private syncWidgetCornerGlow;
326
+ private setActionStateRunning;
327
+ private syncWidgetCornerGlowVisibility;
147
328
  private setAmbientActive;
148
329
  private clearAmbientHideTimer;
149
330
  private startDuration;
150
331
  private renderDuration;
151
332
  private stopDuration;
333
+ private leaveFeedback;
334
+ private clearFeedbackExitFade;
152
335
  private resetForNextSession;
153
336
  private showAttribution;
154
337
  private hideAttribution;
155
338
  private openLegalDetails;
156
339
  private closeLegalDetails;
340
+ private syncAdvancedSessionControlsVisibility;
157
341
  private setControlLabel;
158
342
  private setControlIcon;
159
343
  private setTooltip;
@@ -176,9 +360,15 @@ export declare class WidgetView {
176
360
  private savePanelPosition;
177
361
  private hasActiveSessionMarker;
178
362
  private resetPanelPosition;
363
+ private clearPanelInlinePosition;
179
364
  private restorePanelPosition;
180
365
  private clampPanelPosition;
366
+ private canDragPanel;
367
+ private cancelPanelDrag;
368
+ private syncPanelDragState;
181
369
  private syncHeaderActions;
370
+ private focusFallbackIfUnavailable;
371
+ private isVisibleFocusTarget;
182
372
  private require;
183
373
  }
184
374
  export {};