@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
@@ -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 = "write" | "wait" | "grace";
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: "one";
2
+ kind: 'one';
3
3
  item: T;
4
4
  } | {
5
- kind: "many";
5
+ kind: 'many';
6
6
  items: T[];
7
7
  } | {
8
- kind: "none";
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["filters"]>;
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["sort"]>;
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["tabs"]>;
51
- export declare function searchOf(set: (query: string) => void): NonNullable<PageControlsAdapter["search"]>;
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["openers"]>;
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: "opened";
10
+ code: 'opened';
11
11
  what: OpenedWhat;
12
12
  } | {
13
- code: "closed";
13
+ code: 'closed';
14
14
  what: ClosedWhat;
15
15
  } | {
16
- code: "search-opened";
16
+ code: 'search-opened';
17
17
  query: string | null;
18
18
  } | {
19
- code: "sidebar";
19
+ code: 'sidebar';
20
20
  collapsed: boolean;
21
21
  already: boolean;
22
22
  } | {
23
- code: "sidebar-entry";
23
+ code: 'sidebar-entry';
24
24
  name: string;
25
25
  expanded: boolean;
26
26
  already: boolean;
27
27
  } | {
28
- code: "language";
28
+ code: 'language';
29
29
  label: string;
30
30
  already: boolean;
31
31
  } | {
32
- code: "language-not-offered";
32
+ code: 'language-not-offered';
33
33
  label: string;
34
34
  } | {
35
- code: "workspace-confirm";
35
+ code: 'workspace-confirm';
36
36
  name: string;
37
37
  } | {
38
- code: "workspace-switched";
38
+ code: 'workspace-switched';
39
39
  name: string;
40
40
  } | {
41
- code: "workspace-already";
41
+ code: 'workspace-already';
42
42
  name: string;
43
43
  } | {
44
- code: "workspace-none";
44
+ code: 'workspace-none';
45
45
  } | {
46
- code: "logout-confirm";
46
+ code: 'logout-confirm';
47
47
  } | {
48
- code: "logout-done";
48
+ code: 'logout-done';
49
49
  } | {
50
- code: "tab";
50
+ code: 'tab';
51
51
  name: string;
52
52
  already: boolean;
53
53
  } | {
54
- code: "filter-set";
54
+ code: 'filter-set';
55
55
  filter: string;
56
56
  option: string;
57
57
  already: boolean;
58
58
  } | {
59
- code: "filter-cleared";
59
+ code: 'filter-cleared';
60
60
  filter: string | null;
61
61
  } | {
62
- code: "sorted";
62
+ code: 'sorted';
63
63
  page: string;
64
64
  field: string;
65
65
  direction: SortDirection;
66
66
  already: boolean;
67
67
  } | {
68
- code: "sort-needs-field";
68
+ code: 'sort-needs-field';
69
69
  } | {
70
- code: "searched";
70
+ code: 'searched';
71
71
  page: string;
72
72
  query: string;
73
73
  } | {
74
- code: "search-cleared";
74
+ code: 'search-cleared';
75
75
  } | {
76
- code: "form-opened";
76
+ code: 'form-opened';
77
77
  name: string;
78
78
  } | {
79
- code: "not-found";
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: "ambiguous";
86
+ code: 'ambiguous';
87
87
  what: AmbiguousKind;
88
88
  name: string;
89
89
  options: string[];
90
90
  } | {
91
- code: "filter-choose";
91
+ code: 'filter-choose';
92
92
  filter: string;
93
93
  options: string[];
94
94
  } | {
95
- code: "failed";
95
+ code: 'failed';
96
96
  } | {
97
- code: "blocked";
97
+ code: 'blocked';
98
98
  reason: ControlBlock;
99
99
  };
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";
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 = "done" | "already" | "failed" | "blocked" | "not-found" | "ambiguous" | "confirm";
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: "logout";
112
+ kind: 'logout';
113
113
  } | {
114
- kind: "workspace";
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: "reply";
121
- control: ControlKey | "page";
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: "run";
127
- control: ControlKey | "page";
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: "confirm";
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 = "done" | "already" | "failed";
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
- "permission"
40
+ 'permission'
41
41
  /** Needs the live voice screen out of the way first (History, Preview, new conversation). */
42
- | "voice-session";
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 = "asc" | "desc";
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?: "panel" | "page";
183
+ surface?: 'panel' | 'page';
184
184
  }
185
185
  /** Every control key, and the handler shape it takes. */
