@burdenoff/fe-libs 2026.925.5 → 2026.925.7

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 (56) hide show
  1. package/dist/chrome/MobileTabBar.js +6 -6
  2. package/dist/chrome/ProductSideNav.js +9 -9
  3. package/dist/chrome/sideNavigation/useSideNavigationState.js +3 -3
  4. package/dist/chrome.js +8 -8
  5. package/dist/shared/assistant/autoRouting.d.ts +3 -0
  6. package/dist/shared/assistant/autoRouting.d.ts.map +1 -1
  7. package/dist/shared/assistant/autoRouting.js +1 -1
  8. package/dist/shared/assistant/conversation.d.ts +20 -0
  9. package/dist/shared/assistant/conversation.d.ts.map +1 -1
  10. package/dist/shared/assistant/i18nManifest.d.ts +11 -0
  11. package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
  12. package/dist/shared/assistant/i18nManifest.js +11 -0
  13. package/dist/shared/assistant/index.d.ts +3 -0
  14. package/dist/shared/assistant/index.d.ts.map +1 -1
  15. package/dist/shared/assistant/localUiCommandCopy.d.ts +26 -0
  16. package/dist/shared/assistant/localUiCommandCopy.d.ts.map +1 -0
  17. package/dist/shared/assistant/localUiCommandCopy.js +37 -0
  18. package/dist/shared/assistant/localUiCommands.d.ts +124 -0
  19. package/dist/shared/assistant/localUiCommands.d.ts.map +1 -0
  20. package/dist/shared/assistant/localUiCommands.js +173 -0
  21. package/dist/shared/assistant/prewarm.d.ts +139 -0
  22. package/dist/shared/assistant/prewarm.d.ts.map +1 -0
  23. package/dist/shared/assistant/prewarm.js +96 -0
  24. package/dist/shared/assistant/product.d.ts +13 -1
  25. package/dist/shared/assistant/product.d.ts.map +1 -1
  26. package/dist/shared/assistant/product.js +8 -6
  27. package/dist/shared/assistant/turnTimeline.d.ts +7 -0
  28. package/dist/shared/assistant/turnTimeline.d.ts.map +1 -1
  29. package/dist/shared/assistant/turnTimeline.js +2 -2
  30. package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
  31. package/dist/shared/assistant/ui/AssistantChatArea.js +663 -482
  32. package/dist/shared/assistant/ui/AssistantMessageItem.d.ts +6 -0
  33. package/dist/shared/assistant/ui/AssistantMessageItem.d.ts.map +1 -1
  34. package/dist/shared/assistant/ui/AssistantMessageItem.js +3 -3
  35. package/dist/shared/assistant/ui/AssistantMessageList.d.ts.map +1 -1
  36. package/dist/shared/assistant/ui/AssistantMessageList.js +14 -7
  37. package/dist/shared/assistant/ui/AssistantSpeechProvider.d.ts +9 -0
  38. package/dist/shared/assistant/ui/AssistantSpeechProvider.d.ts.map +1 -1
  39. package/dist/shared/assistant/ui/AssistantSpeechProvider.js +243 -196
  40. package/dist/shared/assistant/ui/composer/AssistantComposer.d.ts +6 -0
  41. package/dist/shared/assistant/ui/composer/AssistantComposer.d.ts.map +1 -1
  42. package/dist/shared/assistant/ui/composer/AssistantComposer.js +110 -106
  43. package/dist/shared/assistant/ui/useVoiceSession.d.ts.map +1 -1
  44. package/dist/shared/assistant/ui/useVoiceSession.js +44 -43
  45. package/dist/shared/assistant/voice/captionText.d.ts.map +1 -1
  46. package/dist/shared/assistant/voice/captionText.js +1 -1
  47. package/dist/shared/assistant/voice/speakableText.d.ts.map +1 -1
  48. package/dist/shared/assistant/voice/speakableText.js +63 -62
  49. package/dist/shared/hooks/shell/index.d.ts +1 -1
  50. package/dist/shared/hooks/shell/index.d.ts.map +1 -1
  51. package/dist/shared/providers/shell/ThemeProvider.d.ts +6 -0
  52. package/dist/shared/providers/shell/ThemeProvider.d.ts.map +1 -1
  53. package/dist/shared/providers/shell/ThemeProvider.js +28 -25
  54. package/dist/shared-assistant.js +17 -14
  55. package/dist/shared-hooks-shell.js +12 -12
  56. package/package.json +1 -1
