@burdenoff/fe-libs 2026.1004.4 → 2026.1004.6

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 (105) hide show
  1. package/dist/chrome/ContextSwitcher.d.ts.map +1 -1
  2. package/dist/chrome/ContextSwitcher.js +73 -50
  3. package/dist/chrome/GlobalSearch.d.ts.map +1 -1
  4. package/dist/chrome/GlobalSearch.js +76 -72
  5. package/dist/chrome/LanguageSwitcher.d.ts.map +1 -1
  6. package/dist/chrome/LanguageSwitcher.js +61 -40
  7. package/dist/chrome/NotificationCenter.d.ts.map +1 -1
  8. package/dist/chrome/NotificationCenter.js +71 -68
  9. package/dist/chrome/ProfileSwitcher.d.ts.map +1 -1
  10. package/dist/chrome/ProfileSwitcher.js +87 -81
  11. package/dist/chrome/SideNavigation.d.ts.map +1 -1
  12. package/dist/chrome/SideNavigation.js +120 -76
  13. package/dist/shared/assistant/appControls/copy.d.ts +12 -0
  14. package/dist/shared/assistant/appControls/copy.d.ts.map +1 -0
  15. package/dist/shared/assistant/appControls/copy.js +98 -0
  16. package/dist/shared/assistant/appControls/grammar.d.ts +102 -0
  17. package/dist/shared/assistant/appControls/grammar.d.ts.map +1 -0
  18. package/dist/shared/assistant/appControls/grammar.js +236 -0
  19. package/dist/shared/assistant/appControls/languages.d.ts +6 -0
  20. package/dist/shared/assistant/appControls/languages.d.ts.map +1 -0
  21. package/dist/shared/assistant/appControls/languages.js +52 -0
  22. package/dist/shared/assistant/appControls/names.d.ts +22 -0
  23. package/dist/shared/assistant/appControls/names.d.ts.map +1 -0
  24. package/dist/shared/assistant/appControls/names.js +29 -0
  25. package/dist/shared/assistant/appControls/pageAdapters.d.ts +59 -0
  26. package/dist/shared/assistant/appControls/pageAdapters.d.ts.map +1 -0
  27. package/dist/shared/assistant/appControls/pageAdapters.js +87 -0
  28. package/dist/shared/assistant/appControls/plan.d.ts +148 -0
  29. package/dist/shared/assistant/appControls/plan.d.ts.map +1 -0
  30. package/dist/shared/assistant/appControls/plan.js +511 -0
  31. package/dist/shared/assistant/appControls/registry.d.ts +9 -0
  32. package/dist/shared/assistant/appControls/registry.d.ts.map +1 -0
  33. package/dist/shared/assistant/appControls/registry.js +38 -0
  34. package/dist/shared/assistant/appControls/snapshot.d.ts +42 -0
  35. package/dist/shared/assistant/appControls/snapshot.d.ts.map +1 -0
  36. package/dist/shared/assistant/appControls/snapshot.js +40 -0
  37. package/dist/shared/assistant/appControls/text.d.ts +7 -0
  38. package/dist/shared/assistant/appControls/text.d.ts.map +1 -0
  39. package/dist/shared/assistant/appControls/text.js +6 -0
  40. package/dist/shared/assistant/appControls/types.d.ts +183 -0
  41. package/dist/shared/assistant/appControls/types.d.ts.map +1 -0
  42. package/dist/shared/assistant/appControls/types.js +25 -0
  43. package/dist/shared/assistant/appControls/useAssistantControl.d.ts +24 -0
  44. package/dist/shared/assistant/appControls/useAssistantControl.d.ts.map +1 -0
  45. package/dist/shared/assistant/appControls/useAssistantControl.js +13 -0
  46. package/dist/shared/assistant/conversation.d.ts +12 -1
  47. package/dist/shared/assistant/conversation.d.ts.map +1 -1
  48. package/dist/shared/assistant/history/historyMapping.d.ts.map +1 -1
  49. package/dist/shared/assistant/history/historyMapping.js +130 -114
  50. package/dist/shared/assistant/i18nManifest.d.ts +74 -0
  51. package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
  52. package/dist/shared/assistant/i18nManifest.js +86 -12
  53. package/dist/shared/assistant/index.d.ts +16 -0
  54. package/dist/shared/assistant/index.d.ts.map +1 -1
  55. package/dist/shared/assistant/localUiCommandCopy.d.ts +7 -0
  56. package/dist/shared/assistant/localUiCommandCopy.d.ts.map +1 -1
  57. package/dist/shared/assistant/localUiCommandCopy.js +1 -1
  58. package/dist/shared/assistant/localUiCommands.d.ts +16 -0
  59. package/dist/shared/assistant/localUiCommands.d.ts.map +1 -1
  60. package/dist/shared/assistant/localUiCommands.js +92 -84
  61. package/dist/shared/assistant/store.d.ts +10 -0
  62. package/dist/shared/assistant/store.d.ts.map +1 -1
  63. package/dist/shared/assistant/store.js +52 -44
  64. package/dist/shared/assistant/ui/AIAssistantPanel.d.ts.map +1 -1
  65. package/dist/shared/assistant/ui/AIAssistantPanel.js +57 -49
  66. package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
  67. package/dist/shared/assistant/ui/AssistantChatArea.js +1085 -1016
  68. package/dist/shared/assistant/ui/AssistantControlConfirmDialog.d.ts +38 -0
  69. package/dist/shared/assistant/ui/AssistantControlConfirmDialog.d.ts.map +1 -0
  70. package/dist/shared/assistant/ui/AssistantControlConfirmDialog.js +65 -0
  71. package/dist/shared/assistant/ui/AssistantMoreMenu.d.ts.map +1 -1
  72. package/dist/shared/assistant/ui/AssistantMoreMenu.js +58 -56
  73. package/dist/shared/assistant/ui/AssistantSpeechProvider.d.ts.map +1 -1
  74. package/dist/shared/assistant/ui/AssistantSpeechProvider.js +106 -105
  75. package/dist/shared/assistant/ui/composer/AssistantVoiceGraceSelector.d.ts +20 -0
  76. package/dist/shared/assistant/ui/composer/AssistantVoiceGraceSelector.d.ts.map +1 -0
  77. package/dist/shared/assistant/ui/composer/AssistantVoiceGraceSelector.js +39 -0
  78. package/dist/shared/assistant/ui/controlConfirmDialog.d.ts +30 -0
  79. package/dist/shared/assistant/ui/controlConfirmDialog.d.ts.map +1 -0
  80. package/dist/shared/assistant/ui/controlConfirmDialog.js +46 -0
  81. package/dist/shared/assistant/ui/useVoiceSession.d.ts +35 -2
  82. package/dist/shared/assistant/ui/useVoiceSession.d.ts.map +1 -1
  83. package/dist/shared/assistant/ui/useVoiceSession.js +232 -171
  84. package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts +15 -1
  85. package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts.map +1 -1
  86. package/dist/shared/assistant/ui/voice/AssistantVoiceSession.js +173 -150
  87. package/dist/shared/assistant/voice/handsFree.d.ts +160 -0
  88. package/dist/shared/assistant/voice/handsFree.d.ts.map +1 -0
  89. package/dist/shared/assistant/voice/handsFree.js +104 -0
  90. package/dist/shared/assistant/voice/supersededTurns.d.ts +29 -0
  91. package/dist/shared/assistant/voice/supersededTurns.d.ts.map +1 -0
  92. package/dist/shared/assistant/voice/supersededTurns.js +17 -0
  93. package/dist/shared/assistant/voice/useVoiceInput.d.ts +7 -0
  94. package/dist/shared/assistant/voice/useVoiceInput.d.ts.map +1 -1
  95. package/dist/shared/assistant/voice/useVoiceInput.js +13 -10
  96. package/dist/shared/assistant/voice/voiceSession.d.ts +64 -20
  97. package/dist/shared/assistant/voice/voiceSession.d.ts.map +1 -1
  98. package/dist/shared/assistant/voice/voiceSession.js +120 -67
  99. package/dist/shared/components/KeyboardHelpDialogWrapper.d.ts.map +1 -1
  100. package/dist/shared/components/KeyboardHelpDialogWrapper.js +11 -9
  101. package/dist/shared/providers/shell/GlobalUiProvider.d.ts +2 -0
  102. package/dist/shared/providers/shell/GlobalUiProvider.d.ts.map +1 -1
  103. package/dist/shared/providers/shell/GlobalUiProvider.js +4 -1
  104. package/dist/shared-assistant.js +219 -203
  105. package/package.json +1 -1
