@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.
Files changed (132) 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/avatar/live/LiveAvatarStage.js +5 -1
  20. package/dist/shared/assistant/avatar/live/LiveAvatarTabView.js +28 -25
  21. package/dist/shared/assistant/avatar/live/createLiveAvatarSeam.d.ts +1 -1
  22. package/dist/shared/assistant/avatar/live/createLiveAvatarSeam.js +61 -50
  23. package/dist/shared/assistant/avatar/live/liveAvatarController.d.ts +19 -4
  24. package/dist/shared/assistant/avatar/live/liveAvatarController.js +163 -155
  25. package/dist/shared/assistant/avatar/live/liveAvatarStatus.d.ts +5 -3
  26. package/dist/shared/assistant/avatar/live/liveAvatarStatus.js +2 -2
  27. package/dist/shared/assistant/conversation.d.ts +20 -20
  28. package/dist/shared/assistant/displayContent.d.ts +4 -4
  29. package/dist/shared/assistant/documentText.d.ts +3 -3
  30. package/dist/shared/assistant/exportConversation.d.ts +1 -1
  31. package/dist/shared/assistant/history/historyControls.d.ts +4 -4
  32. package/dist/shared/assistant/history/historyErrors.d.ts +3 -3
  33. package/dist/shared/assistant/history/historyList.d.ts +5 -5
  34. package/dist/shared/assistant/history/historyMerge.d.ts +4 -4
  35. package/dist/shared/assistant/history/historyOperations.d.ts +1 -1
  36. package/dist/shared/assistant/history/historySearch.d.ts +5 -5
  37. package/dist/shared/assistant/history/historyStatus.d.ts +1 -1
  38. package/dist/shared/assistant/history/historyTypes.d.ts +12 -12
  39. package/dist/shared/assistant/history/profileBoundStorage.d.ts +2 -2
  40. package/dist/shared/assistant/i18n.d.ts +1 -1
  41. package/dist/shared/assistant/i18nManifest.d.ts +534 -534
  42. package/dist/shared/assistant/liveDeltas.d.ts +1 -1
  43. package/dist/shared/assistant/liveOverlay.d.ts +1 -1
  44. package/dist/shared/assistant/localUiCommandCopy.d.ts +1 -1
  45. package/dist/shared/assistant/localUiCommands.d.ts +22 -22
  46. package/dist/shared/assistant/localeCommands/engine.d.ts +5 -5
  47. package/dist/shared/assistant/localeCommands/evaluate.d.ts +8 -8
  48. package/dist/shared/assistant/localeCommands/fold.d.ts +2 -2
  49. package/dist/shared/assistant/localeCommands/frames.d.ts +3 -3
  50. package/dist/shared/assistant/localeCommands/gate.d.ts +3 -3
  51. package/dist/shared/assistant/localeCommands/languageNames.d.ts +1 -1
  52. package/dist/shared/assistant/localeCommands/normalise.d.ts +1 -1
  53. package/dist/shared/assistant/localeCommands/types.d.ts +4 -4
  54. package/dist/shared/assistant/modeCapabilities.d.ts +1 -1
  55. package/dist/shared/assistant/modeCopy.d.ts +2 -2
  56. package/dist/shared/assistant/permissionError.d.ts +2 -2
  57. package/dist/shared/assistant/preview/surfaceState.d.ts +1 -1
  58. package/dist/shared/assistant/preview/types.d.ts +5 -5
  59. package/dist/shared/assistant/preview/writeActionResults.d.ts +1 -1
  60. package/dist/shared/assistant/prewarm.d.ts +5 -5
  61. package/dist/shared/assistant/quota.d.ts +2 -2
  62. package/dist/shared/assistant/sandboxReadiness.d.ts +2 -2
  63. package/dist/shared/assistant/speech/speechFeed.d.ts +3 -3
  64. package/dist/shared/assistant/turnOutcome.d.ts +2 -2
  65. package/dist/shared/assistant/turnProgress.d.ts +1 -1
  66. package/dist/shared/assistant/turnState.d.ts +1 -1
  67. package/dist/shared/assistant/turnStream.d.ts +3 -3
  68. package/dist/shared/assistant/turnTimeline.d.ts +13 -13
  69. package/dist/shared/assistant/turnTimingReport.d.ts +1 -1
  70. package/dist/shared/assistant/turnTimingReporter.d.ts +3 -3
  71. package/dist/shared/assistant/ui/AssistantAvatarTabs.d.ts +1 -1
  72. package/dist/shared/assistant/ui/AssistantHistoryNotices.d.ts +1 -1
  73. package/dist/shared/assistant/ui/AssistantToolActivity.d.ts +1 -1
  74. package/dist/shared/assistant/ui/AssistantUiOfferLink.d.ts +2 -2
  75. package/dist/shared/assistant/ui/AssistantWriteConfirmDialog.d.ts +3 -3
  76. package/dist/shared/assistant/ui/composer/AssistantAttachmentButton.d.ts +1 -1
  77. package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.d.ts +1 -1
  78. package/dist/shared/assistant/ui/leaveConfirmFocus.d.ts +1 -1
  79. package/dist/shared/assistant/ui/leaveConfirmNavigate.d.ts +3 -3
  80. package/dist/shared/assistant/ui/panelOverlays.d.ts +5 -5
  81. package/dist/shared/assistant/ui/useVoiceSession.d.ts +5 -5
  82. package/dist/shared/assistant/ui/useWriteProposalConfirm.d.ts +4 -4
  83. package/dist/shared/assistant/ui/useWriteProposals.d.ts +2 -2
  84. package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts +1 -1
  85. package/dist/shared/assistant/ui/voice/VoiceCaption.d.ts +1 -1
  86. package/dist/shared/assistant/ui/voice/VoiceWaveform.d.ts +1 -1
  87. package/dist/shared/assistant/ui/voice/voiceSessionEscape.d.ts +2 -2
  88. package/dist/shared/assistant/ui/voice/voiceStartGate.d.ts +6 -6
  89. package/dist/shared/assistant/ui/writeProposalPresentation.d.ts +1 -1
  90. package/dist/shared/assistant/uiActions/actOnResolve.d.ts +5 -5
  91. package/dist/shared/assistant/uiActions/assistantHref.d.ts +2 -2
  92. package/dist/shared/assistant/uiActions/backStack.d.ts +1 -1
  93. package/dist/shared/assistant/uiActions/deixis.d.ts +3 -3
  94. package/dist/shared/assistant/uiActions/entityRoutes.d.ts +1 -1
  95. package/dist/shared/assistant/uiActions/navigationOutcome.d.ts +8 -8
  96. package/dist/shared/assistant/uiActions/offerYesOnSurface.d.ts +1 -1
  97. package/dist/shared/assistant/uiActions/resolveTarget.d.ts +2 -2
  98. package/dist/shared/assistant/uiActions/uiOffers.d.ts +5 -5
  99. package/dist/shared/assistant/usageReporting.d.ts +2 -2
  100. package/dist/shared/assistant/useWorkspaceWriteAccess.d.ts +1 -1
  101. package/dist/shared/assistant/voice/affirmations.d.ts +1 -1
  102. package/dist/shared/assistant/voice/handsFree.d.ts +3 -3
  103. package/dist/shared/assistant/voice/handsfree/bargeIn.d.ts +5 -5
  104. package/dist/shared/assistant/voice/handsfree/echoGate.d.ts +6 -6
  105. package/dist/shared/assistant/voice/handsfree/handsFreeController.d.ts +7 -7
  106. package/dist/shared/assistant/voice/handsfree/handsFreeSetting.d.ts +2 -2
  107. package/dist/shared/assistant/voice/handsfree/micCapture.d.ts +1 -1
  108. package/dist/shared/assistant/voice/handsfree/playbackReference.d.ts +1 -1
  109. package/dist/shared/assistant/voice/handsfree/sttTransport.d.ts +3 -3
  110. package/dist/shared/assistant/voice/handsfree/useHandsFreeInterrupt.d.ts +4 -4
  111. package/dist/shared/assistant/voice/handsfree/vad.d.ts +1 -1
  112. package/dist/shared/assistant/voice/speechPlayback.d.ts +7 -7
  113. package/dist/shared/assistant/voice/useVoiceInput.d.ts +1 -1
  114. package/dist/shared/assistant/voice/voiceReopen.d.ts +8 -8
  115. package/dist/shared/assistant/writeConfirmSeam.d.ts +1 -1
  116. package/dist/shared/assistant/writeModeConsent.d.ts +7 -7
  117. package/dist/shared/assistant/writeProposalDiscovery.d.ts +3 -3
  118. package/dist/shared/assistant/writeProposalErrorCopy.d.ts +1 -1
  119. package/dist/shared/assistant/writeProposals.d.ts +23 -23
  120. package/dist/shared/assistant/writeReplyBinder.d.ts +11 -11
  121. package/dist/shared/assistant/writeReplySend.d.ts +7 -7
  122. package/dist/shared/components/LandingOrDashboardRedirect.d.ts +18 -3
  123. package/dist/shared/components/LandingOrDashboardRedirect.js +58 -28
  124. package/dist/shared/components/index.d.ts +2 -1
  125. package/dist/shared/hooks/shell/globalSearchError.d.ts +2 -2
  126. package/dist/shared/navigation/productSwitchHandoff.d.ts +45 -0
  127. package/dist/shared/navigation/productSwitchHandoff.js +27 -0
  128. package/dist/shared/navigation/unsavedChanges.d.ts +1 -1
  129. package/dist/shared/utils/index.d.ts +3 -3
  130. package/dist/shared-components.js +7 -6
  131. package/dist/shared.js +71 -70
  132. package/package.json +3 -2
@@ -118,536 +118,536 @@ import { AssistantModeConfig } from './conversation';
118
118
  * add a `tr()` call and the test names the entry to add here, with its default.
119
119
  */
