@burdenoff/fe-libs 2026.1024.2 → 2026.1024.3

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 (124) hide show
  1. package/dist/chrome/FooterBar.d.ts +1 -1
  2. package/dist/chrome/NativePageTransition.d.ts +1 -1
  3. package/dist/chrome/ProductPickerSheet.js +42 -42
  4. package/dist/chrome/ProductSwitcher.d.ts +8 -0
  5. package/dist/chrome/ProductSwitcher.js +83 -72
  6. package/dist/chrome/index.d.ts +9 -9
  7. package/dist/chrome/swipe/swipeMath.d.ts +1 -1
  8. package/dist/shared/assistant/api.d.ts +3 -3
  9. package/dist/shared/assistant/appControls/grammar.d.ts +21 -21
  10. package/dist/shared/assistant/appControls/languageReply.d.ts +1 -1
  11. package/dist/shared/assistant/appControls/names.d.ts +3 -3
  12. package/dist/shared/assistant/appControls/pageAdapters.d.ts +5 -5
  13. package/dist/shared/assistant/appControls/plan.d.ts +38 -38
  14. package/dist/shared/assistant/appControls/types.d.ts +15 -15
  15. package/dist/shared/assistant/appControls/useAssistantControl.d.ts +1 -1
  16. package/dist/shared/assistant/attachmentSources.d.ts +2 -2
  17. package/dist/shared/assistant/attachments.d.ts +5 -5
  18. package/dist/shared/assistant/autoRouting.d.ts +6 -6
  19. package/dist/shared/assistant/conversation.d.ts +20 -20
  20. package/dist/shared/assistant/displayContent.d.ts +4 -4
  21. package/dist/shared/assistant/documentText.d.ts +3 -3
  22. package/dist/shared/assistant/exportConversation.d.ts +1 -1
  23. package/dist/shared/assistant/history/historyControls.d.ts +4 -4
  24. package/dist/shared/assistant/history/historyErrors.d.ts +3 -3
  25. package/dist/shared/assistant/history/historyList.d.ts +5 -5
  26. package/dist/shared/assistant/history/historyMerge.d.ts +4 -4
  27. package/dist/shared/assistant/history/historyOperations.d.ts +1 -1
  28. package/dist/shared/assistant/history/historySearch.d.ts +5 -5
  29. package/dist/shared/assistant/history/historyStatus.d.ts +1 -1
  30. package/dist/shared/assistant/history/historyTypes.d.ts +12 -12
  31. package/dist/shared/assistant/history/profileBoundStorage.d.ts +2 -2
  32. package/dist/shared/assistant/i18n.d.ts +1 -1
  33. package/dist/shared/assistant/i18nManifest.d.ts +534 -534
  34. package/dist/shared/assistant/liveDeltas.d.ts +1 -1
  35. package/dist/shared/assistant/liveOverlay.d.ts +1 -1
  36. package/dist/shared/assistant/localUiCommandCopy.d.ts +1 -1
  37. package/dist/shared/assistant/localUiCommands.d.ts +22 -22
  38. package/dist/shared/assistant/localeCommands/engine.d.ts +5 -5
  39. package/dist/shared/assistant/localeCommands/evaluate.d.ts +8 -8
  40. package/dist/shared/assistant/localeCommands/fold.d.ts +2 -2
  41. package/dist/shared/assistant/localeCommands/frames.d.ts +3 -3
  42. package/dist/shared/assistant/localeCommands/gate.d.ts +3 -3
  43. package/dist/shared/assistant/localeCommands/languageNames.d.ts +1 -1
  44. package/dist/shared/assistant/localeCommands/normalise.d.ts +1 -1
  45. package/dist/shared/assistant/localeCommands/types.d.ts +4 -4
  46. package/dist/shared/assistant/modeCapabilities.d.ts +1 -1
  47. package/dist/shared/assistant/modeCopy.d.ts +2 -2
  48. package/dist/shared/assistant/permissionError.d.ts +2 -2
  49. package/dist/shared/assistant/preview/surfaceState.d.ts +1 -1
  50. package/dist/shared/assistant/preview/types.d.ts +5 -5
  51. package/dist/shared/assistant/preview/writeActionResults.d.ts +1 -1
  52. package/dist/shared/assistant/prewarm.d.ts +5 -5
  53. package/dist/shared/assistant/quota.d.ts +2 -2
  54. package/dist/shared/assistant/sandboxReadiness.d.ts +2 -2
  55. package/dist/shared/assistant/speech/speechFeed.d.ts +3 -3
  56. package/dist/shared/assistant/turnOutcome.d.ts +2 -2
  57. package/dist/shared/assistant/turnProgress.d.ts +1 -1
  58. package/dist/shared/assistant/turnState.d.ts +1 -1
  59. package/dist/shared/assistant/turnStream.d.ts +3 -3
  60. package/dist/shared/assistant/turnTimeline.d.ts +13 -13
  61. package/dist/shared/assistant/turnTimingReport.d.ts +1 -1
  62. package/dist/shared/assistant/turnTimingReporter.d.ts +3 -3
  63. package/dist/shared/assistant/ui/AssistantAvatarTabs.d.ts +1 -1
  64. package/dist/shared/assistant/ui/AssistantHistoryNotices.d.ts +1 -1
  65. package/dist/shared/assistant/ui/AssistantToolActivity.d.ts +1 -1
  66. package/dist/shared/assistant/ui/AssistantUiOfferLink.d.ts +2 -2
  67. package/dist/shared/assistant/ui/AssistantWriteConfirmDialog.d.ts +3 -3
  68. package/dist/shared/assistant/ui/composer/AssistantAttachmentButton.d.ts +1 -1
  69. package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.d.ts +1 -1
  70. package/dist/shared/assistant/ui/leaveConfirmFocus.d.ts +1 -1
  71. package/dist/shared/assistant/ui/leaveConfirmNavigate.d.ts +3 -3
  72. package/dist/shared/assistant/ui/panelOverlays.d.ts +5 -5
  73. package/dist/shared/assistant/ui/useVoiceSession.d.ts +5 -5
  74. package/dist/shared/assistant/ui/useWriteProposalConfirm.d.ts +4 -4
  75. package/dist/shared/assistant/ui/useWriteProposals.d.ts +2 -2
  76. package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts +1 -1
  77. package/dist/shared/assistant/ui/voice/VoiceCaption.d.ts +1 -1
  78. package/dist/shared/assistant/ui/voice/VoiceWaveform.d.ts +1 -1
  79. package/dist/shared/assistant/ui/voice/voiceSessionEscape.d.ts +2 -2
  80. package/dist/shared/assistant/ui/voice/voiceStartGate.d.ts +6 -6
  81. package/dist/shared/assistant/ui/writeProposalPresentation.d.ts +1 -1
  82. package/dist/shared/assistant/uiActions/actOnResolve.d.ts +5 -5
  83. package/dist/shared/assistant/uiActions/assistantHref.d.ts +2 -2
  84. package/dist/shared/assistant/uiActions/backStack.d.ts +1 -1
  85. package/dist/shared/assistant/uiActions/deixis.d.ts +3 -3
  86. package/dist/shared/assistant/uiActions/entityRoutes.d.ts +1 -1
  87. package/dist/shared/assistant/uiActions/navigationOutcome.d.ts +8 -8
  88. package/dist/shared/assistant/uiActions/offerYesOnSurface.d.ts +1 -1
  89. package/dist/shared/assistant/uiActions/resolveTarget.d.ts +2 -2
  90. package/dist/shared/assistant/uiActions/uiOffers.d.ts +5 -5
  91. package/dist/shared/assistant/usageReporting.d.ts +2 -2
  92. package/dist/shared/assistant/useWorkspaceWriteAccess.d.ts +1 -1
  93. package/dist/shared/assistant/voice/affirmations.d.ts +1 -1
  94. package/dist/shared/assistant/voice/handsFree.d.ts +3 -3
  95. package/dist/shared/assistant/voice/handsfree/bargeIn.d.ts +5 -5
  96. package/dist/shared/assistant/voice/handsfree/echoGate.d.ts +6 -6
  97. package/dist/shared/assistant/voice/handsfree/handsFreeController.d.ts +7 -7
  98. package/dist/shared/assistant/voice/handsfree/handsFreeSetting.d.ts +2 -2
  99. package/dist/shared/assistant/voice/handsfree/micCapture.d.ts +1 -1
  100. package/dist/shared/assistant/voice/handsfree/playbackReference.d.ts +1 -1
  101. package/dist/shared/assistant/voice/handsfree/sttTransport.d.ts +3 -3
  102. package/dist/shared/assistant/voice/handsfree/useHandsFreeInterrupt.d.ts +4 -4
  103. package/dist/shared/assistant/voice/handsfree/vad.d.ts +1 -1
  104. package/dist/shared/assistant/voice/speechPlayback.d.ts +7 -7
  105. package/dist/shared/assistant/voice/useVoiceInput.d.ts +1 -1
  106. package/dist/shared/assistant/voice/voiceReopen.d.ts +8 -8
  107. package/dist/shared/assistant/writeConfirmSeam.d.ts +1 -1
  108. package/dist/shared/assistant/writeModeConsent.d.ts +7 -7
  109. package/dist/shared/assistant/writeProposalDiscovery.d.ts +3 -3
  110. package/dist/shared/assistant/writeProposalErrorCopy.d.ts +1 -1
  111. package/dist/shared/assistant/writeProposals.d.ts +23 -23
  112. package/dist/shared/assistant/writeReplyBinder.d.ts +11 -11
  113. package/dist/shared/assistant/writeReplySend.d.ts +7 -7
  114. package/dist/shared/components/LandingOrDashboardRedirect.d.ts +18 -3
  115. package/dist/shared/components/LandingOrDashboardRedirect.js +58 -28
  116. package/dist/shared/components/index.d.ts +2 -1
  117. package/dist/shared/hooks/shell/globalSearchError.d.ts +2 -2
  118. package/dist/shared/navigation/productSwitchHandoff.d.ts +45 -0
  119. package/dist/shared/navigation/productSwitchHandoff.js +27 -0
  120. package/dist/shared/navigation/unsavedChanges.d.ts +1 -1
  121. package/dist/shared/utils/index.d.ts +3 -3
  122. package/dist/shared-components.js +7 -6
  123. package/dist/shared.js +71 -70
  124. package/package.json +3 -2