@@ -1,12 +1,12 @@
1
1
  import { assistantTranslationKey as e } from "./i18n.js";
2
2
  import { assistantModeFallbackLabel as t } from "./modeCopy.js";
3
3
  import { isAssistantModeId as n } from "./modeIds.js";
4
- import { TURN_OUTCOME_COPY as r } from "./turnOutcomeCopy.js";
5
- import { INCOMPLETE_TURN_NOTICES as i } from "./streamBudget.js";
6
- import { STAGE_COPY as a, THINKING_PHRASES as o } from "./stageCopy.js";
7
- import { VOICE_MUTED_LABEL as s, VOICE_THINKING_LABEL as c } from "./voice/voiceStatus.js";
8
- import { ATTACHMENT_SOURCES as l } from "./attachmentSources.js";
9
- import { WRITE_REPLY_COPY as u } from "./writeReplyBinder.js";
4
+ import { WRITE_REPLY_COPY as r } from "./writeReplyBinder.js";
5
+ import { TURN_OUTCOME_COPY as i } from "./turnOutcomeCopy.js";
6
+ import { INCOMPLETE_TURN_NOTICES as a } from "./streamBudget.js";
7
+ import { STAGE_COPY as o, THINKING_PHRASES as s } from "./stageCopy.js";
8
+ import { VOICE_MUTED_LABEL as c, VOICE_THINKING_LABEL as l } from "./voice/voiceStatus.js";
9
+ import { ATTACHMENT_SOURCES as u } from "./attachmentSources.js";
10
10
  import { WRITE_PROPOSAL_ERROR_COPY as d } from "./writeProposalErrorCopy.js";
11
11
  import { WRITE_PROPOSAL_VOICE_COPY as f } from "./writeProposalVoice.js";
12
12
  //#region src/shared/assistant/i18nManifest.ts