@@ -3,9 +3,9 @@ import { BottomSheet as t, BottomSheetContent as n, BottomSheetHeader as r, Bott
3
3
  import { getNativeBridge as a } from "../shared/native/bridge.js";
4
4
  import { appendContextToPath as o, useCurrentContextSearchParams as s } from "../shared/hooks/useCurrentContextSearchParams.js";
5
5
  import { useShellLabel as c } from "../shared/providers/shell/useShellLabel.js";
6
- import { isItemOrChildActive as l } from "./sideNavigation/helpers.js";
7
6
  import "./sideNavigation/navVisibility.js";
8
- import { useVisibleNavItems as u } from "./mobileTabBar/useVisibleNavItems.js";
7
+ import { useVisibleNavItems as l } from "./mobileTabBar/useVisibleNavItems.js";
8
+ import { isItemOrChildActive as u } from "./sideNavigation/helpers.js";
9
9
  import { resolveTabPath as d, selectMobileTabs as f } from "./mobileTabBar/selectTabs.js";
10
10
  import "./mobileTabBar/useMobileTabBarVisible.js";
11
11
  import { useCallback as p, useEffect as m, useLayoutEffect as h, useMemo as g, useRef as _, useState as v } from "react";
@@ -40,7 +40,7 @@ function D(e, t, n) {
40
40
  }));
41
41
  }
