@burdenoff/fe-libs 2026.1024.1 → 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.
- package/dist/chrome/FooterBar.d.ts +1 -1
- package/dist/chrome/NativePageTransition.d.ts +1 -1
- package/dist/chrome/ProductPickerSheet.js +42 -42
- package/dist/chrome/ProductSwitcher.d.ts +8 -0
- package/dist/chrome/ProductSwitcher.js +83 -72
- package/dist/chrome/index.d.ts +9 -9
- package/dist/chrome/swipe/swipeMath.d.ts +1 -1
- package/dist/shared/assistant/api.d.ts +3 -3
- package/dist/shared/assistant/appControls/grammar.d.ts +21 -21
- package/dist/shared/assistant/appControls/languageReply.d.ts +1 -1
- package/dist/shared/assistant/appControls/names.d.ts +3 -3
- package/dist/shared/assistant/appControls/pageAdapters.d.ts +5 -5
- package/dist/shared/assistant/appControls/plan.d.ts +38 -38
- package/dist/shared/assistant/appControls/types.d.ts +15 -15
- package/dist/shared/assistant/appControls/useAssistantControl.d.ts +1 -1
- package/dist/shared/assistant/attachmentSources.d.ts +2 -2
- package/dist/shared/assistant/attachments.d.ts +5 -5
- package/dist/shared/assistant/autoRouting.d.ts +6 -6
- package/dist/shared/assistant/avatar/live/LiveAvatarStage.js +5 -1
- package/dist/shared/assistant/avatar/live/LiveAvatarTabView.js +28 -25
- package/dist/shared/assistant/avatar/live/createLiveAvatarSeam.d.ts +1 -1
- package/dist/shared/assistant/avatar/live/createLiveAvatarSeam.js +61 -50
- package/dist/shared/assistant/avatar/live/liveAvatarController.d.ts +19 -4
- package/dist/shared/assistant/avatar/live/liveAvatarController.js +163 -155
- package/dist/shared/assistant/avatar/live/liveAvatarStatus.d.ts +5 -3
- package/dist/shared/assistant/avatar/live/liveAvatarStatus.js +2 -2
- package/dist/shared/assistant/conversation.d.ts +20 -20
- package/dist/shared/assistant/displayContent.d.ts +4 -4
- package/dist/shared/assistant/documentText.d.ts +3 -3
- package/dist/shared/assistant/exportConversation.d.ts +1 -1
- package/dist/shared/assistant/history/historyControls.d.ts +4 -4
- package/dist/shared/assistant/history/historyErrors.d.ts +3 -3
- package/dist/shared/assistant/history/historyList.d.ts +5 -5
- package/dist/shared/assistant/history/historyMerge.d.ts +4 -4
- package/dist/shared/assistant/history/historyOperations.d.ts +1 -1
- package/dist/shared/assistant/history/historySearch.d.ts +5 -5
- package/dist/shared/assistant/history/historyStatus.d.ts +1 -1
- package/dist/shared/assistant/history/historyTypes.d.ts +12 -12
- package/dist/shared/assistant/history/profileBoundStorage.d.ts +2 -2
- package/dist/shared/assistant/i18n.d.ts +1 -1
- package/dist/shared/assistant/i18nManifest.d.ts +534 -534
- package/dist/shared/assistant/liveDeltas.d.ts +1 -1
- package/dist/shared/assistant/liveOverlay.d.ts +1 -1
- package/dist/shared/assistant/localUiCommandCopy.d.ts +1 -1
- package/dist/shared/assistant/localUiCommands.d.ts +22 -22
- package/dist/shared/assistant/localeCommands/engine.d.ts +5 -5
- package/dist/shared/assistant/localeCommands/evaluate.d.ts +8 -8
- package/dist/shared/assistant/localeCommands/fold.d.ts +2 -2
- package/dist/shared/assistant/localeCommands/frames.d.ts +3 -3
- package/dist/shared/assistant/localeCommands/gate.d.ts +3 -3
- package/dist/shared/assistant/localeCommands/languageNames.d.ts +1 -1
- package/dist/shared/assistant/localeCommands/normalise.d.ts +1 -1
- package/dist/shared/assistant/localeCommands/types.d.ts +4 -4
- package/dist/shared/assistant/modeCapabilities.d.ts +1 -1
- package/dist/shared/assistant/modeCopy.d.ts +2 -2
- package/dist/shared/assistant/permissionError.d.ts +2 -2
- package/dist/shared/assistant/preview/surfaceState.d.ts +1 -1
- package/dist/shared/assistant/preview/types.d.ts +5 -5
- package/dist/shared/assistant/preview/writeActionResults.d.ts +1 -1
- package/dist/shared/assistant/prewarm.d.ts +5 -5
- package/dist/shared/assistant/quota.d.ts +2 -2
- package/dist/shared/assistant/sandboxReadiness.d.ts +2 -2
- package/dist/shared/assistant/speech/speechFeed.d.ts +3 -3
- package/dist/shared/assistant/turnOutcome.d.ts +2 -2
- package/dist/shared/assistant/turnProgress.d.ts +1 -1
- package/dist/shared/assistant/turnState.d.ts +1 -1
- package/dist/shared/assistant/turnStream.d.ts +3 -3
- package/dist/shared/assistant/turnTimeline.d.ts +13 -13
- package/dist/shared/assistant/turnTimingReport.d.ts +1 -1
- package/dist/shared/assistant/turnTimingReporter.d.ts +3 -3
- package/dist/shared/assistant/ui/AssistantAvatarTabs.d.ts +1 -1
- package/dist/shared/assistant/ui/AssistantHistoryNotices.d.ts +1 -1
- package/dist/shared/assistant/ui/AssistantToolActivity.d.ts +1 -1
- package/dist/shared/assistant/ui/AssistantUiOfferLink.d.ts +2 -2
- package/dist/shared/assistant/ui/AssistantWriteConfirmDialog.d.ts +3 -3
- package/dist/shared/assistant/ui/composer/AssistantAttachmentButton.d.ts +1 -1
- package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.d.ts +1 -1
- package/dist/shared/assistant/ui/leaveConfirmFocus.d.ts +1 -1
- package/dist/shared/assistant/ui/leaveConfirmNavigate.d.ts +3 -3
- package/dist/shared/assistant/ui/panelOverlays.d.ts +5 -5
- package/dist/shared/assistant/ui/useVoiceSession.d.ts +5 -5
- package/dist/shared/assistant/ui/useWriteProposalConfirm.d.ts +4 -4
- package/dist/shared/assistant/ui/useWriteProposals.d.ts +2 -2
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts +1 -1
- package/dist/shared/assistant/ui/voice/VoiceCaption.d.ts +1 -1
- package/dist/shared/assistant/ui/voice/VoiceWaveform.d.ts +1 -1
- package/dist/shared/assistant/ui/voice/voiceSessionEscape.d.ts +2 -2
- package/dist/shared/assistant/ui/voice/voiceStartGate.d.ts +6 -6
- package/dist/shared/assistant/ui/writeProposalPresentation.d.ts +1 -1
- package/dist/shared/assistant/uiActions/actOnResolve.d.ts +5 -5
- package/dist/shared/assistant/uiActions/assistantHref.d.ts +2 -2
- package/dist/shared/assistant/uiActions/backStack.d.ts +1 -1
- package/dist/shared/assistant/uiActions/deixis.d.ts +3 -3
- package/dist/shared/assistant/uiActions/entityRoutes.d.ts +1 -1
- package/dist/shared/assistant/uiActions/navigationOutcome.d.ts +8 -8
- package/dist/shared/assistant/uiActions/offerYesOnSurface.d.ts +1 -1
- package/dist/shared/assistant/uiActions/resolveTarget.d.ts +2 -2
- package/dist/shared/assistant/uiActions/uiOffers.d.ts +5 -5
- package/dist/shared/assistant/usageReporting.d.ts +2 -2
- package/dist/shared/assistant/useWorkspaceWriteAccess.d.ts +1 -1
- package/dist/shared/assistant/voice/affirmations.d.ts +1 -1
- package/dist/shared/assistant/voice/handsFree.d.ts +3 -3
- package/dist/shared/assistant/voice/handsfree/bargeIn.d.ts +5 -5
- package/dist/shared/assistant/voice/handsfree/echoGate.d.ts +6 -6
- package/dist/shared/assistant/voice/handsfree/handsFreeController.d.ts +7 -7
- package/dist/shared/assistant/voice/handsfree/handsFreeSetting.d.ts +2 -2
- package/dist/shared/assistant/voice/handsfree/micCapture.d.ts +1 -1
- package/dist/shared/assistant/voice/handsfree/playbackReference.d.ts +1 -1
- package/dist/shared/assistant/voice/handsfree/sttTransport.d.ts +3 -3
- package/dist/shared/assistant/voice/handsfree/useHandsFreeInterrupt.d.ts +4 -4
- package/dist/shared/assistant/voice/handsfree/vad.d.ts +1 -1
- package/dist/shared/assistant/voice/speechPlayback.d.ts +7 -7
- package/dist/shared/assistant/voice/useVoiceInput.d.ts +1 -1
- package/dist/shared/assistant/voice/voiceReopen.d.ts +8 -8
- package/dist/shared/assistant/writeConfirmSeam.d.ts +1 -1
- package/dist/shared/assistant/writeModeConsent.d.ts +7 -7
- package/dist/shared/assistant/writeProposalDiscovery.d.ts +3 -3
- package/dist/shared/assistant/writeProposalErrorCopy.d.ts +1 -1
- package/dist/shared/assistant/writeProposals.d.ts +23 -23
- package/dist/shared/assistant/writeReplyBinder.d.ts +11 -11
- package/dist/shared/assistant/writeReplySend.d.ts +7 -7
- package/dist/shared/components/LandingOrDashboardRedirect.d.ts +18 -3
- package/dist/shared/components/LandingOrDashboardRedirect.js +58 -28
- package/dist/shared/components/index.d.ts +2 -1
- package/dist/shared/hooks/shell/globalSearchError.d.ts +2 -2
- package/dist/shared/navigation/productSwitchHandoff.d.ts +45 -0
- package/dist/shared/navigation/productSwitchHandoff.js +27 -0
- package/dist/shared/navigation/unsavedChanges.d.ts +1 -1
- package/dist/shared/utils/index.d.ts +3 -3
- package/dist/shared-components.js +7 -6
- package/dist/shared.js +71 -70
- package/package.json +3 -2
|
@@ -107,7 +107,7 @@ export type TurnMilestone = (typeof TURN_MILESTONES)[number];
|
|
|
107
107
|
* Written once the runtime is READY; while an attempt still waits out a boot
|
|
108
108
|
* it found, the `bootAdopted` mark says so.
|
|
109
109
|
*/
|
|
110
|
-
export type TurnRuntime =
|
|
110
|
+
export type TurnRuntime = 'warm' | 'preopened' | 'new-session' | 'probed' | 'adopted' | 'cold';
|
|
111
111
|
/**
|
|
112
112
|
* Counted as the person was SHOWN it (`classifyTurnFailure`):
|
|
113
113
|
* - `refused`: a usage wall, a permission refusal (server 403/429 included),
|
|
@@ -118,14 +118,14 @@ export type TurnRuntime = "warm" | "preopened" | "new-session" | "probed" | "ado
|
|
|
118
118
|
* Only `answered` turns carry `firstText`; a timed-out turn's unconfirmed text
|
|
119
119
|
* is not recorded.
|
|
120
120
|
*/
|
|
121
|
-
export type TurnTimelineOutcome =
|
|
121
|
+
export type TurnTimelineOutcome = 'answered' | 'timedOut' | 'refused' | 'failed' | 'stopped';
|
|
122
122
|
export interface TurnDimensions {
|
|
123
|
-
channel:
|
|
123
|
+
channel: 'chat' | 'voice';
|
|
124
124
|
mode: string;
|
|
125
125
|
product: string;
|
|
126
126
|
/** The reply language the turn asked for. */
|
|
127
127
|
language: string;
|
|
128
|
-
device:
|
|
128
|
+
device: 'touch' | 'pointer' | 'unknown';
|
|
129
129
|
/** Auto chose the mode (an Auto escalation can cost a cold start). */
|
|
130
130
|
routedByAuto: boolean;
|
|
131
131
|
}
|
|
@@ -151,17 +151,17 @@ export interface TurnAttemptFacts {
|
|
|
151
151
|
* Written when the warm SETTLES; while the send still waits on its boot,
|
|
152
152
|
* the `prewarmJoined` mark says so.
|
|
153
153
|
*/
|
|
154
|
-
prewarm?:
|
|
154
|
+
prewarm?: 'hit' | 'joined' | 'joinedFailed';
|
|
155
155
|
/**
|
|
156
156
|
* BOFF-7914 S3: how this attempt learnt about the reply — `sse` when the turn
|
|
157
157
|
* stream reached `open`, else `poll`. Timeline-only; the production latency
|
|
158
158
|
* report builds from an allowlist and does not carry it (until S0b).
|
|
159
159
|
*/
|
|
160
|
-
transport?:
|
|
160
|
+
transport?: 'sse' | 'poll';
|
|
161
161
|
/** How much of the text the stream carried: all of it, some, or none. */
|
|
162
|
-
live?:
|
|
162
|
+
live?: 'full' | 'partial' | 'none';
|
|
163
163
|
/** The session: `reused`, `created` (new) or `preopened` (BOFF-8015). */
|
|
164
|
-
session?:
|
|
164
|
+
session?: 'reused' | 'created' | 'preopened';
|
|
165
165
|
}
|
|
166
166
|
export interface TurnAttempt extends TurnAttemptFacts {
|
|
167
167
|
at: Partial<Record<TurnMilestone, number>>;
|
|
@@ -177,7 +177,7 @@ export interface TurnTimeline extends TurnDimensions, TurnAttemptFacts {
|
|
|
177
177
|
outcome?: TurnTimelineOutcome;
|
|
178
178
|
}
|
|
179
179
|
/** Marks a voice turn brings with it, taken before the panel has an id for it. */
|
|
180
|
-
export type VoiceTurnTiming = Partial<Record<
|
|
180
|
+
export type VoiceTurnTiming = Partial<Record<'speechEnded' | 'graceStarted' | 'graceEnded' | 'handedOver', number>>;
|
|
181
181
|
/** Announced on `window` with a copy of the timeline each time it changes. */
|
|
182
182
|
export declare const TURN_TIMELINE_EVENT = "burdenoff:assistant-turn-timeline";
|
|
183
183
|
/** Receives a copy of a timeline each time it changes. */
|
|
@@ -192,7 +192,7 @@ export type TurnTimelineListener = (timeline: TurnTimeline) => void;
|
|
|
192
192
|
export declare function subscribeTurnTimelines(listener: TurnTimelineListener): () => void;
|
|
193
193
|
export declare function turnClockMs(): number;
|
|
194
194
|
/** Coarse pointer = a finger. The split the latency report needs, not a device model. */
|
|
195
|
-
export declare function detectTurnDevice(): TurnDimensions[
|
|
195
|
+
export declare function detectTurnDevice(): TurnDimensions['device'];
|
|
196
196
|
/**
|
|
197
197
|
* Start recording a turn. `carried` holds marks taken before the turn had an
|
|
198
198
|
* id — a voice turn's end of speech, end of grace and hand-over.
|
|
@@ -208,7 +208,7 @@ export declare function beginTurn(turnId: string, dimensions: TurnDimensions, ca
|
|
|
208
208
|
*/
|
|
209
209
|
export declare function markTurn(turnId: string, milestone: TurnMilestone, at?: number): void;
|
|
210
210
|
/** Facts about the turn learnt along the way. The first answer to each stands. */
|
|
211
|
-
export declare function describeTurn(turnId: string, facts: TurnAttemptFacts & Pick<TurnTimeline,
|
|
211
|
+
export declare function describeTurn(turnId: string, facts: TurnAttemptFacts & Pick<TurnTimeline, 'outcome'>): void;
|
|
212
212
|
/**
|
|
213
213
|
* The turn is starting over on a new runtime. File this attempt's marks and
|
|
214
214
|
* facts under `attempts`, stamped with when it ended, and clear them, so the
|
|
@@ -343,12 +343,12 @@ export declare const TURN_SEGMENTS: readonly [{
|
|
|
343
343
|
readonly from: "speechEnded";
|
|
344
344
|
readonly to: "firstAudio";
|
|
345
345
|
}];
|
|
346
|
-
export type TurnSegmentName = (typeof TURN_SEGMENTS)[number][
|
|
346
|
+
export type TurnSegmentName = (typeof TURN_SEGMENTS)[number]['name'];
|
|
347
347
|
/**
|
|
348
348
|
* A segment whose end came BEFORE its start is left out: it can only be a
|
|
349
349
|
* wiring fault, and a negative duration averaged in would hide the slow case.
|
|
350
350
|
*/
|
|
351
|
-
export declare function turnSegments(timeline: Pick<TurnTimeline,
|
|
351
|
+
export declare function turnSegments(timeline: Pick<TurnTimeline, 'at'>): Partial<Record<TurnSegmentName, number>>;
|
|
352
352
|
export interface SegmentStats {
|
|
353
353
|
n: number;
|
|
354
354
|
median: number;
|
|
@@ -26,7 +26,7 @@ export interface AssistantTurnTimingReport {
|
|
|
26
26
|
* - `final`: from the attempt that finished the turn;
|
|
27
27
|
* - `omit`: not reported — it describes one attempt's runtime, not the turn's.
|
|
28
28
|
*/
|
|
29
|
-
export type TurnTimingRetryRule =
|
|
29
|
+
export type TurnTimingRetryRule = 'earliest' | 'final' | 'omit';
|
|
30
30
|
/** Each operator stage, the timeline mark it is read from, and its retry rule. */
|
|
31
31
|
export declare const TURN_TIMING_STAGES: readonly [{
|
|
32
32
|
readonly field: "runtimeReadyMs";
|
|
@@ -27,12 +27,12 @@ export interface TurnTimingBatch {
|
|
|
27
27
|
* is gone; it is never re-sent.
|
|
28
28
|
*/
|
|
29
29
|
export type TurnTimingSendOutcome = {
|
|
30
|
-
kind:
|
|
30
|
+
kind: 'receipt';
|
|
31
31
|
receipt: AssistantTurnTimingsReceipt;
|
|
32
32
|
} | {
|
|
33
|
-
kind:
|
|
33
|
+
kind: 'unsupported';
|
|
34
34
|
} | {
|
|
35
|
-
kind:
|
|
35
|
+
kind: 'dropped';
|
|
36
36
|
};
|
|
37
37
|
export type TurnTimingSender = (batch: TurnTimingBatch) => Promise<TurnTimingSendOutcome>;
|
|
38
38
|
export declare const TURN_TIMING_REPORTING: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
2
|
import { LiveAvatarTabIds } from './assistantLiveAvatarSeam';
|
|
3
3
|
/** The two views of the panel when the live avatar offers its tab. */
|
|
4
|
-
export type AssistantPanelView =
|
|
4
|
+
export type AssistantPanelView = 'chat' | 'avatar';
|
|
5
5
|
export interface AssistantAvatarTabsProps {
|
|
6
6
|
readonly selected: AssistantPanelView;
|
|
7
7
|
readonly onSelect: (view: AssistantPanelView) => void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
|
-
export type AssistantToolStepStatus =
|
|
2
|
+
export type AssistantToolStepStatus = 'queued' | 'running' | 'completed' | 'failed';
|
|
3
3
|
export interface AssistantToolStep {
|
|
4
4
|
/** Stable key within the message. */
|
|
5
5
|
id: string;
|
|
@@ -26,13 +26,13 @@ export interface AssistantUiOfferLinkProps extends AssistantUiOfferLinkItem {
|
|
|
26
26
|
onOpen: (offerId: string, label: string) => void;
|
|
27
27
|
}
|
|
28
28
|
/** A click the browser should handle itself: new tab, new window, download. */
|
|
29
|
-
export declare function isModifiedClick(event: Pick<MouseEvent,
|
|
29
|
+
export declare function isModifiedClick(event: Pick<MouseEvent, 'button' | 'metaKey' | 'ctrlKey' | 'shiftKey' | 'altKey'>): boolean;
|
|
30
30
|
export declare const UI_OFFER_LINK_CLASS = "inline-flex items-center gap-2 min-h-11 ps-3 pe-3 rounded-md bg-bg-elevated text-text-link border border-border-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-strong";
|
|
31
31
|
export declare const AssistantUiOfferLink: FC<AssistantUiOfferLinkProps>;
|
|
32
32
|
export interface AssistantUiOfferLinksProps {
|
|
33
33
|
offers: readonly AssistantUiOfferLinkItem[];
|
|
34
34
|
/** `read`: "…or “yes”" may be said; `link`: tap or "take me there" only. */
|
|
35
|
-
hint:
|
|
35
|
+
hint: 'read' | 'link';
|
|
36
36
|
onOpen: (offerId: string, label: string) => void;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
@@ -52,11 +52,11 @@ export interface AssistantWriteConfirmDialogProps {
|
|
|
52
52
|
* Confirm was pressed: armed, trusted, not by Enter. Return the approve
|
|
53
53
|
* call's promise; both buttons stay disabled until it settles.
|
|
54
54
|
*/
|
|
55
|
-
onApprove: (surface:
|
|
55
|
+
onApprove: (surface: 'assistant_modal') => void | Promise<unknown>;
|
|
56
56
|
/** Cancel was pressed. Same latch as `onApprove`. */
|
|
57
|
-
onDecline: (reason:
|
|
57
|
+
onDecline: (reason: 'user_declined', surface: 'assistant_modal') => void | Promise<unknown>;
|
|
58
58
|
/** The dialog opened on a pending proposal. Once per opening. */
|
|
59
|
-
onPresented: (surface:
|
|
59
|
+
onPresented: (surface: 'modal') => void;
|
|
60
60
|
/** Esc, the overlay or the close button: close only; nothing is declined. */
|
|
61
61
|
onDismiss: () => void;
|
|
62
62
|
}
|
|
@@ -19,7 +19,7 @@ interface Props {
|
|
|
19
19
|
* would open above the button, outside the panel, and all four sources would be
|
|
20
20
|
* unreachable. The control would look present and do nothing.
|
|
21
21
|
*/
|
|
22
|
-
direction?:
|
|
22
|
+
direction?: 'up' | 'down';
|
|
23
23
|
/** False once MAX_ATTACHMENTS is reached — the control explains why. */
|
|
24
24
|
canAddMore: boolean;
|
|
25
25
|
disabled?: boolean;
|
|
@@ -28,7 +28,7 @@ export declare function connectSourceActivation(open: () => void, onActivate?: (
|
|
|
28
28
|
* predicate, a product's own `open` winning over its href, the router getting
|
|
29
29
|
* the resolved path, the browser winning a modified click) lives here once.
|
|
30
30
|
*/
|
|
31
|
-
export type AssistantConnectSourcePresentation =
|
|
31
|
+
export type AssistantConnectSourcePresentation = 'menuitem' | 'action';
|
|
32
32
|
export interface AssistantConnectSourceItemProps {
|
|
33
33
|
/** Close the surrounding menu. Fired only when this item actually acts. */
|
|
34
34
|
onActivate?: () => void;
|
|
@@ -23,7 +23,7 @@ import { FocusReturnDocument } from '../../hooks/useReturnFocus';
|
|
|
23
23
|
*/
|
|
24
24
|
export declare const FOCUS_AFTER_KEEP_INTERVAL_MS = 40;
|
|
25
25
|
export declare const FOCUS_AFTER_KEEP_MAX_MS = 2000;
|
|
26
|
-
type FocusAfterKeepDocument = FocusReturnDocument & Pick<Document,
|
|
26
|
+
type FocusAfterKeepDocument = FocusReturnDocument & Pick<Document, 'querySelectorAll'>;
|
|
27
27
|
/**
|
|
28
28
|
* Start returning focus for the offer `offerId`, whose link was given back.
|
|
29
29
|
* Returns a function that stops it (the panel unmounted, or a newer question).
|
|
@@ -22,15 +22,15 @@ import { AssistantNavigate, AssistantNavigateSurface } from './AssistantMarkdown
|
|
|
22
22
|
* ★ Fail-safe in one direction only: anything that is not an explicit "leave"
|
|
23
23
|
* (a rejected or throwing `ask`, an unmounted dialog) keeps the draft.
|
|
24
24
|
*/
|
|
25
|
-
export type LeaveDecision =
|
|
25
|
+
export type LeaveDecision = 'leave' | 'keep';
|
|
26
26
|
/**
|
|
27
27
|
* What a decision reports, for counting. ★ Never a label, a path or any text:
|
|
28
28
|
* `editorIds` are the stable ids products register (`dashboard-editor`), not
|
|
29
29
|
* what the person calls them.
|
|
30
30
|
*/
|
|
31
31
|
export interface LeaveConfirmReport {
|
|
32
|
-
decision:
|
|
33
|
-
surface: AssistantNavigateSurface |
|
|
32
|
+
decision: 'left' | 'kept';
|
|
33
|
+
surface: AssistantNavigateSurface | 'unknown';
|
|
34
34
|
editorCount: number;
|
|
35
35
|
editorIds: readonly string[];
|
|
36
36
|
}
|
|
@@ -32,7 +32,7 @@ export declare const NO_PANEL_OVERLAY: PanelOverlayState;
|
|
|
32
32
|
* Pressing the toggle of the overlay already showing closes it; pressing the
|
|
33
33
|
* other one swaps to it. There is deliberately no way to express "both".
|
|
34
34
|
*/
|
|
35
|
-
export declare function nextPanelOverlays(current: PanelOverlayState, toggled:
|
|
35
|
+
export declare function nextPanelOverlays(current: PanelOverlayState, toggled: 'history' | 'preview'): PanelOverlayState;
|
|
36
36
|
/**
|
|
37
37
|
* The overlay slot, plus the Avatar tab (BOFF-9341) where the panel offers it.
|
|
38
38
|
*
|
|
@@ -65,7 +65,7 @@ export interface PanelLayerState extends PanelOverlayState {
|
|
|
65
65
|
* Escape is "back out of the thing I just opened"; here it destroyed a
|
|
66
66
|
* conversation instead.
|
|
67
67
|
*/
|
|
68
|
-
export declare function escapeDismisses(current: PanelLayerState):
|
|
68
|
+
export declare function escapeDismisses(current: PanelLayerState): 'overlay' | 'tab-reply' | 'tab' | 'panel';
|
|
69
69
|
/**
|
|
70
70
|
* Attribute marking the assistant panel's root element.
|
|
71
71
|
*
|
|
@@ -115,7 +115,7 @@ export declare const ASSISTANT_VOICE_SESSION_ATTR = "data-assistant-voice-sessio
|
|
|
115
115
|
* comes first. The panel backs out of it, as `escapeDismisses` says, and marks
|
|
116
116
|
* the key handled so the session does not also act on it.
|
|
117
117
|
*/
|
|
118
|
-
export declare function voiceSessionOwnsEscape(panel: Pick<Element,
|
|
118
|
+
export declare function voiceSessionOwnsEscape(panel: Pick<Element, 'hasAttribute' | 'querySelector'> & Partial<Pick<Element, 'getAttribute'>>): boolean;
|
|
119
119
|
/**
|
|
120
120
|
* `data-assistant-overlay` while the Avatar tab is the view on screen and no
|
|
121
121
|
* overlay covers it (BOFF-9341): the panel then owns an Escape pressed with
|
|
@@ -124,7 +124,7 @@ export declare function voiceSessionOwnsEscape(panel: Pick<Element, "hasAttribut
|
|
|
124
124
|
*/
|
|
125
125
|
export declare const AVATAR_TAB_OVERLAY = "avatar";
|
|
126
126
|
/** Which overlay is showing, as the attribute value — `null` when none is. */
|
|
127
|
-
export declare function activePanelOverlay(current: PanelLayerState):
|
|
127
|
+
export declare function activePanelOverlay(current: PanelLayerState): 'history' | 'preview' | typeof AVATAR_TAB_OVERLAY | null;
|
|
128
128
|
/**
|
|
129
129
|
* Is `active` the panel itself, or inside it?
|
|
130
130
|
*
|
|
@@ -193,7 +193,7 @@ export declare function focusIsInsidePanel(panel: {
|
|
|
193
193
|
* had been closed and missed one that was reachable in three clicks, which is
|
|
194
194
|
* worse than no list at all: the next reader trusts it.
|
|
195
195
|
*/
|
|
196
|
-
export declare function assistantPanelOwnsEscape(doc?: Pick<Document,
|
|
196
|
+
export declare function assistantPanelOwnsEscape(doc?: Pick<Document, 'querySelectorAll' | 'activeElement' | 'body'>): boolean;
|
|
197
197
|
/**
|
|
198
198
|
* Does THIS panel claim Escape, given what is focused?
|
|
199
199
|
*
|
|
@@ -11,17 +11,17 @@ import { VoiceReply } from '../voice/voiceReply';
|
|
|
11
11
|
* dead, and nothing anywhere said otherwise. `useVoiceInput` reports `network`
|
|
12
12
|
* and `unknown` and the session ignored both.
|
|
13
13
|
*/
|
|
14
|
-
export type VoiceSessionNotice =
|
|
14
|
+
export type VoiceSessionNotice = 'network' | 'not-capturing' | 'nothing-heard' | 'recognition-failed'
|
|
15
15
|
/** H3: a barge-in stopped the assistant but no words followed (a cough, a door). */
|
|
16
|
-
|
|
|
16
|
+
| 'hands-free-nothing-heard'
|
|
17
17
|
/** H3: hands-free gave up for this conversation; the tap-first path is in charge. */
|
|
18
|
-
|
|
|
18
|
+
| 'hands-free-fallback'
|
|
19
19
|
/**
|
|
20
20
|
* BOFF-8822 (operator decision D7 b): this turn's reply was refused by its
|
|
21
21
|
* audio output (`output-not-cleared`) and never heard; its text is in the
|
|
22
22
|
* transcript.
|
|
23
23
|
*/
|
|
24
|
-
|
|
|
24
|
+
| 'reply-not-heard';
|
|
25
25
|
/**
|
|
26
26
|
* ★ BOFF-9207: why the turn just spoken ended WITHOUT an answer - a refusal
|
|
27
27
|
* before it started ("No active subscription covers ..."), or a failure. The
|
|
@@ -29,7 +29,7 @@ export type VoiceSessionNotice = "network" | "not-capturing" | "nothing-heard" |
|
|
|
29
29
|
* given; it is never spoken, so no new speech is paid for.
|
|
30
30
|
*/
|
|
31
31
|
export interface VoiceTurnRefusalNotice {
|
|
32
|
-
readonly kind:
|
|
32
|
+
readonly kind: 'turn-refused';
|
|
33
33
|
readonly text: string;
|
|
34
34
|
}
|
|
35
35
|
/** Everything the voice stage can show in its notice slot. */
|
|
@@ -28,7 +28,7 @@ import { AssistantWriteConfirmDialogProps } from './AssistantWriteConfirmDialog'
|
|
|
28
28
|
* and aborts the product's.
|
|
29
29
|
*/
|
|
30
30
|
/** Where a HIGH-risk confirmation was made. */
|
|
31
|
-
export type WriteConfirmDecisionSurface =
|
|
31
|
+
export type WriteConfirmDecisionSurface = 'assistant_modal' | 'host_modal';
|
|
32
32
|
/**
|
|
33
33
|
* The calls the flow makes. Each is the caller's, bound to the ISSUING sandbox
|
|
34
34
|
* (`WriteProposalClient`), and handles its own errors: a rejection here only
|
|
@@ -38,11 +38,11 @@ export interface WriteProposalConfirmActions {
|
|
|
38
38
|
/** Approve by button (`method: "button"`), from `surface`. */
|
|
39
39
|
approve: (view: WriteProposalView, surface: WriteConfirmDecisionSurface) => void | Promise<unknown>;
|
|
40
40
|
/** Decline by button, from `surface`. */
|
|
41
|
-
decline: (view: WriteProposalView, reason:
|
|
41
|
+
decline: (view: WriteProposalView, reason: 'user_declined', surface: WriteConfirmDecisionSurface) => void | Promise<unknown>;
|
|
42
42
|
/** The proposal was shown in a dialog. */
|
|
43
|
-
presented: (view: WriteProposalView, surface:
|
|
43
|
+
presented: (view: WriteProposalView, surface: 'modal') => void | Promise<unknown>;
|
|
44
44
|
}
|
|
45
|
-
export type WriteProposalConfirmDialogBinding = Pick<AssistantWriteConfirmDialogProps,
|
|
45
|
+
export type WriteProposalConfirmDialogBinding = Pick<AssistantWriteConfirmDialogProps, 'open' | 'view' | 'onApprove' | 'onDecline' | 'onPresented' | 'onDismiss'>;
|
|
46
46
|
export interface WriteProposalConfirmController {
|
|
47
47
|
/** The person asked to confirm `view` (the card's "Review & confirm…"). */
|
|
48
48
|
review: (view: WriteProposalView) => void;
|
|
@@ -56,7 +56,7 @@ import { WriteReplyLiveState, WriteReplyPersonOrigin } from '../writeReplySend';
|
|
|
56
56
|
* already withdrawn is not withdrawn again by the next event.
|
|
57
57
|
*/
|
|
58
58
|
/** Why the panel withdraws a conversation's waiting changes on its own. */
|
|
59
|
-
export type WriteProposalLifecycleReason = Extract<WriteProposalDeclineReason,
|
|
59
|
+
export type WriteProposalLifecycleReason = Extract<WriteProposalDeclineReason, 'conversation_closed' | 'mode_switched'>;
|
|
60
60
|
/** One proposal as its issuing sandbox last reported it. */
|
|
61
61
|
export interface WriteProposalEntry {
|
|
62
62
|
view: WriteProposalView;
|
|
@@ -87,7 +87,7 @@ export interface WriteProposalPanel {
|
|
|
87
87
|
/** Confirm pressed (the card's single button, or a dialog's). */
|
|
88
88
|
approve: (view: WriteProposalView, surface: WriteProposalApproveSurface) => Promise<void>;
|
|
89
89
|
/** Cancel pressed. */
|
|
90
|
-
decline: (view: WriteProposalView, reason:
|
|
90
|
+
decline: (view: WriteProposalView, reason: 'user_declined', surface: WriteProposalDecisionSurface) => Promise<void>;
|
|
91
91
|
/** The proposal was shown. */
|
|
92
92
|
presented: (view: WriteProposalView, surface: WriteProposalPresentationSurface) => Promise<void>;
|
|
93
93
|
/** The latest entry for a proposal, read live. */
|
|
@@ -5,7 +5,7 @@ import { VoiceSessionSnapshot } from '../../voice/voiceSession';
|
|
|
5
5
|
import { VoiceSessionNoticeState } from '../useVoiceSession';
|
|
6
6
|
import { VoiceTranscriptTurn } from '../../voice/turnVisibility';
|
|
7
7
|
/** How much room the voice session takes: a strip, the panel, or the screen. */
|
|
8
|
-
export type VoiceView =
|
|
8
|
+
export type VoiceView = 'mini' | 'panel' | 'full';
|
|
9
9
|
interface Props {
|
|
10
10
|
session: VoiceSessionSnapshot;
|
|
11
11
|
/** Recent exchanges, oldest first — the running conversation. */
|
|
@@ -31,7 +31,7 @@ import { FC } from 'react';
|
|
|
31
31
|
interface Props {
|
|
32
32
|
text: string;
|
|
33
33
|
/** Who is speaking. The assistant's caption is the loud one. */
|
|
34
|
-
role:
|
|
34
|
+
role: 'user' | 'assistant';
|
|
35
35
|
/** Full-screen rather than docked in the panel. */
|
|
36
36
|
expanded: boolean;
|
|
37
37
|
/**
|
|
@@ -31,7 +31,7 @@ interface Props {
|
|
|
31
31
|
*/
|
|
32
32
|
settled?: boolean;
|
|
33
33
|
/** `speaking` reads as the assistant's voice, `listening` as the user's. */
|
|
34
|
-
tone:
|
|
34
|
+
tone: 'listening' | 'speaking';
|
|
35
35
|
expanded?: boolean;
|
|
36
36
|
}
|
|
37
37
|
export declare const VoiceWaveform: FC<Props>;
|
|
@@ -14,7 +14,7 @@ export declare const VOICE_ESCAPE_LAYER_SELECTOR = "[role=\"dialog\"],[role=\"al
|
|
|
14
14
|
* `<dialog>` is not a modal, and must not block Escape across the whole page.
|
|
15
15
|
*/
|
|
16
16
|
export declare const VOICE_ESCAPE_MODAL_SELECTOR = "[aria-modal=\"true\"],[role=\"alertdialog\"]";
|
|
17
|
-
export type VoiceSessionEscapeAction =
|
|
17
|
+
export type VoiceSessionEscapeAction = 'ignore' | 'close-transcript' | 'end';
|
|
18
18
|
/**
|
|
19
19
|
* What the voice session does with an Escape.
|
|
20
20
|
*
|
|
@@ -52,5 +52,5 @@ export declare function voiceSessionEscapeAction(input: {
|
|
|
52
52
|
export declare function escapeBelongsToLayerAbove(input: {
|
|
53
53
|
target: EventTarget | null;
|
|
54
54
|
session: Element | null;
|
|
55
|
-
doc: Pick<Document,
|
|
55
|
+
doc: Pick<Document, 'activeElement' | 'querySelectorAll'>;
|
|
56
56
|
}): boolean;
|
|
@@ -22,17 +22,17 @@
|
|
|
22
22
|
/** Why a voice conversation cannot start now, most lasting first. */
|
|
23
23
|
export type VoiceStartBlocker =
|
|
24
24
|
/** Nothing here can hold a voice conversation (no speech input, or nothing to speak the reply). */
|
|
25
|
-
|
|
25
|
+
'unavailable'
|
|
26
26
|
/** The active mode takes no voice (it writes, and no voice proposal is bound to it). */
|
|
27
|
-
|
|
|
27
|
+
| 'mode'
|
|
28
28
|
/** This conversation takes no new turn at all. */
|
|
29
|
-
|
|
|
29
|
+
| 'read-only'
|
|
30
30
|
/** Not now: a turn in flight, an approval being recorded, history loading, navigation busy. */
|
|
31
|
-
|
|
|
31
|
+
| 'busy'
|
|
32
32
|
/** Not now: a Send is saving its attachments. */
|
|
33
|
-
|
|
|
33
|
+
| 'committing'
|
|
34
34
|
/** Not now: dictation holds the microphone. */
|
|
35
|
-
|
|
|
35
|
+
| 'dictating';
|
|
36
36
|
export interface VoiceStartGateInput {
|
|
37
37
|
/** `voiceSession.available`: speech in and out work here. */
|
|
38
38
|
readonly available: boolean;
|
|
@@ -39,7 +39,7 @@ export interface WriteProposalShownValue {
|
|
|
39
39
|
sensitive: boolean;
|
|
40
40
|
}
|
|
41
41
|
/** A root field as written in the document: `alias: field`, or `field`. */
|
|
42
|
-
export declare function writeProposalRootFieldName(field: Pick<WriteProposalRootField,
|
|
42
|
+
export declare function writeProposalRootFieldName(field: Pick<WriteProposalRootField, 'alias' | 'field'>): string;
|
|
43
43
|
/** A root field's arguments, as the values that will be sent. */
|
|
44
44
|
export declare function writeProposalArgumentValues(field: WriteProposalRootField): WriteProposalShownValue[];
|
|
45
45
|
/** The operation's variables, as the values that will be sent. */
|
|
@@ -51,7 +51,7 @@ export type UnsavedChangesProbe = () => readonly UnsavedChange[];
|
|
|
51
51
|
* offer. A product sets `leaveGuard: true` only in the same release as its
|
|
52
52
|
* editors' `useUnsavedChanges` adoption, with a seam test that pins both.
|
|
53
53
|
*/
|
|
54
|
-
export declare function n4LeaveGuard(options: Pick<LocalUiCommandOptions,
|
|
54
|
+
export declare function n4LeaveGuard(options: Pick<LocalUiCommandOptions, 'leaveGuard'> | null | undefined): UnsavedChangesProbe | null;
|
|
55
55
|
/** Where the person was, and as whom, at one moment (R4). */
|
|
56
56
|
export interface ActOnResolveSnapshot {
|
|
57
57
|
/** `pathname + search`. */
|
|
@@ -82,16 +82,16 @@ export interface ActOnResolveInput {
|
|
|
82
82
|
alreadyThere: (offer: LiveUiOffer) => boolean;
|
|
83
83
|
}
|
|
84
84
|
/** Which guard kept the page an offer. */
|
|
85
|
-
export type ActOnResolveHold =
|
|
85
|
+
export type ActOnResolveHold = 'R1' | 'R2' | 'R2b' | 'R3' | 'R4' | 'R5-absent' | 'R5-unsaved';
|
|
86
86
|
export type ActOnResolveDecision =
|
|
87
87
|
/** Open it (`runNavigation`, `via: 'offer'`, `trigger: 'resolve'`). */
|
|
88
88
|
{
|
|
89
|
-
act:
|
|
89
|
+
act: 'navigate';
|
|
90
90
|
offer: LiveUiOffer;
|
|
91
91
|
}
|
|
92
92
|
/** R6: say "You're already on {page}", record it, and stay. */
|
|
93
93
|
| {
|
|
94
|
-
act:
|
|
94
|
+
act: 'already-here';
|
|
95
95
|
offer: LiveUiOffer;
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
@@ -99,7 +99,7 @@ export type ActOnResolveDecision =
|
|
|
99
99
|
* changes N4 named, for the "you have unsaved changes" line.
|
|
100
100
|
*/
|
|
101
101
|
| {
|
|
102
|
-
act:
|
|
102
|
+
act: 'keep-offer';
|
|
103
103
|
hold: ActOnResolveHold;
|
|
104
104
|
unsaved?: readonly UnsavedChange[];
|
|
105
105
|
};
|
|
@@ -2,7 +2,7 @@ import { Options } from 'react-markdown';
|
|
|
2
2
|
/** @internal Exported for unit tests; not part of the module's public surface. */
|
|
3
3
|
export declare function transformAssistantUrl(url: string, key: string, tagName: string): string;
|
|
4
4
|
/** @internal The react-markdown option form of `transformAssistantUrl`. */
|
|
5
|
-
export declare const assistantUrlTransform: Options[
|
|
5
|
+
export declare const assistantUrlTransform: Options['urlTransform'];
|
|
6
6
|
/**
|
|
7
7
|
* How a link in an assistant reply should be treated.
|
|
8
8
|
*
|
|
@@ -17,7 +17,7 @@ export declare const assistantUrlTransform: Options["urlTransform"];
|
|
|
17
17
|
* been reduced to an empty string upstream — `blocked` here is the empty case,
|
|
18
18
|
* not a second scheme allow-list. The scheme policy stays in one place.
|
|
19
19
|
*/
|
|
20
|
-
export type AssistantLinkKind =
|
|
20
|
+
export type AssistantLinkKind = 'internal' | 'external' | 'fragment' | 'blocked';
|
|
21
21
|
export declare function classifyAssistantHref(href: string | null | undefined, baseOrigin?: string): AssistantLinkKind;
|
|
22
22
|
/**
|
|
23
23
|
* The router-ready path for an href already classified as `internal`, or null if
|
|
@@ -31,4 +31,4 @@ export declare const assistantBackStack: BackStack;
|
|
|
31
31
|
* ordinary sentence ("want to go back and change step 2?") and reaches the
|
|
32
32
|
* model.
|
|
33
33
|
*/
|
|
34
|
-
export declare function isBackRunnable(stack: Pick<BackStack,
|
|
34
|
+
export declare function isBackRunnable(stack: Pick<BackStack, 'top'>, currentPath: string, newestAssistantMessageId: string | null): boolean;
|
|
@@ -15,14 +15,14 @@ export declare const isThereRequest: (utterance: string) => boolean;
|
|
|
15
15
|
export type ChoiceRequest =
|
|
16
16
|
/** 1-based position in the list. */
|
|
17
17
|
{
|
|
18
|
-
kind:
|
|
18
|
+
kind: 'ordinal';
|
|
19
19
|
position: number;
|
|
20
20
|
} | {
|
|
21
|
-
kind:
|
|
21
|
+
kind: 'last';
|
|
22
22
|
}
|
|
23
23
|
/** "the one in crops": a word of the entry's parent or group. */
|
|
24
24
|
| {
|
|
25
|
-
kind:
|
|
25
|
+
kind: 'context';
|
|
26
26
|
context: string;
|
|
27
27
|
};
|
|
28
28
|
export declare function parseChoice(utterance: string): ChoiceRequest | null;
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* never swallow. A router guard test in each app renders every template and
|
|
15
15
|
* every static sibling to prove the two lists agree with the real router.
|
|
16
16
|
*/
|
|
17
|
-
export type EntityParamKind =
|
|
17
|
+
export type EntityParamKind = 'id' | 'slug' | 'int';
|
|
18
18
|
export interface EntityParam {
|
|
19
19
|
kind: EntityParamKind;
|
|
20
20
|
/** Static sibling segments of the router this param must never match (case-insensitive: the router is). */
|
|
@@ -11,15 +11,15 @@ import { UnsavedChange } from '../../navigation/unsavedChanges';
|
|
|
11
11
|
* Pure: the clock, the timer, the location and the shell-less predicate are
|
|
12
12
|
* injected, so it is tested with a fake clock and no DOM.
|
|
13
13
|
*/
|
|
14
|
-
export type NavigationRefusal =
|
|
14
|
+
export type NavigationRefusal = 'unsaved-changes' | 'not-routable' | 'no-router';
|
|
15
15
|
export type NavigationOutcome = {
|
|
16
|
-
status:
|
|
16
|
+
status: 'arrived';
|
|
17
17
|
landedPath: string;
|
|
18
18
|
} | {
|
|
19
|
-
status:
|
|
19
|
+
status: 'redirected';
|
|
20
20
|
landedPath: string;
|
|
21
21
|
} | {
|
|
22
|
-
status:
|
|
22
|
+
status: 'new-tab';
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* Not routed. ★ BOFF-8060 (N4): `unsaved` names the unsaved changes that
|
|
@@ -27,11 +27,11 @@ export type NavigationOutcome = {
|
|
|
27
27
|
* written into the navigate record.
|
|
28
28
|
*/
|
|
29
29
|
| {
|
|
30
|
-
status:
|
|
30
|
+
status: 'refused';
|
|
31
31
|
reason: NavigationRefusal;
|
|
32
32
|
unsaved?: readonly UnsavedChange[];
|
|
33
33
|
} | {
|
|
34
|
-
status:
|
|
34
|
+
status: 'unconfirmed';
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* ★ BOFF-8060 (N4 tap-confirm): the person tapped, was asked about their
|
|
@@ -39,11 +39,11 @@ export type NavigationOutcome = {
|
|
|
39
39
|
* changed, so there is nothing to say and nothing to record.
|
|
40
40
|
*/
|
|
41
41
|
| {
|
|
42
|
-
status:
|
|
42
|
+
status: 'kept';
|
|
43
43
|
};
|
|
44
44
|
/** An outcome that says something happened (or why it did not): everything but `kept`. */
|
|
45
45
|
export type DecidedNavigationOutcome = Exclude<NavigationOutcome, {
|
|
46
|
-
status:
|
|
46
|
+
status: 'kept';
|
|
47
47
|
}>;
|
|
48
48
|
export interface NavigationDeps {
|
|
49
49
|
/** The current pathname + search. */
|
|
@@ -17,7 +17,7 @@ import { UiOfferSession, UiOfferYesInput, UiOfferYesState } from './uiOffers';
|
|
|
17
17
|
*
|
|
18
18
|
* Pure: no React, no store, no DOM.
|
|
19
19
|
*/
|
|
20
|
-
export interface UiOfferYesOnSurfaceInput<T extends SurfaceMessage> extends Omit<UiOfferYesInput,
|
|
20
|
+
export interface UiOfferYesOnSurfaceInput<T extends SurfaceMessage> extends Omit<UiOfferYesInput, 'newestReply'> {
|
|
21
21
|
/** The open conversation's messages, oldest first. */
|
|
22
22
|
messages: readonly T[];
|
|
23
23
|
/** The voice session a spoken "yes" came from; undefined for a typed one. */
|
|
@@ -20,11 +20,11 @@ export interface ResolveContext {
|
|
|
20
20
|
/** Every id in the person's visible navigation tree, groups and parents included. */
|
|
21
21
|
visibleNavIds: ReadonlySet<string>;
|
|
22
22
|
/** The translated noun of an entity route ("dashboard"); default: its English fallback. */
|
|
23
|
-
nounLabel?: ((noun: AssistantEntityRoute[
|
|
23
|
+
nounLabel?: ((noun: AssistantEntityRoute['noun']) => string) | undefined;
|
|
24
24
|
}
|
|
25
25
|
/** The entity-target id prefix: `entity:<routeId>`. */
|
|
26
26
|
export declare const ENTITY_TARGET_PREFIX = "entity:";
|
|
27
|
-
export declare function isEntityTarget(target: Pick<LocalDestination,
|
|
27
|
+
export declare function isEntityTarget(target: Pick<LocalDestination, 'id'>): boolean;
|
|
28
28
|
/** Every `id` in a navigation tree (the VISIBLE one), children included. */
|
|
29
29
|
export declare function navEntryIds(entries: readonly {
|
|
30
30
|
id: string;
|