@@ -16,6 +16,70 @@ var p = {
16
16
  "apiCalls.consentCancel": "Stay in Ask",
17
17
  "apiCalls.consentConfirm": "Enable Take action",
18
18
  "apiCalls.consentTitle": "Switch to Take action mode?",
19
+ "appControl.ambiguous": "More than one {{what}} matches “{{name}}”: {{options}}. Say which one.",
20
+ "appControl.blockedPermission": "That isn't available to you here.",
21
+ "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.",
22
+ "appControl.dialog.cancel": "Cancel",
23
+ "appControl.dialog.logoutBody": "You'll be signed out of this account on this device.",
24
+ "appControl.dialog.logoutConfirm": "Log out",
25
+ "appControl.dialog.logoutTitle": "Log out?",
26
+ "appControl.dialog.workspaceBody": "You'll switch to {{name}}. The page may reload.",
27
+ "appControl.dialog.workspaceConfirm": "Switch",
28
+ "appControl.dialog.workspaceTitle": "Switch workspace?",
29
+ "appControl.directionAsc": "ascending",
30
+ "appControl.directionDesc": "descending",
31
+ "appControl.entryAlreadyCollapsed": "{{name}} is already collapsed.",
32
+ "appControl.entryAlreadyExpanded": "{{name}} is already expanded.",
33
+ "appControl.entryCollapsed": "Collapsed {{name}}.",
34
+ "appControl.entryExpanded": "Expanded {{name}}.",
35
+ "appControl.failed": "That didn't work. Nothing was changed.",
36
+ "appControl.filterAlready": "{{filter}}: {{option}} is already on.",
37
+ "appControl.filterChoose": "Which {{filter}}? Options: {{options}}.",
38
+ "appControl.filterCleared": "Cleared the {{filter}} filter.",
39
+ "appControl.filterSet": "Filtered by {{filter}}: {{option}}.",
40
+ "appControl.filtersCleared": "Cleared the filters.",
41
+ "appControl.formOpened": "Opened {{name}}. Nothing is saved until you submit it.",
42
+ "appControl.languageAlready": "The app is already in {{language}}.",
43
+ "appControl.languageNotOffered": "{{language}} isn't one of the languages this app offers.",
44
+ "appControl.languageSet": "The app language is now {{language}}. Assistant replies and voice keep their own settings.",
45
+ "appControl.logoutConfirm": "Log out of your account? Nothing changes until you choose Log out on screen.",
46
+ "appControl.logoutDone": "Logging you out.",
47
+ "appControl.notFound.filter": "{{page}} has no filter option called “{{name}}”. Filters: {{options}}.",
48
+ "appControl.notFound.filterOption": "The {{filter}} filter has no option called “{{name}}”. Options: {{options}}.",
49
+ "appControl.notFound.form": "There's no “{{name}}” form to open on {{page}}. Available: {{options}}.",
50
+ "appControl.notFound.sort": "{{page}} can't be sorted by “{{name}}”. Columns: {{options}}.",
51
+ "appControl.notFound.tab": "There's no tab called “{{name}}” on {{page}}. Tabs: {{options}}.",
52
+ "appControl.notFound.workspace": "I couldn't find a workspace called “{{name}}”. You can switch to: {{options}}.",
53
+ "appControl.opened.context": "Opened the workspace switcher.",
54
+ "appControl.opened.conversation": "Started a new conversation.",
55
+ "appControl.opened.help": "Opened help and keyboard shortcuts.",
56
+ "appControl.opened.history": "Opened your conversation history.",
57
+ "appControl.opened.notifications": "Opened your notifications.",
58
+ "appControl.opened.preview": "Opened the AI preview.",
59
+ "appControl.opened.transcript": "Opened the voice transcript.",
60
+ "appControl.searchCleared": "Cleared the search.",
61
+ "appControl.searchOpened": "Opened search.",
62
+ "appControl.searchOpenedFor": "Opened search for “{{query}}”.",
63
+ "appControl.searched": "Searched {{page}} for “{{query}}”.",
64
+ "appControl.sidebarAlreadyCollapsed": "The sidebar is already collapsed.",
65
+ "appControl.sidebarAlreadyExpanded": "The sidebar is already expanded.",
66
+ "appControl.sidebarCollapsed": "Collapsed the sidebar.",
67
+ "appControl.sidebarExpanded": "Expanded the sidebar.",
68
+ "appControl.sortNeedsField": "Say which column to sort by.",
69
+ "appControl.sorted": "Sorted {{page}} by {{field}}, {{direction}}.",
70
+ "appControl.sortedAlready": "{{page}} is already sorted by {{field}}, {{direction}}.",
71
+ "appControl.tabAlready": "You're already on the {{name}} tab.",
72
+ "appControl.tabOpened": "Opened the {{name}} tab.",
73
+ "appControl.what.column": "column",
74
+ "appControl.what.filter": "filter option",
75
+ "appControl.what.form": "form",
76
+ "appControl.what.menu": "menu",
77
+ "appControl.what.tab": "tab",
78
+ "appControl.what.workspace": "workspace",
79
+ "appControl.workspaceAlready": "You're already in {{name}}.",
80
+ "appControl.workspaceConfirm": "Switch to {{name}}? Nothing changes until you choose Switch on screen.",
81
+ "appControl.workspaceNone": "There is no other workspace to switch to.",
82
+ "appControl.workspaceSwitched": "Switching to {{name}}.",
19
83
  "attachments.blockedMany": "{{count}} attachments didn't upload. Retry or remove them before sending.",
20
84
  "attachments.blockedOne": "{{name}} didn't upload. Retry or remove it before sending.",
21
85
  "attachments.empty": "That file is empty.",
@@ -232,6 +296,10 @@ var p = {
232
296
  "tool.working": "Working on it…",
233
297
  "voice.denied": "Microphone access is blocked. Allow it in your browser settings to dictate.",
234
298
  "voice.failed": "Dictation stopped unexpectedly.",
299
+ "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.",
300
+ "voice.graceLabel": "Wait after I stop talking",
301
+ "voice.graceOption": "{{seconds}} seconds",
302
+ "voice.graceOptionDefault": "{{seconds}} seconds (default)",
235
303
  "voice.languageFollowApp": "Same as interface",
236
304
  "voice.languageLabel": "Language you speak to the assistant",
237
305
  "voice.languageNotSupported": "This browser cannot recognise spoken {{language}}. Try a different browser, or type instead.",
@@ -246,6 +314,7 @@ var p = {
246
314
  "voiceSession.collapse": "Shrink to the compact controller",
247
315
  "voiceSession.connecting": "Starting the microphone…",
248
316
  "voiceSession.continueInChat": "Continue in chat",
317
+ "voiceSession.correcting": "Stopped that answer — listening to your correction",
249
318
  "voiceSession.continuedIntro": "Continued from a voice conversation. You asked about:",
250
319
  "voiceSession.continuedMore": "…and {{count}} more",
251
320
  "voiceSession.continuedNothing": "Continued from a voice conversation.",
@@ -255,8 +324,13 @@ var p = {
255
324
  "voiceSession.endpointGrace": "Still listening — take your time",
256
325
  "voiceSession.expand": "Expand the conversation to full screen",
257
326
  "voiceSession.expandPanel": "Show the conversation in the panel",
327
+ "voiceSession.holding": "Take your time — tap “I’m done” when you finish",
328
+ "voiceSession.imDone": "I’m done",
329
+ "voiceSession.imDoneHint": "Send what you said now",
258
330
  "voiceSession.interrupt": "Stop the assistant and speak",
259
331
  "voiceSession.interrupting": "Stopped — go ahead",
332
+ "voiceSession.letMeFinish": "Let me finish",
333
+ "voiceSession.letMeFinishHint": "Pause sending until you tap “I’m done”",
260
334
  "voiceSession.listening": "Listening…",
261
335
  "voiceSession.micDenied": "Microphone access is blocked. Allow it in your browser settings to talk.",
262
336
  "voiceSession.mute": "Turn the microphone off",
@@ -341,15 +415,15 @@ var p = {
341
415
  "writeProposal.variablesOmitted": "{{count}} more values not shown",
342
416
  "writeProposal.waitForTurn": "You can confirm once the assistant finishes replying."
343
417
  }, m = (e) => Object.fromEntries(e.map((e) => [e.key, e.fallback])), h = Object.freeze({
344
- ...m(Object.values(a)),
345
- ...m(o),
346
- ...m([c, s]),
347
- ...m(i),
418
+ ...m(Object.values(o)),
419
+ ...m(s),
420
+ ...m([l, c]),
421
+ ...m(a),
422
+ ...m(Object.values(i)),
348
423
  ...m(Object.values(r)),
349
- ...m(Object.values(u)),
350
424
  ...m(Object.values(d)),
351
425
  ...m(Object.values(f)),
352
- ...Object.fromEntries(l.map((e) => [e.labelKey, e.labelFallback]))
426
+ ...Object.fromEntries(u.map((e) => [e.labelKey, e.labelFallback]))
353
427
  }), g = Object.freeze({ "outcome.usageDailyLimitReachedNoTime": "You've reached today's AI assistant limit. Try again tomorrow." }), _ = Object.freeze({
354
428
  ...p,
355
429
  ...h,
@@ -50,6 +50,8 @@ export * from './voice/voiceStageState';
50
50
  export * from './voice/voiceStatus';
51
51
  export * from './voice/rotationClock';
52
52
  export * from './voice/voiceSession';
53
+ export * from './voice/handsFree';
54
+ export * from './voice/supersededTurns';
53
55
  export * from './voice/speechVoices';
54
56
  export * from './voice/voiceTranscript';
55
57
  export * from './voice/speakableText';
@@ -139,6 +141,7 @@ export * from './ui/composer/AssistantLanguageSelector';
139
141
  export * from './ui/composer/AssistantModeSelector';
140
142
  export * from './ui/composer/AssistantVoiceButton';
141
143
  export * from './ui/composer/AssistantVoiceSelector';
144
+ export * from './ui/composer/AssistantVoiceGraceSelector';
142
145
  export * from './ui/voice/AssistantVoiceOrb';
143
146
  export * from './ui/voice/AssistantVoiceSessionButton';
144
147
  export * from './ui/voice/VoiceCaption';
@@ -159,6 +162,8 @@ export * from './ui/AssistantConversationFilters';
159
162
  export * from './ui/AssistantHistorySearchBox';
160
163
  export * from './ui/AssistantDeleteConversationDialog';
161
164
  export * from './ui/conversationDeleteDialog';
165
+ export * from './ui/AssistantControlConfirmDialog';
166
+ export * from './ui/controlConfirmDialog';
162
167
  export * from './ui/conversationDelete';
163
168
  export * from './conversationDeleteCommand';
164
169
  export * from './exportConversation';
@@ -212,6 +217,17 @@ export * from './uiActions/linkContext';
212
217
  export * from './uiActions/deixis';
213
218
  export * from './uiActions/recordNames';
214
219
  export * from './uiActions/uiCatalogue';
220
+ export * from './appControls/types';
221
+ export * from './appControls/registry';
222
+ export * from './appControls/useAssistantControl';
223
+ export * from './appControls/snapshot';
224
+ export * from './appControls/grammar';
225
+ export * from './appControls/plan';
226
+ export * from './appControls/copy';
227
+ export * from './appControls/names';
228
+ export * from './appControls/pageAdapters';
229
+ export * from './appControls/languages';
230
+ export * from './appControls/text';
215
231
  export * from './turnOutcomeCopy';
216
232
  export * from './aiCredits';
217
233
  export * from './usageReporting';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,13 @@ export declare function themeCommandCopy(tr: AssistantTr, plan: {
17
17
  alreadyApplied: boolean;
18
18
  mode: ThemeModeValue;
19
19
  }, familyRequest: boolean): LocalCommandCopy;
20
+ /**
21
+ * Product words (page labels, a parent's label) as literal markdown TEXT. They
22
+ * come from each product's nav registration and its SEEDED translations, and
23
+ * the reply renders as markdown: an unescaped "[Verify](https://…)" in a label
24
+ * became a live link in the assistant's own voice (review of #270).
25
+ */
26
+ export declare const markdownText: (text: string) => string;
20
27
  export declare function navigationCommandCopy(tr: AssistantTr, page: string, alreadyHere: boolean): LocalCommandCopy;
21
28
  /**
22
29
  * More than one place has that name: offer each as a link. The links route
@@ -1 +1 @@
1
- {"version":3,"file":"localUiCommandCopy.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/localUiCommandCopy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACrB;AA8CD,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,WAAW,EACf,IAAI,EAAE;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,EACvD,aAAa,EAAE,OAAO,GACrB,gBAAgB,CAiClB;AAaD,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,GACnB,gBAAgB,CAOlB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,SAAS,gBAAgB,EAAE,GACtC,gBAAgB,CAelB;AAiDD,MAAM,WAAW,sBAAsB;IACrC,0EAA0E;IAC1E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA4BD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,WAAW,EACf,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,sBAAsB,GAC5B,gBAAgB,CAkBlB;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,CAEnF;AAED,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,WAAW,GAAG,gBAAgB,CAErE;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,WAAW,EACf,UAAU,EAAE,SAAS,gBAAgB,EAAE,GACtC,gBAAgB,CAQlB;AAED,qDAAqD;AACrD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,WAAW,GAAG,gBAAgB,CAElE;AA2BD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,UAAU,EAAE,SAAS,gBAAgB,EAAE,GACtC,gBAAgB,CAWlB;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,SAAS,gBAAgB,EAAE,GACtC,gBAAgB,CAKlB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,WAAW,EACf,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtC,MAAM,CAER"}
1
+ {"version":3,"file":"localUiCommandCopy.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/localUiCommandCopy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACrB;AA8CD,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,WAAW,EACf,IAAI,EAAE;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,EACvD,aAAa,EAAE,OAAO,GACrB,gBAAgB,CAiClB;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,WAC8B,CAAC;AAIxE,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,GACnB,gBAAgB,CAOlB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,SAAS,gBAAgB,EAAE,GACtC,gBAAgB,CAelB;AAiDD,MAAM,WAAW,sBAAsB;IACrC,0EAA0E;IAC1E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA4BD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,WAAW,EACf,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,sBAAsB,GAC5B,gBAAgB,CAkBlB;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,CAEnF;AAED,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,WAAW,GAAG,gBAAgB,CAErE;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,WAAW,EACf,UAAU,EAAE,SAAS,gBAAgB,EAAE,GACtC,gBAAgB,CAQlB;AAED,qDAAqD;AACrD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,WAAW,GAAG,gBAAgB,CAElE;AA2BD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,UAAU,EAAE,SAAS,gBAAgB,EAAE,GACtC,gBAAgB,CAWlB;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,SAAS,gBAAgB,EAAE,GACtC,gBAAgB,CAKlB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,WAAW,EACf,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtC,MAAM,CAER"}
@@ -107,4 +107,4 @@ function j(e, t) {
107
107
  return e(t.key, t.fallback);
108
108
  }
109
109
  //#endregion
110
- export { x as backDoneCopy, c as chooseDestinationCopy, C as chooseLinkedCopy, j as entityNounText, S as linkNotOpenableCopy, s as navigationCommandCopy, b as navigationOutcomeCopy, w as pickFromListCopy, A as recordChoiceCopy, k as recordKindsCopy, i as themeCommandCopy };
110
+ export { x as backDoneCopy, c as chooseDestinationCopy, C as chooseLinkedCopy, j as entityNounText, S as linkNotOpenableCopy, a as markdownText, s as navigationCommandCopy, b as navigationOutcomeCopy, w as pickFromListCopy, A as recordChoiceCopy, k as recordKindsCopy, i as themeCommandCopy };
@@ -1,3 +1,5 @@
1
+ import { AppControlRequest } from './appControls/grammar';
2
+ import { ControlSnapshot } from './appControls/snapshot';
1
3
  import { AssistantEntityRoute } from './uiActions/entityRoutes';
2
4
  import { NavigationContext, PendingChoice } from './uiActions/linkContext';
3
5
  import { AssistantRecordAdapter, RecordRequest } from './uiActions/recordNames';
@@ -89,6 +91,15 @@ export type LocalUiCommand = {
89
91
  | {
90
92
  kind: "open-record";
91
93
  request: RecordRequest;
94
+ }
95
+ /**
96
+ * ★ BOFF-8060 (app-wide controls): a header, sidebar, language, assistant
97
+ * panel or page control the product REGISTERED a handler for
98
+ * (`appControls/registry.ts`). Never produced without one.
99
+ */
100
+ | {
101
+ kind: "app-control";
102
+ request: AppControlRequest;
92
103
  };
93
104
  /**
94
105
  * `canonical`, with courtesy words at either end removed, so "Could you switch
@@ -143,6 +154,11 @@ export interface LocalUiCommandContext {
143
154
  navigation?: NavigationContext | null;
144
155
  /** Skip the named-record grammar (the sentence already went through it once). */
145
156
  skipRecords?: boolean;
157
+ /**
158
+ * ★ BOFF-8060: the controls registered right now (`readControlSnapshot`).
159
+ * Absent: no app-control grammar runs, and the matcher is what it was.
160
+ */
161
+ controls?: ControlSnapshot;
146
162
  }
147
163
  /**
148
164
  * The command this whole utterance is, or null to send it to the model.
@@ -1 +1 @@
1
- {"version":3,"file":"localUiCommands.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/localUiCommands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"localUiCommands.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/localUiCommands.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,19 @@
1
1
  import { navTargetPath as e } from "../navigation/navTargetPath.js";
2
- import { isBackRequest as t, isThereRequest as n, parseChoice as r } from "./uiActions/deixis.js";
3
- import { parseRecordRequest as i } from "./uiActions/recordNames.js";
2
+ import { canonical as t } from "./appControls/text.js";
3
+ import { matchAppControl as n } from "./appControls/grammar.js";
4
+ import { isBackRequest as r, isThereRequest as i, parseChoice as a } from "./uiActions/deixis.js";
5
+ import { parseRecordRequest as o } from "./uiActions/recordNames.js";
4
6
  //#region src/shared/assistant/localUiCommands.ts
5
- var a = /^(?:(?:hey|hi|so|now|and|then|you know|just|actually|basically)\b ?|(?:please|pls|kindly)\b ?|(?:can|could|would|will) (?:you|u)\b(?: please)? ?|i (?:want|would like|d like)(?: you)?(?: to)?\b ?|let s\b ?)/, o = /^(?:(?:hey|hi|so|ok|okay)\W+)*(?:please\W+)?(?:can|could|would|will) (?:you|u)\b/i, s = / (?:please|pls|for me|now|thanks|thank you|right now)$/;
6
- function c(e) {
7
- return e.normalize("NFKC").toLowerCase().replace(/&/g, " and ").replace(/[^\p{L}\p{N}\s]/gu, " ").replace(/\s+/g, " ").trim();
8
- }
9
- function l(e, t = {}) {
10
- let n = c(e).replace(/\b(?:um+|uh+|erm|er|hmm+)\b/g, " ").replace(/\s+/g, " ").replace(/\b(\w+)(?: \1\b)+/g, "$1").trim();
7
+ var s = /^(?:(?:hey|hi|so|now|and|then|you know|just|actually|basically)\b ?|(?:please|pls|kindly)\b ?|(?:can|could|would|will) (?:you|u)\b(?: please)? ?|i (?:want|would like|d like)(?: you)?(?: to)?\b ?|let s\b ?)/, c = /^(?:(?:hey|hi|so|ok|okay)\W+)*(?:please\W+)?(?:can|could|would|will) (?:you|u)\b/i, l = / (?:please|pls|for me|now|thanks|thank you|right now)$/;
8
+ function u(e, n = {}) {
9
+ let r = t(e).replace(/\b(?:um+|uh+|erm|er|hmm+)\b/g, " ").replace(/\s+/g, " ").replace(/\b(\w+)(?: \1\b)+/g, "$1").trim();
11
10
  for (;;) {
12
- let e = n.replace(a, "");
13
- if (t.keepEnding || (e = e.replace(s, "")), e = e.trim(), e === n) return n;
14
- n = e;
11
+ let e = r.replace(s, "");
12
+ if (n.keepEnding || (e = e.replace(l, "")), e = e.trim(), e === r) return r;
13
+ r = e;
15
14
  }
16
15
  }
17
- var u = {
16
+ var d = {
18
17
  light: {
19
18
  kind: "family",
20
19
  family: "light"
@@ -55,27 +54,27 @@ var u = {
55
54
  kind: "named",
56
55
  theme: "system"
57
56
  }
58
- }, d = "(light|dark|forest|ocean|sunset|high contrast|highcontrast|system|device)", f = "(?:(?:the|my) )?(?:(?:app|ui|screen|display|interface|site) )?(?:theme|colou?r scheme|colou?r mode|appearance)", p = "(mode|theme|colou?r scheme|colou?r mode|appearance)", m = "(?:switch|change|set|turn|put|make|flip)", h = [
59
- { pattern: RegExp(`^(?:${m}(?: (?:over|back))? (?:to|into) |go (?:back )?to |(?:turn|switch) on |(?:use|enable|activate|apply|try|turn|switch|set) )?(?:(?:the|a) )?${d} ${p}(?: on)?$`) },
60
- { pattern: RegExp(`^${m} ${f} (?:to|into|back to) (?:(?:the|a) )?${d}(?: ${p})?$`) },
57
+ }, f = "(light|dark|forest|ocean|sunset|high contrast|highcontrast|system|device)", p = "(?:(?:the|my) )?(?:(?:app|ui|screen|display|interface|site) )?(?:theme|colou?r scheme|colou?r mode|appearance)", m = "(mode|theme|colou?r scheme|colou?r mode|appearance)", h = "(?:switch|change|set|turn|put|make|flip)", g = [
58
+ { pattern: RegExp(`^(?:${h}(?: (?:over|back))? (?:to|into) |go (?:back )?to |(?:turn|switch) on |(?:use|enable|activate|apply|try|turn|switch|set) )?(?:(?:the|a) )?${f} ${m}(?: on)?$`) },
59
+ { pattern: RegExp(`^${h} ${p} (?:to|into|back to) (?:(?:the|a) )?${f}(?: ${m})?$`) },
61
60
  { pattern: /^(?:switch|change|go)(?: back)? to (light|dark)()$/ },
62
61
  {
63
- pattern: RegExp(`^(?:(?:turn|switch) off|disable|deactivate|exit|leave) (?:the )?(light|dark) ${p}$`),
62
+ pattern: RegExp(`^(?:(?:turn|switch) off|disable|deactivate|exit|leave) (?:the )?(light|dark) ${m}$`),
64
63
  invert: !0
65
64
  },
66
65
  {
67
- pattern: RegExp(`^(?:(?:turn|switch|set) )?(?:the )?(light|dark) ${p} off$`),
66
+ pattern: RegExp(`^(?:(?:turn|switch|set) )?(?:the )?(light|dark) ${m} off$`),
68
67
  invert: !0
69
68
  },
70
69
  { pattern: /^(?:set|make|change) (?:the |my )?(?:theme|appearance) (?:to )?(?:follow|match|use) (?:my|the) (device|system|os)()(?: (?:theme|appearance))?$/ },
71
70
  { pattern: /^(?:follow|match|use) (?:my|the) (device|system|os)() (?:theme|appearance)$/ },
72
71
  { pattern: /^(?:turn on|switch on|enable|use|activate|switch to) (?:the )?(high contrast|highcontrast)()$/ }
73
72
  ];
74
- function g(e) {
75
- for (let { pattern: t, invert: n } of h) {
73
+ function _(e) {
74
+ for (let { pattern: t, invert: n } of g) {
76
75
  let r = t.exec(e);
77
76
  if (!r) continue;
78
- let i = u[r[1] ?? ""];
77
+ let i = d[r[1] ?? ""];
79
78
  if (i) return i.kind === "named" && i.theme === "system" && r[2] === "mode" ? null : n ? i.kind === "family" ? {
80
79
  kind: "family",
81
80
  family: i.family === "dark" ? "light" : "dark"
@@ -83,21 +82,21 @@ function g(e) {
83
82
  }
84
83
  return null;
85
84
  }
86
- var _ = /^(?:delete|remove|erase) (?:this|the|my|the current) conversation$/, v = /^(?:(?:(?:go|navigate|take me|bring me|jump|head|get me|move|switch)(?: back| over)?|back) (?:to|too)|open(?: up)?|(?:pull|bring) up|visit|show me)\s+(.+)$/, y = /^(?:the )?(.+) (?:page|screen)$/, b = /(?:^| )(?:tasks?|issues?|tickets?|orders?|invoices?|alerts?|requests?|jobs?|incidents?|bugs?|cases?|deals?|items?|questions?|sessions?|positions?|pull requests?|prs?|work orders?|approvals?|actions?|applications?)$/, x = /^(?:ai|a i|api|a p i|id|data|source|access|banking|graph|search|telemetry|stack|house|field|fields|space|market|mic)$/, S = / (?:page|screen|section|tab)$/;
87
- function C(e) {
88
- let t = /* @__PURE__ */ new Map(), n = (e, n) => {
85
+ var v = /^(?:delete|remove|erase) (?:this|the|my|the current) conversation$/, y = /^(?:(?:(?:go|navigate|take me|bring me|jump|head|get me|move|switch)(?: back| over)?|back) (?:to|too)|open(?: up)?|(?:pull|bring) up|visit|show me)\s+(.+)$/, b = /^(?:the )?(.+) (?:page|screen)$/, x = /(?:^| )(?:tasks?|issues?|tickets?|orders?|invoices?|alerts?|requests?|jobs?|incidents?|bugs?|cases?|deals?|items?|questions?|sessions?|positions?|pull requests?|prs?|work orders?|approvals?|actions?|applications?)$/, S = /^(?:ai|a i|api|a p i|id|data|source|access|banking|graph|search|telemetry|stack|house|field|fields|space|market|mic)$/, C = / (?:page|screen|section|tab)$/;
86
+ function w(e) {
87
+ let n = /* @__PURE__ */ new Map(), r = (e, t) => {
89
88
  if (!e) return;
90
- let r = t.get(e) ?? [];
91
- r.some((e) => e.path === n.path) || r.push(n), t.set(e, r);
89
+ let r = n.get(e) ?? [];
90
+ r.some((e) => e.path === t.path) || r.push(t), n.set(e, r);
92
91
  };
93
- for (let t of e) {
94
- let e = c(t.label);
95
- n(e, t), t.context && n(`${c(t.context)} ${e}`, t), t.group && n(`${c(t.group)} ${e}`, t);
92
+ for (let n of e) {
93
+ let e = t(n.label);
94
+ r(e, n), n.context && r(`${t(n.context)} ${e}`, n), n.group && r(`${t(n.group)} ${e}`, n);
96
95
  }
97
- for (let [e, r] of [...t]) for (let t of r) n(`\u0000${e.replace(/ /g, "")}`, t);
98
- return t;
96
+ for (let [e, t] of [...n]) for (let n of t) r(`\u0000${e.replace(/ /g, "")}`, n);
97
+ return n;
99
98
  }
100
- var w = new Set([
99
+ var T = new Set([
101
100
  "news",
102
101
  "series",
103
102
  "species",
@@ -116,18 +115,18 @@ var w = new Set([
116
115
  "process",
117
116
  "progress"
118
117
  ]);
119
- function T(e) {
118
+ function E(e) {
120
119
  let t = e.split(" "), n = t.pop() ?? "";
121
120
  if (n.length < 3) return [];
122
121
  let r = /* @__PURE__ */ new Set();
123
- return w.has(n) || (/[^aeiou]ies$/.test(n) && n.length > 4 ? r.add(`${n.slice(0, -3)}y`) : /(?:sses|shes|ches|xes|zes)$/.test(n) ? r.add(n.slice(0, -2)) : n.length >= 4 && /s$/.test(n) && !/(?:ss|us|is)$/.test(n) && r.add(n.slice(0, -1))), [...r].map((e) => [...t, e].join(" "));
122
+ return T.has(n) || (/[^aeiou]ies$/.test(n) && n.length > 4 ? r.add(`${n.slice(0, -3)}y`) : /(?:sses|shes|ches|xes|zes)$/.test(n) ? r.add(n.slice(0, -2)) : n.length >= 4 && /s$/.test(n) && !/(?:ss|us|is)$/.test(n) && r.add(n.slice(0, -1))), [...r].map((e) => [...t, e].join(" "));
124
123
  }
125
- function E(e, t, n) {
126
- let r = v.exec(e) ?? y.exec(e);
124
+ function D(e, t, n) {
125
+ let r = y.exec(e) ?? b.exec(e);
127
126
  if (!r) return null;
128
- let i = r[1] ?? "", a = e.startsWith("show me "), o = /^open /.test(e), s = i.replace(/^(?:the|my|our) /, ""), c = s.replace(S, ""), l = c !== s || y.test(e);
129
- if (a && !l || o && s === i && !l && (b.test(s) || x.test(s) || /^\w{1,3}$/.test(s))) return null;
130
- let u = C(t), d = (e) => {
127
+ let i = r[1] ?? "", a = e.startsWith("show me "), o = /^open /.test(e), s = i.replace(/^(?:the|my|our) /, ""), c = s.replace(C, ""), l = c !== s || b.test(e);
128
+ if (a && !l || o && s === i && !l && (x.test(s) || S.test(s) || /^\w{1,3}$/.test(s))) return null;
129
+ let u = w(t), d = (e) => {
131
130
  let t = u.get(e);
132
131
  if (t) return {
133
132
  key: e,
@@ -139,7 +138,7 @@ function E(e, t, n) {
139
138
  list: r
140
139
  } : void 0;
141
140
  }, f = c === s ? [s] : [s, c], p = f.reduce((e, t) => e ?? d(t), void 0);
142
- if (!p && n && (p = f.flatMap(T).reduce((e, t) => e ?? d(t), void 0)), !p || p.list.length === 0) return null;
141
+ if (!p && n && (p = f.flatMap(E).reduce((e, t) => e ?? d(t), void 0)), !p || p.list.length === 0) return null;
143
142
  let m = p.list;
144
143
  return m.length === 1 ? {
145
144
  kind: "navigate",
@@ -150,27 +149,36 @@ function E(e, t, n) {
150
149
  candidates: m
151
150
  };
152
151
  }
153
- var D = (e) => e === void 0 || /^en(?:[-_]|$)/i.test(e.trim());
154
- function O(e, n, r = {}, a = {}) {
152
+ var O = (e) => e === void 0 || /^en(?:[-_]|$)/i.test(e.trim());
153
+ function k(e, t, i = {}, a = {}) {
155
154
  let s = e.normalize("NFKC").trim();
156
- if (/[\p{Extended_Pictographic}\p{So}]/u.test(s) || /(?:^|\s)>?[:;=][-'^]?[()[\]/\\|pPdDoO3*@$]+(?=\s|$)/.test(s) || /(?:^|\s)(?:xD|XD|-_-|T_T|<\/?3)(?=\s|$)/.test(s) || /[?¿؟][^\p{L}\p{N}]*$/u.test(s) && !o.test(s)) return null;
157
- let c = l(e);
158
- if (!c || c.length > 80) return null;
159
- if (_.test(c)) return { kind: "conversation-delete" };
160
- let u = g(c);
161
- if (u) return r.themeWords === "mode-only" && /\b(?:theme|appearance|colou?r scheme)\b/.test(c) && !/\b(?:app|ui|interface)\b/.test(c) ? null : {
155
+ if (/[\p{Extended_Pictographic}\p{So}]/u.test(s) || /(?:^|\s)>?[:;=][-'^]?[()[\]/\\|pPdDoO3*@$]+(?=\s|$)/.test(s) || /(?:^|\s)(?:xD|XD|-_-|T_T|<\/?3)(?=\s|$)/.test(s) || /[?¿؟][^\p{L}\p{N}]*$/u.test(s) && !c.test(s)) return null;
156
+ let l = u(e);
157
+ if (!l || l.length > 80) return null;
158
+ if (v.test(l)) return { kind: "conversation-delete" };
159
+ let d = _(l);
160
+ if (d) return i.themeWords === "mode-only" && /\b(?:theme|appearance|colou?r scheme)\b/.test(l) && !/\b(?:app|ui|interface)\b/.test(l) ? null : {
162
161
  kind: "theme",
163
- request: u
162
+ request: d
164
163
  };
165
- if (a.backRunnable && t(c)) return { kind: "back" };
166
- let d = D(r.locale), f = d ? a.navigation ?? null : null, p = f ? j(c, f) : null;
167
- if (p) return p;
168
- let m = E(l(e, { keepEnding: !0 }), n, d) ?? E(c, n, d), h = f ? M(c, f) : null;
169
- if (h && m) return N(h, m);
170
- if (h) return h;
164
+ if (a.backRunnable && r(l)) return { kind: "back" };
165
+ let f = O(i.locale), p = f ? a.navigation ?? null : null, m = p ? M(l, p) : null;
171
166
  if (m) return m;
172
- if (!a.skipRecords && d && r.records?.length) {
173
- let e = i(c, r.records);
167
+ let h = f && a.controls ? n(l, s, a.controls) : null;
168
+ if (h && !h.weak) return {
169
+ kind: "app-control",
170
+ request: h.request
171
+ };
172
+ let g = D(u(e, { keepEnding: !0 }), t, f) ?? D(l, t, f), y = p ? N(l, p) : null;
173
+ if (y && g) return P(y, g);
174
+ if (y) return y;
175
+ if (g) return g;
176
+ if (h) return {
177
+ kind: "app-control",
178
+ request: h.request
179
+ };
180
+ if (!a.skipRecords && f && i.records?.length) {
181
+ let e = o(l, i.records);
174
182
  if (e) return {
175
183
  kind: "open-record",
176
184
  request: e
@@ -178,28 +186,28 @@ function O(e, n, r = {}, a = {}) {
178
186
  }
179
187
  return null;
180
188
  }
181
- var k = 4, A = (e) => ` ${c(e)} `;
182
- function j(e, t) {
189
+ var A = 4, j = (e) => ` ${t(e)} `;
190
+ function M(e, t) {
183
191
  let n = t.pendingChoice;
184
192
  if (!n) return null;
185
- let i = r(e);
186
- if (!i) return null;
187
- let a = n.candidates;
188
- if (a === null) return {
193
+ let r = a(e);
194
+ if (!r) return null;
195
+ let i = n.candidates;
196
+ if (i === null) return {
189
197
  kind: "pick-from-list",
190
198
  candidates: null,
191
199
  candidateIds: n.candidateIds
192
200
  };
193
201
  let o;
194
- if (i.kind === "ordinal") o = a[i.position - 1];
195
- else if (i.kind === "last") o = a[a.length - 1];
202
+ if (r.kind === "ordinal") o = i[r.position - 1];
203
+ else if (r.kind === "last") o = i[i.length - 1];
196
204
  else {
197
- let e = A(i.context), t = a.filter((t) => t !== null && [t.context, t.group].some((t) => t !== void 0 && A(t).includes(e)));
205
+ let e = j(r.context), t = i.filter((t) => t !== null && [t.context, t.group].some((t) => t !== void 0 && j(t).includes(e)));
198
206
  o = t.length === 1 ? t[0] : void 0;
199
207
  }
200
208
  return o === void 0 ? {
201
209
  kind: "pick-from-list",
202
- candidates: a,
210
+ candidates: i,
203
211
  candidateIds: n.candidateIds
204
212
  } : o === null ? { kind: "link-not-openable" } : {
205
213
  kind: "navigate",
@@ -207,24 +215,24 @@ function j(e, t) {
207
215
  via: "choice"
208
216
  };
209
217
  }
210
- function M(e, t) {
211
- if (!n(e)) return null;
218
+ function N(e, t) {
219
+ if (!i(e)) return null;
212
220
  if (t.pendingChoice) return {
213
221
  kind: "pick-from-list",
214
222
  candidates: t.pendingChoice.candidates,
215
223
  candidateIds: t.pendingChoice.candidateIds
216
224
  };
217
- let { targets: r, unresolved: i } = t.links, [a] = r;
218
- return a ? r.length === 1 ? {
225
+ let { targets: n, unresolved: r } = t.links, [a] = n;
226
+ return a ? n.length === 1 ? {
219
227
  kind: "navigate",
220
228
  destination: a,
221
229
  via: "link"
222
230
  } : {
223
231
  kind: "choose-linked",
224
- candidates: r.slice(0, 4)
225
- } : i > 0 ? { kind: "link-not-openable" } : null;
232
+ candidates: n.slice(0, 4)
233
+ } : r > 0 ? { kind: "link-not-openable" } : null;
226
234
  }
227
- function N(e, t) {
235
+ function P(e, t) {
228
236
  let n = (e) => e.kind === "navigate" ? [e.destination] : e.kind === "choose-linked" || e.kind === "choose-destination" ? e.candidates : null, r = n(e), i = n(t);
229
237
  if (!r || !i) return t;
230
238
  let a = [];
@@ -239,11 +247,11 @@ function N(e, t) {
239
247
  candidates: a.slice(0, 4)
240
248
  };
241
249
  }
242
- var P = /^__nav_more__:/;
243
- function F(t, n) {
250
+ var F = /^__nav_more__:/;
251
+ function I(t, n) {
244
252
  let r = [];
245
253
  for (let i of t) {
246
- let t = P.test(i.id), a = e(i);
254
+ let t = F.test(i.id), a = e(i);
247
255
  !t && i.path.startsWith("/") && !i.path.startsWith("//") && a.startsWith("/") && !a.startsWith("//") && i.label.trim() && r.push({
248
256
  id: i.id,
249
257
  label: i.label,
@@ -251,11 +259,11 @@ function F(t, n) {
251
259
  ...a === i.path ? {} : { aliases: [i.path] },
252
260
  ...n ? { context: n } : {},
253
261
  ...i.group ? { group: i.group } : {}
254
- }), i.children?.length && r.push(...F(i.children, t ? n : i.label));
262
+ }), i.children?.length && r.push(...I(i.children, t ? n : i.label));
255
263
  }
256
264
  return r;
257
265
  }
258
- function I(e, t) {
266
+ function L(e, t) {
259
267
  return e.kind === "family" ? {
260
268
  alreadyApplied: t.resolvedTheme === e.family,
261
269
  mode: e.family
@@ -264,7 +272,7 @@ function I(e, t) {
264
272
  mode: e.theme
265
273
  };
266
274
  }
267
- function L(e, t) {
275
+ function R(e, t) {
268
276
  let n = (e) => {
269
277
  let [t = ""] = e.split("#"), [n = "", r = ""] = t.split("?"), i = n.length > 1 ? n.replace(/\/+$/, "") : n, a = new URLSearchParams(r);
270
278
  return a.sort(), {
@@ -274,11 +282,11 @@ function L(e, t) {
274
282
  }, r = n(e), i = n(t);
275
283
  return r.pathname === i.pathname ? r.query === "" || r.query === i.query : !1;
276
284
  }
277
- function R(e, t, n) {
278
- let r = [e.path, ...e.aliases ?? []].find((e) => L(e, t));
279
- return r === void 0 ? !1 : r.includes("?") ? !0 : !n.some((e) => e.path !== r && e.path.includes("?") && z(e.path, t));
285
+ function z(e, t, n) {
286
+ let r = [e.path, ...e.aliases ?? []].find((e) => R(e, t));
287
+ return r === void 0 ? !1 : r.includes("?") ? !0 : !n.some((e) => e.path !== r && e.path.includes("?") && B(e.path, t));
280
288
  }
281
- function z(e, t) {
289
+ function B(e, t) {
282
290
  let n = (e) => {
283
291
  let [t = ""] = e.split("#"), [n = "", r = ""] = t.split("?");
284
292
  return {
@@ -291,4 +299,4 @@ function z(e, t) {
291
299
  return !0;
292
300
  }
293
301
  //#endregion
294
- export { k as LINKED_CHOICE_MAX, R as isAlreadyThere, L as isCurrentPath, O as matchLocalUiCommand, F as navDestinations, l as normaliseUtterance, I as planThemeChange, T as singularVariants };
302
+ export { A as LINKED_CHOICE_MAX, z as isAlreadyThere, R as isCurrentPath, k as matchLocalUiCommand, I as navDestinations, u as normaliseUtterance, L as planThemeChange, E as singularVariants };