120
120
  export declare const ASSISTANT_I18N_LITERAL_COPY: {
121
- readonly "apiCalls.consentBody": "In Take action mode the assistant can read AND change your data — creating records, logging activity, updating details, and more, on your behalf.";
122
- readonly "apiCalls.consentBody2": "It will describe what it is about to do and ask you to confirm before making a change. Only continue if you want the assistant to take actions for you.";
123
- readonly "apiCalls.consentCancel": "Stay in Ask";
124
- readonly "apiCalls.consentConfirm": "Enable Take action";
125
- readonly "apiCalls.consentTitle": "Switch to Take action mode?";
126
- readonly "appControl.ambiguous": "More than one {{what}} matches “{{name}}”: {{options}}. Say which one.";
127
- readonly "appControl.blockedPermission": "That isn't available to you here.";
128
- readonly "appControl.blockedVoice": "I can't open that while the voice screen is up. End the voice session, or use the button in the assistant's header.";
129
- readonly "appControl.closed.preview": "Closed the AI preview.";
130
- readonly "appControl.dialog.cancel": "Cancel";
131
- readonly "appControl.dialog.logoutBody": "You'll be signed out of this account on this device.";
132
- readonly "appControl.dialog.logoutConfirm": "Log out";
133
- readonly "appControl.dialog.logoutTitle": "Log out?";
134
- readonly "appControl.dialog.workspaceBody": "You'll switch to {{name}}. The page may reload.";
135
- readonly "appControl.dialog.workspaceConfirm": "Switch";
136
- readonly "appControl.dialog.workspaceTitle": "Switch workspace?";
137
- readonly "appControl.directionAsc": "ascending";
138
- readonly "appControl.directionDesc": "descending";
139
- readonly "appControl.entryAlreadyCollapsed": "{{name}} is already collapsed.";
140
- readonly "appControl.entryAlreadyExpanded": "{{name}} is already expanded.";
141
- readonly "appControl.entryCollapsed": "Collapsed {{name}}.";
142
- readonly "appControl.entryExpanded": "Expanded {{name}}.";
143
- readonly "appControl.failed": "That didn't work. Nothing was changed.";
144
- readonly "appControl.filterAlready": "{{filter}}: {{option}} is already on.";
145
- readonly "appControl.filterChoose": "Which {{filter}}? Options: {{options}}.";
146
- readonly "appControl.filterCleared": "Cleared the {{filter}} filter.";
147
- readonly "appControl.filterSet": "Filtered by {{filter}}: {{option}}.";
148
- readonly "appControl.filtersCleared": "Cleared the filters.";
149
- readonly "appControl.formOpened": "Opened {{name}}. Nothing is saved until you submit it.";
150
- readonly "appControl.languageAlready": "The app is already in {{language}}.";
151
- readonly "appControl.languageNotOffered": "{{language}} isn't one of the languages this app offers.";
152
- readonly "appControl.languageSet": "The app language is now {{language}}. Assistant replies and voice keep their own settings.";
153
- readonly "appControl.logoutConfirm": "Log out of your account? Nothing changes until you choose Log out on screen.";
154
- readonly "appControl.logoutDone": "Logging you out.";
155
- readonly "appControl.notFound.filter": "{{page}} has no filter option called “{{name}}”. Filters: {{options}}.";
156
- readonly "appControl.notFound.filterOption": "The {{filter}} filter has no option called “{{name}}”. Options: {{options}}.";
157
- readonly "appControl.notFound.form": "There's no “{{name}}” form to open on {{page}}. Available: {{options}}.";
158
- readonly "appControl.notFound.sort": "{{page}} can't be sorted by “{{name}}”. Columns: {{options}}.";
159
- readonly "appControl.notFound.tab": "There's no tab called “{{name}}” on {{page}}. Tabs: {{options}}.";
160
- readonly "appControl.notFound.workspace": "I couldn't find a workspace called “{{name}}”. You can switch to: {{options}}.";
161
- readonly "appControl.opened.context": "Opened the workspace switcher.";
162
- readonly "appControl.opened.conversation": "Started a new conversation.";
163
- readonly "appControl.opened.help": "Opened help and keyboard shortcuts.";
164
- readonly "appControl.opened.history": "Opened your conversation history.";
165
- readonly "appControl.opened.notifications": "Opened your notifications.";
166
- readonly "appControl.opened.preview": "Opened the AI preview.";
167
- readonly "appControl.opened.transcript": "Opened the voice transcript.";
168
- readonly "appControl.searchCleared": "Cleared the search.";
169
- readonly "appControl.searchOpened": "Opened search.";
170
- readonly "appControl.searchOpenedFor": "Opened search for “{{query}}”.";
171
- readonly "appControl.searched": "Searched {{page}} for “{{query}}”.";
172
- readonly "appControl.sidebarAlreadyCollapsed": "The sidebar is already collapsed.";
173
- readonly "appControl.sidebarAlreadyExpanded": "The sidebar is already expanded.";
174
- readonly "appControl.sidebarCollapsed": "Collapsed the sidebar.";
175
- readonly "appControl.sidebarExpanded": "Expanded the sidebar.";
176
- readonly "appControl.sortNeedsField": "Say which column to sort by.";
177
- readonly "appControl.sorted": "Sorted {{page}} by {{field}}, {{direction}}.";
178
- readonly "appControl.sortedAlready": "{{page}} is already sorted by {{field}}, {{direction}}.";
179
- readonly "appControl.tabAlready": "You're already on the {{name}} tab.";
180
- readonly "appControl.tabOpened": "Opened the {{name}} tab.";
181
- readonly "appControl.what.column": "column";
182
- readonly "appControl.what.filter": "filter option";
183
- readonly "appControl.what.form": "form";
184
- readonly "appControl.what.menu": "menu";
185
- readonly "appControl.what.tab": "tab";
186
- readonly "appControl.what.workspace": "workspace";
187
- readonly "appControl.workspaceAlready": "You're already in {{name}}.";
188
- readonly "appControl.workspaceConfirm": "Switch to {{name}}? Nothing changes until you choose Switch on screen.";
189
- readonly "appControl.workspaceNone": "There is no other workspace to switch to.";
190
- readonly "appControl.workspaceSwitched": "Switching to {{name}}.";
191
- readonly "attachments.blockedMany": "{{count}} attachments didn't upload. Retry or remove them before sending.";
192
- readonly "attachments.blockedOne": "{{name}} didn't upload. Retry or remove it before sending.";
193
- readonly "attachments.cancelSaving": "Cancel";
194
- readonly "attachments.empty": "That file is empty.";
195
- readonly "attachments.failed": "Upload failed";
196
- readonly "attachments.imagesNotSent": "_Your photo was too large to include with this message, so the answer above is from the text and the file link only. Try a smaller or more tightly cropped photo._";
197
- readonly "attachments.inlineOnly": "Not saved to Files (over 5 MB). Its text is still included.";
198
- readonly "attachments.listLabel": "Attached files";
199
- readonly "attachments.messageLabel": "Files sent with this message";
200
- readonly "attachments.open": "Open {{name}}";
201
- readonly "attachments.preparing": "Reading file…";
202
- readonly "attachments.quotaFull": "File storage is full or not set up for this workspace, so the attachments couldn't be saved. Nothing was sent.";
203
- readonly "attachments.remove": "Remove {{name}}";
204
- readonly "attachments.retry": "Retry uploading {{name}}";
205
- readonly "attachments.retrySend": "Press Send to try again, or remove the file.";
206
- readonly "attachments.saveBusy": "The assistant started another reply, so nothing was sent. Your message and files are still here.";
207
- readonly "attachments.saveFailedMany": "{{count}} attachments couldn't be saved, so nothing was sent.";
208
- readonly "attachments.saveFailedOne": "{{name}} couldn't be saved, so nothing was sent.";
209
- readonly "attachments.saveMoved": "You switched conversations while the files were being saved, so nothing was sent. Your message and files are still here.";
210
- readonly "attachments.saving": "Saving your attachments…";
211
- readonly "attachments.savingProgress": "Saving {{percent}}%";
212
- readonly "attachments.tooLarge": "That file is larger than 10 MB.";
213
- readonly "attachments.tooLargeToSave": "That file is over 5 MB, so it can't be saved to Files, and no text could be read from it.";
214
- readonly "attachments.tooMany": "You can attach up to {{max}} files per message.";
215
- readonly "attachments.unreadable": "That file could not be read.";
216
- readonly "attachments.unsupportedImage": "This device can't read that image format, so it can't be resized to send. Save it as JPEG and try again.";
217
- readonly "attachments.uploading": "Uploading…";
218
- readonly "attachments.voiceDropped": "{{count}} attachment(s) couldn't be saved and weren't sent.";
219
- readonly "avatar.askAgain": "You can send your question when the avatar is on again.";
220
- readonly "avatar.askAlsoInChat": "This answer is also in Chat.";
221
- readonly "avatar.askAnswer": "Answer";
222
- readonly "avatar.askAskedIn": "Asked in: {{title}}";
223
- readonly "avatar.askBusy": "You can send your question when the assistant is ready.";
224
- readonly "avatar.askByTyping": "You can still turn the avatar on and type your questions below.";
225
- readonly "avatar.askCommitting": "You can send your question once the files in Chat are saved.";
226
- readonly "avatar.askCut": "The avatar stopped before the end of this answer. The whole answer is in Chat.";
227
- readonly "avatar.askEmpty": "Type a question below, and the avatar answers it aloud.";
228
- readonly "avatar.askExchangeLabel": "Last question and answer";
229
- readonly "avatar.askFailed": "The assistant couldn't answer. Your question is back in the box.";
230
- readonly "avatar.askFailedInChat": "The assistant couldn't answer. Your question is still in Chat.";
231
- readonly "avatar.askHint": "Enter to send · Shift+Enter for a new line";
232
- readonly "avatar.askLabel": "Type a question for the avatar";
233
- readonly "avatar.askMode": "This conversation can make changes, so typed questions to the avatar aren't available here. Start a new conversation to ask one.";
234
- readonly "avatar.askModePicked": "Typed questions work only in Ask. You can change that in Chat, but leaving this tab turns the avatar off.";
235
- readonly "avatar.askNeedsAvatar": "Turn on the avatar to send your question. You can type it now.";
236
- readonly "avatar.askNeedsVoice": "You can still turn the avatar on, but you ask it questions in a voice conversation.";
237
- readonly "avatar.askNoFiles": "To attach files, use Chat.";
238
- readonly "avatar.askNotHeard": "This answer wasn't read aloud: the avatar may still have been finishing the last answer.";
239
- readonly "avatar.askNotSpoken": "The avatar wasn't available, so this answer wasn't read aloud.";
240
- readonly "avatar.askNothing": "You can't ask the avatar anything in this conversation.";
241
- readonly "avatar.askPlaceholder": "Ask the avatar…";
242
- readonly "avatar.askReadOnly": "This conversation can't take new questions. Start a new conversation to ask one.";
243
- readonly "avatar.askShowAll": "Show the whole answer";
244
- readonly "avatar.askShowLess": "Show less";
245
- readonly "avatar.askSound": "Turn on the avatar's sound first.";
246
- readonly "avatar.askStarting": "You can send your question when the avatar is ready.";
247
- readonly "avatar.askYouAsked": "You asked";
248
- readonly "avatar.availableAgain": "You can start it again at {{time}}.";
249
- readonly "avatar.chooserEmpty": "No avatars are available.";
250
- readonly "avatar.chooserLabel": "Avatar";
251
- readonly "avatar.chooserLoading": "Loading avatars…";
252
- readonly "avatar.chooserLocked": "Turn off the avatar to change it.";
253
- readonly "avatar.chooserNone": "No avatar chosen";
254
- readonly "avatar.chooserOption": "Use {{name}}";
255
- readonly "avatar.chooserRetry": "Try again";
256
- readonly "avatar.chooserSelected": "{{name}} (selected)";
257
- readonly "avatar.chooserTitle": "Choose an avatar";
258
- readonly "avatar.consent": "Turning on Avatar shares the assistant's reply audio with LiveKit and Protoface to animate the avatar. This feature does not send your microphone audio to Protoface.";
259
- readonly "avatar.consentCancel": "Not now";
260
- readonly "avatar.consentConfirm": "Turn on the avatar";
261
- readonly "avatar.handsFreeOff": "Hands-free interrupt is off, so the avatar's voice can't interrupt itself. It stays off after you turn the avatar off; turn it back on in More options. You can still tap to interrupt.";
262
- readonly "avatar.problemAlreadyRunning": "An avatar is already running for you.";
263
- readonly "avatar.problemBudgetExhausted": "Avatar time is used up for now.";
264
- readonly "avatar.problemBudgetExhaustedEveryone": "Avatar time is used up for everyone for now.";
265
- readonly "avatar.problemBudgetExhaustedPerson": "Your avatar time is used up for now.";
266
- readonly "avatar.problemBudgetExhaustedWorkspace": "This workspace’s avatar time is used up for now.";
267
- readonly "avatar.problemCapacity": "Avatars are busy right now. Try again in a moment.";
268
- readonly "avatar.problemCapacityTimed": "Avatars are busy right now.";
269
- readonly "avatar.problemConnection": "The connection to the avatar was lost.";
270
- readonly "avatar.problemNeedsHostedVoice": "The avatar needs one of the assistant’s own voices. Choose one in the voice settings.";
271
- readonly "avatar.problemNotReady": "This avatar isn’t ready yet. Try another one.";
272
- readonly "avatar.problemPaused": "Avatars are paused for now.";
273
- readonly "avatar.problemPlaybackBlocked": "The browser blocked the avatar’s sound. Tap the avatar to turn it on.";
274
- readonly "avatar.problemProvider": "The avatar had a problem. Voice continues without it.";
275
- readonly "avatar.problemProviderNoVoice": "The avatar had a problem.";
276
- readonly "avatar.problemProviderOutOfCredits": "Avatars aren’t available right now. Try again later.";
277
- readonly "avatar.problemRateLimited": "You started avatars too quickly. Wait a minute and try again.";
278
- readonly "avatar.problemRateLimitedTimed": "You started avatars too quickly.";
279
- readonly "avatar.problemStartTimeout": "The avatar took too long to start. Try again in a moment.";
280
- readonly "avatar.problemUnavailable": "The avatar isn’t available here.";
281
- readonly "avatar.problemUnsupportedBrowser": "This browser can’t show the avatar.";
282
- readonly "avatar.stageLabel": "Live avatar";
283
- readonly "avatar.stageWaiting": "Waiting for the avatar…";
284
- readonly "avatar.stateEnding": "Stopping the avatar…";
285
- readonly "avatar.stateInterrupted": "The avatar was interrupted. You can keep talking.";
286
- readonly "avatar.stateOff": "Avatar off";
287
- readonly "avatar.stateOn": "Avatar on";
288
- readonly "avatar.stateReady": "Avatar ready";
289
- readonly "avatar.stateStarting": "Starting the avatar…";
290
- readonly "avatar.stateTimeLimit": "The avatar reached its time limit. Continuing with voice only.";
291
- readonly "avatar.stateTimeLimitNoVoice": "The avatar reached its time limit.";
292
- readonly "avatar.stateVoiceOnly": "The avatar is unavailable right now. Continuing with voice only.";
293
- readonly "avatar.stateVoiceOnlyNoVoice": "The avatar is unavailable right now.";
294
- readonly "avatar.stop": "Turn off the avatar";
295
- readonly "avatar.tabAvatar": "Avatar";
296
- readonly "avatar.tabChat": "Chat";
297
- readonly "avatar.tabLeaveHint": "Leaving the Avatar tab turns the avatar off.";
298
- readonly "avatar.tabsLabel": "Assistant views";
299
- readonly "avatar.toggle": "Live avatar";
300
- readonly "avatar.toggleHint": "Show the assistant as a speaking avatar during voice conversations.";
301
- readonly "avatar.turnOnStarting": "Starting the avatar…";
302
- readonly "avatar.voiceModeDefaultNamed": "Default for this avatar ({{name}})";
303
- readonly "avatar.voiceModeLabel": "Avatar voice";
304
- readonly "avatar.voiceModeMine": "Keep my current voice";
305
- readonly "avatar.voiceModeMineNamed": "Keep my current voice ({{name}})";
306
- readonly "avatar.voiceModeNextReplyHint": "Used from the avatar's next reply. The assistant's own voice doesn't change.";
307
- readonly "avatar.voiceStartBusy": "You can start a voice conversation when the assistant is ready.";
308
- readonly "avatar.voiceStartCommitting": "You can start a voice conversation once your attachments are saved.";
309
- readonly "avatar.voiceStartDictating": "Stop dictating to start a voice conversation.";
310
- readonly "avatar.voiceStartMode": "Voice conversations aren’t available in this mode.";
311
- readonly "avatar.voiceStartReadOnly": "This conversation can’t take new questions. Start a new conversation to ask by voice.";
312
- readonly "avatar.voiceStartUnavailable": "Voice conversations aren’t available here.";
313
- readonly "chatArea.placeholderActions": "What would you like me to do?";
314
- readonly "chatArea.placeholderGeneral": "Ask me anything…";
315
- readonly "chatInput.ariaLabel": "Message input";
316
- readonly "chatInput.send": "Send message";
317
- readonly "composer.attach": "Attach files or photos";
318
- readonly "composer.attachFull": "Attachment limit reached ({{max}})";
319
- readonly "composer.attachSource": "Attach from";
320
- readonly "composer.connectSource": "Connect a source";
321
- readonly "composer.dropHere": "Drop files to attach";
322
- readonly "composer.hint": "Enter to send · Shift+Enter for newline · drag or paste files to attach";
323
- readonly "composer.placeholder": "Ask me anything…";
324
- readonly "composer.voiceStart": "Dictate a message";
325
- readonly "composer.voiceStarting": "Starting the microphone — tap to cancel";
326
- readonly "composer.voiceStop": "Stop dictation";
327
- readonly "composer.writeAccessDenied": "Changes may not save — your role in this workspace does not currently allow edits. You can still plan and review an action.";
328
- readonly "conversationFilters.all": "All";
329
- readonly "conversationFilters.archived": "Archived";
330
- readonly "conversationFilters.chat": "Chat";
331
- readonly "conversationFilters.count": "{{count}} conversations";
332
- readonly "conversationFilters.countOne": "1 conversation";
333
- readonly "conversationFilters.legend": "Show";
334
- readonly "conversationFilters.none": "No conversations match";
335
- readonly "conversationFilters.pinned": "Pinned";
336
- readonly "conversationFilters.voice": "Voice";
337
- readonly "conversationList.badgeArchived": "Archived";
338
- readonly "conversationList.badgeMixed": "Chat + voice";
339
- readonly "conversationList.badgePinned": "Pinned";
340
- readonly "conversationList.badgeVoice": "Voice";
341
- readonly "conversationList.emptyArchived": "No archived conversations";
342
- readonly "conversationList.emptyChat": "No chat conversations";
343
- readonly "conversationList.emptyPinned": "No pinned conversations";
344
- readonly "conversationList.emptyVoice": "No voice conversations";
345
- readonly "conversationList.messageCount": "{{count}} messages";
346
- readonly "conversationList.messageCountOne": "1 message";
347
- readonly "conversationList.spokenCount": "{{count}} spoken";
348
- readonly "conversationList.spokenCountOne": "1 spoken";
349
- readonly "conversationList.voiceOnly": "Spoken conversation";
350
- readonly "conversations.archive": "Archive conversation";
351
- readonly "conversations.collapse": "Collapse history";
352
- readonly "conversations.collapseLabel": "Collapse";
353
- readonly "conversations.delete": "Delete conversation";
354
- readonly "conversations.empty": "No conversations yet";
355
- readonly "conversations.new": "New conversation";
356
- readonly "conversations.pin": "Pin conversation";
357
- readonly "conversations.rename": "Rename conversation";
358
- readonly "conversations.renameLabel": "Conversation title";
359
- readonly "conversations.saveTitle": "Save title";
360
- readonly "conversations.startNew": "Start a new conversation";
361
- readonly "conversations.title": "History";
362
- readonly "conversations.titleLimit": "Titles are up to {{limit}} characters";
363
- readonly "conversations.unarchive": "Unarchive conversation";
364
- readonly "conversations.unpin": "Unpin conversation";
365
- readonly "deleteConversation.body": "“{{title}}” is removed from all your devices now and permanently erased after 30 days. To hide it without deleting, archive it instead.";
366
- readonly "deleteConversation.bodyDevice": "“{{title}}” is deleted from this device. This can't be undone.";
367
- readonly "deleteConversation.cancel": "Cancel";
368
- readonly "deleteConversation.confirm": "Delete";
369
- readonly "deleteConversation.nothing": "There is no conversation to delete.";
370
- readonly "deleteConversation.opened": "Opened the delete confirmation. Choose Delete or Cancel on screen.";
371
- readonly "deleteConversation.title": "Delete this conversation?";
372
- readonly "empty.subtitle": "You're viewing {{page}}. Ask about it, or pick a suggestion below.";
373
- readonly "empty.subtitleNoPage": "Ask me anything, or pick a suggestion below.";
374
- readonly "empty.title": "How can I help?";
375
- readonly "export.json": "Export as JSON";
376
- readonly "export.markdown": "Export as Markdown";
377
- readonly "header.autoRead": "Auto-read replies";
378
- readonly "header.autoSpeakOff": "Stop reading replies aloud";
379
- readonly "header.autoSpeakOn": "Read replies aloud automatically";
380
- readonly "header.close": "Close assistant";
381
- readonly "header.context": "Context: {{page}}";
382
- readonly "header.dock": "Dock to side panel";
383
- readonly "header.float": "Float chat window";
384
- readonly "header.history": "Conversation history";
385
- readonly "header.more": "More options";
386
- readonly "header.newConversation": "New conversation";
387
- readonly "header.preview": "Preview";
388
- readonly "header.ready": "Ready";
389
- readonly "header.title": "AI Assistant";
390
- readonly "history.archivedNotice": "Archived. It stays out of your list until you unarchive it.";
391
- readonly "history.badgeLoading": "Loading…";
392
- readonly "history.badgeNotSaved": "Not saved";
393
- readonly "history.badgeReadOnly": "Read-only";
394
- readonly "history.deleteNotSaved": "This device's storage is full, so that delete isn't saved here yet. Keep this page open until it reaches the server.";
395
- readonly "history.deletedElsewhere": "The conversation you had open was deleted on another device.";
396
- readonly "history.dismiss": "Dismiss";
397
- readonly "history.groupDevice": "On this device";
398
- readonly "history.groupWorkspace": "This workspace";
399
- readonly "history.legacyReadOnly": "This conversation was saved by an earlier version of the assistant. You can read it, but it can't be continued.";
400
- readonly "history.loadFailed": "Couldn't load this conversation.";
401
- readonly "history.loading": "Loading conversation…";
402
- readonly "history.notSavedInvalid": "Part of this conversation couldn't be saved. It stays on this device.";
403
- readonly "history.notSavedQuota": "Not saved yet: this workspace has reached its conversation limit. It will be saved when there is room.";
404
- readonly "history.notSavedScope": "Some turns were sent from another workspace. They stay on this device.";
405
- readonly "history.pinLimit": "You can pin up to {{limit}} conversations. Unpin one first.";
406
- readonly "history.showEarlier": "Show earlier messages";
407
- readonly "history.showOlder": "Show older conversations";
408
- readonly "history.tryAgain": "Try again";
409
- readonly "history.unarchive": "Unarchive";
410
- readonly "history.untitled": "Untitled conversation";
411
- readonly "historySearch.busy": "Search is busy right now. Showing matches on this device.";
412
- readonly "historySearch.clear": "Clear search";
413
- readonly "historySearch.failed": "Couldn't search this workspace. Showing matches on this device.";
414
- readonly "historySearch.label": "Search conversations";
415
- readonly "historySearch.moreFailed": "Couldn't load more results. Try again.";
416
- readonly "historySearch.searching": "Searching…";
417
- readonly "historySearch.showMore": "Show more results";
418
- readonly "historySearch.tooShort": "Type 2 or more characters to search this workspace";
419
- readonly "language.inputLabel": "Language";
420
- readonly "language.replyLabel": "Assistant replies in";
421
- readonly "language.replyMatch": "Match my language";
422
- readonly "leaveConfirm.body": "You have unsaved changes in {{label}}. If you leave now, they will be lost.";
423
- readonly "leaveConfirm.keep": "Keep editing";
424
- readonly "leaveConfirm.leave": "Leave";
425
- readonly "leaveConfirm.title": "Leave without saving?";
426
- readonly "localCommand.alreadyFollowingDevice": "The theme already follows your device.";
427
- readonly "localCommand.alreadyHere": "You're already on {{page}}.";
428
- readonly "localCommand.anotherPage": "another page";
429
- readonly "localCommand.backDone": "Back on {{page}}.";
430
- readonly "localCommand.choose": "More than one page is called “{{page}}”. Which one?";
431
- readonly "localCommand.chooseKinds": "Do you mean the {{first}} or the {{second}}?";
432
- readonly "localCommand.chooseKindsMany": "Which one do you mean?";
433
- readonly "localCommand.chooseLinked": "My last reply links more than one page. Which one?";
434
- readonly "localCommand.chooseRecord": "More than one {{noun}} is called “{{name}}”. Which one?";
435
- readonly "localCommand.followingDevice": "The theme now follows your device.";
436
- readonly "localCommand.linkNotOpenable": "I can't open that link from here.";
437
- readonly "localCommand.newTab": "{{page}} opens in a separate tab. If nothing opened, use this link: {{link}}";
438
- readonly "localCommand.notOpened": "Couldn't open {{page}}.";
439
- readonly "localCommand.opened": "Opened {{page}}.";
440
- readonly "localCommand.pickFromList": "Pick one of the pages listed above.";
441
- readonly "localCommand.previousPage": "the previous page";
442
- readonly "localCommand.redirected": "{{page}} didn't open. You're on {{landed}} instead.";
443
- readonly "localCommand.themeAlreadyFamily": "You're already on a {{theme}} theme.";
444
- readonly "localCommand.themeAlreadyNamed": "The {{theme}} theme is already on.";
445
- readonly "localCommand.themeDark": "dark";
446
- readonly "localCommand.themeHighContrast": "high-contrast";
447
- readonly "localCommand.themeLight": "light";
448
- readonly "localCommand.themeSet": "Switched to the {{theme}} theme.";
449
- readonly "localCommand.thisPage": "this page";
450
- readonly "localCommand.unsavedChanges": "You have unsaved changes in {{label}}. Save or discard them, then ask again.";
451
- readonly "markdown.closePreview": "Close image preview";
452
- readonly "markdown.copied": "Copied";
453
- readonly "markdown.copy": "Copy";
454
- readonly "markdown.copyCode": "Copy code";
455
- readonly "markdown.enlargeImage": "Enlarge image";
456
- readonly "markdown.enlargeImageNamed": "Enlarge image: {{alt}}";
457
- readonly "markdown.imagePreview": "Image preview";
458
- readonly "markdown.imagePreviewNamed": "Image preview: {{alt}}";
459
- readonly "markdown.imageUnavailable": "Image unavailable";
460
- readonly "markdown.showRemoteImage": "Show remote image";
461
- readonly "markdown.showRemoteImageNamed": "Show image from {{host}}";
462
- readonly "message.copied": "Copied";
463
- readonly "message.copy": "Copy message";
464
- readonly "message.copyShort": "Copy";
465
- readonly "message.downloads": "Downloads";
466
- readonly "message.retry": "Retry";
467
- readonly "message.speak": "Read this reply aloud";
468
- readonly "message.speakShort": "Listen";
469
- readonly "message.stopSpeaking": "Stop reading aloud";
470
- readonly "message.stopSpeakingShort": "Stop";
471
- readonly "messageList.ariaLabel": "Conversation messages";
472
- readonly "modeSelector.ariaLabel": "Select assistant mode";
473
- readonly "modeSelector.auto": "Auto";
474
- readonly "modeSelector.autoHint": "Answers your questions, and proposes changes for you to approve";
475
- readonly "offer.announce": "Suggested page: {{page}}";
476
- readonly "offer.expired": "That suggestion has expired. Ask again, or use the menu.";
477
- readonly "offer.hintLink": "Tap, or say “take me there”.";
478
- readonly "offer.hintRead": "Tap, or say “take me there” or “yes”.";
479
- readonly "offer.keptForUnsaved": "You have unsaved changes in {{label}}, so I stayed here. Tap Open {{page}} when you're ready.";
480
- readonly "offer.notAvailable": "{{page}} isn't in your menu right now.";
481
- readonly "offer.open": "Open {{page}}";
482
- readonly "overlay.launcher": "AI Assistant";
483
- readonly "overlay.launcherTitle": "AI Assistant ({{shortcut}})";
484
- readonly "panel.ariaLabel": "AI Assistant";
485
- readonly "pendingWrite.approve": "Approve this change";
486
- readonly "pendingWrite.approved": "The assistant's next reply says whether it was carried out.";
487
- readonly "pendingWrite.approvedAria": "Approved change request";
488
- readonly "pendingWrite.approvedNotSent": "The assistant was not told to go ahead with it. If you still want this change, ask for it again.";
489
- readonly "pendingWrite.approvedPrompt": "I approved that change — go ahead.";
490
- readonly "pendingWrite.approvedTitle": "You approved this change";
491
- readonly "pendingWrite.approving": "Approving…";
492
- readonly "pendingWrite.aria": "Change awaiting your approval";
493
- readonly "pendingWrite.expired": "It stays here as a record of what was asked. If you still need the change, ask again.";
494
- readonly "pendingWrite.expiredAria": "Expired change request";
495
- readonly "pendingWrite.expiredTitle": "This request can no longer be approved";
496
- readonly "pendingWrite.noValues": "No field values were included with this request.";
497
- readonly "pendingWrite.subtitle": "The assistant asked to make this change and was stopped. Approve it, or say what to change.";
498
- readonly "pendingWrite.subtitleReply": "The assistant asked to make this change and was stopped. Reply to approve or decline.";
499
- readonly "pendingWrite.title": "Nothing has changed yet";
500
- readonly "preview.close": "Close preview";
501
- readonly "preview.failed": "The preview could not be displayed.";
502
- readonly "preview.title": "Preview";
503
- readonly "sheet.collapse": "Shrink the assistant";
504
- readonly "sheet.expand": "Expand the assistant";
505
- readonly "speech.codeBlock": "Code block";
506
- readonly "speech.deviceFallback": "Device voice used: the selected voice was unavailable.";
507
- readonly "speech.emailAt": "at";
508
- readonly "speech.emailDot": "dot";
509
- readonly "speech.image": "image";
510
- readonly "speech.largeTable": "Table with {{rows}} rows and {{columns}} columns";
511
- readonly "speech.link": "link";
512
- readonly "speech.nestedItem": "Sub-item {{ordinal}}";
513
- readonly "speech.noVoiceForReply": "This reply is in {{language}}, and no {{language}} voice is installed on this device.";
514
- readonly "speech.noVoicesOnDevice": "This device has no speech voices installed. Add one in your device speech or accessibility settings.";
515
- readonly "speech.truncated": "The rest of this message is not read aloud";
516
- readonly "spokenTurns.many": "{{count}} spoken turns are kept out of this thread";
517
- readonly "spokenTurns.one": "1 spoken turn is kept out of this thread";
518
- readonly "spokenTurns.view": "View transcript";
519
- readonly "tool.details": "Details";
520
- readonly "tool.done": "Done";
521
- readonly "tool.failed": "Some steps failed";
522
- readonly "tool.working": "Working on it…";
523
- readonly "voice.denied": "Microphone access is blocked. Allow it in your browser settings to dictate.";
524
- readonly "voice.failed": "Dictation stopped unexpectedly.";
525
- readonly "voice.graceHint": "How long the assistant waits in silence before it sends what you said. Start talking again and it carries on with the same message.";
526
- readonly "voice.graceLabel": "Wait after I stop talking";
527
- readonly "voice.graceOption": "{{seconds}} seconds";
528
- readonly "voice.graceOptionDefault": "{{seconds}} seconds (default)";
529
- readonly "voice.handsFreeHint": "Let the assistant listen while it answers, so you can speak over it to correct it. Works best with headphones. You can always tap to interrupt.";
530
- readonly "voice.handsFreeLabel": "Hands-free interrupt (beta)";
531
- readonly "voice.languageFollowApp": "Same as interface";
532
- readonly "voice.languageLabel": "Language you speak to the assistant";
533
- readonly "voice.languageNotSupported": "This browser cannot recognise spoken {{language}}. Try a different browser, or type instead.";
534
- readonly "voice.listening": "Listening… speak now, tap the square to stop";
535
- readonly "voice.network": "Speech recognition is offline right now.";
536
- readonly "voice.noMic": "No microphone was found.";
537
- readonly "voice.preview": "Hear this voice";
538
- readonly "voice.previewShort": "Preview";
539
- readonly "voice.starting": "Starting the microphone…";
540
- readonly "voice.voiceAuto": "Best available";
541
- readonly "voice.voiceLabel": "Voice that reads replies";
542
- readonly "voiceSession.collapse": "Shrink to the compact controller";
543
- readonly "voiceSession.connecting": "Starting the microphone…";
544
- readonly "voiceSession.continueInChat": "Continue in chat";
545
- readonly "voiceSession.correcting": "Stopped that answer — listening to your correction";
546
- readonly "voiceSession.continuedIntro": "Continued from a voice conversation. You asked about:";
547
- readonly "voiceSession.continuedMore": "…and {{count}} more";
548
- readonly "voiceSession.continuedNothing": "Continued from a voice conversation.";
549
- readonly "voiceSession.earlierLabel": "Earlier";
550
- readonly "voiceSession.end": "End the voice conversation";
551
- readonly "voiceSession.endShort": "End";
552
- readonly "voiceSession.endpointGrace": "Still listening — take your time";
553
- readonly "voiceSession.expand": "Expand the conversation to full screen";
554
- readonly "voiceSession.expandPanel": "Show the conversation in the panel";
555
- readonly "voiceSession.holding": "Take your time — tap “I’m done” when you finish";
556
- readonly "voiceSession.imDone": "I’m done";
557
- readonly "voiceSession.imDoneHint": "Send what you said now";
558
- readonly "voiceSession.interrupt": "Stop the assistant and speak";
559
- readonly "voiceSession.interrupting": "Stopped — go ahead";
560
- readonly "voiceSession.letMeFinish": "Let me finish";
561
- readonly "voiceSession.letMeFinishHint": "Pause sending until you tap “I’m done”";
562
- readonly "voiceSession.listening": "Listening…";
563
- readonly "voiceSession.micDenied": "Microphone access is blocked. Allow it in your browser settings to talk.";
564
- readonly "voiceSession.mute": "Turn the microphone off";
565
- readonly "voiceSession.muted": "Microphone off";
566
- readonly "voiceSession.newSession": "New voice session";
567
- readonly "voiceSession.noSpeechSupport": "This browser cannot listen. Try a different browser, or type instead.";
568
- readonly "voiceSession.noVoiceSupport": "This device has no voice that can speak this language.";
569
- readonly "voiceSession.noticeHandsFreeFallback": "Hands-free interrupt turned itself off for this conversation. Tap to interrupt still works.";
570
- readonly "voiceSession.noticeHandsFreeNothingHeard": "Stopped, but I did not catch that. Say it again, or tap to replay.";
571
- readonly "voiceSession.noticeNetwork": "Speech recognition lost its connection. Check your network — it will retry.";
572
- readonly "voiceSession.noticeNotCapturing": "The microphone did not start. Check that this site is allowed to use it, then try again.";
573
- readonly "voiceSession.noticeNothingHeard": "Nothing heard yet. Check your microphone is not muted or in use by another app.";
574
- readonly "voiceSession.noticeRecognitionFailed": "Speech recognition stopped unexpectedly. It will retry — if it keeps happening, reload the page.";
575
- readonly "voiceSession.noticeReplyNotHeard": "That reply was not read aloud: earlier audio may still be playing. Read it in the transcript.";
576
- readonly "voiceSession.save": "Save transcript";
577
- readonly "voiceSession.savedAt": "Saved";
578
- readonly "voiceSession.sessionLabel": "Session";
579
- readonly "voiceSession.speakerAssistant": "Assistant";
580
- readonly "voiceSession.speakerYou": "You";
581
- readonly "voiceSession.speaking": "Speaking — tap to stop";
582
- readonly "voiceSession.start": "Start a voice conversation";
583
- readonly "voiceSession.streamNoticeBody": "Your voice is sent to Google Cloud Speech-to-Text and processed in the EU. We don't store the audio.";
584
- readonly "voiceSession.streamNoticeContinue": "Continue";
585
- readonly "voiceSession.streamNoticeNotNow": "Not now";
586
- readonly "voiceSession.title": "Voice conversation";
587
- readonly "voiceSession.transcript": "Voice conversation";
588
- readonly "voiceSession.transcriptClose": "Close the transcript";
589
- readonly "voiceSession.transcriptEmpty": "Nothing spoken yet in this session.";
590
- readonly "voiceSession.transcriptHint": "Spoken turns in this conversation — kept out of your typed chat.";
591
- readonly "voiceSession.transcriptTitle": "Voice transcript";
592
- readonly "voiceSession.unmute": "Turn the microphone on";
593
- readonly "writeConsent.body": "In {{mode}} mode the assistant can read AND change your data — creating records, logging activity, updating details, and more, on your behalf.";
594
- readonly "writeConsent.cancel": "Stay in {{mode}}";
595
- readonly "writeConsent.confirm": "Enable {{mode}}";
596
- readonly "writeConsent.title": "Switch to {{mode}} mode?";
597
- readonly "writeConsent.unconfirmed": "It does not stop to ask before each change — it makes changes as soon as it decides to. Only continue if you want the assistant to change your data without asking first.";
598
- readonly "writeProposal.aria": "Proposed change: {{label}}";
599
- readonly "writeProposal.cancel": "Cancel";
600
- readonly "writeProposal.confirmFallback": "Confirm this change";
601
- readonly "writeProposal.confirming": "Confirming…";
602
- readonly "writeProposal.consequences": "What this will do";
603
- readonly "writeProposal.dialog.close": "Close";
604
- readonly "writeProposal.dialog.exactly": "Exactly what will happen";
605
- readonly "writeProposal.dialog.noLongerPending": "This change can no longer be confirmed here.";
606
- readonly "writeProposal.dialog.title": "Confirm this change";
607
- readonly "writeProposal.diff.absent": "(not set)";
608
- readonly "writeProposal.diff.after": "After";
609
- readonly "writeProposal.diff.before": "Before";
610
- readonly "writeProposal.diff.change": "Change";
611
- readonly "writeProposal.diff.gateway": "Data";
612
- readonly "writeProposal.diff.none": "No values changed";
613
- readonly "writeProposal.diff.value": "Value";
614
- readonly "writeProposal.executionFenced": "You can review or cancel this change. Running it from the assistant becomes available once secure confirmation is enabled.";
615
- readonly "writeProposal.expiresIn": "Expires in {{time}}";
616
- readonly "writeProposal.expiresInAbout": "Expires in about {{minutes}} min";
617
- readonly "writeProposal.expiresSoon": "Expires in under a minute";
618
- readonly "writeProposal.gateway.global": "Account and organization data";
619
- readonly "writeProposal.gateway.workspace": "Workspace data";
620
- readonly "writeProposal.hiddenValue": "Hidden value";
621
- readonly "writeProposal.hideValue": "Hide";
622
- readonly "writeProposal.inert": "This change can no longer be confirmed here. Nothing was done; ask the assistant to prepare it again if you still want it.";
623
- readonly "writeProposal.kind.bulk": "Changes several items";
624
- readonly "writeProposal.kind.credential": "Touches credentials";
625
- readonly "writeProposal.kind.destructive": "Deletes data";
626
- readonly "writeProposal.kind.financial": "Involves money";
627
- readonly "writeProposal.kind.irreversible": "Can't be undone";
628
- readonly "writeProposal.kind.permission": "Changes access";
629
- readonly "writeProposal.notApprovable": "This change isn't ready to confirm. If it stays this way, ask the assistant to prepare it again.";
630
- readonly "writeProposal.notAvailableYet": "Confirming changes from the assistant isn't available in this session yet.";
631
- readonly "writeProposal.repeat": "You made this same change recently. Confirming makes it again.";
632
- readonly "writeProposal.review": "Review & confirm…";
633
- readonly "writeProposal.revision": "Revised — version {{revision}}";
634
- readonly "writeProposal.showValue": "Show";
635
- readonly "writeProposal.status.declined": "Cancelled";
636
- readonly "writeProposal.status.executing": "Working…";
637
- readonly "writeProposal.status.expired": "Expired — nothing was done";
638
- readonly "writeProposal.status.failedNoDetail": "Didn't go through";
639
- readonly "writeProposal.status.failedNotPermitted": "Didn't go through — you don't have permission";
640
- readonly "writeProposal.status.outcomeUnknown": "Couldn't confirm — check before trying again";
641
- readonly "writeProposal.status.pending": "Waiting for you";
642
- readonly "writeProposal.status.succeeded": "Done — {{summary}}";
643
- readonly "writeProposal.status.succeededNoDetail": "Done";
644
- readonly "writeProposal.status.superseded": "Replaced — the conversation moved on";
645
- readonly "writeProposal.targetCount": "Items affected: {{count}}";
646
- readonly "writeProposal.timeUp": "Time's up — this can no longer be confirmed";
647
- readonly "writeProposal.title": "Review and approve this change.";
648
- readonly "writeProposal.values": "Values";
649
- readonly "writeProposal.variablesOmitted": "{{count}} more values not shown";
650
- readonly "writeProposal.waitForTurn": "You can confirm once the assistant finishes replying.";
121
+ readonly 'apiCalls.consentBody': "In Take action mode the assistant can read AND change your data — creating records, logging activity, updating details, and more, on your behalf.";
122
+ readonly 'apiCalls.consentBody2': "It will describe what it is about to do and ask you to confirm before making a change. Only continue if you want the assistant to take actions for you.";
123
+ readonly 'apiCalls.consentCancel': "Stay in Ask";
124
+ readonly 'apiCalls.consentConfirm': "Enable Take action";
125
+ readonly 'apiCalls.consentTitle': "Switch to Take action mode?";
126
+ readonly 'appControl.ambiguous': "More than one {{what}} matches “{{name}}”: {{options}}. Say which one.";
127
+ readonly 'appControl.blockedPermission': "That isn't available to you here.";
128
+ readonly 'appControl.blockedVoice': "I can't open that while the voice screen is up. End the voice session, or use the button in the assistant's header.";
129
+ readonly 'appControl.closed.preview': "Closed the AI preview.";
130
+ readonly 'appControl.dialog.cancel': "Cancel";
131
+ readonly 'appControl.dialog.logoutBody': "You'll be signed out of this account on this device.";
132
+ readonly 'appControl.dialog.logoutConfirm': "Log out";
133
+ readonly 'appControl.dialog.logoutTitle': "Log out?";
134
+ readonly 'appControl.dialog.workspaceBody': "You'll switch to {{name}}. The page may reload.";
135
+ readonly 'appControl.dialog.workspaceConfirm': "Switch";
136
+ readonly 'appControl.dialog.workspaceTitle': "Switch workspace?";
137
+ readonly 'appControl.directionAsc': "ascending";
138
+ readonly 'appControl.directionDesc': "descending";
139
+ readonly 'appControl.entryAlreadyCollapsed': "{{name}} is already collapsed.";
140
+ readonly 'appControl.entryAlreadyExpanded': "{{name}} is already expanded.";
141
+ readonly 'appControl.entryCollapsed': "Collapsed {{name}}.";
142
+ readonly 'appControl.entryExpanded': "Expanded {{name}}.";
143
+ readonly 'appControl.failed': "That didn't work. Nothing was changed.";
144
+ readonly 'appControl.filterAlready': "{{filter}}: {{option}} is already on.";
145
+ readonly 'appControl.filterChoose': "Which {{filter}}? Options: {{options}}.";
146
+ readonly 'appControl.filterCleared': "Cleared the {{filter}} filter.";
147
+ readonly 'appControl.filterSet': "Filtered by {{filter}}: {{option}}.";
148
+ readonly 'appControl.filtersCleared': "Cleared the filters.";
149
+ readonly 'appControl.formOpened': "Opened {{name}}. Nothing is saved until you submit it.";
150
+ readonly 'appControl.languageAlready': "The app is already in {{language}}.";
151
+ readonly 'appControl.languageNotOffered': "{{language}} isn't one of the languages this app offers.";
152
+ readonly 'appControl.languageSet': "The app language is now {{language}}. Assistant replies and voice keep their own settings.";
153
+ readonly 'appControl.logoutConfirm': "Log out of your account? Nothing changes until you choose Log out on screen.";
154
+ readonly 'appControl.logoutDone': "Logging you out.";
155
+ readonly 'appControl.notFound.filter': "{{page}} has no filter option called “{{name}}”. Filters: {{options}}.";
156
+ readonly 'appControl.notFound.filterOption': "The {{filter}} filter has no option called “{{name}}”. Options: {{options}}.";
157
+ readonly 'appControl.notFound.form': "There's no “{{name}}” form to open on {{page}}. Available: {{options}}.";
158
+ readonly 'appControl.notFound.sort': "{{page}} can't be sorted by “{{name}}”. Columns: {{options}}.";
159
+ readonly 'appControl.notFound.tab': "There's no tab called “{{name}}” on {{page}}. Tabs: {{options}}.";
160
+ readonly 'appControl.notFound.workspace': "I couldn't find a workspace called “{{name}}”. You can switch to: {{options}}.";
161
+ readonly 'appControl.opened.context': "Opened the workspace switcher.";
162
+ readonly 'appControl.opened.conversation': "Started a new conversation.";
163
+ readonly 'appControl.opened.help': "Opened help and keyboard shortcuts.";
164
+ readonly 'appControl.opened.history': "Opened your conversation history.";
165
+ readonly 'appControl.opened.notifications': "Opened your notifications.";
166
+ readonly 'appControl.opened.preview': "Opened the AI preview.";
167
+ readonly 'appControl.opened.transcript': "Opened the voice transcript.";
168
+ readonly 'appControl.searchCleared': "Cleared the search.";
169
+ readonly 'appControl.searchOpened': "Opened search.";
170
+ readonly 'appControl.searchOpenedFor': "Opened search for “{{query}}”.";
171
+ readonly 'appControl.searched': "Searched {{page}} for “{{query}}”.";
172
+ readonly 'appControl.sidebarAlreadyCollapsed': "The sidebar is already collapsed.";
173
+ readonly 'appControl.sidebarAlreadyExpanded': "The sidebar is already expanded.";
174
+ readonly 'appControl.sidebarCollapsed': "Collapsed the sidebar.";
175
+ readonly 'appControl.sidebarExpanded': "Expanded the sidebar.";
176
+ readonly 'appControl.sortNeedsField': "Say which column to sort by.";
177
+ readonly 'appControl.sorted': "Sorted {{page}} by {{field}}, {{direction}}.";
178
+ readonly 'appControl.sortedAlready': "{{page}} is already sorted by {{field}}, {{direction}}.";
179
+ readonly 'appControl.tabAlready': "You're already on the {{name}} tab.";
180
+ readonly 'appControl.tabOpened': "Opened the {{name}} tab.";
181
+ readonly 'appControl.what.column': "column";
182
+ readonly 'appControl.what.filter': "filter option";
183
+ readonly 'appControl.what.form': "form";
184
+ readonly 'appControl.what.menu': "menu";
185
+ readonly 'appControl.what.tab': "tab";
186
+ readonly 'appControl.what.workspace': "workspace";
187
+ readonly 'appControl.workspaceAlready': "You're already in {{name}}.";
188
+ readonly 'appControl.workspaceConfirm': "Switch to {{name}}? Nothing changes until you choose Switch on screen.";
189
+ readonly 'appControl.workspaceNone': "There is no other workspace to switch to.";
190
+ readonly 'appControl.workspaceSwitched': "Switching to {{name}}.";
191
+ readonly 'attachments.blockedMany': "{{count}} attachments didn't upload. Retry or remove them before sending.";
192
+ readonly 'attachments.blockedOne': "{{name}} didn't upload. Retry or remove it before sending.";
193
+ readonly 'attachments.cancelSaving': "Cancel";
194
+ readonly 'attachments.empty': "That file is empty.";
195
+ readonly 'attachments.failed': "Upload failed";
196
+ readonly 'attachments.imagesNotSent': "_Your photo was too large to include with this message, so the answer above is from the text and the file link only. Try a smaller or more tightly cropped photo._";
197
+ readonly 'attachments.inlineOnly': "Not saved to Files (over 5 MB). Its text is still included.";
198
+ readonly 'attachments.listLabel': "Attached files";
199
+ readonly 'attachments.messageLabel': "Files sent with this message";
200
+ readonly 'attachments.open': "Open {{name}}";
201
+ readonly 'attachments.preparing': "Reading file…";
202
+ readonly 'attachments.quotaFull': "File storage is full or not set up for this workspace, so the attachments couldn't be saved. Nothing was sent.";
203
+ readonly 'attachments.remove': "Remove {{name}}";
204
+ readonly 'attachments.retry': "Retry uploading {{name}}";
205
+ readonly 'attachments.retrySend': "Press Send to try again, or remove the file.";
206
+ readonly 'attachments.saveBusy': "The assistant started another reply, so nothing was sent. Your message and files are still here.";
207
+ readonly 'attachments.saveFailedMany': "{{count}} attachments couldn't be saved, so nothing was sent.";
208
+ readonly 'attachments.saveFailedOne': "{{name}} couldn't be saved, so nothing was sent.";
209
+ readonly 'attachments.saveMoved': "You switched conversations while the files were being saved, so nothing was sent. Your message and files are still here.";
210
+ readonly 'attachments.saving': "Saving your attachments…";
211
+ readonly 'attachments.savingProgress': "Saving {{percent}}%";
212
+ readonly 'attachments.tooLarge': "That file is larger than 10 MB.";
213
+ readonly 'attachments.tooLargeToSave': "That file is over 5 MB, so it can't be saved to Files, and no text could be read from it.";
214
+ readonly 'attachments.tooMany': "You can attach up to {{max}} files per message.";
215
+ readonly 'attachments.unreadable': "That file could not be read.";
216
+ readonly 'attachments.unsupportedImage': "This device can't read that image format, so it can't be resized to send. Save it as JPEG and try again.";
217
+ readonly 'attachments.uploading': "Uploading…";
218
+ readonly 'attachments.voiceDropped': "{{count}} attachment(s) couldn't be saved and weren't sent.";
219
+ readonly 'avatar.askAgain': "You can send your question when the avatar is on again.";
220
+ readonly 'avatar.askAlsoInChat': "This answer is also in Chat.";
221
+ readonly 'avatar.askAnswer': "Answer";
222
+ readonly 'avatar.askAskedIn': "Asked in: {{title}}";
223
+ readonly 'avatar.askBusy': "You can send your question when the assistant is ready.";
224
+ readonly 'avatar.askByTyping': "You can still turn the avatar on and type your questions below.";
225
+ readonly 'avatar.askCommitting': "You can send your question once the files in Chat are saved.";
226
+ readonly 'avatar.askCut': "The avatar stopped before the end of this answer. The whole answer is in Chat.";
227
+ readonly 'avatar.askEmpty': "Type a question below, and the avatar answers it aloud.";
228
+ readonly 'avatar.askExchangeLabel': "Last question and answer";
229
+ readonly 'avatar.askFailed': "The assistant couldn't answer. Your question is back in the box.";
230
+ readonly 'avatar.askFailedInChat': "The assistant couldn't answer. Your question is still in Chat.";
231
+ readonly 'avatar.askHint': "Enter to send · Shift+Enter for a new line";
232
+ readonly 'avatar.askLabel': "Type a question for the avatar";
233
+ readonly 'avatar.askMode': "This conversation can make changes, so typed questions to the avatar aren't available here. Start a new conversation to ask one.";
234
+ readonly 'avatar.askModePicked': "Typed questions work only in Ask. You can change that in Chat, but leaving this tab turns the avatar off.";
235
+ readonly 'avatar.askNeedsAvatar': "Turn on the avatar to send your question. You can type it now.";
236
+ readonly 'avatar.askNeedsVoice': "You can still turn the avatar on, but you ask it questions in a voice conversation.";
237
+ readonly 'avatar.askNoFiles': "To attach files, use Chat.";
238
+ readonly 'avatar.askNotHeard': "This answer wasn't read aloud: the avatar may still have been finishing the last answer.";
239
+ readonly 'avatar.askNotSpoken': "The avatar wasn't available, so this answer wasn't read aloud.";
240
+ readonly 'avatar.askNothing': "You can't ask the avatar anything in this conversation.";
241
+ readonly 'avatar.askPlaceholder': "Ask the avatar…";
242
+ readonly 'avatar.askReadOnly': "This conversation can't take new questions. Start a new conversation to ask one.";
243
+ readonly 'avatar.askShowAll': "Show the whole answer";
244
+ readonly 'avatar.askShowLess': "Show less";
245
+ readonly 'avatar.askSound': "Turn on the avatar's sound first.";
246
+ readonly 'avatar.askStarting': "You can send your question when the avatar is ready.";
247
+ readonly 'avatar.askYouAsked': "You asked";
248
+ readonly 'avatar.availableAgain': "You can start it again at {{time}}.";
249
+ readonly 'avatar.chooserEmpty': "No avatars are available.";
250
+ readonly 'avatar.chooserLabel': "Avatar";
251
+ readonly 'avatar.chooserLoading': "Loading avatars…";
252
+ readonly 'avatar.chooserLocked': "Turn off the avatar to change it.";
253
+ readonly 'avatar.chooserNone': "No avatar chosen";
254
+ readonly 'avatar.chooserOption': "Use {{name}}";
255
+ readonly 'avatar.chooserRetry': "Try again";
256
+ readonly 'avatar.chooserSelected': "{{name}} (selected)";
257
+ readonly 'avatar.chooserTitle': "Choose an avatar";
258
+ readonly 'avatar.consent': "Turning on Avatar shares the assistant's reply audio with LiveKit and Protoface to animate the avatar. This feature does not send your microphone audio to Protoface.";
259
+ readonly 'avatar.consentCancel': "Not now";
260
+ readonly 'avatar.consentConfirm': "Turn on the avatar";
261
+ readonly 'avatar.handsFreeOff': "Hands-free interrupt is off, so the avatar's voice can't interrupt itself. It stays off after you turn the avatar off; turn it back on in More options. You can still tap to interrupt.";
262
+ readonly 'avatar.problemAlreadyRunning': "An avatar is already running for you.";
263
+ readonly 'avatar.problemBudgetExhausted': "Avatar time is used up for now.";
264
+ readonly 'avatar.problemBudgetExhaustedEveryone': "Avatar time is used up for everyone for now.";
265
+ readonly 'avatar.problemBudgetExhaustedPerson': "Your avatar time is used up for now.";
266
+ readonly 'avatar.problemBudgetExhaustedWorkspace': "This workspace’s avatar time is used up for now.";
267
+ readonly 'avatar.problemCapacity': "Avatars are busy right now. Try again in a moment.";
268
+ readonly 'avatar.problemCapacityTimed': "Avatars are busy right now.";
269
+ readonly 'avatar.problemConnection': "The connection to the avatar was lost.";
270
+ readonly 'avatar.problemNeedsHostedVoice': "The avatar needs one of the assistant’s own voices. Choose one in the voice settings.";
271
+ readonly 'avatar.problemNotReady': "This avatar isn’t ready yet. Try another one.";
272
+ readonly 'avatar.problemPaused': "Avatars are paused for now.";
273
+ readonly 'avatar.problemPlaybackBlocked': "The browser blocked the avatar’s sound. Tap the avatar to turn it on.";
274
+ readonly 'avatar.problemProvider': "The avatar had a problem. Voice continues without it.";
275
+ readonly 'avatar.problemProviderNoVoice': "The avatar had a problem.";
276
+ readonly 'avatar.problemProviderOutOfCredits': "Avatars aren’t available right now. Try again later.";
277
+ readonly 'avatar.problemRateLimited': "You started avatars too quickly. Wait a minute and try again.";
278
+ readonly 'avatar.problemRateLimitedTimed': "You started avatars too quickly.";
279
+ readonly 'avatar.problemStartTimeout': "The avatar took too long to start. Try again in a moment.";
280
+ readonly 'avatar.problemUnavailable': "The avatar isn’t available here.";
281
+ readonly 'avatar.problemUnsupportedBrowser': "This browser can’t show the avatar.";
282
+ readonly 'avatar.stageLabel': "Live avatar";
283
+ readonly 'avatar.stageWaiting': "Waiting for the avatar…";
284
+ readonly 'avatar.stateEnding': "Stopping the avatar…";
285
+ readonly 'avatar.stateInterrupted': "The avatar was interrupted. You can keep talking.";
286
+ readonly 'avatar.stateOff': "Avatar off";
287
+ readonly 'avatar.stateOn': "Avatar on";
288
+ readonly 'avatar.stateReady': "Avatar ready";
289
+ readonly 'avatar.stateStarting': "Starting the avatar…";
290
+ readonly 'avatar.stateTimeLimit': "The avatar reached its time limit. Continuing with voice only.";
291
+ readonly 'avatar.stateTimeLimitNoVoice': "The avatar reached its time limit.";
292
+ readonly 'avatar.stateVoiceOnly': "The avatar is unavailable right now. Continuing with voice only.";
293
+ readonly 'avatar.stateVoiceOnlyNoVoice': "The avatar is unavailable right now.";
294
+ readonly 'avatar.stop': "Turn off the avatar";
295
+ readonly 'avatar.tabAvatar': "Avatar";
296
+ readonly 'avatar.tabChat': "Chat";
297
+ readonly 'avatar.tabLeaveHint': "Leaving the Avatar tab turns the avatar off.";
298
+ readonly 'avatar.tabsLabel': "Assistant views";
299
+ readonly 'avatar.toggle': "Live avatar";
300
+ readonly 'avatar.toggleHint': "Show the assistant as a speaking avatar during voice conversations.";
301
+ readonly 'avatar.turnOnStarting': "Starting the avatar…";
302
+ readonly 'avatar.voiceModeDefaultNamed': "Default for this avatar ({{name}})";
303
+ readonly 'avatar.voiceModeLabel': "Avatar voice";
304
+ readonly 'avatar.voiceModeMine': "Keep my current voice";
305
+ readonly 'avatar.voiceModeMineNamed': "Keep my current voice ({{name}})";
306
+ readonly 'avatar.voiceModeNextReplyHint': "Used from the avatar's next reply. The assistant's own voice doesn't change.";
307
+ readonly 'avatar.voiceStartBusy': "You can start a voice conversation when the assistant is ready.";
308
+ readonly 'avatar.voiceStartCommitting': "You can start a voice conversation once your attachments are saved.";
309
+ readonly 'avatar.voiceStartDictating': "Stop dictating to start a voice conversation.";
310
+ readonly 'avatar.voiceStartMode': "Voice conversations aren’t available in this mode.";
311
+ readonly 'avatar.voiceStartReadOnly': "This conversation can’t take new questions. Start a new conversation to ask by voice.";
312
+ readonly 'avatar.voiceStartUnavailable': "Voice conversations aren’t available here.";
313
+ readonly 'chatArea.placeholderActions': "What would you like me to do?";
314
+ readonly 'chatArea.placeholderGeneral': "Ask me anything…";
315
+ readonly 'chatInput.ariaLabel': "Message input";
316
+ readonly 'chatInput.send': "Send message";
317
+ readonly 'composer.attach': "Attach files or photos";
318
+ readonly 'composer.attachFull': "Attachment limit reached ({{max}})";
319
+ readonly 'composer.attachSource': "Attach from";
320
+ readonly 'composer.connectSource': "Connect a source";
321
+ readonly 'composer.dropHere': "Drop files to attach";
322
+ readonly 'composer.hint': "Enter to send · Shift+Enter for newline · drag or paste files to attach";
323
+ readonly 'composer.placeholder': "Ask me anything…";
324
+ readonly 'composer.voiceStart': "Dictate a message";
325
+ readonly 'composer.voiceStarting': "Starting the microphone — tap to cancel";
326
+ readonly 'composer.voiceStop': "Stop dictation";
327
+ readonly 'composer.writeAccessDenied': "Changes may not save — your role in this workspace does not currently allow edits. You can still plan and review an action.";
328
+ readonly 'conversationFilters.all': "All";
329
+ readonly 'conversationFilters.archived': "Archived";
330
+ readonly 'conversationFilters.chat': "Chat";
331
+ readonly 'conversationFilters.count': "{{count}} conversations";
332
+ readonly 'conversationFilters.countOne': "1 conversation";
333
+ readonly 'conversationFilters.legend': "Show";
334
+ readonly 'conversationFilters.none': "No conversations match";
335
+ readonly 'conversationFilters.pinned': "Pinned";
336
+ readonly 'conversationFilters.voice': "Voice";
337
+ readonly 'conversationList.badgeArchived': "Archived";
338
+ readonly 'conversationList.badgeMixed': "Chat + voice";
339
+ readonly 'conversationList.badgePinned': "Pinned";
340
+ readonly 'conversationList.badgeVoice': "Voice";
341
+ readonly 'conversationList.emptyArchived': "No archived conversations";
342
+ readonly 'conversationList.emptyChat': "No chat conversations";
343
+ readonly 'conversationList.emptyPinned': "No pinned conversations";
344
+ readonly 'conversationList.emptyVoice': "No voice conversations";
345
+ readonly 'conversationList.messageCount': "{{count}} messages";
346
+ readonly 'conversationList.messageCountOne': "1 message";
347
+ readonly 'conversationList.spokenCount': "{{count}} spoken";
348
+ readonly 'conversationList.spokenCountOne': "1 spoken";
349
+ readonly 'conversationList.voiceOnly': "Spoken conversation";
350
+ readonly 'conversations.archive': "Archive conversation";
351
+ readonly 'conversations.collapse': "Collapse history";
352
+ readonly 'conversations.collapseLabel': "Collapse";
353
+ readonly 'conversations.delete': "Delete conversation";
354
+ readonly 'conversations.empty': "No conversations yet";
355
+ readonly 'conversations.new': "New conversation";
356
+ readonly 'conversations.pin': "Pin conversation";
357
+ readonly 'conversations.rename': "Rename conversation";
358
+ readonly 'conversations.renameLabel': "Conversation title";
359
+ readonly 'conversations.saveTitle': "Save title";
360
+ readonly 'conversations.startNew': "Start a new conversation";
361
+ readonly 'conversations.title': "History";
362
+ readonly 'conversations.titleLimit': "Titles are up to {{limit}} characters";
363
+ readonly 'conversations.unarchive': "Unarchive conversation";
364
+ readonly 'conversations.unpin': "Unpin conversation";
365
+ readonly 'deleteConversation.body': "“{{title}}” is removed from all your devices now and permanently erased after 30 days. To hide it without deleting, archive it instead.";
366
+ readonly 'deleteConversation.bodyDevice': "“{{title}}” is deleted from this device. This can't be undone.";
367
+ readonly 'deleteConversation.cancel': "Cancel";
368
+ readonly 'deleteConversation.confirm': "Delete";
369
+ readonly 'deleteConversation.nothing': "There is no conversation to delete.";
370
+ readonly 'deleteConversation.opened': "Opened the delete confirmation. Choose Delete or Cancel on screen.";
371
+ readonly 'deleteConversation.title': "Delete this conversation?";
372
+ readonly 'empty.subtitle': "You're viewing {{page}}. Ask about it, or pick a suggestion below.";
373
+ readonly 'empty.subtitleNoPage': "Ask me anything, or pick a suggestion below.";
374
+ readonly 'empty.title': "How can I help?";
375
+ readonly 'export.json': "Export as JSON";
376
+ readonly 'export.markdown': "Export as Markdown";
377
+ readonly 'header.autoRead': "Auto-read replies";
378
+ readonly 'header.autoSpeakOff': "Stop reading replies aloud";
379
+ readonly 'header.autoSpeakOn': "Read replies aloud automatically";
380
+ readonly 'header.close': "Close assistant";
381
+ readonly 'header.context': "Context: {{page}}";
382
+ readonly 'header.dock': "Dock to side panel";
383
+ readonly 'header.float': "Float chat window";
384
+ readonly 'header.history': "Conversation history";
385
+ readonly 'header.more': "More options";
386
+ readonly 'header.newConversation': "New conversation";
387
+ readonly 'header.preview': "Preview";
388
+ readonly 'header.ready': "Ready";
389
+ readonly 'header.title': "AI Assistant";
390
+ readonly 'history.archivedNotice': "Archived. It stays out of your list until you unarchive it.";
391
+ readonly 'history.badgeLoading': "Loading…";
392
+ readonly 'history.badgeNotSaved': "Not saved";
393
+ readonly 'history.badgeReadOnly': "Read-only";
394
+ readonly 'history.deleteNotSaved': "This device's storage is full, so that delete isn't saved here yet. Keep this page open until it reaches the server.";
395
+ readonly 'history.deletedElsewhere': "The conversation you had open was deleted on another device.";
396
+ readonly 'history.dismiss': "Dismiss";
397
+ readonly 'history.groupDevice': "On this device";
398
+ readonly 'history.groupWorkspace': "This workspace";
399
+ readonly 'history.legacyReadOnly': "This conversation was saved by an earlier version of the assistant. You can read it, but it can't be continued.";
400
+ readonly 'history.loadFailed': "Couldn't load this conversation.";
401
+ readonly 'history.loading': "Loading conversation…";
402
+ readonly 'history.notSavedInvalid': "Part of this conversation couldn't be saved. It stays on this device.";
403
+ readonly 'history.notSavedQuota': "Not saved yet: this workspace has reached its conversation limit. It will be saved when there is room.";
404
+ readonly 'history.notSavedScope': "Some turns were sent from another workspace. They stay on this device.";
405
+ readonly 'history.pinLimit': "You can pin up to {{limit}} conversations. Unpin one first.";
406
+ readonly 'history.showEarlier': "Show earlier messages";
407
+ readonly 'history.showOlder': "Show older conversations";
408
+ readonly 'history.tryAgain': "Try again";
409
+ readonly 'history.unarchive': "Unarchive";
410
+ readonly 'history.untitled': "Untitled conversation";
411
+ readonly 'historySearch.busy': "Search is busy right now. Showing matches on this device.";
412
+ readonly 'historySearch.clear': "Clear search";
413
+ readonly 'historySearch.failed': "Couldn't search this workspace. Showing matches on this device.";
414
+ readonly 'historySearch.label': "Search conversations";
415
+ readonly 'historySearch.moreFailed': "Couldn't load more results. Try again.";
416
+ readonly 'historySearch.searching': "Searching…";
417
+ readonly 'historySearch.showMore': "Show more results";
418
+ readonly 'historySearch.tooShort': "Type 2 or more characters to search this workspace";
419
+ readonly 'language.inputLabel': "Language";
420
+ readonly 'language.replyLabel': "Assistant replies in";
421
+ readonly 'language.replyMatch': "Match my language";
422
+ readonly 'leaveConfirm.body': "You have unsaved changes in {{label}}. If you leave now, they will be lost.";
423
+ readonly 'leaveConfirm.keep': "Keep editing";
424
+ readonly 'leaveConfirm.leave': "Leave";
425
+ readonly 'leaveConfirm.title': "Leave without saving?";
426
+ readonly 'localCommand.alreadyFollowingDevice': "The theme already follows your device.";
427
+ readonly 'localCommand.alreadyHere': "You're already on {{page}}.";
428
+ readonly 'localCommand.anotherPage': "another page";
429
+ readonly 'localCommand.backDone': "Back on {{page}}.";
430
+ readonly 'localCommand.choose': "More than one page is called “{{page}}”. Which one?";
431
+ readonly 'localCommand.chooseKinds': "Do you mean the {{first}} or the {{second}}?";
432
+ readonly 'localCommand.chooseKindsMany': "Which one do you mean?";
433
+ readonly 'localCommand.chooseLinked': "My last reply links more than one page. Which one?";
434
+ readonly 'localCommand.chooseRecord': "More than one {{noun}} is called “{{name}}”. Which one?";
435
+ readonly 'localCommand.followingDevice': "The theme now follows your device.";
436
+ readonly 'localCommand.linkNotOpenable': "I can't open that link from here.";
437
+ readonly 'localCommand.newTab': "{{page}} opens in a separate tab. If nothing opened, use this link: {{link}}";
438
+ readonly 'localCommand.notOpened': "Couldn't open {{page}}.";
439
+ readonly 'localCommand.opened': "Opened {{page}}.";
440
+ readonly 'localCommand.pickFromList': "Pick one of the pages listed above.";
441
+ readonly 'localCommand.previousPage': "the previous page";
442
+ readonly 'localCommand.redirected': "{{page}} didn't open. You're on {{landed}} instead.";
443
+ readonly 'localCommand.themeAlreadyFamily': "You're already on a {{theme}} theme.";
444
+ readonly 'localCommand.themeAlreadyNamed': "The {{theme}} theme is already on.";
445
+ readonly 'localCommand.themeDark': "dark";
446
+ readonly 'localCommand.themeHighContrast': "high-contrast";
447
+ readonly 'localCommand.themeLight': "light";
448
+ readonly 'localCommand.themeSet': "Switched to the {{theme}} theme.";
449
+ readonly 'localCommand.thisPage': "this page";
450
+ readonly 'localCommand.unsavedChanges': "You have unsaved changes in {{label}}. Save or discard them, then ask again.";
451
+ readonly 'markdown.closePreview': "Close image preview";
452
+ readonly 'markdown.copied': "Copied";
453
+ readonly 'markdown.copy': "Copy";
454
+ readonly 'markdown.copyCode': "Copy code";
455
+ readonly 'markdown.enlargeImage': "Enlarge image";
456
+ readonly 'markdown.enlargeImageNamed': "Enlarge image: {{alt}}";
457
+ readonly 'markdown.imagePreview': "Image preview";
458
+ readonly 'markdown.imagePreviewNamed': "Image preview: {{alt}}";
459
+ readonly 'markdown.imageUnavailable': "Image unavailable";
460
+ readonly 'markdown.showRemoteImage': "Show remote image";
461
+ readonly 'markdown.showRemoteImageNamed': "Show image from {{host}}";
462
+ readonly 'message.copied': "Copied";
463
+ readonly 'message.copy': "Copy message";
464
+ readonly 'message.copyShort': "Copy";
465
+ readonly 'message.downloads': "Downloads";
466
+ readonly 'message.retry': "Retry";
467
+ readonly 'message.speak': "Read this reply aloud";
468
+ readonly 'message.speakShort': "Listen";
469
+ readonly 'message.stopSpeaking': "Stop reading aloud";
470
+ readonly 'message.stopSpeakingShort': "Stop";
471
+ readonly 'messageList.ariaLabel': "Conversation messages";
472
+ readonly 'modeSelector.ariaLabel': "Select assistant mode";
473
+ readonly 'modeSelector.auto': "Auto";
474
+ readonly 'modeSelector.autoHint': "Answers your questions, and proposes changes for you to approve";
475
+ readonly 'offer.announce': "Suggested page: {{page}}";
476
+ readonly 'offer.expired': "That suggestion has expired. Ask again, or use the menu.";
477
+ readonly 'offer.hintLink': "Tap, or say “take me there”.";
478
+ readonly 'offer.hintRead': "Tap, or say “take me there” or “yes”.";
479
+ readonly 'offer.keptForUnsaved': "You have unsaved changes in {{label}}, so I stayed here. Tap Open {{page}} when you're ready.";
480
+ readonly 'offer.notAvailable': "{{page}} isn't in your menu right now.";
481
+ readonly 'offer.open': "Open {{page}}";
482
+ readonly 'overlay.launcher': "AI Assistant";
483
+ readonly 'overlay.launcherTitle': "AI Assistant ({{shortcut}})";
484
+ readonly 'panel.ariaLabel': "AI Assistant";
485
+ readonly 'pendingWrite.approve': "Approve this change";
486
+ readonly 'pendingWrite.approved': "The assistant's next reply says whether it was carried out.";
487
+ readonly 'pendingWrite.approvedAria': "Approved change request";
488
+ readonly 'pendingWrite.approvedNotSent': "The assistant was not told to go ahead with it. If you still want this change, ask for it again.";
489
+ readonly 'pendingWrite.approvedPrompt': "I approved that change — go ahead.";
490
+ readonly 'pendingWrite.approvedTitle': "You approved this change";
491
+ readonly 'pendingWrite.approving': "Approving…";
492
+ readonly 'pendingWrite.aria': "Change awaiting your approval";
493
+ readonly 'pendingWrite.expired': "It stays here as a record of what was asked. If you still need the change, ask again.";
494
+ readonly 'pendingWrite.expiredAria': "Expired change request";
495
+ readonly 'pendingWrite.expiredTitle': "This request can no longer be approved";
496
+ readonly 'pendingWrite.noValues': "No field values were included with this request.";
497
+ readonly 'pendingWrite.subtitle': "The assistant asked to make this change and was stopped. Approve it, or say what to change.";
498
+ readonly 'pendingWrite.subtitleReply': "The assistant asked to make this change and was stopped. Reply to approve or decline.";
499
+ readonly 'pendingWrite.title': "Nothing has changed yet";
500
+ readonly 'preview.close': "Close preview";
501
+ readonly 'preview.failed': "The preview could not be displayed.";
502
+ readonly 'preview.title': "Preview";
503
+ readonly 'sheet.collapse': "Shrink the assistant";
504
+ readonly 'sheet.expand': "Expand the assistant";
505
+ readonly 'speech.codeBlock': "Code block";
506
+ readonly 'speech.deviceFallback': "Device voice used: the selected voice was unavailable.";
507
+ readonly 'speech.emailAt': "at";
508
+ readonly 'speech.emailDot': "dot";
509
+ readonly 'speech.image': "image";
510
+ readonly 'speech.largeTable': "Table with {{rows}} rows and {{columns}} columns";
511
+ readonly 'speech.link': "link";
512
+ readonly 'speech.nestedItem': "Sub-item {{ordinal}}";
513
+ readonly 'speech.noVoiceForReply': "This reply is in {{language}}, and no {{language}} voice is installed on this device.";
514
+ readonly 'speech.noVoicesOnDevice': "This device has no speech voices installed. Add one in your device speech or accessibility settings.";
515
+ readonly 'speech.truncated': "The rest of this message is not read aloud";
516
+ readonly 'spokenTurns.many': "{{count}} spoken turns are kept out of this thread";
517
+ readonly 'spokenTurns.one': "1 spoken turn is kept out of this thread";
518
+ readonly 'spokenTurns.view': "View transcript";
519
+ readonly 'tool.details': "Details";
520
+ readonly 'tool.done': "Done";
521
+ readonly 'tool.failed': "Some steps failed";
522
+ readonly 'tool.working': "Working on it…";
523
+ readonly 'voice.denied': "Microphone access is blocked. Allow it in your browser settings to dictate.";
524
+ readonly 'voice.failed': "Dictation stopped unexpectedly.";
525
+ readonly 'voice.graceHint': "How long the assistant waits in silence before it sends what you said. Start talking again and it carries on with the same message.";
526
+ readonly 'voice.graceLabel': "Wait after I stop talking";
527
+ readonly 'voice.graceOption': "{{seconds}} seconds";
528
+ readonly 'voice.graceOptionDefault': "{{seconds}} seconds (default)";
529
+ readonly 'voice.handsFreeHint': "Let the assistant listen while it answers, so you can speak over it to correct it. Works best with headphones. You can always tap to interrupt.";
530
+ readonly 'voice.handsFreeLabel': "Hands-free interrupt (beta)";
531
+ readonly 'voice.languageFollowApp': "Same as interface";
532
+ readonly 'voice.languageLabel': "Language you speak to the assistant";
533
+ readonly 'voice.languageNotSupported': "This browser cannot recognise spoken {{language}}. Try a different browser, or type instead.";
534
+ readonly 'voice.listening': "Listening… speak now, tap the square to stop";
535
+ readonly 'voice.network': "Speech recognition is offline right now.";
536
+ readonly 'voice.noMic': "No microphone was found.";
537
+ readonly 'voice.preview': "Hear this voice";
538
+ readonly 'voice.previewShort': "Preview";
539
+ readonly 'voice.starting': "Starting the microphone…";
540
+ readonly 'voice.voiceAuto': "Best available";
541
+ readonly 'voice.voiceLabel': "Voice that reads replies";
542
+ readonly 'voiceSession.collapse': "Shrink to the compact controller";
543
+ readonly 'voiceSession.connecting': "Starting the microphone…";
544
+ readonly 'voiceSession.continueInChat': "Continue in chat";
545
+ readonly 'voiceSession.correcting': "Stopped that answer — listening to your correction";
546
+ readonly 'voiceSession.continuedIntro': "Continued from a voice conversation. You asked about:";
547
+ readonly 'voiceSession.continuedMore': "…and {{count}} more";
548
+ readonly 'voiceSession.continuedNothing': "Continued from a voice conversation.";
549
+ readonly 'voiceSession.earlierLabel': "Earlier";
550
+ readonly 'voiceSession.end': "End the voice conversation";
551
+ readonly 'voiceSession.endShort': "End";
552
+ readonly 'voiceSession.endpointGrace': "Still listening — take your time";
553
+ readonly 'voiceSession.expand': "Expand the conversation to full screen";
554
+ readonly 'voiceSession.expandPanel': "Show the conversation in the panel";
555
+ readonly 'voiceSession.holding': "Take your time — tap “I’m done” when you finish";
556
+ readonly 'voiceSession.imDone': "I’m done";
557
+ readonly 'voiceSession.imDoneHint': "Send what you said now";
558
+ readonly 'voiceSession.interrupt': "Stop the assistant and speak";
559
+ readonly 'voiceSession.interrupting': "Stopped — go ahead";
560
+ readonly 'voiceSession.letMeFinish': "Let me finish";
561
+ readonly 'voiceSession.letMeFinishHint': "Pause sending until you tap “I’m done”";
562
+ readonly 'voiceSession.listening': "Listening…";
563
+ readonly 'voiceSession.micDenied': "Microphone access is blocked. Allow it in your browser settings to talk.";
564
+ readonly 'voiceSession.mute': "Turn the microphone off";
565
+ readonly 'voiceSession.muted': "Microphone off";
566
+ readonly 'voiceSession.newSession': "New voice session";
567
+ readonly 'voiceSession.noSpeechSupport': "This browser cannot listen. Try a different browser, or type instead.";
568
+ readonly 'voiceSession.noVoiceSupport': "This device has no voice that can speak this language.";
569
+ readonly 'voiceSession.noticeHandsFreeFallback': "Hands-free interrupt turned itself off for this conversation. Tap to interrupt still works.";
570
+ readonly 'voiceSession.noticeHandsFreeNothingHeard': "Stopped, but I did not catch that. Say it again, or tap to replay.";
571
+ readonly 'voiceSession.noticeNetwork': "Speech recognition lost its connection. Check your network — it will retry.";
572
+ readonly 'voiceSession.noticeNotCapturing': "The microphone did not start. Check that this site is allowed to use it, then try again.";
573
+ readonly 'voiceSession.noticeNothingHeard': "Nothing heard yet. Check your microphone is not muted or in use by another app.";
574
+ readonly 'voiceSession.noticeRecognitionFailed': "Speech recognition stopped unexpectedly. It will retry — if it keeps happening, reload the page.";
575
+ readonly 'voiceSession.noticeReplyNotHeard': "That reply was not read aloud: earlier audio may still be playing. Read it in the transcript.";
576
+ readonly 'voiceSession.save': "Save transcript";
577
+ readonly 'voiceSession.savedAt': "Saved";
578
+ readonly 'voiceSession.sessionLabel': "Session";
579
+ readonly 'voiceSession.speakerAssistant': "Assistant";
580
+ readonly 'voiceSession.speakerYou': "You";
581
+ readonly 'voiceSession.speaking': "Speaking — tap to stop";
582
+ readonly 'voiceSession.start': "Start a voice conversation";
583
+ readonly 'voiceSession.streamNoticeBody': "Your voice is sent to Google Cloud Speech-to-Text and processed in the EU. We don't store the audio.";
584
+ readonly 'voiceSession.streamNoticeContinue': "Continue";
585
+ readonly 'voiceSession.streamNoticeNotNow': "Not now";
586
+ readonly 'voiceSession.title': "Voice conversation";
587
+ readonly 'voiceSession.transcript': "Voice conversation";
588
+ readonly 'voiceSession.transcriptClose': "Close the transcript";
589
+ readonly 'voiceSession.transcriptEmpty': "Nothing spoken yet in this session.";
590
+ readonly 'voiceSession.transcriptHint': "Spoken turns in this conversation — kept out of your typed chat.";
591
+ readonly 'voiceSession.transcriptTitle': "Voice transcript";
592
+ readonly 'voiceSession.unmute': "Turn the microphone on";
593
+ readonly 'writeConsent.body': "In {{mode}} mode the assistant can read AND change your data — creating records, logging activity, updating details, and more, on your behalf.";
594
+ readonly 'writeConsent.cancel': "Stay in {{mode}}";
595
+ readonly 'writeConsent.confirm': "Enable {{mode}}";
596
+ readonly 'writeConsent.title': "Switch to {{mode}} mode?";
597
+ readonly 'writeConsent.unconfirmed': "It does not stop to ask before each change — it makes changes as soon as it decides to. Only continue if you want the assistant to change your data without asking first.";
598
+ readonly 'writeProposal.aria': "Proposed change: {{label}}";
599
+ readonly 'writeProposal.cancel': "Cancel";
600
+ readonly 'writeProposal.confirmFallback': "Confirm this change";
601
+ readonly 'writeProposal.confirming': "Confirming…";
602
+ readonly 'writeProposal.consequences': "What this will do";
603
+ readonly 'writeProposal.dialog.close': "Close";
604
+ readonly 'writeProposal.dialog.exactly': "Exactly what will happen";
605
+ readonly 'writeProposal.dialog.noLongerPending': "This change can no longer be confirmed here.";
606
+ readonly 'writeProposal.dialog.title': "Confirm this change";
607
+ readonly 'writeProposal.diff.absent': "(not set)";
608
+ readonly 'writeProposal.diff.after': "After";
609
+ readonly 'writeProposal.diff.before': "Before";
610
+ readonly 'writeProposal.diff.change': "Change";
611
+ readonly 'writeProposal.diff.gateway': "Data";
612
+ readonly 'writeProposal.diff.none': "No values changed";
613
+ readonly 'writeProposal.diff.value': "Value";
614
+ readonly 'writeProposal.executionFenced': "You can review or cancel this change. Running it from the assistant becomes available once secure confirmation is enabled.";
615
+ readonly 'writeProposal.expiresIn': "Expires in {{time}}";
616
+ readonly 'writeProposal.expiresInAbout': "Expires in about {{minutes}} min";
617
+ readonly 'writeProposal.expiresSoon': "Expires in under a minute";
618
+ readonly 'writeProposal.gateway.global': "Account and organization data";
619
+ readonly 'writeProposal.gateway.workspace': "Workspace data";
620
+ readonly 'writeProposal.hiddenValue': "Hidden value";
621
+ readonly 'writeProposal.hideValue': "Hide";
622
+ readonly 'writeProposal.inert': "This change can no longer be confirmed here. Nothing was done; ask the assistant to prepare it again if you still want it.";
623
+ readonly 'writeProposal.kind.bulk': "Changes several items";
624
+ readonly 'writeProposal.kind.credential': "Touches credentials";
625
+ readonly 'writeProposal.kind.destructive': "Deletes data";
626
+ readonly 'writeProposal.kind.financial': "Involves money";
627
+ readonly 'writeProposal.kind.irreversible': "Can't be undone";
628
+ readonly 'writeProposal.kind.permission': "Changes access";
629
+ readonly 'writeProposal.notApprovable': "This change isn't ready to confirm. If it stays this way, ask the assistant to prepare it again.";
630
+ readonly 'writeProposal.notAvailableYet': "Confirming changes from the assistant isn't available in this session yet.";
631
+ readonly 'writeProposal.repeat': "You made this same change recently. Confirming makes it again.";
632
+ readonly 'writeProposal.review': "Review & confirm…";
633
+ readonly 'writeProposal.revision': "Revised — version {{revision}}";
634
+ readonly 'writeProposal.showValue': "Show";
635
+ readonly 'writeProposal.status.declined': "Cancelled";
636
+ readonly 'writeProposal.status.executing': "Working…";
637
+ readonly 'writeProposal.status.expired': "Expired — nothing was done";
638
+ readonly 'writeProposal.status.failedNoDetail': "Didn't go through";
639
+ readonly 'writeProposal.status.failedNotPermitted': "Didn't go through — you don't have permission";
640
+ readonly 'writeProposal.status.outcomeUnknown': "Couldn't confirm — check before trying again";
641
+ readonly 'writeProposal.status.pending': "Waiting for you";
642
+ readonly 'writeProposal.status.succeeded': "Done — {{summary}}";
643
+ readonly 'writeProposal.status.succeededNoDetail': "Done";
644
+ readonly 'writeProposal.status.superseded': "Replaced — the conversation moved on";
645
+ readonly 'writeProposal.targetCount': "Items affected: {{count}}";
646
+ readonly 'writeProposal.timeUp': "Time's up — this can no longer be confirmed";
647
+ readonly 'writeProposal.title': "Review and approve this change.";
648
+ readonly 'writeProposal.values': "Values";
649
+ readonly 'writeProposal.variablesOmitted': "{{count}} more values not shown";
650
+ readonly 'writeProposal.waitForTurn': "You can confirm once the assistant finishes replying.";
651
651
  };
