@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.
- 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/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
|
@@ -7,7 +7,7 @@ import { LocalCommandCopy } from '../localUiCommandCopy';
|
|
|
7
7
|
* display parameter also translates it when late words arrive, or when history
|
|
8
8
|
* is reopened in another app language; saved strings are never rewritten.
|
|
9
9
|
*/
|
|
10
|
-
export type LanguageReplyStep =
|
|
10
|
+
export type LanguageReplyStep = 'write' | 'wait' | 'grace';
|
|
11
11
|
/** How long an idle, still-untranslated language is given before displaying English. */
|
|
12
12
|
export declare const LANGUAGE_REPLY_GRACE_MS = 400;
|
|
13
13
|
/** The longest the reply waits for the new language at all. */
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
export type NameMatch<T> = {
|
|
2
|
-
kind:
|
|
2
|
+
kind: 'one';
|
|
3
3
|
item: T;
|
|
4
4
|
} | {
|
|
5
|
-
kind:
|
|
5
|
+
kind: 'many';
|
|
6
6
|
items: T[];
|
|
7
7
|
} | {
|
|
8
|
-
kind:
|
|
8
|
+
kind: 'none';
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
11
11
|
* Which of `items` a person means by `said`, judged on the product's own
|
|
@@ -24,7 +24,7 @@ export interface EnumFilterEntry {
|
|
|
24
24
|
apply: (value: string | null) => ControlResult;
|
|
25
25
|
}
|
|
26
26
|
export declare function enumFilter<V extends string>(spec: EnumFilterSpec<V>): EnumFilterEntry;
|
|
27
|
-
export declare function filtersOf(entries: readonly EnumFilterEntry[]): NonNullable<PageControlsAdapter[
|
|
27
|
+
export declare function filtersOf(entries: readonly EnumFilterEntry[]): NonNullable<PageControlsAdapter['filters']>;
|
|
28
28
|
export interface SortFieldSpec<V extends string> {
|
|
29
29
|
id: string;
|
|
30
30
|
label: string;
|
|
@@ -38,7 +38,7 @@ export interface SortSpec<V extends string> {
|
|
|
38
38
|
value: V;
|
|
39
39
|
set: (value: V) => void;
|
|
40
40
|
}
|
|
41
|
-
export declare function sortOf<V extends string>(spec: SortSpec<V>): NonNullable<PageControlsAdapter[
|
|
41
|
+
export declare function sortOf<V extends string>(spec: SortSpec<V>): NonNullable<PageControlsAdapter['sort']>;
|
|
42
42
|
export interface TabsSpec<T extends string> {
|
|
43
43
|
items: readonly {
|
|
44
44
|
id: T;
|
|
@@ -47,12 +47,12 @@ export interface TabsSpec<T extends string> {
|
|
|
47
47
|
value: T;
|
|
48
48
|
set: (id: T) => void;
|
|
49
49
|
}
|
|
50
|
-
export declare function tabsOf<T extends string>(spec: TabsSpec<T>): NonNullable<PageControlsAdapter[
|
|
51
|
-
export declare function searchOf(set: (query: string) => void): NonNullable<PageControlsAdapter[
|
|
50
|
+
export declare function tabsOf<T extends string>(spec: TabsSpec<T>): NonNullable<PageControlsAdapter['tabs']>;
|
|
51
|
+
export declare function searchOf(set: (query: string) => void): NonNullable<PageControlsAdapter['search']>;
|
|
52
52
|
/** One form or dialog the page can OPEN. `open` must only open it. */
|
|
53
53
|
export interface OpenerSpec {
|
|
54
54
|
id: string;
|
|
55
55
|
label: string;
|
|
56
56
|
open: () => void;
|
|
57
57
|
}
|
|
58
|
-
export declare function openersOf(specs: readonly OpenerSpec[]): NonNullable<PageControlsAdapter[
|
|
58
|
+
export declare function openersOf(specs: readonly OpenerSpec[]): NonNullable<PageControlsAdapter['openers']>;
|
|
@@ -7,124 +7,124 @@ import { ControlBlock, ControlKey, SortDirection } from './types';
|
|
|
7
7
|
*/
|
|
8
8
|
/** What the panel says, as data. `appControlCopy.ts` turns it into words. */
|
|
9
9
|
export type ControlReply = {
|
|
10
|
-
code:
|
|
10
|
+
code: 'opened';
|
|
11
11
|
what: OpenedWhat;
|
|
12
12
|
} | {
|
|
13
|
-
code:
|
|
13
|
+
code: 'closed';
|
|
14
14
|
what: ClosedWhat;
|
|
15
15
|
} | {
|
|
16
|
-
code:
|
|
16
|
+
code: 'search-opened';
|
|
17
17
|
query: string | null;
|
|
18
18
|
} | {
|
|
19
|
-
code:
|
|
19
|
+
code: 'sidebar';
|
|
20
20
|
collapsed: boolean;
|
|
21
21
|
already: boolean;
|
|
22
22
|
} | {
|
|
23
|
-
code:
|
|
23
|
+
code: 'sidebar-entry';
|
|
24
24
|
name: string;
|
|
25
25
|
expanded: boolean;
|
|
26
26
|
already: boolean;
|
|
27
27
|
} | {
|
|
28
|
-
code:
|
|
28
|
+
code: 'language';
|
|
29
29
|
label: string;
|
|
30
30
|
already: boolean;
|
|
31
31
|
} | {
|
|
32
|
-
code:
|
|
32
|
+
code: 'language-not-offered';
|
|
33
33
|
label: string;
|
|
34
34
|
} | {
|
|
35
|
-
code:
|
|
35
|
+
code: 'workspace-confirm';
|
|
36
36
|
name: string;
|
|
37
37
|
} | {
|
|
38
|
-
code:
|
|
38
|
+
code: 'workspace-switched';
|
|
39
39
|
name: string;
|
|
40
40
|
} | {
|
|
41
|
-
code:
|
|
41
|
+
code: 'workspace-already';
|
|
42
42
|
name: string;
|
|
43
43
|
} | {
|
|
44
|
-
code:
|
|
44
|
+
code: 'workspace-none';
|
|
45
45
|
} | {
|
|
46
|
-
code:
|
|
46
|
+
code: 'logout-confirm';
|
|
47
47
|
} | {
|
|
48
|
-
code:
|
|
48
|
+
code: 'logout-done';
|
|
49
49
|
} | {
|
|
50
|
-
code:
|
|
50
|
+
code: 'tab';
|
|
51
51
|
name: string;
|
|
52
52
|
already: boolean;
|
|
53
53
|
} | {
|
|
54
|
-
code:
|
|
54
|
+
code: 'filter-set';
|
|
55
55
|
filter: string;
|
|
56
56
|
option: string;
|
|
57
57
|
already: boolean;
|
|
58
58
|
} | {
|
|
59
|
-
code:
|
|
59
|
+
code: 'filter-cleared';
|
|
60
60
|
filter: string | null;
|
|
61
61
|
} | {
|
|
62
|
-
code:
|
|
62
|
+
code: 'sorted';
|
|
63
63
|
page: string;
|
|
64
64
|
field: string;
|
|
65
65
|
direction: SortDirection;
|
|
66
66
|
already: boolean;
|
|
67
67
|
} | {
|
|
68
|
-
code:
|
|
68
|
+
code: 'sort-needs-field';
|
|
69
69
|
} | {
|
|
70
|
-
code:
|
|
70
|
+
code: 'searched';
|
|
71
71
|
page: string;
|
|
72
72
|
query: string;
|
|
73
73
|
} | {
|
|
74
|
-
code:
|
|
74
|
+
code: 'search-cleared';
|
|
75
75
|
} | {
|
|
76
|
-
code:
|
|
76
|
+
code: 'form-opened';
|
|
77
77
|
name: string;
|
|
78
78
|
} | {
|
|
79
|
-
code:
|
|
79
|
+
code: 'not-found';
|
|
80
80
|
what: NotFoundKind;
|
|
81
81
|
page: string;
|
|
82
82
|
name: string;
|
|
83
83
|
options: string[];
|
|
84
84
|
filter?: string;
|
|
85
85
|
} | {
|
|
86
|
-
code:
|
|
86
|
+
code: 'ambiguous';
|
|
87
87
|
what: AmbiguousKind;
|
|
88
88
|
name: string;
|
|
89
89
|
options: string[];
|
|
90
90
|
} | {
|
|
91
|
-
code:
|
|
91
|
+
code: 'filter-choose';
|
|
92
92
|
filter: string;
|
|
93
93
|
options: string[];
|
|
94
94
|
} | {
|
|
95
|
-
code:
|
|
95
|
+
code: 'failed';
|
|
96
96
|
} | {
|
|
97
|
-
code:
|
|
97
|
+
code: 'blocked';
|
|
98
98
|
reason: ControlBlock;
|
|
99
99
|
};
|
|
100
|
-
export type OpenedWhat =
|
|
101
|
-
export type ClosedWhat =
|
|
102
|
-
export type NotFoundKind =
|
|
103
|
-
export type AmbiguousKind =
|
|
100
|
+
export type OpenedWhat = 'notifications' | 'help' | 'context' | 'history' | 'transcript' | 'preview' | 'conversation';
|
|
101
|
+
export type ClosedWhat = 'preview';
|
|
102
|
+
export type NotFoundKind = 'tab' | 'filter' | 'filter-option' | 'sort' | 'form' | 'workspace';
|
|
103
|
+
export type AmbiguousKind = 'tab' | 'filter' | 'menu' | 'workspace' | 'column' | 'form';
|
|
104
104
|
/** What is recorded on the exchange (`AssistantLocalAction`). */
|
|
105
|
-
export type ControlOutcome =
|
|
105
|
+
export type ControlOutcome = 'done' | 'already' | 'failed' | 'blocked' | 'not-found' | 'ambiguous' | 'confirm';
|
|
106
106
|
export interface ControlRun {
|
|
107
107
|
reply: ControlReply;
|
|
108
108
|
outcome: ControlOutcome;
|
|
109
109
|
}
|
|
110
110
|
/** What the stronger confirmation asks about. */
|
|
111
111
|
export type ConfirmPrompt = {
|
|
112
|
-
kind:
|
|
112
|
+
kind: 'logout';
|
|
113
113
|
} | {
|
|
114
|
-
kind:
|
|
114
|
+
kind: 'workspace';
|
|
115
115
|
name: string;
|
|
116
116
|
};
|
|
117
117
|
export type ControlPlan =
|
|
118
118
|
/** Nothing to run: say it. */
|
|
119
119
|
{
|
|
120
|
-
kind:
|
|
121
|
-
control: ControlKey |
|
|
120
|
+
kind: 'reply';
|
|
121
|
+
control: ControlKey | 'page';
|
|
122
122
|
run: ControlRun;
|
|
123
123
|
}
|
|
124
124
|
/** Run it now and say what happened. `silent`: record nothing (a new conversation). */
|
|
125
125
|
| {
|
|
126
|
-
kind:
|
|
127
|
-
control: ControlKey |
|
|
126
|
+
kind: 'run';
|
|
127
|
+
control: ControlKey | 'page';
|
|
128
128
|
run: () => ControlRun;
|
|
129
129
|
silent?: boolean;
|
|
130
130
|
}
|
|
@@ -133,7 +133,7 @@ export type ControlPlan =
|
|
|
133
133
|
* trusted press on the dialog's button — never from anything typed or said.
|
|
134
134
|
*/
|
|
135
135
|
| {
|
|
136
|
-
kind:
|
|
136
|
+
kind: 'confirm';
|
|
137
137
|
control: ControlKey;
|
|
138
138
|
ask: ControlRun;
|
|
139
139
|
prompt: ConfirmPrompt;
|
|
@@ -30,16 +30,16 @@
|
|
|
30
30
|
* called), not that everything it triggers has finished. The copy says so
|
|
31
31
|
* ("Switching to …", never "Switched to …") where the app's handler is async.
|
|
32
32
|
*/
|
|
33
|
-
export type ControlStatus =
|
|
33
|
+
export type ControlStatus = 'done' | 'already' | 'failed';
|
|
34
34
|
export interface ControlResult {
|
|
35
35
|
status: ControlStatus;
|
|
36
36
|
}
|
|
37
37
|
/** Why a registered control cannot run for this person, right now. */
|
|
38
38
|
export type ControlBlock =
|
|
39
39
|
/** RBAC or a feature gate: the person is not allowed to use it here. */
|
|
40
|
-
|
|
40
|
+
'permission'
|
|
41
41
|
/** Needs the live voice screen out of the way first (History, Preview, new conversation). */
|
|
42
|
-
|
|
|
42
|
+
| 'voice-session';
|
|
43
43
|
export interface ControlBase {
|
|
44
44
|
/**
|
|
45
45
|
* Null: it can run. Otherwise why not. Read at match time AND at run time —
|
|
@@ -111,7 +111,7 @@ export interface PageFilter {
|
|
|
111
111
|
/** The option now applied, or null for none. */
|
|
112
112
|
current?: () => string | null;
|
|
113
113
|
}
|
|
114
|
-
export type SortDirection =
|
|
114
|
+
export type SortDirection = 'asc' | 'desc';
|
|
115
115
|
export interface PageControlsAdapter extends ControlBase {
|
|
116
116
|
/**
|
|
117
117
|
* Which page this is, in the product's words ("Crops"). Said back to the
|
|
@@ -180,22 +180,22 @@ export interface PreviewControl extends OpenControl {
|
|
|
180
180
|
* assistant panel, which the live voice screen covers. "page": drawn on the
|
|
181
181
|
* product's own page beside the assistant, so Voice may open it.
|
|
182
182
|
*/
|
|
183
|
-
surface?:
|
|
183
|
+
surface?: 'panel' | 'page';
|
|
184
184
|
}
|
|
185
185
|
/** Every control key, and the handler shape it takes. */
|
|
186
186
|
export interface ControlMap {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
187
|
+
'header.notifications': OpenControl;
|
|
188
|
+
'header.search': SearchControl;
|
|
189
|
+
'header.help': OpenControl;
|
|
190
|
+
'header.context': OpenControl;
|
|
191
|
+
'header.workspace': WorkspaceControl;
|
|
192
|
+
'account.logout': LogoutControl;
|
|
193
193
|
sidebar: SidebarControl;
|
|
194
194
|
language: LanguageControl;
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
195
|
+
'assistant.history': OpenControl;
|
|
196
|
+
'assistant.transcript': OpenControl;
|
|
197
|
+
'assistant.preview': PreviewControl;
|
|
198
|
+
'assistant.conversation.new': OpenControl;
|
|
199
199
|
page: PageControlsAdapter;
|
|
200
200
|
}
|
|
201
201
|
export type ControlKey = keyof ControlMap;
|
|
@@ -20,4 +20,4 @@ export declare function useAssistantControl<K extends ControlKey>(key: K, impl:
|
|
|
20
20
|
* its handlers call the page's own setters. The vocabulary has no submit, save,
|
|
21
21
|
* create or delete — see `types.ts`.
|
|
22
22
|
*/
|
|
23
|
-
export declare function useAssistantPageControls(adapter: ControlMap[
|
|
23
|
+
export declare function useAssistantPageControls(adapter: ControlMap['page'] | null): void;
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* through Documents or Files here; anything else is a file it would have to
|
|
20
20
|
* refuse after the user had already chosen it.
|
|
21
21
|
*/
|
|
22
|
-
export type AttachmentSourceId =
|
|
22
|
+
export type AttachmentSourceId = 'camera' | 'gallery' | 'documents' | 'files';
|
|
23
23
|
export interface AttachmentSource {
|
|
24
24
|
id: AttachmentSourceId;
|
|
25
25
|
/** i18n key and the English fallback, resolved by the caller. */
|
|
@@ -33,7 +33,7 @@ export interface AttachmentSource {
|
|
|
33
33
|
* ignored on desktop, which falls back to the file picker rather than
|
|
34
34
|
* breaking.
|
|
35
35
|
*/
|
|
36
|
-
capture?:
|
|
36
|
+
capture?: 'environment' | 'user';
|
|
37
37
|
/** Multi-select. A camera capture is one shot at a time. */
|
|
38
38
|
multiple: boolean;
|
|
39
39
|
/**
|
|
@@ -61,14 +61,14 @@ export interface AssistantInlineLimitsConfig {
|
|
|
61
61
|
readonly maxInlineCharsPerFile?: number;
|
|
62
62
|
readonly maxInlineCharsTotal?: number;
|
|
63
63
|
}
|
|
64
|
-
export type AssistantAttachmentKind =
|
|
65
|
-
export type AssistantAttachmentStatus =
|
|
66
|
-
export type AttachmentRejection =
|
|
64
|
+
export type AssistantAttachmentKind = 'image' | 'text' | 'document';
|
|
65
|
+
export type AssistantAttachmentStatus = 'pending' | 'uploading' | 'ready' | 'error';
|
|
66
|
+
export type AttachmentRejection = 'too-many' | 'too-large' | 'empty' | 'unreadable' | 'unsupported-image'
|
|
67
67
|
/**
|
|
68
68
|
* Over the 5 MiB the browser can upload directly, and with no text to send inline instead: it
|
|
69
69
|
* could be neither saved to Files nor read, so it is refused at attach rather than failing at Send.
|
|
70
70
|
*/
|
|
71
|
-
|
|
|
71
|
+
| 'too-large-to-save';
|
|
72
72
|
/**
|
|
73
73
|
* Thrown while PREPARING a file (after it passed `validateFile`) to reject it
|
|
74
74
|
* with a specific reason rather than the generic 'unreadable'.
|
|
@@ -234,7 +234,7 @@ export declare function hasAttachmentWorkInFlight(preparingCount: number, attach
|
|
|
234
234
|
*/
|
|
235
235
|
export declare function getSendableAttachments(attachments: AssistantAttachment[]): AssistantAttachment[];
|
|
236
236
|
/** Why a draft cannot be sent yet, as far as its attachments are concerned. */
|
|
237
|
-
export type AttachmentSendBlocker =
|
|
237
|
+
export type AttachmentSendBlocker = 'in-flight' | 'failed';
|
|
238
238
|
/**
|
|
239
239
|
* Whether the attachments block sending, and why — `null` when they do not.
|
|
240
240
|
*
|
|
@@ -11,13 +11,13 @@ export declare const AUTO_READ_MODE = "assistant";
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const AUTO_WRITE_MODE = "api-calls";
|
|
13
13
|
/** What a message asks for: a change to be made, or anything else. */
|
|
14
|
-
export type AssistantIntent =
|
|
14
|
+
export type AssistantIntent = 'act' | 'read';
|
|
15
15
|
/**
|
|
16
16
|
* Auto is offered only where there is something to route between: the product
|
|
17
17
|
* offers BOTH the read mode and the write mode to this person. `modes` must be
|
|
18
18
|
* the role-filtered list the selector shows, not the product's full list.
|
|
19
19
|
*/
|
|
20
|
-
export declare function isAutoRoutingOffered(modes: readonly Pick<AssistantModeConfig,
|
|
20
|
+
export declare function isAutoRoutingOffered(modes: readonly Pick<AssistantModeConfig, 'id'>[]): boolean;
|
|
21
21
|
/**
|
|
22
22
|
* Does this message ask for a change to be made?
|
|
23
23
|
*
|
|
@@ -62,16 +62,16 @@ export interface AutoRouteConversation {
|
|
|
62
62
|
* place, with a fresh backend session.
|
|
63
63
|
*/
|
|
64
64
|
export type AutoRoute = {
|
|
65
|
-
action:
|
|
65
|
+
action: 'new';
|
|
66
66
|
mode: AssistantMode;
|
|
67
67
|
} | {
|
|
68
|
-
action:
|
|
68
|
+
action: 'adopt';
|
|
69
69
|
mode: AssistantMode;
|
|
70
70
|
} | {
|
|
71
|
-
action:
|
|
71
|
+
action: 'continue';
|
|
72
72
|
mode: AssistantMode;
|
|
73
73
|
} | {
|
|
74
|
-
action:
|
|
74
|
+
action: 'escalate';
|
|
75
75
|
mode: AssistantMode;
|
|
76
76
|
};
|
|
77
77
|
export interface AutoRouteInput {
|
|
@@ -2,8 +2,8 @@ import { PendingWrite } from './pendingWrite';
|
|
|
2
2
|
import { WriteProposalMessageRef } from './writeProposalDiscovery';
|
|
3
3
|
import { AssistantMessageAttachment } from './attachments';
|
|
4
4
|
import { AssistantMode, AssistantTokenUsage } from './types';
|
|
5
|
-
export type AssistantSandboxStatus =
|
|
6
|
-
export type AssistantConversationStatus =
|
|
5
|
+
export type AssistantSandboxStatus = 'none' | 'provisioning' | 'running' | 'stopping' | 'error';
|
|
6
|
+
export type AssistantConversationStatus = 'idle' | 'provisioning' | 'connecting' | 'streaming' | 'complete' | 'error';
|
|
7
7
|
/**
|
|
8
8
|
* ★ `AssistantPanelArtifact`, not `AssistantArtifact`. The transport already
|
|
9
9
|
* exports an `AssistantArtifact` in `./types` and the two genuinely differ —
|
|
@@ -17,7 +17,7 @@ export type AssistantConversationStatus = "idle" | "provisioning" | "connecting"
|
|
|
17
17
|
export interface AssistantPanelArtifact {
|
|
18
18
|
name: string;
|
|
19
19
|
path: string;
|
|
20
|
-
type:
|
|
20
|
+
type: 'file' | 'directory';
|
|
21
21
|
size: number;
|
|
22
22
|
downloadPath?: string;
|
|
23
23
|
}
|
|
@@ -35,7 +35,7 @@ export interface AssistantPanelArtifact {
|
|
|
35
35
|
* history). Each string is at most 256 characters.
|
|
36
36
|
*/
|
|
37
37
|
export interface AssistantNavigateAction {
|
|
38
|
-
kind:
|
|
38
|
+
kind: 'navigate';
|
|
39
39
|
destinationId: string;
|
|
40
40
|
path: string;
|
|
41
41
|
alreadyHere: boolean;
|
|
@@ -51,36 +51,36 @@ export interface AssistantNavigateAction {
|
|
|
51
51
|
/** ★ N3: the sandbox's offer id (`uo_` + 32 hex) — only with `via: "offer"`. */
|
|
52
52
|
offerId?: string;
|
|
53
53
|
}
|
|
54
|
-
export type AssistantNavigateVia =
|
|
54
|
+
export type AssistantNavigateVia = 'named' | 'link' | 'choice' | 'back' | 'offer';
|
|
55
55
|
/**
|
|
56
56
|
* ★ BOFF-8060 (N3): `tap` — the "Open {page}" link; `deixis` — "take me there";
|
|
57
57
|
* `yes` — a bare "yes" the binder accepted (§6); `resolve` — act-on-resolve
|
|
58
58
|
* (§8), the person's own explicit request answered by exactly one offer.
|
|
59
59
|
*/
|
|
60
|
-
export type AssistantNavigateOfferTrigger =
|
|
61
|
-
export type AssistantNavigateOutcome =
|
|
60
|
+
export type AssistantNavigateOfferTrigger = 'tap' | 'deixis' | 'yes' | 'resolve';
|
|
61
|
+
export type AssistantNavigateOutcome = 'arrived' | 'redirected' | 'new-tab' | 'refused' | 'unconfirmed';
|
|
62
62
|
/**
|
|
63
63
|
* ★ BOFF-8060: an app control the panel operated (header, sidebar, language,
|
|
64
64
|
* assistant panel, page). `control` names the registry key; `outcome` is what
|
|
65
65
|
* happened — `confirm` is a workspace switch or logout waiting for its button.
|
|
66
66
|
*/
|
|
67
67
|
export interface AssistantAppControlAction {
|
|
68
|
-
kind:
|
|
68
|
+
kind: 'app-control';
|
|
69
69
|
control: string;
|
|
70
70
|
outcome: AssistantAppControlOutcome;
|
|
71
71
|
/** Optional display parameter for a language confirmation; never an instruction. */
|
|
72
72
|
languageLabel?: string;
|
|
73
73
|
}
|
|
74
|
-
export type AssistantAppControlOutcome =
|
|
74
|
+
export type AssistantAppControlOutcome = 'done' | 'already' | 'failed' | 'blocked' | 'not-found' | 'ambiguous' | 'confirm';
|
|
75
75
|
export type AssistantLocalAction = {
|
|
76
|
-
kind:
|
|
76
|
+
kind: 'theme';
|
|
77
77
|
mode: string;
|
|
78
78
|
alreadyApplied: boolean;
|
|
79
79
|
} | AssistantAppControlAction | AssistantNavigateAction | {
|
|
80
|
-
kind:
|
|
80
|
+
kind: 'choose-destination';
|
|
81
81
|
candidateIds: string[];
|
|
82
82
|
} | {
|
|
83
|
-
kind:
|
|
83
|
+
kind: 'write-reply';
|
|
84
84
|
line: string;
|
|
85
85
|
};
|
|
86
86
|
export interface AssistantMessageMetadata {
|
|
@@ -185,7 +185,7 @@ export interface AssistantMessageMetadata {
|
|
|
185
185
|
* contains a payload or approval capability, and never leaves for history.
|
|
186
186
|
*/
|
|
187
187
|
writeProposalTransportNote?: WriteProposalMessageRef & {
|
|
188
|
-
status:
|
|
188
|
+
status: 'uncertain' | 'succeeded' | 'failed' | 'declined' | 'superseded' | 'expired';
|
|
189
189
|
};
|
|
190
190
|
/**
|
|
191
191
|
* ★ BOFF-7802: this reply is a UI command the panel carried out ITSELF — a
|
|
@@ -238,7 +238,7 @@ export interface AssistantMessageMetadata {
|
|
|
238
238
|
[key: string]: unknown;
|
|
239
239
|
}
|
|
240
240
|
/** Where a recorded action stands. `proposed` never survives a reload (it reads back as `expired`). */
|
|
241
|
-
export type AssistantHistoryRecordStatus =
|
|
241
|
+
export type AssistantHistoryRecordStatus = 'proposed' | 'applied' | 'failed' | 'expired' | 'cancelled';
|
|
242
242
|
/**
|
|
243
243
|
* One structured record on a message (BOFF-7335). `kind` is namespaced by the
|
|
244
244
|
* feature that writes it (`[a-z][a-z0-9._-]*`) and `version` versions its
|
|
@@ -256,7 +256,7 @@ export interface AssistantHistoryRecord {
|
|
|
256
256
|
}
|
|
257
257
|
export interface Message {
|
|
258
258
|
id: string;
|
|
259
|
-
role:
|
|
259
|
+
role: 'user' | 'assistant' | 'system';
|
|
260
260
|
content: string;
|
|
261
261
|
timestamp: string;
|
|
262
262
|
tokens?: AssistantTokenUsage;
|
|
@@ -274,7 +274,7 @@ export interface Message {
|
|
|
274
274
|
historySeq?: number;
|
|
275
275
|
}
|
|
276
276
|
/** See `Message.historyState`. */
|
|
277
|
-
export type MessageHistoryState =
|
|
277
|
+
export type MessageHistoryState = 'pending' | 'saved';
|
|
278
278
|
export interface Conversation {
|
|
279
279
|
id: string;
|
|
280
280
|
title: string;
|
|
@@ -337,7 +337,7 @@ export interface ConversationSyncStamp {
|
|
|
337
337
|
workspaceId: string;
|
|
338
338
|
actorId: string;
|
|
339
339
|
/** `created` on this device · `remote` read from the server · `legacy` saved before v2 (read-only). */
|
|
340
|
-
origin:
|
|
340
|
+
origin: 'created' | 'remote' | 'legacy';
|
|
341
341
|
/** The server's own id, once known. */
|
|
342
342
|
serverId?: string;
|
|
343
343
|
/** The server revision of the conversation last applied here. */
|
|
@@ -355,7 +355,7 @@ export interface ConversationSyncStamp {
|
|
|
355
355
|
*/
|
|
356
356
|
titleLocked?: true;
|
|
357
357
|
/** Why the latest turns are not being saved. */
|
|
358
|
-
blocked?:
|
|
358
|
+
blocked?: 'quota' | 'invalid' | 'scope';
|
|
359
359
|
/** When it was last opened here (ISO), for cache eviction. */
|
|
360
360
|
openedAt?: string;
|
|
361
361
|
}
|
|
@@ -363,7 +363,7 @@ export interface ConversationSyncStamp {
|
|
|
363
363
|
* How a conversation came by its mode. See `Conversation.routedBy` and
|
|
364
364
|
* `autoRouting.ts`.
|
|
365
365
|
*/
|
|
366
|
-
export type ConversationRouting =
|
|
366
|
+
export type ConversationRouting = 'auto';
|
|
367
367
|
export interface AssistantSandboxRuntime {
|
|
368
368
|
sandboxId: string;
|
|
369
369
|
status: AssistantSandboxStatus;
|
|
@@ -382,7 +382,7 @@ export interface AssistantSandboxRuntime {
|
|
|
382
382
|
* environment steps, and `connecting` is only ever shown as "Preparing
|
|
383
383
|
* session...". The names are `STAGE_COPY`'s keys, which `stageCopy.ts` enforces.
|
|
384
384
|
*/
|
|
385
|
-
export type AssistantTurnStage =
|
|
385
|
+
export type AssistantTurnStage = 'reusingEnvironment' | 'lookingForEnvironment' | 'startingEnvironment' | 'preparingSession' | 'connecting' | 'thinking';
|
|
386
386
|
export interface AssistantConversationProcessing {
|
|
387
387
|
status: AssistantConversationStatus;
|
|
388
388
|
messageId: string | null;
|
|
@@ -16,13 +16,13 @@ import { AssistantTr } from './i18n';
|
|
|
16
16
|
* session never advances on anything else.
|
|
17
17
|
*/
|
|
18
18
|
export type AssistantDisplayContent = {
|
|
19
|
-
readonly kind:
|
|
19
|
+
readonly kind: 'output';
|
|
20
20
|
readonly text: string;
|
|
21
21
|
} | {
|
|
22
|
-
readonly kind:
|
|
23
|
-
readonly text:
|
|
22
|
+
readonly kind: 'working';
|
|
23
|
+
readonly text: '';
|
|
24
24
|
} | {
|
|
25
|
-
readonly kind:
|
|
25
|
+
readonly kind: 'stopped';
|
|
26
26
|
readonly text: string;
|
|
27
27
|
};
|
|
28
28
|
/**
|
|
@@ -65,11 +65,11 @@ export declare const MIN_TEXT_PAGE_SHARE = 0.5;
|
|
|
65
65
|
* both have to look different from one we never tried. Silence here is what
|
|
66
66
|
* makes an assistant answer confidently about a file it never saw.
|
|
67
67
|
*/
|
|
68
|
-
export type DocumentExtractionStatus =
|
|
68
|
+
export type DocumentExtractionStatus = 'ok' | 'no-text' | 'encrypted' | 'corrupt'
|
|
69
69
|
/** No extractor for this type — we did not even try. */
|
|
70
|
-
|
|
|
70
|
+
| 'unsupported';
|
|
71
71
|
/** Document formats we can turn into text in the browser. */
|
|
72
|
-
export type DocumentFormat =
|
|
72
|
+
export type DocumentFormat = 'pdf' | 'docx' | 'xlsx';
|
|
73
73
|
export interface DocumentExtraction {
|
|
74
74
|
status: DocumentExtractionStatus;
|
|
75
75
|
/**
|
|
@@ -9,7 +9,7 @@ export interface ExportConversationOptions {
|
|
|
9
9
|
/** The product's translator, for "Stopped". English when omitted. */
|
|
10
10
|
tr?: AssistantTr;
|
|
11
11
|
}
|
|
12
|
-
export declare function exportConversation(conversation: Conversation, format:
|
|
12
|
+
export declare function exportConversation(conversation: Conversation, format: 'json' | 'markdown', options?: ExportConversationOptions): {
|
|
13
13
|
content: string;
|
|
14
14
|
filename: string;
|
|
15
15
|
mimeType: string;
|
|
@@ -41,7 +41,7 @@ export declare function isValidUpdatePatch(patch: AssistantHistoryUpdatePatch):
|
|
|
41
41
|
* voice marker on its USER messages (notes and replies do not count; a local
|
|
42
42
|
* command counts as the person's turn, as on the server). Null with none.
|
|
43
43
|
*/
|
|
44
|
-
export declare function localChannelOf(conversation: Pick<Conversation,
|
|
44
|
+
export declare function localChannelOf(conversation: Pick<Conversation, 'messages'>): AssistantHistoryChannel | null;
|
|
45
45
|
/** A queued control change, as the row reads it. */
|
|
46
46
|
export interface AssistantHistoryPendingUpdate {
|
|
47
47
|
patch: AssistantHistoryUpdatePatch;
|
|
@@ -75,7 +75,7 @@ export interface AssistantHistoryRowControls {
|
|
|
75
75
|
* held conversation's title in step with the server, and a title renamed on
|
|
76
76
|
* this device before renames were synced — `titleLocked` — stays here).
|
|
77
77
|
*/
|
|
78
|
-
export declare function resolveRowControls(conversation: Pick<Conversation,
|
|
78
|
+
export declare function resolveRowControls(conversation: Pick<Conversation, 'messages'> | null, header: AssistantHistoryHeader | null, pending?: readonly AssistantHistoryPendingUpdate[]): AssistantHistoryRowControls;
|
|
79
79
|
/** The list's default: every conversation that is not archived. */
|
|
80
80
|
export declare const DEFAULT_HISTORY_LIST_FILTER: Readonly<AssistantHistoryConversationFilter>;
|
|
81
81
|
/**
|
|
@@ -84,7 +84,7 @@ export declare const DEFAULT_HISTORY_LIST_FILTER: Readonly<AssistantHistoryConve
|
|
|
84
84
|
* and a MIXED row matches both. A row whose channel is unknown matches only
|
|
85
85
|
* ANY. Archived rows are left out unless asked for.
|
|
86
86
|
*/
|
|
87
|
-
export declare function matchesHistoryFilter(row: Pick<AssistantHistoryRowControls,
|
|
87
|
+
export declare function matchesHistoryFilter(row: Pick<AssistantHistoryRowControls, 'pinnedAt' | 'archivedAt' | 'channel'>, filter?: Readonly<AssistantHistoryConversationFilter>): boolean;
|
|
88
88
|
/**
|
|
89
89
|
* A filter as a stable key ("" for none): the list's "Show older" listing is
|
|
90
90
|
* paged per filter, and its `hasMore` answers for one key only.
|
|
@@ -97,5 +97,5 @@ export declare function isDefaultHistoryFilter(filter: Readonly<AssistantHistory
|
|
|
97
97
|
* them — Archived, then Pinned, then the channel. Null for the default
|
|
98
98
|
* filter, whose empty list is "No conversations yet".
|
|
99
99
|
*/
|
|
100
|
-
export type HistoryFilterEmptyKind =
|
|
100
|
+
export type HistoryFilterEmptyKind = 'archived' | 'pinned' | 'voice' | 'chat';
|
|
101
101
|
export declare function historyFilterEmptyKind(filter: Readonly<AssistantHistoryConversationFilter>): HistoryFilterEmptyKind | null;
|