186
186
  export interface ControlMap {
187
- "header.notifications": OpenControl;
188
- "header.search": SearchControl;
189
- "header.help": OpenControl;
190
- "header.context": OpenControl;
191
- "header.workspace": WorkspaceControl;
192
- "account.logout": LogoutControl;
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
- "assistant.history": OpenControl;
196
- "assistant.transcript": OpenControl;
197
- "assistant.preview": PreviewControl;
198
- "assistant.conversation.new": OpenControl;
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["page"] | null): void;
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 = "camera" | "gallery" | "documents" | "files";
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?: "environment" | "user";
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 = "image" | "text" | "document";
65
- export type AssistantAttachmentStatus = "pending" | "uploading" | "ready" | "error";
66
- export type AttachmentRejection = "too-many" | "too-large" | "empty" | "unreadable" | "unsupported-image"
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
- | "too-large-to-save";
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 = "in-flight" | "failed";
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 = "act" | "read";
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, "id">[]): boolean;
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: "new";
65
+ action: 'new';
66
66
  mode: AssistantMode;
67
67
  } | {
68
- action: "adopt";
68
+ action: 'adopt';
69
69
  mode: AssistantMode;
70
70
  } | {
71
- action: "continue";
71
+ action: 'continue';
72
72
  mode: AssistantMode;
73
73
  } | {
74
- action: "escalate";
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 = "none" | "provisioning" | "running" | "stopping" | "error";
6
- export type AssistantConversationStatus = "idle" | "provisioning" | "connecting" | "streaming" | "complete" | "error";
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: "file" | "directory";
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: "navigate";
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 = "named" | "link" | "choice" | "back" | "offer";
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 = "tap" | "deixis" | "yes" | "resolve";
61
- export type AssistantNavigateOutcome = "arrived" | "redirected" | "new-tab" | "refused" | "unconfirmed";
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: "app-control";
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 = "done" | "already" | "failed" | "blocked" | "not-found" | "ambiguous" | "confirm";
74
+ export type AssistantAppControlOutcome = 'done' | 'already' | 'failed' | 'blocked' | 'not-found' | 'ambiguous' | 'confirm';
75
75
  export type AssistantLocalAction = {
76
- kind: "theme";
76
+ kind: 'theme';
77
77
  mode: string;
78
78
  alreadyApplied: boolean;
79
79
  } | AssistantAppControlAction | AssistantNavigateAction | {
80
- kind: "choose-destination";
80
+ kind: 'choose-destination';
81
81
  candidateIds: string[];
82
82
  } | {
83
- kind: "write-reply";
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: "uncertain" | "succeeded" | "failed" | "declined" | "superseded" | "expired";
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 = "proposed" | "applied" | "failed" | "expired" | "cancelled";
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: "user" | "assistant" | "system";
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 = "pending" | "saved";
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: "created" | "remote" | "legacy";
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?: "quota" | "invalid" | "scope";
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 = "auto";
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 = "reusingEnvironment" | "lookingForEnvironment" | "startingEnvironment" | "preparingSession" | "connecting" | "thinking";
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: "output";
19
+ readonly kind: 'output';
20
20
  readonly text: string;
21
21
  } | {
22
- readonly kind: "working";
23
- readonly text: "";
22
+ readonly kind: 'working';
23
+ readonly text: '';
24
24
  } | {
25
- readonly kind: "stopped";
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 = "ok" | "no-text" | "encrypted" | "corrupt"
68
+ export type DocumentExtractionStatus = 'ok' | 'no-text' | 'encrypted' | 'corrupt'
69
69
  /** No extractor for this type — we did not even try. */
70
- | "unsupported";
70
+ | 'unsupported';
71
71
  /** Document formats we can turn into text in the browser. */
72
- export type DocumentFormat = "pdf" | "docx" | "xlsx";
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: "json" | "markdown", options?: ExportConversationOptions): {
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, "messages">): AssistantHistoryChannel | null;
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, "messages"> | null, header: AssistantHistoryHeader | null, pending?: readonly AssistantHistoryPendingUpdate[]): AssistantHistoryRowControls;
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, "pinnedAt" | "archivedAt" | "channel">, filter?: Readonly<AssistantHistoryConversationFilter>): boolean;
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 = "archived" | "pinned" | "voice" | "chat";
100
+ export type HistoryFilterEmptyKind = 'archived' | 'pinned' | 'voice' | 'chat';
101
101
  export declare function historyFilterEmptyKind(filter: Readonly<AssistantHistoryConversationFilter>): HistoryFilterEmptyKind | null;