@@ -43,8 +43,8 @@ export interface UiOfferView {
43
43
  expiresAt: number;
44
44
  state: UiOfferState;
45
45
  }
46
- export type UiOfferTransport = "read" | "write";
47
- export type UiOfferState = "live" | "expired";
46
+ export type UiOfferTransport = 'read' | 'write';
47
+ export type UiOfferState = 'live' | 'expired';
48
48
  /** At most this many offers are read from one `/messages` answer (the server's own cap). */
49
49
  export declare const UI_OFFER_MAX_PER_READ = 10;
50
50
  /** An offer lives at most 10 minutes from its mint, on the server's clock. */
@@ -97,7 +97,7 @@ export interface UiOfferTarget {
97
97
  * while permissions load, never when the fetch failed, never during a role
98
98
  * simulation. Entity routes are never offer targets (catalogue ids are nav ids).
99
99
  */
100
- export declare function resolveOffer(offer: Pick<UiOfferView, "catalogueId">, registry: UiOfferRegistry): UiOfferTarget | null;
100
+ export declare function resolveOffer(offer: Pick<UiOfferView, 'catalogueId'>, registry: UiOfferRegistry): UiOfferTarget | null;
101
101
  /** A turn THIS page session sent, recorded at send time. */
102
102
  export interface UiOfferTurnStart {
103
103
  /** The panel's own reply message id (the bubble the offer is drawn under). */
@@ -206,7 +206,7 @@ export declare class UiOfferSession {
206
206
  * model asked about in a read transport — the sandbox's own transport AND the
207
207
  * mode the turn was sent in. Anything else gets the tap / "take me there" hint.
208
208
  */
209
- export declare function uiOfferHintKind(offer: Pick<UiOfferView, "ask" | "transport">, turn: Pick<UiOfferTurnStart, "writeCapable"> | undefined): "read" | "link";
209
+ export declare function uiOfferHintKind(offer: Pick<UiOfferView, 'ask' | 'transport'>, turn: Pick<UiOfferTurnStart, 'writeCapable'> | undefined): 'read' | 'link';
210
210
  /**
211
211
  * Y5: the reply asked exactly ONE question, and it is the last sentence.
212
212
  *
@@ -217,7 +217,7 @@ export declare function uiOfferHintKind(offer: Pick<UiOfferView, "ask" | "transp
217
217
  */
218
218
  export declare function asksOneQuestionLast(text: string): boolean;
219
219
  /** What the binder may do with a bare "yes" (design §6). */
220
- export type UiOfferYesState = "acceptable" | "expired" | "none";
220
+ export type UiOfferYesState = 'acceptable' | 'expired' | 'none';
221
221
  /** What `offerYesState` reads, all of it live at the decision point. */
222
222
  export interface UiOfferYesInput extends UiOfferLiveContext {
223
223
  /** The newest assistant reply on the surface the "yes" came from, with its displayed text; null when a person message came after it. */
@@ -19,7 +19,7 @@ export type UsageReporter = (report: UsageReport) => Promise<void>;
19
19
  * - `unavailable`: anything else — a network drop, a timeout, a 5xx. Trying
20
20
  * again can succeed.
21
21
  */
22
- export type UsageReportFailureKind = "permission" | "unavailable";
22
+ export type UsageReportFailureKind = 'permission' | 'unavailable';
23
23
  /** Set while at least one report is held: the assistant is paused. */
24
24
  export interface UsageBlock {
25
25
  readonly kind: UsageReportFailureKind;
@@ -65,7 +65,7 @@ export declare const usageReportClock: {
65
65
  * different row). A report held by one must never be retried through the
66
66
  * other, or it would be billed to the wrong ledger.
67
67
  */
68
- export declare function assistantUsageLedger(source: "panel" | "transport", product: string): string;
68
+ export declare function assistantUsageLedger(source: 'panel' | 'transport', product: string): string;
69
69
  /** Where a ledger's held reports are mirrored for this tab. */
70
70
  export declare function usagePendingStorageKey(ledger: string, workspaceId: string): string;
71
71
  /**
@@ -26,5 +26,5 @@
26
26
  * of lacking a permission they may well have.
27
27
  */
28
28
  /** `unknown` while in flight or unanswerable — never treated as a refusal. */
29
- export type WorkspaceWriteAccess = "granted" | "denied" | "unknown";
29
+ export type WorkspaceWriteAccess = 'granted' | 'denied' | 'unknown';
30
30
  export declare function useWorkspaceWriteAccess(actorId: string | null, workspaceId: string | null, probeResources: readonly string[]): WorkspaceWriteAccess;
@@ -15,7 +15,7 @@
15
15
  * Pure data in, answer out: no DOM, no timers.
16
16
  */
17
17
  /** The languages the assistant is offered in (`languages.ts`). */
18
- export type AffirmationLanguage = "en" | "hi" | "ta" | "es" | "ar" | "zh";
18
+ export type AffirmationLanguage = 'en' | 'hi' | 'ta' | 'es' | 'ar' | 'zh';
19
19
  /**
20
20
  * "hi-IN", "ta_IN", "zh-Hant-TW" -> the language this module has a lexicon
21
21
  * for. Anything unknown (or absent) is English: that is what the assistant
@@ -134,10 +134,10 @@ export declare function isTrailingResultOfSubmitted(transcript: string, submitte
134
134
  export declare function isGenuineUserSpeech(text: string): boolean;
135
135
  /** What a result heard while the answer is being prepared amounts to. */
136
136
  export type ThinkingSpeechPlan = {
137
- kind: "ignore";
138
- reason: "empty" | "trailing" | "noise" | "affirmation";
137
+ kind: 'ignore';
138
+ reason: 'empty' | 'trailing' | 'noise' | 'affirmation';
139
139
  } | {
140
- kind: "supersede";
140
+ kind: 'supersede';
141
141
  /** What the person said, without the words of the turn it corrects. */
142
142
  text: string;
143
143
  };
@@ -8,14 +8,14 @@ export interface OnsetContext {
8
8
  playbackAudible: boolean;
9
9
  }
10
10
  export type OnsetPlan = {
11
- kind: "ignore";
12
- reason: "disabled" | "muted" | "not-in-session";
11
+ kind: 'ignore';
12
+ reason: 'disabled' | 'muted' | 'not-in-session';
13
13
  } | {
14
- kind: "open-utterance";
14
+ kind: 'open-utterance';
15
15
  } | {
16
- kind: "correction";
16
+ kind: 'correction';
17
17
  } | {
18
- kind: "barge-in";
18
+ kind: 'barge-in';
19
19
  };
20
20
  export declare function planOnset(context: OnsetContext): OnsetPlan;
21
21
  /**
@@ -75,17 +75,17 @@ export interface EchoGateParams {
75
75
  tailDecayDbPerFrame: number;
76
76
  }
77
77
  export declare const DEFAULT_ECHO_GATE_PARAMS: Readonly<EchoGateParams>;
78
- export type GateReason = "no-playback" | "calibrating"
78
+ export type GateReason = 'no-playback' | 'calibrating'
79
79
  /** The assistant is on the device voice: no reference exists, so nothing can be attributed. */
80
- | "no-reference" | "reference-silent"
80
+ | 'no-reference' | 'reference-silent'
81
81
  /** No echo reaches the microphone (headphones, or a very good canceller). */
82
- | "no-echo-path"
82
+ | 'no-echo-path'
83
83
  /** The microphone follows the reference: this is the assistant, not the user. */
84
- | "follows-reference"
84
+ | 'follows-reference'
85
85
  /** Audible reference without enough shape to compare. */
86
- | "flat-reference"
86
+ | 'flat-reference'
87
87
  /** The microphone does not follow the reference: this may be the user. */
88
- | "uncorrelated";
88
+ | 'uncorrelated';
89
89
  export interface GateVerdict {
90
90
  pass: boolean;
91
91
  reason: GateReason;
@@ -4,13 +4,13 @@ import { MicCaptureHandle } from './micCapture';
4
4
  import { PlaybackSource } from './playbackReference';
5
5
  import { SttTransport } from './sttTransport';
6
6
  import { VoiceSessionPhase } from '../voiceSession';
7
- export type FallbackReason = "mic-denied" | "mic-unavailable" | "transport-unavailable" | "transport-auth" | "transport-quota" | "transport-upstream" | "phantom-barge-ins"
7
+ export type FallbackReason = 'mic-denied' | 'mic-unavailable' | 'transport-unavailable' | 'transport-auth' | 'transport-quota' | 'transport-upstream' | 'phantom-barge-ins'
8
8
  /**
9
9
  * The person chose "Not now" on the backend stream's privacy notice. Raised
10
10
  * by `useHandsFreeInterrupt`, never by the controller: the microphone was
11
11
  * never opened.
12
12
  */
13
- | "notice-declined";
13
+ | 'notice-declined';
14
14
  export interface ControllerSession {
15
15
  phase: VoiceSessionPhase;
16
16
  muted: boolean;
@@ -47,7 +47,7 @@ export interface FakeCapture {
47
47
  stop(): void;
48
48
  }
49
49
  export type ControllerTelemetry = {
50
- type: "onset";
50
+ type: 'onset';
51
51
  plan: string;
52
52
  atFrame: number;
53
53
  playbackSource: PlaybackSource;
@@ -57,17 +57,17 @@ export type ControllerTelemetry = {
57
57
  corr: number;
58
58
  } | null;
59
59
  } | {
60
- type: "stopped-playback";
60
+ type: 'stopped-playback';
61
61
  frame: number;
62
62
  } | {
63
- type: "stale-transcript-dropped";
63
+ type: 'stale-transcript-dropped';
64
64
  epoch: number;
65
65
  current: number;
66
66
  } | {
67
- type: "fallback";
67
+ type: 'fallback';
68
68
  reason: FallbackReason;
69
69
  } | {
70
- type: "nothing-heard";
70
+ type: 'nothing-heard';
71
71
  };
72
72
  export interface HandsFreeController {
73
73
  start(): Promise<void>;
@@ -14,7 +14,7 @@
14
14
  * page loads (`globalThis.__boffHandsFreeInterrupt = "on"`), so a test does not
15
15
  * have to click through settings. It can only affect the client that set it.
16
16
  */
17
- export type HandsFreeOverride = "on" | "off";
17
+ export type HandsFreeOverride = 'on' | 'off';
18
18
  export declare const HANDS_FREE_OVERRIDE_KEY = "__boffHandsFreeInterrupt";
19
19
  export declare const HANDS_FREE_TRANSPORT_OVERRIDE_KEY = "__boffHandsFreeTransport";
20
20
  /** The stored value is trusted only if it is exactly `true`; anything else is OFF. */
@@ -27,5 +27,5 @@ export declare function resolveStoredHandsFree(value: unknown): boolean;
27
27
  */
28
28
  export declare function resolveHandsFreeEnabled(stored: unknown, override: unknown, avatarOn?: boolean): boolean;
29
29
  export declare function readHandsFreeOverride(): HandsFreeOverride | undefined;
30
- export type TransportOverride = "web-speech" | "audio-track" | "backend-stream";
30
+ export type TransportOverride = 'web-speech' | 'audio-track' | 'backend-stream';
31
31
  export declare function readTransportOverride(): TransportOverride | undefined;
@@ -8,7 +8,7 @@ export interface MicCaptureHandle {
8
8
  /** Stop everything and release the microphone. */
9
9
  stop(): void;
10
10
  }
11
- export type MicCaptureFailure = "unsupported" | "not-allowed" | "unavailable";
11
+ export type MicCaptureFailure = 'unsupported' | 'not-allowed' | 'unavailable';
12
12
  export declare class MicCaptureError extends Error {
13
13
  readonly reason: MicCaptureFailure;
14
14
  constructor(reason: MicCaptureFailure);
@@ -19,7 +19,7 @@
19
19
  * graph and cannot be tapped. It reports itself through `setDeviceVoice` so the
20
20
  * gate can switch to its no-reference mode; the browser engine calls it.
21
21
  */
22
- export type PlaybackSource = "hosted" | "device" | null;
22
+ export type PlaybackSource = 'hosted' | 'device' | null;
23
23
  export declare function attachPlaybackReference(context: AudioContext, referenceBus: AudioNode): void;
24
24
  /**
25
25
  * Stop referencing. `closeContext` is run now, or - if a tapped element is
@@ -18,7 +18,7 @@
18
18
  * Every transcript carries `{utteranceId, epoch}`; the controller drops any whose
19
19
  * epoch is not current (see `bargeIn.ts`).
20
20
  */
21
- export type SttTransportKind = "audio-track" | "backend-stream" | "web-speech";
21
+ export type SttTransportKind = 'audio-track' | 'backend-stream' | 'web-speech';
22
22
  export interface TransportTranscript {
23
23
  text: string;
24
24
  final: boolean;
@@ -26,7 +26,7 @@ export interface TransportTranscript {
26
26
  epoch: number;
27
27
  language?: string;
28
28
  }
29
- export type SttErrorCode = "unavailable" | "auth" | "quota" | "upstream" | "closed" | "not-allowed";
29
+ export type SttErrorCode = 'unavailable' | 'auth' | 'quota' | 'upstream' | 'closed' | 'not-allowed';
30
30
  export interface SttTransportError {
31
31
  code: SttErrorCode;
32
32
  /** The caller may retry once with the audio it still holds. */
@@ -55,7 +55,7 @@ export interface SttTransport {
55
55
  * (this transport only reports capability); `transport`: this object does and
56
56
  * the session hook must not start its own.
57
57
  */
58
- readonly recognitionOwner: "transport" | "session-hook";
58
+ readonly recognitionOwner: 'transport' | 'session-hook';
59
59
  /** Whether the words spoken BEFORE the onset was confirmed reach the recogniser. */
60
60
  readonly keepsOpeningWords: boolean;
61
61
  start(graph: SttAudioGraph | null, language: string, handlers: SttTransportHandlers): Promise<void>;
@@ -5,17 +5,17 @@ import { SttTransportKind } from './sttTransport';
5
5
  export declare const HIDDEN_RELEASE_MS = 30000;
6
6
  export type HandsFreeMode =
7
7
  /** Setting off, or no live unmuted session: nothing is open. */
8
- "off"
8
+ 'off'
9
9
  /** Hands-free cannot run on this device (no capture, or a phone with no stream transport). */
10
- | "unavailable"
10
+ | 'unavailable'
11
11
  /**
12
12
  * The backend stream is about to be used and the person has not accepted
13
13
  * its privacy notice yet: the notice is on screen, and the microphone stays
14
14
  * CLOSED (no capture, no recogniser) until they choose.
15
15
  */
16
- | "notice" | "starting" | "active"
16
+ | 'notice' | 'starting' | 'active'
17
17
  /** Gave up; the tap-first Web Speech path is in charge, and says why. */
18
- | "fallback";
18
+ | 'fallback';
19
19
  export interface UseHandsFreeInterruptOptions {
20
20
  /** The viewer's setting (or the test override), already resolved. */
21
21
  enabled: boolean;
@@ -37,7 +37,7 @@ export interface VadFrame {
37
37
  rmsDb: number;
38
38
  zcr: number;
39
39
  }
40
- export type VadEvent = "onset" | "end" | null;
40
+ export type VadEvent = 'onset' | 'end' | null;
41
41
  export interface VadStep {
42
42
  voiced: boolean;
43
43
  event: VadEvent;
@@ -1,36 +1,36 @@
1
1
  import { VoiceSessionPhase } from './voiceSession';
2
2
  export type SpeechPlaybackState = {
3
- readonly status: "idle";
3
+ readonly status: 'idle';
4
4
  } | {
5
- readonly status: "speaking";
5
+ readonly status: 'speaking';
6
6
  readonly messageId: string;
7
7
  readonly requestId: number;
8
8
  };
9
9
  export type SpeechPlaybackAction =
10
10
  /** User pressed speak on a message (or auto-speak fired). */
11
11
  {
12
- readonly type: "start";
12
+ readonly type: 'start';
13
13
  readonly messageId: string;
14
14
  readonly requestId: number;
15
15
  }
16
16
  /** User pressed the control on `messageId`: stop if it is the one talking. */
17
17
  | {
18
- readonly type: "toggle";
18
+ readonly type: 'toggle';
19
19
  readonly messageId: string;
20
20
  readonly requestId: number;
21
21
  }
22
22
  /** Explicit stop: the stop button, panel close, conversation switch, unmount. */
23
23
  | {
24
- readonly type: "stop";
24
+ readonly type: 'stop';
25
25
  }
26
26
  /** The engine finished the queue for `requestId`. */
27
27
  | {
28
- readonly type: "finished";
28
+ readonly type: 'finished';
29
29
  readonly requestId: number;
30
30
  }
31
31
  /** The engine failed (or was cancelled) on `requestId`. */
32
32
  | {
33
- readonly type: "failed";
33
+ readonly type: 'failed';
34
34
  readonly requestId: number;
35
35
  };
36
36
  export declare const IDLE_PLAYBACK: SpeechPlaybackState;
@@ -137,4 +137,4 @@ export interface UseVoiceInputResult {
137
137
  toggle: () => void;
138
138
  clearError: () => void;
139
139
  }
140
- export declare function useVoiceInput({ onFinalize, language: requested }: UseVoiceInputOptions): UseVoiceInputResult;
140
+ export declare function useVoiceInput({ onFinalize, language: requested, }: UseVoiceInputOptions): UseVoiceInputResult;
@@ -27,7 +27,7 @@
27
27
  * the session's start-up.
28
28
  */
29
29
  export interface VoiceSessionAwaitingOwn {
30
- readonly pending: "own";
30
+ readonly pending: 'own';
31
31
  /**
32
32
  * The conversation on screen when the session started (null: none). It is
33
33
  * not the session's: opening another one before the session has its own
@@ -77,11 +77,11 @@ export interface VoiceOpenConversation {
77
77
  * the session's next entry goes to a conversation of its own.
78
78
  */
79
79
  export type VoiceStartPlan = {
80
- kind: "own";
80
+ kind: 'own';
81
81
  } | {
82
- kind: "join";
82
+ kind: 'join';
83
83
  conversationId: string;
84
- why: "draft" | "proposal" | "turn";
84
+ why: 'draft' | 'proposal' | 'turn';
85
85
  };
86
86
  /**
87
87
  * ★★ BOFF-8159 S5: the rules, in order. Pure; the panel applies them at the
@@ -122,15 +122,15 @@ export declare function voiceBindingAtStart(plan: VoiceStartPlan, openAtStart: s
122
122
  * session is ending, and the entry goes nowhere.
123
123
  */
124
124
  export type VoiceSpokenEntry = {
125
- kind: "own";
125
+ kind: 'own';
126
126
  } | {
127
- kind: "adopt";
127
+ kind: 'adopt';
128
128
  conversationId: string;
129
129
  } | {
130
- kind: "attach";
130
+ kind: 'attach';
131
131
  conversationId: string;
132
132
  } | {
133
- kind: "gone";
133
+ kind: 'gone';
134
134
  };
135
135
  export declare function planVoiceSpokenEntry(binding: VoiceSessionAwaitingOwn, activeConversationId: string | null, open: VoiceOpenConversation | null): VoiceSpokenEntry;
136
136
  /**
@@ -20,7 +20,7 @@ import { WriteProposalView } from './writeProposals';
20
20
  * any answer that is not exactly `'confirmed'` or `'cancelled'`);
21
21
  * - `aborted`: the question no longer stands; do nothing.
22
22
  */
23
- export type WriteConfirmSeamDecision = "approve" | "decline" | "default" | "aborted";
23
+ export type WriteConfirmSeamDecision = 'approve' | 'decline' | 'default' | 'aborted';
24
24
  /**
25
25
  * Ask the product's `confirmWrite`, if it has one, about `view`.
26
26
  *
@@ -43,17 +43,17 @@ export interface WriteModeSendCheck {
43
43
  * Send-time consent and voice checks against the validated post-wait mode: why
44
44
  * the send must not go ahead, or null.
45
45
  */
46
- export declare function writeModeSendRefusalReason(mode: AssistantMode, config: Pick<AssistantModeConfig, "writeCapable"> | undefined, acknowledged: readonly AssistantMode[], { dictated, confirmsWrites, proposalBound }: WriteModeSendCheck): Extract<SendRefusalReason, "confirm-write-mode" | "voice-in-write-mode"> | null;
46
+ export declare function writeModeSendRefusalReason(mode: AssistantMode, config: Pick<AssistantModeConfig, 'writeCapable'> | undefined, acknowledged: readonly AssistantMode[], { dictated, confirmsWrites, proposalBound }: WriteModeSendCheck): Extract<SendRefusalReason, 'confirm-write-mode' | 'voice-in-write-mode'> | null;
47
47
  /**
48
48
  * The same check, as the English a person reads. Kept for callers that want
49
49
  * the words; the panel throws `AssistantSendRefusal` with the reason and
50
50
  * translates it (`TURN_OUTCOME_COPY`).
51
51
  */
52
- export declare function writeModeSendRefusal(mode: AssistantMode, config: Pick<AssistantModeConfig, "writeCapable"> | undefined, acknowledged: readonly AssistantMode[], options: WriteModeSendCheck): string | null;
52
+ export declare function writeModeSendRefusal(mode: AssistantMode, config: Pick<AssistantModeConfig, 'writeCapable'> | undefined, acknowledged: readonly AssistantMode[], options: WriteModeSendCheck): string | null;
53
53
  /** `acknowledged` plus `mode`, unchanged (same array) if it is already there. */
54
54
  export declare function withWriteModeAcknowledged(acknowledged: readonly AssistantMode[], mode: AssistantMode): readonly AssistantMode[];
55
55
  /** A mode as the dialog needs it: the product's config, or just an id. */
56
- export type WriteConsentMode = Pick<AssistantModeConfig, "id"> & Partial<Pick<AssistantModeConfig, "label" | "producesArtifacts">>;
56
+ export type WriteConsentMode = Pick<AssistantModeConfig, 'id'> & Partial<Pick<AssistantModeConfig, 'label' | 'producesArtifacts'>>;
57
57
  /** Every line of the dialog, already translated. */
58
58
  export interface WriteModeConsentCopy {
59
59
  title: string;
@@ -76,10 +76,10 @@ export interface WriteModeConsentCopy {
76
76
  * manifest too, so the three cannot drift apart without CI failing.
77
77
  */
78
78
  export declare const TAKE_ACTION_ENGLISH: {
79
- readonly "apiCalls.consentTitle": "Switch to Take action mode?";
80
- readonly "apiCalls.consentBody": "In Take action mode the assistant can read AND change your data — creating records, logging activity, updating details, and more, on your behalf.";
81
- readonly "apiCalls.consentConfirm": "Enable Take action";
82
- readonly "apiCalls.consentCancel": "Stay in Ask";
79
+ readonly 'apiCalls.consentTitle': "Switch to Take action mode?";
80
+ readonly 'apiCalls.consentBody': "In Take action mode the assistant can read AND change your data — creating records, logging activity, updating details, and more, on your behalf.";
81
+ readonly 'apiCalls.consentConfirm': "Enable Take action";
82
+ readonly 'apiCalls.consentCancel': "Stay in Ask";
83
83
  };
84
84
  /** A consent key whose English fe-libs writes itself. */
85
85
  export type TakeActionConsentKey = keyof typeof TAKE_ACTION_ENGLISH;
@@ -34,7 +34,7 @@ export interface WriteProposalSession {
34
34
  * yet (`null`) is kept: its view says `approvable: false`, so its card offers
35
35
  * no confirm.
36
36
  */
37
- export declare function writeProposalBelongsTo(view: Pick<WriteProposalView, "sessionId" | "conversationId">, session: Pick<WriteProposalSession, "sessionId" | "conversationId">): boolean;
37
+ export declare function writeProposalBelongsTo(view: Pick<WriteProposalView, 'sessionId' | 'conversationId'>, session: Pick<WriteProposalSession, 'sessionId' | 'conversationId'>): boolean;
38
38
  /** A session a reopened conversation may hold proposals in. */
39
39
  export interface WriteProposalReopenTarget {
40
40
  session: WriteProposalSession;
@@ -83,9 +83,9 @@ export declare function writeProposalSessionsToReopen(conversation: {
83
83
  * - `poll`: a proposal of the session is executing;
84
84
  * - `refresh`: after a press, so the card shows the record.
85
85
  */
86
- export type WriteProposalDiscoveryReason = "turn" | "open" | "mount" | "poll" | "refresh";
86
+ export type WriteProposalDiscoveryReason = 'turn' | 'open' | 'mount' | 'poll' | 'refresh';
87
87
  /** What the person (or the panel) was doing when a call failed. */
88
- export type WriteProposalFailedAction = "approve" | "decline" | "list";
88
+ export type WriteProposalFailedAction = 'approve' | 'decline' | 'list';
89
89
  export interface WriteProposalListContext {
90
90
  reason: WriteProposalDiscoveryReason;
91
91
  /** The reply of the turn that just settled (`turn` only). */
@@ -131,4 +131,4 @@ export declare const WRITE_PROPOSAL_ERROR_COPY: Readonly<{
131
131
  * with no readable answer is `indeterminate`, whatever its code; a failed
132
132
  * list says the prepared change could not be loaded.
133
133
  */
134
- export declare function writeProposalErrorLine(error: Pick<WriteProposalError, "code" | "reason" | "indeterminate">, action: "approve" | "decline" | "list"): WriteProposalErrorLine;
134
+ export declare function writeProposalErrorLine(error: Pick<WriteProposalError, 'code' | 'reason' | 'indeterminate'>, action: 'approve' | 'decline' | 'list'): WriteProposalErrorLine;
@@ -1,10 +1,10 @@
1
1
  import { AssistantMode, AssistantSandboxAuthContext } from './types';
2
2
  /** Which write flow a sandbox enforces (`/health.capabilities.writeApprovalMode`). */
3
- export type WriteApprovalMode = "legacy" | "proposal-v1";
3
+ export type WriteApprovalMode = 'legacy' | 'proposal-v1';
4
4
  /** Whether an approved proposal may run in that sandbox (`fenced` = never, until 5b). */
5
- export type WriteExecutionState = "enabled" | "fenced";
5
+ export type WriteExecutionState = 'enabled' | 'fenced';
6
6
  /** The sandbox's gateway auth path (`/health.capabilities.sessionCredentials`). */
7
- export type SandboxSessionCredentials = "relay" | "delegated" | "direct" | "unconfigured";
7
+ export type SandboxSessionCredentials = 'relay' | 'delegated' | 'direct' | 'unconfigured';
8
8
  /**
9
9
  * What ONE sandbox's own `/health` says about writes.
10
10
  *
@@ -18,7 +18,7 @@ export interface SandboxWriteCapabilities {
18
18
  writeApprovalMode: WriteApprovalMode;
19
19
  writeExecution: WriteExecutionState;
20
20
  /** A typed or spoken reply never approves a write in 5a. */
21
- replyApproval: "off";
21
+ replyApproval: 'off';
22
22
  writeRiskVersion?: string;
23
23
  sessionCredentials?: SandboxSessionCredentials;
24
24
  /**
@@ -28,26 +28,26 @@ export interface SandboxWriteCapabilities {
28
28
  */
29
29
  uiOffers?: true;
30
30
  }
31
- export type WriteProposalStatus = "pending" | "executing" | "succeeded" | "failed" | "outcome_unknown" | "declined" | "superseded" | "expired";
32
- export type WriteProposalStatusReason = "user_declined" | "corrected" | "redirected" | "not_chosen" | "user_replied" | "conversation_closed" | "mode_switched" | "sandbox_replaced" | "ttl" | "evicted" | "context_changed" | "stale_execution";
31
+ export type WriteProposalStatus = 'pending' | 'executing' | 'succeeded' | 'failed' | 'outcome_unknown' | 'declined' | 'superseded' | 'expired';
32
+ export type WriteProposalStatusReason = 'user_declined' | 'corrected' | 'redirected' | 'not_chosen' | 'user_replied' | 'conversation_closed' | 'mode_switched' | 'sandbox_replaced' | 'ttl' | 'evicted' | 'context_changed' | 'stale_execution';
33
33
  /** Reasons the panel may give for declining. */
34
- export type WriteProposalDeclineReason = Extract<WriteProposalStatusReason, "user_declined" | "corrected" | "redirected" | "not_chosen" | "conversation_closed" | "mode_switched" | "sandbox_replaced">;
35
- export type WriteProposalGateway = "workspace" | "global";
34
+ export type WriteProposalDeclineReason = Extract<WriteProposalStatusReason, 'user_declined' | 'corrected' | 'redirected' | 'not_chosen' | 'conversation_closed' | 'mode_switched' | 'sandbox_replaced'>;
35
+ export type WriteProposalGateway = 'workspace' | 'global';
36
36
  /** How a decision was made. Only `button` approves in 5a. */
37
- export type WriteProposalMethod = "button" | "typed" | "spoken";
37
+ export type WriteProposalMethod = 'button' | 'typed' | 'spoken';
38
38
  /** A decline may also come from the panel's lifecycle (close, mode switch). */
39
- export type WriteProposalDeclineMethod = WriteProposalMethod | "system";
40
- export type WriteProposalDecisionSurface = "card" | "assistant_modal" | "host_modal" | "voice";
39
+ export type WriteProposalDeclineMethod = WriteProposalMethod | 'system';
40
+ export type WriteProposalDecisionSurface = 'card' | 'assistant_modal' | 'host_modal' | 'voice';
41
41
  /** Where an approval can be pressed. Voice never approves. */
42
- export type WriteProposalApproveSurface = Exclude<WriteProposalDecisionSurface, "voice">;
43
- export type WriteProposalPresentationSurface = "card" | "modal" | "voice_readback";
44
- export type WriteProposalExecutionOutcome = "succeeded" | "failed" | "outcome_unknown";
45
- export type WriteProposalRiskKind = "destructive" | "financial" | "bulk" | "permission" | "credential" | "irreversible" | "unclassified";
42
+ export type WriteProposalApproveSurface = Exclude<WriteProposalDecisionSurface, 'voice'>;
43
+ export type WriteProposalPresentationSurface = 'card' | 'modal' | 'voice_readback';
44
+ export type WriteProposalExecutionOutcome = 'succeeded' | 'failed' | 'outcome_unknown';
45
+ export type WriteProposalRiskKind = 'destructive' | 'financial' | 'bulk' | 'permission' | 'credential' | 'irreversible' | 'unclassified';
46
46
  export interface WriteProposalArgument {
47
47
  name: string;
48
48
  /** The value that will be sent: inline literals and variables resolved. */
49
49
  value: unknown;
50
- source: "literal" | "variable";
50
+ source: 'literal' | 'variable';
51
51
  /** Masked on the card and never spoken. */
52
52
  sensitive: boolean;
53
53
  }
@@ -77,7 +77,7 @@ export interface WriteProposalReadbackParts {
77
77
  }
78
78
  export interface WriteProposalConfirmSurface {
79
79
  /** `dialog` for the OD-12 kinds; everything else confirms on the card. */
80
- kind: "card" | "dialog";
80
+ kind: 'card' | 'dialog';
81
81
  key: string | null;
82
82
  }
83
83
  export interface WriteProposalDescription {
@@ -101,7 +101,7 @@ export interface WriteProposalDescription {
101
101
  }
102
102
  export interface WriteProposalRisk {
103
103
  /** Always HIGH in 5a. */
104
- level: "high";
104
+ level: 'high';
105
105
  kinds: WriteProposalRiskKind[];
106
106
  reasons: string[];
107
107
  source: string;
@@ -113,7 +113,7 @@ export interface WriteProposalExecutionAvailability {
113
113
  reason?: string;
114
114
  }
115
115
  export interface WriteProposalDecisionView {
116
- outcome: "approved" | "declined";
116
+ outcome: 'approved' | 'declined';
117
117
  method: WriteProposalDeclineMethod;
118
118
  surface: string | null;
119
119
  reason: string | null;
@@ -165,7 +165,7 @@ export interface WriteProposalRef {
165
165
  conversationId: string;
166
166
  }
167
167
  /** A session in the issuing sandbox (list, decline all). */
168
- export type WriteProposalSessionRef = Omit<WriteProposalRef, "proposalId">;
168
+ export type WriteProposalSessionRef = Omit<WriteProposalRef, 'proposalId'>;
169
169
  /** Codes the sandbox and wspace-sandbox-svc answer with (design §4.4, §5.6). */
170
170
  export declare const WRITE_PROPOSAL_ERROR_CODES: readonly ["NOT_FOUND", "SESSION_MISMATCH", "CONVERSATION_MISMATCH", "ACTOR_MISMATCH", "HASH_MISMATCH", "METHOD_NOT_ALLOWED", "SUPERSEDED", "DECLINED", "NOT_PENDING", "EXPIRED", "EVICTED", "EXECUTION_NOT_ENABLED", "READ_ONLY", "TURN_IN_PROGRESS", "CONTEXT_CHANGED", "STORE_UNAVAILABLE", "APPROVAL_MODE_MISMATCH", "PANEL_UPGRADE_REQUIRED", "NOT_PROPOSAL_OWNER", "INVALID_REQUEST", "MALFORMED_RESPONSE", "UNKNOWN"];
171
171
  export type WriteProposalErrorCode = (typeof WRITE_PROPOSAL_ERROR_CODES)[number];
@@ -208,14 +208,14 @@ export interface WriteProposalList {
208
208
  export type WriteProposalApproveResult =
209
209
  /** It ran (or had already run: `replayed`); the record holds the outcome. */
210
210
  {
211
- kind: "settled";
211
+ kind: 'settled';
212
212
  proposal: WriteProposalView;
213
213
  outcome: WriteProposalExecutionOutcome;
214
214
  replayed: boolean;
215
215
  }
216
216
  /** 202: still running after the sandbox's wait. Poll `list`. */
217
217
  | {
218
- kind: "executing";
218
+ kind: 'executing';
219
219
  proposal: WriteProposalView | null;
220
220
  };
221
221
  export interface WriteProposalDeclineAllResult {
@@ -224,7 +224,7 @@ export interface WriteProposalDeclineAllResult {
224
224
  }
225
225
  export interface WriteProposalClient {
226
226
  list(ref: WriteProposalSessionRef, options?: {
227
- status?: "live" | "all";
227
+ status?: 'live' | 'all';
228
228
  since?: number;
229
229
  }): Promise<WriteProposalList>;
230
230
  presented(ref: WriteProposalRef, options: {