42
42
  function O({ appName: a, groupOrder: O = [], groupLabels: A = {}, maxTabs: j = 4, moreLabel: M, mobileActions: N, hideWhenKeyboardOpen: P = !0, className: F }) {
43
- let I = c(), L = M ?? I("nav.more", "More"), R = w(), z = C(), B = s(), { items: V } = u(), [H, U] = v(!1), W = _(null), { tabs: G, more: K, hasMore: q } = g(() => f(V, j), [V, j]), J = g(() => D(K, O, A), [
43
+ let I = c(), L = M ?? I("nav.more", "More"), R = w(), z = C(), B = s(), { items: V } = l(), [H, U] = v(!1), W = _(null), { tabs: G, more: K, hasMore: q } = g(() => f(V, j), [V, j]), J = g(() => D(K, O, A), [
44
44
  K,
45
45
  O,
46
46
  A
@@ -59,7 +59,7 @@ function O({ appName: a, groupOrder: O = [], groupLabels: A = {}, maxTabs: j = 4
59
59
  }, [z.pathname]);
60
60
  let Z = p((e) => {
61
61
  E(), R(o(e, B));
62
- }, [R, B]), Q = g(() => !!q && K.some((e) => l(e, z.pathname)), [
62
+ }, [R, B]), Q = g(() => !!q && K.some((e) => u(e, z.pathname)), [
63
63
  q,
64
64
  K,
65
65
  z.pathname
@@ -73,7 +73,7 @@ function O({ appName: a, groupOrder: O = [], groupLabels: A = {}, maxTabs: j = 4
73
73
  "data-keyboard-keep": P ? void 0 : "",
74
74
  className: e("fixed inset-x-0 bottom-0 z-[60] flex items-stretch", "bg-bg-surface text-text-primary", F),
75
75
  children: [G.map((t) => {
76
- let n = l(t, z.pathname);
76
+ let n = u(t, z.pathname);
77
77
  return /* @__PURE__ */ S("button", {
78
78
  type: "button",
79
79
  role: "tab",
@@ -136,7 +136,7 @@ function O({ appName: a, groupOrder: O = [], groupLabels: A = {}, maxTabs: j = 4
136
136
  }) : null, /* @__PURE__ */ x("ul", {
137
137
  className: "flex flex-col",
138
138
  children: e.items.map((e) => {
139
- let t = l(e, z.pathname);
139
+ let t = u(e, z.pathname);
140
140
  return /* @__PURE__ */ x("li", { children: /* @__PURE__ */ x(k, {
141
141
  icon: e.icon,
142
142
  label: e.label,
@@ -1,15 +1,15 @@
1
1
  import { useShellUi as e } from "../shared/providers/shell/ShellUiProvider.js";
2
2
  import { appendContextToPath as t, useCurrentContextSearchParams as n } from "../shared/hooks/useCurrentContextSearchParams.js";
3
3
  import { useShellLabel as r } from "../shared/providers/shell/useShellLabel.js";
4
- import { SideNavigation as i } from "./SideNavigation.js";
5
- import { NavCustomizeDialog as a } from "./NavCustomizeDialog.js";
6
- import { PersonaSimulationPill as o, PersonaSurfaceControls as s } from "./PersonaSurfaceControls.js";
7
- import { useVisibleNavItems as c } from "./mobileTabBar/useVisibleNavItems.js";
4
+ import { useVisibleNavItems as i } from "./mobileTabBar/useVisibleNavItems.js";
5
+ import { SideNavigation as a } from "./SideNavigation.js";
6
+ import { NavCustomizeDialog as o } from "./NavCustomizeDialog.js";
7
+ import { PersonaSimulationPill as s, PersonaSurfaceControls as c } from "./PersonaSurfaceControls.js";
8
8
  import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
9
9
  import { useLocation as f, useNavigate as p } from "react-router";
10
10
  //#region src/chrome/ProductSideNav.tsx
11
11
  function m({ logo: m, appName: h, groupOrder: g, groupLabels: _, mobileActions: v, customHeader: y, homeAriaLabel: b, collapseLabel: x }) {
12
- let S = r(), C = b ?? S("nav.goToDashboard", "Go to dashboard"), w = x ?? S("nav.collapse", "Collapse"), T = p(), E = f(), { sidebarCollapsed: D, toggleSidebar: O } = e(), k = n(), { items: A, persona: j } = c(), M = j?.simulation ?? null, N = j?.activeSurface ?? null, P = (e) => {
12
+ let S = r(), C = b ?? S("nav.goToDashboard", "Go to dashboard"), w = x ?? S("nav.collapse", "Collapse"), T = p(), E = f(), { sidebarCollapsed: D, toggleSidebar: O } = e(), k = n(), { items: A, persona: j } = i(), M = j?.simulation ?? null, N = j?.activeSurface ?? null, P = (e) => {
13
13
  T(t(e, k));
14
14
  }, F = () => {
15
15
  T(t("/", k));
@@ -39,7 +39,7 @@ function m({ logo: m, appName: h, groupOrder: g, groupLabels: _, mobileActions:
39
39
  return /* @__PURE__ */ d("div", {
40
40
  "data-tour": "sidenav",
41
41
  className: "h-full",
42
- children: [/* @__PURE__ */ u(i, {
42
+ children: [/* @__PURE__ */ u(a, {
43
43
  items: A,
44
44
  currentPath: E.pathname,
45
45
  collapsed: D,
@@ -50,12 +50,12 @@ function m({ logo: m, appName: h, groupOrder: g, groupLabels: _, mobileActions:
50
50
  collapseLabel: w,
51
51
  mobileActions: v,
52
52
  header: y ?? I,
53
- footer: j ? /* @__PURE__ */ u(s, {}) : void 0,
53
+ footer: j ? /* @__PURE__ */ u(c, {}) : void 0,
54
54
  contextSearchParams: k
55
- }, j ? `${N?.id ?? "everything"}:${M?.roleId ?? ""}` : void 0), j && /* @__PURE__ */ d(l, { children: [/* @__PURE__ */ u(a, {
55
+ }, j ? `${N?.id ?? "everything"}:${M?.roleId ?? ""}` : void 0), j && /* @__PURE__ */ d(l, { children: [/* @__PURE__ */ u(o, {
56
56
  groupLabels: _,
57
57
  groupOrder: g
58
- }), /* @__PURE__ */ u(o, {})] })]
58
+ }), /* @__PURE__ */ u(s, {})] })]
59
59
  });
60
60
  }
61
61
  //#endregion
@@ -1,5 +1,5 @@
1
- import { findAncestorIds as e } from "./helpers.js";
2
- import { NAV_MORE_ID_PREFIX as t } from "./navVisibility.js";
1
+ import { NAV_MORE_ID_PREFIX as e } from "./navVisibility.js";
2
+ import { findAncestorIds as t } from "./helpers.js";
3
3
  import { useCallback as n, useEffect as r, useRef as i, useState as a } from "react";
4
4
  //#region src/chrome/sideNavigation/useSideNavigationState.ts
5
5
  function o({ items: o, currentPath: s, collapsed: c, onToggleCollapse: l }) {
@@ -7,7 +7,7 @@ function o({ items: o, currentPath: s, collapsed: c, onToggleCollapse: l }) {
7
7
  return r(() => {
8
8
  f.current = c;
9
9
  }, [c]), r(() => {
10
- let n = new Set([...e(o, s)].filter((e) => !e.startsWith(t)));
10
+ let n = new Set([...t(o, s)].filter((t) => !t.startsWith(e)));
11
11
  n.size > 0 && d((e) => {
12
12
  let t = new Set(e), r = !1;
13
13
  return n.forEach((e) => {
package/dist/chrome.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { ShortcutHelpDialog as e } from "./chrome/ShortcutHelpDialog.js";
2
- import { AppShellLayout as t } from "./chrome/AppShellLayout.js";
3
- import { PageHeader as n } from "./chrome/PageHeader.js";
4
- import { HeaderBar as r } from "./chrome/HeaderBar.js";
5
- import { FooterBar as i } from "./chrome/FooterBar.js";
6
- import { PluginFooterStrip as a } from "./chrome/PluginFooterStrip.js";
7
- import { DEFAULT_FOOTER_COLUMNS as o, DEFAULT_SOCIAL_LINKS as s, Footer as c } from "./chrome/Footer.js";
8
- import { NAV_MORE_ID_PREFIX as l, applyNavVisibility as u, applyPermissionFilter as d, applySurfaceVisibility as f, isItemEffectivelyShown as p } from "./chrome/sideNavigation/navVisibility.js";
2
+ import { NAV_MORE_ID_PREFIX as t, applyNavVisibility as n, applyPermissionFilter as r, applySurfaceVisibility as i, isItemEffectivelyShown as a } from "./chrome/sideNavigation/navVisibility.js";
3
+ import { AppShellLayout as o } from "./chrome/AppShellLayout.js";
4
+ import { PageHeader as s } from "./chrome/PageHeader.js";
5
+ import { HeaderBar as c } from "./chrome/HeaderBar.js";
6
+ import { FooterBar as l } from "./chrome/FooterBar.js";
7
+ import { PluginFooterStrip as u } from "./chrome/PluginFooterStrip.js";
8
+ import { DEFAULT_FOOTER_COLUMNS as d, DEFAULT_SOCIAL_LINKS as f, Footer as p } from "./chrome/Footer.js";
9
9
  import { SideNavigation as m } from "./chrome/SideNavigation.js";
10
10
  import { GlobalSearch as h } from "./chrome/GlobalSearch.js";
11
11
  import { CommandPalette as g } from "./chrome/CommandPalette.js";
@@ -44,4 +44,4 @@ import { NativeTopBar as Z } from "./chrome/NativeTopBar.js";
44
44
  import { SwipeNavigation as Q } from "./chrome/SwipeNavigation.js";
45
45
  import { NativePageTransition as $ } from "./chrome/NativePageTransition.js";
46
46
  import { findNavTitle as ee, useNativeTopBarTitle as te } from "./chrome/nativeTopBarTitle.js";
47
- export { k as AccountSwitcher, t as AppShellLayout, A as AutoBreadcrumbs, L as BrandMark, _ as Breadcrumbs, g as CommandPalette, w as ContextSwitcher, o as DEFAULT_FOOTER_COLUMNS, s as DEFAULT_SOCIAL_LINKS, R as DynamicFooter, c as Footer, i as FooterBar, T as GeographySwitcher, h as GlobalSearch, r as HeaderBar, D as LanguagePickerSheet, C as LanguageSwitcher, X as MobileTabBar, l as NAV_MORE_ID_PREFIX, $ as NativePageTransition, Z as NativeTopBar, N as NavCustomizeDialog, v as NavLink, E as NotificationCenter, n as PageHeader, B as PanelContainer, z as PanelTabs, P as PersonaSimulationPill, F as PersonaSurfaceControls, K as PluginContextMenuTarget, a as PluginFooterStrip, H as PluginRoutes, U as PluginSettingsPage, W as PluginToolbar, G as PluginWidgetGrid, O as ProductPickerSheet, I as ProductSideNav, S as ProductSwitcher, x as ProfileSwitcher, e as ShortcutHelpDialog, m as SideNavigation, b as Sidebar, V as StatusBar, Q as SwipeNavigation, y as Tabs, q as ThemePreferences, u as applyNavVisibility, d as applyPermissionFilter, f as applySurfaceVisibility, ee as findNavTitle, p as isItemEffectivelyShown, j as registerBreadcrumbName, J as selectMobileTabs, M as unregisterBreadcrumbName, Y as useMobileTabBarVisible, te as useNativeTopBarTitle };
47
+ export { k as AccountSwitcher, o as AppShellLayout, A as AutoBreadcrumbs, L as BrandMark, _ as Breadcrumbs, g as CommandPalette, w as ContextSwitcher, d as DEFAULT_FOOTER_COLUMNS, f as DEFAULT_SOCIAL_LINKS, R as DynamicFooter, p as Footer, l as FooterBar, T as GeographySwitcher, h as GlobalSearch, c as HeaderBar, D as LanguagePickerSheet, C as LanguageSwitcher, X as MobileTabBar, t as NAV_MORE_ID_PREFIX, $ as NativePageTransition, Z as NativeTopBar, N as NavCustomizeDialog, v as NavLink, E as NotificationCenter, s as PageHeader, B as PanelContainer, z as PanelTabs, P as PersonaSimulationPill, F as PersonaSurfaceControls, K as PluginContextMenuTarget, u as PluginFooterStrip, H as PluginRoutes, U as PluginSettingsPage, W as PluginToolbar, G as PluginWidgetGrid, O as ProductPickerSheet, I as ProductSideNav, S as ProductSwitcher, x as ProfileSwitcher, e as ShortcutHelpDialog, m as SideNavigation, b as Sidebar, V as StatusBar, Q as SwipeNavigation, y as Tabs, q as ThemePreferences, n as applyNavVisibility, r as applyPermissionFilter, i as applySurfaceVisibility, ee as findNavTitle, a as isItemEffectivelyShown, j as registerBreadcrumbName, J as selectMobileTabs, M as unregisterBreadcrumbName, Y as useMobileTabBarVisible, te as useNativeTopBarTitle };
@@ -145,6 +145,9 @@ export interface AutoCarryOverConversation {
145
145
  messages: readonly {
146
146
  role: string;
147
147
  content: string;
148
+ metadata?: {
149
+ localAction?: unknown;
150
+ };
148
151
  }[];
149
152
  }
150
153
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"autoRouting.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/autoRouting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autoRouting.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/autoRouting.ts"],"names":[],"mappings":"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"}
@@ -828,7 +828,7 @@ function X(e, t) {
828
828
  ].join("\n");
829
829
  }
830
830
  function Z(e, t, n) {
831
- return !e || e.routedBy !== "auto" || !n ? "" : X(e.messages.filter((e) => e.role === "user").map((e) => e.content), t);
831
+ return !e || e.routedBy !== "auto" || !n ? "" : X(e.messages.filter((e) => e.role === "user" && !e.metadata?.localAction).map((e) => e.content), t);
832
832
  }
833
833
  function Q(e, t, n = 4) {
834
834
  let r = [], i = /* @__PURE__ */ new Set(), a = (e, t) => {
@@ -20,6 +20,20 @@ export interface AssistantPanelArtifact {
20
20
  size: number;
21
21
  downloadPath?: string;
22
22
  }
23
+ /** What a locally handled UI command did (see `localUiCommands`). */
24
+ export type AssistantLocalAction = {
25
+ kind: "theme";
26
+ mode: string;
27
+ alreadyApplied: boolean;
28
+ } | {
29
+ kind: "navigate";
30
+ destinationId: string;
31
+ path: string;
32
+ alreadyHere: boolean;
33
+ } | {
34
+ kind: "choose-destination";
35
+ candidateIds: string[];
36
+ };
23
37
  export interface AssistantMessageMetadata {
24
38
  artifacts?: AssistantPanelArtifact[];
25
39
  mode?: AssistantMode;
@@ -100,6 +114,12 @@ export interface AssistantMessageMetadata {
100
114
  * localStorage or rendered. See `utils/pendingWrite`.
101
115
  */
102
116
  pendingWrite?: PendingWrite;
117
+ /**
118
+ * ★ BOFF-7802: this reply is a UI command the panel carried out ITSELF — a
119
+ * theme set, a page opened — with no model turn and no sandbox. A record of
120
+ * what was done; nothing re-runs it when the conversation is reopened.
121
+ */
122
+ localAction?: AssistantLocalAction;
103
123
  [key: string]: unknown;
104
124
  }
105
125
  export interface Message {
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/conversation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/conversation.ts"],"names":[],"mappings":"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"}
@@ -183,6 +183,17 @@ export declare const ASSISTANT_I18N_LITERAL_COPY: {
183
183
  readonly "language.inputLabel": "Language";
184
184
  readonly "language.replyLabel": "Assistant replies in";
185
185
  readonly "language.replyMatch": "Match my language";
186
+ readonly "localCommand.alreadyFollowingDevice": "The theme already follows your device.";
187
+ readonly "localCommand.alreadyHere": "You're already on {{page}}.";
188
+ readonly "localCommand.choose": "More than one page is called “{{page}}”. Which one?";
189
+ readonly "localCommand.followingDevice": "The theme now follows your device.";
190
+ readonly "localCommand.opened": "Opened {{page}}.";
191
+ readonly "localCommand.themeAlreadyFamily": "You're already on a {{theme}} theme.";
192
+ readonly "localCommand.themeAlreadyNamed": "The {{theme}} theme is already on.";
193
+ readonly "localCommand.themeDark": "dark";
194
+ readonly "localCommand.themeHighContrast": "high-contrast";
195
+ readonly "localCommand.themeLight": "light";
196
+ readonly "localCommand.themeSet": "Switched to the {{theme}} theme.";
186
197
  readonly "markdown.closePreview": "Close image preview";
187
198
  readonly "markdown.copied": "Copied";
188
199
  readonly "markdown.copy": "Copy";
@@ -1 +1 @@
1
- {"version":3,"file":"i18nManifest.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/i18nManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAU1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0GG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuNG,CAAC;AAE5C,mDAAmD;AACnD,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,2BAA2B,CAAC;AAW/E;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBtE,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIjE,CAAC;AAEL,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,mBAAmB,EACnB,IAAI,GAAG,OAAO,GAAG,mBAAmB,CACrC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC9C,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiCzB"}
1
+ {"version":3,"file":"i18nManifest.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/i18nManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAU1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0GG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkOG,CAAC;AAE5C,mDAAmD;AACnD,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,2BAA2B,CAAC;AAW/E;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBtE,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIjE,CAAC;AAEL,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,mBAAmB,EACnB,IAAI,GAAG,OAAO,GAAG,mBAAmB,CACrC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC9C,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiCzB"}
@@ -78,6 +78,17 @@ var u = {
78
78
  "language.inputLabel": "Language",
79
79
  "language.replyLabel": "Assistant replies in",
80
80
  "language.replyMatch": "Match my language",
81
+ "localCommand.alreadyFollowingDevice": "The theme already follows your device.",
82
+ "localCommand.alreadyHere": "You're already on {{page}}.",
83
+ "localCommand.choose": "More than one page is called “{{page}}”. Which one?",
84
+ "localCommand.followingDevice": "The theme now follows your device.",
85
+ "localCommand.opened": "Opened {{page}}.",
86
+ "localCommand.themeAlreadyFamily": "You're already on a {{theme}} theme.",
87
+ "localCommand.themeAlreadyNamed": "The {{theme}} theme is already on.",
88
+ "localCommand.themeDark": "dark",
89
+ "localCommand.themeHighContrast": "high-contrast",
90
+ "localCommand.themeLight": "light",
91
+ "localCommand.themeSet": "Switched to the {{theme}} theme.",
81
92
  "markdown.closePreview": "Close image preview",
82
93
  "markdown.copied": "Copied",
83
94
  "markdown.copy": "Copy",
@@ -154,6 +154,9 @@ export * from './permissionError';
154
154
  export * from './autoRouting';
155
155
  export * from './turnOutcome';
156
156
  export * from './turnTimeline';
157
+ export * from './prewarm';
158
+ export * from './localUiCommands';
159
+ export * from './localUiCommandCopy';
157
160
  export * from './turnOutcomeCopy';
158
161
  export * from './aiCredits';
159
162
  export * from './useWorkspaceWriteAccess';
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AAGxB,cAAc,wBAAwB,CAAC;AAKvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAG9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,gBAAgB,CAAC;AAK/B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAG3C,cAAc,QAAQ,CAAC;AAIvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AAGrC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,0CAA0C,CAAC;AACzD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC;AACvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AAGzC,cAAc,WAAW,CAAC;AAE1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AAErC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,kCAAkC,CAAC;AAEjD,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAElC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAE1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,iCAAiC,CAAC;AAGhD,cAAc,OAAO,CAAC;AACtB,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { AssistantTr } from './i18n';
2
+ import { LocalDestination, ThemeModeValue } from './localUiCommands';
3
+ /**
4
+ * ★ BOFF-7802: what the panel says after carrying out a UI command itself.
5
+ *
6
+ * All-or-nothing on translation, like `turnOutcomeCopy`: the reply is stamped
7
+ * with ONE language and read aloud in that voice, so unless every part came
8
+ * back translated, every part is English. Page labels are the product's own
9
+ * words (already in the app's language) and are not part of that decision.
10
+ */
11
+ export interface LocalCommandCopy {
12
+ text: string;
13
+ translated: boolean;
14
+ }
15
+ export declare function themeCommandCopy(tr: AssistantTr, plan: {
16
+ alreadyApplied: boolean;
17
+ mode: ThemeModeValue;
18
+ }, familyRequest: boolean): LocalCommandCopy;
19
+ export declare function navigationCommandCopy(tr: AssistantTr, page: string, alreadyHere: boolean): LocalCommandCopy;
20
+ /**
21
+ * More than one place has that name: offer each as a link. The links route
22
+ * through the panel's `onNavigate` like any other in the thread; nothing is
23
+ * opened until the person picks one.
24
+ */
25
+ export declare function chooseDestinationCopy(tr: AssistantTr, page: string, candidates: readonly LocalDestination[]): LocalCommandCopy;
26
+ //# sourceMappingURL=localUiCommandCopy.d.ts.map
@@ -0,0 +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;AAE1E;;;;;;;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,CAYlB"}
@@ -0,0 +1,37 @@
1
+ import { interpolate as e } from "../providers/shell/interpolate.js";
2
+ //#region src/shared/assistant/localUiCommandCopy.ts
3
+ function t(e, t) {
4
+ switch (t) {
5
+ case "light": return [e("localCommand.themeLight", "light"), "light"];
6
+ case "dark": return [e("localCommand.themeDark", "dark"), "dark"];
7
+ case "high-contrast": return [e("localCommand.themeHighContrast", "high-contrast"), "high-contrast"];
8
+ case "forest": return "Forest";
9
+ case "ocean": return "Ocean";
10
+ case "sunset": return "Sunset";
11
+ }
12
+ }
13
+ function n(e, t) {
14
+ let n = e.every(([e, t]) => e !== t);
15
+ return {
16
+ text: t(e.map(([e, t]) => n ? e : t)),
17
+ translated: n
18
+ };
19
+ }
20
+ var r = (t, n) => e(t, n);
21
+ function i(e, i, a) {
22
+ if (i.mode === "system") return n([i.alreadyApplied ? [e("localCommand.alreadyFollowingDevice", "The theme already follows your device."), "The theme already follows your device."] : [e("localCommand.followingDevice", "The theme now follows your device."), "The theme now follows your device."]], ([e]) => e ?? "");
23
+ let o = t(e, i.mode), s = i.alreadyApplied ? a ? [e("localCommand.themeAlreadyFamily", "You're already on a {{theme}} theme."), "You're already on a {{theme}} theme."] : [e("localCommand.themeAlreadyNamed", "The {{theme}} theme is already on."), "The {{theme}} theme is already on."] : [e("localCommand.themeSet", "Switched to the {{theme}} theme."), "Switched to the {{theme}} theme."];
24
+ return typeof o == "string" ? n([s], ([e]) => r(e ?? "", { theme: o })) : n([s, o], ([e, t]) => r(e ?? "", { theme: t ?? "" }));
25
+ }
26
+ var a = (e) => e.replace(/\s+/g, " ").replace(/([\\`*_{}[\]()<>#+!|~])/g, "\\$1"), o = (e) => encodeURI(e).replace(/\(/g, "%28").replace(/\)/g, "%29");
27
+ function s(e, t, i) {
28
+ return n([i ? [e("localCommand.alreadyHere", "You're already on {{page}}."), "You're already on {{page}}."] : [e("localCommand.opened", "Opened {{page}}."), "Opened {{page}}."]], ([e]) => r(e ?? "", { page: a(t) }));
29
+ }
30
+ function c(e, t, i) {
31
+ return n([[e("localCommand.choose", "More than one page is called “{{page}}”. Which one?"), "More than one page is called “{{page}}”. Which one?"]], ([e]) => {
32
+ let n = i.map((e) => `- [${a(e.label)}](${o(e.path)})${e.context ? ` — ${a(e.context)}` : ""}`);
33
+ return `${r(e ?? "", { page: a(t) })}\n\n${n.join("\n")}`;
34
+ });
35
+ }
36
+ //#endregion
37
+ export { c as chooseDestinationCopy, s as navigationCommandCopy, i as themeCommandCopy };
@@ -0,0 +1,124 @@
1
+ /**
2
+ * ★ BOFF-7802 (Phase 6 v1) — UI commands the panel carries out ITSELF.
3
+ *
4
+ * "dark mode" or "go to settings" used to provision a sandbox, cold-start a
5
+ * model and wait ~25s for an answer that could only describe the change or
6
+ * link to the page. These are recognised here, on the WHOLE utterance, and
7
+ * executed in the page with no turn at all.
8
+ *
9
+ * The grammar is strict on purpose. A miss costs only latency — the text goes
10
+ * to the sandbox exactly as before — but a false match acts on a sentence that
11
+ * meant something else. So:
12
+ *
13
+ * - the whole utterance must be the command: "dark mode and show my fields"
14
+ * falls through;
15
+ * - navigation reaches only a destination the SIDEBAR offers (what
16
+ * `useVisibleNavItems` shows this person), by its exact label. A label no
17
+ * destination has is never guessed at — it falls through, and the model can
18
+ * still answer with a link. Paths come from the registry, never from text;
19
+ * - "open a task" / "open new tasks" name no page, so they reach the model
20
+ * ("a"/"an" are never stripped — only "the"/"my"/"our");
21
+ * - English only for now; other languages fall through;
22
+ * - ★★ a bare "yes"/"ok"/"go ahead" is NEVER matched: the sandbox reads a reply
23
+ * as approval of a pending write (`consumeRepliedTurnApproval`), and
24
+ * swallowing it here would bring back the write deadlock.
25
+ */
26
+ export type ThemeFamily = "light" | "dark";
27
+ /** Named themes a person can ask for, beyond the plain light/dark family. */
28
+ export type NamedTheme = "forest" | "ocean" | "sunset" | "high-contrast" | "system";
29
+ export type ThemeRequest = {
30
+ kind: "family";
31
+ family: ThemeFamily;
32
+ } | {
33
+ kind: "named";
34
+ theme: NamedTheme;
35
+ };
36
+ /** A place the person can be taken: an entry in the app's navigation. */
37
+ export interface LocalDestination {
38
+ id: string;
39
+ label: string;
40
+ path: string;
41
+ /** The parent entry's label, shown when two destinations share a label. */
42
+ context?: string;
43
+ /** The sidebar group's id: a word a person may say ("workspace settings"), never shown. */
44
+ group?: string;
45
+ }
46
+ export type LocalUiCommand = {
47
+ kind: "theme";
48
+ request: ThemeRequest;
49
+ } | {
50
+ kind: "navigate";
51
+ destination: LocalDestination;
52
+ } | {
53
+ kind: "choose-destination";
54
+ query: string;
55
+ candidates: LocalDestination[];
56
+ };
57
+ /**
58
+ * `canonical`, with courtesy words at either end removed, so "Could you switch
59
+ * to dark mode, please?" and "switch to dark mode" are one command. Only ever
60
+ * applied to what was SAID — a label like "Buy Now" is matched as written.
61
+ */
62
+ export declare function normaliseUtterance(text: string, options?: {
63
+ keepEnding?: boolean;
64
+ }): string;
65
+ /** Per-product tuning of the grammar (see `AssistantProductCapabilities`). */
66
+ export interface LocalUiCommandOptions {
67
+ /**
68
+ * `mode-only`: the product's CONTENT has themes of its own (a BigConsole
69
+ * dashboard: "use the dark theme"), so only "<name> mode" — or a theme
70
+ * qualified as the app's ("change the app theme to dark") — sets the APP
71
+ * theme. Default `any`.
72
+ */
73
+ themeWords?: "any" | "mode-only";
74
+ }
75
+ /**
76
+ * The command this whole utterance is, or null to send it to the model.
77
+ * `destinations` is what the person can see in the app's navigation.
78
+ */
79
+ export declare function matchLocalUiCommand(text: string, destinations: readonly LocalDestination[], options?: LocalUiCommandOptions): LocalUiCommand | null;
80
+ /** The shape of a navigation entry this needs (`VisibleNavItem` fits it). */
81
+ export interface NavEntryLike {
82
+ id: string;
83
+ label: string;
84
+ path: string;
85
+ group?: string;
86
+ children?: readonly NavEntryLike[];
87
+ }
88
+ /**
89
+ * Every in-app place in a navigation tree, children included. Only real
90
+ * in-app paths: a container without one, an external link and the sidebar's
91
+ * synthetic "N more…" rows are not destinations (their children are).
92
+ */
93
+ export declare function navDestinations(entries: readonly NavEntryLike[], parent?: string): LocalDestination[];
94
+ /** The concrete theme `setMode` takes. */
95
+ export type ThemeModeValue = "light" | "dark" | NamedTheme;
96
+ /**
97
+ * What a theme request does given the current theme — SET semantics, never a
98
+ * toggle. A family request is already satisfied by any theme of that family:
99
+ * "dark mode" while on Ocean changes nothing, rather than replacing Ocean.
100
+ */
101
+ export declare function planThemeChange(request: ThemeRequest, current: {
102
+ mode: string;
103
+ resolvedTheme: ThemeFamily;
104
+ }): {
105
+ alreadyApplied: boolean;
106
+ mode: ThemeModeValue;
107
+ };
108
+ /**
109
+ * Is the person already there? `current` is the pathname PLUS search. Paths
110
+ * compare without a trailing slash; a destination with a query is here only
111
+ * when the query matches too — "Archived" and "Channels" can be one path with
112
+ * different filters, and the review found nav trees built exactly that way.
113
+ * A destination without a query is here on any query of its path.
114
+ */
115
+ export declare function isCurrentPath(path: string, current: string): boolean;
116
+ /**
117
+ * Already at `destination`? `isCurrentPath`, plus the one case it cannot see
118
+ * alone: a destination WITHOUT a query ("All conversations", `/list`) is not
119
+ * where the person is when a sibling with the same path names the query they
120
+ * are on ("Archived", `/list?filter=archived`) — they are on the sibling, and
121
+ * asking for the unfiltered page must take them there (review round 3).
122
+ */
123
+ export declare function isAlreadyThere(destination: LocalDestination, current: string, destinations: readonly LocalDestination[]): boolean;
124
+ //# sourceMappingURL=localUiCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localUiCommands.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/localUiCommands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAC3C,6EAA6E;AAC7E,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,eAAe,GAAG,QAAQ,CAAC;AAEpF,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzC,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,gBAAgB,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC;AAwBlF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GACrC,MAAM,CAeR;AA+JD,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,OAAO,GAAE,qBAA0B,GAClC,cAAc,GAAG,IAAI,CAmCvB;AAED,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;CACpC;AAKD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,MAAM,CAAC,EAAE,MAAM,GACd,gBAAgB,EAAE,CAuBpB;AAID,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;AAE3D;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,WAAW,CAAA;CAAE,GACpD;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAOnD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAapE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,gBAAgB,EAC7B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,SAAS,gBAAgB,EAAE,GACxC,OAAO,CAST"}