652
652
  /** A relative key written out in a `tr()` call. */
653
653
  export type AssistantI18nLiteralKey = keyof typeof ASSISTANT_I18N_LITERAL_COPY;
@@ -662,9 +662,9 @@ export declare const ASSISTANT_I18N_COMPUTED_COPY: Readonly<Record<string, strin
662
662
  * Only add an entry here for a key already live in product bundles.
663
663
  */
664
664
  export declare const ASSISTANT_I18N_SEED_COMPAT_COPY: Readonly<{
665
- readonly "attachments.retrying": "Retrying {{attempt}} of {{max}}";
666
- readonly "attachments.waking": "File service is starting up — retry {{attempt}} of {{max}}";
667
- readonly "outcome.usageDailyLimitReachedNoTime": "You've reached today's AI assistant limit. Try again tomorrow.";
665
+ readonly 'attachments.retrying': "Retrying {{attempt}} of {{max}}";
666
+ readonly 'attachments.waking': "File service is starting up — retry {{attempt}} of {{max}}";
667
+ readonly 'outcome.usageDailyLimitReachedNoTime': "You've reached today's AI assistant limit. Try again tomorrow.";
668
668
  }>;
669
669
  /**
670
670
  * The manifest: every relative key whose English fe-libs owns, literal and
@@ -677,7 +677,7 @@ export declare const ASSISTANT_I18N_MANIFEST: Readonly<Record<string, string>>;
677
677
  * The part of a mode that decides its keys and English: the pill, plus (when
678
678
  * given) its description and suggestion chips (BOFF-8060, F5).
679
679
  */
680
- export type AssistantModeCopySource = Pick<AssistantModeConfig, "id" | "label" | "producesArtifacts"> & Partial<Pick<AssistantModeConfig, "description" | "suggestions">>;
680
+ export type AssistantModeCopySource = Pick<AssistantModeConfig, 'id' | 'label' | 'producesArtifacts'> & Partial<Pick<AssistantModeConfig, 'description' | 'suggestions'>>;
681
681
  /**
682
682
  * `mode.<id>` for each mode a product offers, in the product's own words.
683
683
  *