@burdenoff/fe-libs 2026.1007.4 → 2026.1007.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chrome/AutoBreadcrumbs.d.ts.map +1 -1
- package/dist/chrome/AutoBreadcrumbs.js +65 -76
- package/dist/chrome/Breadcrumb.d.ts.map +1 -1
- package/dist/chrome/Breadcrumbs.d.ts.map +1 -1
- package/dist/chrome/Breadcrumbs.js +47 -46
- package/dist/chrome/ContextSwitcher.js +86 -86
- package/dist/chrome/HeaderBar.d.ts.map +1 -1
- package/dist/chrome/HeaderBar.js +111 -107
- package/dist/chrome/HeaderThemeSwitcher.d.ts.map +1 -1
- package/dist/chrome/HeaderThemeSwitcher.js +46 -45
- package/dist/chrome/LanguageSwitcher.js +4 -4
- package/dist/chrome/MobileTabBar.js +4 -4
- package/dist/chrome/PageHeader.d.ts.map +1 -1
- package/dist/chrome/PageHeader.js +32 -30
- package/dist/chrome/PersonaSurfaceControls.js +8 -8
- package/dist/chrome/ProductSideNav.js +6 -6
- package/dist/chrome/ProfileSwitcher.d.ts.map +1 -1
- package/dist/chrome/ProfileSwitcher.js +89 -88
- package/dist/chrome/SideNavigation.js +4 -4
- package/dist/chrome/Tabs.d.ts.map +1 -1
- package/dist/chrome/Tabs.js +30 -29
- package/dist/chrome/breadcrumbLabel.d.ts +10 -0
- package/dist/chrome/breadcrumbLabel.d.ts.map +1 -0
- package/dist/chrome/breadcrumbLabel.js +31 -0
- package/dist/chrome/contextSwitcher/TriggerButton.d.ts.map +1 -1
- package/dist/chrome/contextSwitcher/TriggerButton.js +40 -36
- package/dist/chrome/notificationCenter/BellButton.d.ts.map +1 -1
- package/dist/chrome/notificationCenter/BellButton.js +29 -25
- package/dist/chrome/shellLabelManifest.d.ts +27 -0
- package/dist/chrome/shellLabelManifest.d.ts.map +1 -0
- package/dist/chrome/sideNavigation/SidebarHeader.d.ts.map +1 -1
- package/dist/chrome/sideNavigation/SidebarHeader.js +23 -22
- package/dist/shared/assistant/appControls/languageReply.d.ts +6 -1
- package/dist/shared/assistant/appControls/languageReply.d.ts.map +1 -1
- package/dist/shared/assistant/i18nManifest.d.ts +17 -5
- package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
- package/dist/shared/assistant/i18nManifest.js +27 -22
- package/dist/shared/assistant/index.d.ts +1 -0
- package/dist/shared/assistant/index.d.ts.map +1 -1
- package/dist/shared/assistant/productCopy.d.ts +78 -0
- package/dist/shared/assistant/productCopy.d.ts.map +1 -0
- package/dist/shared/assistant/productCopy.js +45 -0
- package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +2 -2
- package/dist/shared/assistant/ui/AssistantEmptyState.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantEmptyState.js +30 -22
- package/dist/shared/assistant/ui/AssistantHeader.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantHeader.js +46 -45
- package/dist/shared/components/ContextConversationWidget.js +1 -1
- package/dist/shared/events/sinks/RybbitSink.d.ts.map +1 -1
- package/dist/shared/events/sinks/RybbitSink.js +66 -69
- package/dist/shared/providers/AppShellProvider.d.ts +17 -0
- package/dist/shared/providers/AppShellProvider.d.ts.map +1 -1
- package/dist/shared/providers/AppShellProvider.js +188 -180
- package/dist/shared/providers/shell/I18nProvider.d.ts +92 -4
- package/dist/shared/providers/shell/I18nProvider.d.ts.map +1 -1
- package/dist/shared/providers/shell/I18nProvider.js +187 -79
- package/dist/shared/providers/shell/ProfileI18nBridge.d.ts +18 -2
- package/dist/shared/providers/shell/ProfileI18nBridge.d.ts.map +1 -1
- package/dist/shared/providers/shell/ProfileI18nBridge.js +55 -41
- package/dist/shared/providers/shell/directionMode.d.ts +25 -0
- package/dist/shared/providers/shell/directionMode.d.ts.map +1 -0
- package/dist/shared/providers/shell/directionMode.js +34 -0
- package/dist/shared/providers/shell/index.d.ts +4 -2
- package/dist/shared/providers/shell/index.d.ts.map +1 -1
- package/dist/shared/providers/shell/translationLayers.d.ts +30 -0
- package/dist/shared/providers/shell/translationLayers.d.ts.map +1 -0
- package/dist/shared/providers/shell/translationLayers.js +35 -0
- package/dist/shared/providers/shell/translationStore.d.ts +55 -0
- package/dist/shared/providers/shell/translationStore.d.ts.map +1 -0
- package/dist/shared/providers/shell/translationStore.js +100 -0
- package/dist/shared/providers/shell/useShellLabel.d.ts +13 -1
- package/dist/shared/providers/shell/useShellLabel.d.ts.map +1 -1
- package/dist/shared/providers/shell/useShellLabel.js +10 -9
- package/dist/shared-assistant.js +163 -162
- package/dist/shared-providers-shell.js +20 -19
- package/dist/ui/boff-ui2.d.ts.map +1 -1
- package/dist/ui/cta-overflow-menu.d.ts.map +1 -1
- package/dist/ui/cta-overflow-menu.js +20 -18
- package/dist/ui/guidance.d.ts +1 -1
- package/dist/ui/guidance.d.ts.map +1 -1
- package/dist/ui/guidance.js +53 -52
- package/package.json +3 -2
|
@@ -1,27 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useShellLabel as e } from "../../shared/providers/shell/useShellLabel.js";
|
|
2
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
2
3
|
//#region src/chrome/notificationCenter/BellButton.tsx
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
4
|
+
var r = ({ unreadCount: r, isOpen: i, onToggle: a }) => {
|
|
5
|
+
let o = e();
|
|
6
|
+
return /* @__PURE__ */ n("button", {
|
|
7
|
+
type: "button",
|
|
8
|
+
onClick: a,
|
|
9
|
+
className: "relative p-2 hover:bg-bg-sunken rounded-button text-text-primary transition-colors",
|
|
10
|
+
"aria-label": r > 0 ? o("notifications.bellLabelUnread", "Notifications ({{count}} unread)", { count: r }) : o("notifications.bellLabel", "Notifications"),
|
|
11
|
+
"aria-expanded": i,
|
|
12
|
+
"aria-haspopup": "true",
|
|
13
|
+
children: [/* @__PURE__ */ t("svg", {
|
|
14
|
+
className: "w-icon-md h-icon-md",
|
|
15
|
+
fill: "none",
|
|
16
|
+
stroke: "currentColor",
|
|
17
|
+
viewBox: "0 0 24 24",
|
|
18
|
+
children: /* @__PURE__ */ t("path", {
|
|
19
|
+
strokeLinecap: "round",
|
|
20
|
+
strokeLinejoin: "round",
|
|
21
|
+
strokeWidth: 2,
|
|
22
|
+
d: "M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"
|
|
23
|
+
})
|
|
24
|
+
}), r > 0 && /* @__PURE__ */ t("span", {
|
|
25
|
+
className: "absolute -top-0.5 -right-0.5 flex items-center justify-center min-w-[18px] h-[18px] px-1 text-[10px] font-bold text-action-primary-text bg-action-primary-bg rounded-full border-2 border-bg-elevated",
|
|
26
|
+
children: r > 9 ? "9+" : r
|
|
27
|
+
})]
|
|
28
|
+
});
|
|
29
|
+
};
|
|
26
30
|
//#endregion
|
|
27
|
-
export {
|
|
31
|
+
export { r as BellButton };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every key the shell chrome resolves through `useShellLabel`, with its English
|
|
3
|
+
* (BOFF-8060).
|
|
4
|
+
*
|
|
5
|
+
* WHY. The chrome sits on every page of every product, and its keys live in
|
|
6
|
+
* generic namespaces (`nav.*`, `appShell.*`, `contextSwitcher.*`, …) that each
|
|
7
|
+
* product used to copy into its own dictionary by hand. With the platform
|
|
8
|
+
* dictionary layered under every product (fallback < platform < product), the
|
|
9
|
+
* shared chrome needs these keys ONCE, in the `workspaces` dictionary. This is
|
|
10
|
+
* the list a seed is built from, so nothing has to be hand-extracted again.
|
|
11
|
+
*
|
|
12
|
+
* `src/chrome/__tests__/shellLabelManifest.test.ts` parses every module that
|
|
13
|
+
* calls `useShellLabel` and fails on a key missing here, an English that
|
|
14
|
+
* differs, or an entry nothing requests. Two keys are requested with two
|
|
15
|
+
* spellings of their English (pre-existing; the test lists them); the value
|
|
16
|
+
* here is the one the products already seeded.
|
|
17
|
+
*
|
|
18
|
+
* Pure data, no imports: loadable by any seed or extractor script.
|
|
19
|
+
*/
|
|
20
|
+
export declare const SHELL_LABEL_MANIFEST: Readonly<Record<string, string>>;
|
|
21
|
+
/**
|
|
22
|
+
* The keys this change introduced (BOFF-8060, F1). Their translations are not
|
|
23
|
+
* in any dictionary yet: seed them into `workspaces` (S1). Until then every
|
|
24
|
+
* one renders its English, exactly as before.
|
|
25
|
+
*/
|
|
26
|
+
export declare const SHELL_LABELS_ADDED_BOFF_8060: readonly string[];
|
|
27
|
+
//# sourceMappingURL=shellLabelManifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shellLabelManifest.d.ts","sourceRoot":"","sources":["../../src/chrome/shellLabelManifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2DhE,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,SAAS,MAAM,EAqBxD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarHeader.d.ts","sourceRoot":"","sources":["../../../src/chrome/sideNavigation/SidebarHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SidebarHeader.d.ts","sourceRoot":"","sources":["../../../src/chrome/sideNavigation/SidebarHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3C,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAoDhD,CAAC"}
|
|
@@ -1,37 +1,38 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { useShellLabel as e } from "../../shared/providers/shell/useShellLabel.js";
|
|
2
|
+
import { ChevronUp as t, PanelLeft as n } from "lucide-react";
|
|
3
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
3
4
|
//#region src/chrome/sideNavigation/SidebarHeader.tsx
|
|
4
|
-
var
|
|
5
|
-
let
|
|
6
|
-
return /* @__PURE__ */
|
|
7
|
-
className: `py-card-padding border-b border-border-subtle ${
|
|
8
|
-
children: /* @__PURE__ */
|
|
9
|
-
className: `flex items-center gap-2 ${
|
|
5
|
+
var a = ({ header: a, collapsed: o, expandedCount: s, onCollapseAll: c, onToggleCollapse: l, collapseLabel: u, expandLabel: d }) => {
|
|
6
|
+
let f = e(), p = o ? d : u;
|
|
7
|
+
return /* @__PURE__ */ r("div", {
|
|
8
|
+
className: `py-card-padding border-b border-border-subtle ${o ? "md:px-2" : "px-card-padding"}`,
|
|
9
|
+
children: /* @__PURE__ */ i("div", {
|
|
10
|
+
className: `flex items-center gap-2 ${o ? "justify-center" : ""}`,
|
|
10
11
|
children: [
|
|
11
|
-
|
|
12
|
+
a && !o && /* @__PURE__ */ r("div", {
|
|
12
13
|
className: "min-w-0 flex-1",
|
|
13
|
-
children:
|
|
14
|
+
children: a
|
|
14
15
|
}),
|
|
15
|
-
!
|
|
16
|
+
!o && s > 0 && /* @__PURE__ */ r("button", {
|
|
16
17
|
type: "button",
|
|
17
|
-
onClick:
|
|
18
|
+
onClick: c,
|
|
18
19
|
className: "shrink-0 rounded-button p-1.5 text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary",
|
|
19
|
-
title: "Collapse all",
|
|
20
|
-
"aria-label": "Collapse all menu items",
|
|
21
|
-
children: /* @__PURE__ */
|
|
20
|
+
title: f("nav.collapseAll", "Collapse all"),
|
|
21
|
+
"aria-label": f("nav.collapseAllHint", "Collapse all menu items"),
|
|
22
|
+
children: /* @__PURE__ */ r(t, { className: "size-4" })
|
|
22
23
|
}),
|
|
23
|
-
|
|
24
|
+
l && /* @__PURE__ */ r("button", {
|
|
24
25
|
type: "button",
|
|
25
|
-
onClick:
|
|
26
|
+
onClick: l,
|
|
26
27
|
className: "hidden shrink-0 rounded-button p-1.5 text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary md:block",
|
|
27
|
-
"aria-label":
|
|
28
|
-
"aria-expanded": !
|
|
29
|
-
title:
|
|
30
|
-
children: /* @__PURE__ */ n
|
|
28
|
+
"aria-label": p,
|
|
29
|
+
"aria-expanded": !o,
|
|
30
|
+
title: p,
|
|
31
|
+
children: /* @__PURE__ */ r(n, { className: "size-5" })
|
|
31
32
|
})
|
|
32
33
|
]
|
|
33
34
|
})
|
|
34
35
|
});
|
|
35
36
|
};
|
|
36
37
|
//#endregion
|
|
37
|
-
export {
|
|
38
|
+
export { a as SidebarHeader };
|
|
@@ -17,7 +17,12 @@ export interface LanguageReplyView {
|
|
|
17
17
|
wanted: string;
|
|
18
18
|
/** The language the i18n provider is in NOW. */
|
|
19
19
|
locale: string;
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* The provider is still fetching THE WANTED language's dictionary
|
|
22
|
+
* (`useI18n().isLocaleLoading(wanted)`). ★ BOFF-8823: not the provider-wide
|
|
23
|
+
* `isLoading` — after A -> B with A still in flight, A settling cleared that
|
|
24
|
+
* flag while B was loading, and the reply fell to English after the grace.
|
|
25
|
+
*/
|
|
21
26
|
isLoading: boolean;
|
|
22
27
|
/** The sentence, made with the translator in force now, came back translated. */
|
|
23
28
|
translatedNow: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languageReply.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/appControls/languageReply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,wFAAwF;AACxF,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,+DAA+D;AAC/D,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAKhD,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf
|
|
1
|
+
{"version":3,"file":"languageReply.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/appControls/languageReply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,wFAAwF;AACxF,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,+DAA+D;AAC/D,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAKhD,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,CAO5E;AAED,0FAA0F;AAC1F,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,WAAW,GACd,gBAAgB,GAAG,IAAI,CAkBzB"}
|
|
@@ -39,8 +39,13 @@ import { AssistantModeConfig } from './conversation';
|
|
|
39
39
|
* and `assistant` pills — the exact defect `AssistantModeSelector` fixed. Use
|
|
40
40
|
* `assistantModeI18nCopy(modes)`, which takes the words from the product.
|
|
41
41
|
* - A mode's `description` and `suggestions`, and the page label from
|
|
42
|
-
* `describeCurrentPage()`, are
|
|
43
|
-
*
|
|
42
|
+
* `describeCurrentPage()`, are the product's words too. Since BOFF-8060 (F5)
|
|
43
|
+
* they are translated AT DISPLAY TIME under keys derived from their English
|
|
44
|
+
* (`suggestion.<mode>.<slug>`, `modeDescription.<mode>`, `page.<slug>`; see
|
|
45
|
+
* `productCopy.ts`). They stay out of the shared manifest, and
|
|
46
|
+
* `assistantI18nSeedCopy` emits them from the product's own modes and the
|
|
47
|
+
* `pageLabels` it passes — so a product passes its ENGLISH, never a
|
|
48
|
+
* pre-translated string (that would key the translation by itself).
|
|
44
49
|
*
|
|
45
50
|
* HOW A PRODUCT'S EXTRACTOR USES IT
|
|
46
51
|
*
|
|
@@ -546,8 +551,11 @@ export declare const ASSISTANT_I18N_SEED_COMPAT_COPY: Readonly<{
|
|
|
546
551
|
* see `overrides` on `assistantI18nSeedCopy`.
|
|
547
552
|
*/
|
|
548
553
|
export declare const ASSISTANT_I18N_MANIFEST: Readonly<Record<string, string>>;
|
|
549
|
-
/**
|
|
550
|
-
|
|
554
|
+
/**
|
|
555
|
+
* The part of a mode that decides its keys and English: the pill, plus (when
|
|
556
|
+
* given) its description and suggestion chips (BOFF-8060, F5).
|
|
557
|
+
*/
|
|
558
|
+
export type AssistantModeCopySource = Pick<AssistantModeConfig, "id" | "label" | "producesArtifacts"> & Partial<Pick<AssistantModeConfig, "description" | "suggestions">>;
|
|
551
559
|
/**
|
|
552
560
|
* `mode.<id>` for each mode a product offers, in the product's own words.
|
|
553
561
|
*
|
|
@@ -564,7 +572,9 @@ export declare function assistantModeI18nCopy(modes: readonly AssistantModeCopyS
|
|
|
564
572
|
/**
|
|
565
573
|
* Everything a product seeds for the shared assistant, as FULL keys under its
|
|
566
574
|
* namespace: the manifest, its own mode labels, and its own English for any
|
|
567
|
-
* shared key it has customised
|
|
575
|
+
* shared key it has customised — plus its own display copy (BOFF-8060, F5):
|
|
576
|
+
* each mode's description and suggestion chips, and the `pageLabels` its
|
|
577
|
+
* `describeCurrentPage()` can return (pass every label it can produce).
|
|
568
578
|
*
|
|
569
579
|
* `namespace` is the id given to `AssistantProductProvider` /
|
|
570
580
|
* `AssistantI18nProvider`; the keys are built by `assistantTranslationKey`, the
|
|
@@ -582,5 +592,7 @@ export declare function assistantI18nSeedCopy(args: {
|
|
|
582
592
|
namespace: string;
|
|
583
593
|
modes: readonly AssistantModeCopySource[];
|
|
584
594
|
overrides?: Readonly<Record<string, string>>;
|
|
595
|
+
/** Every English label the product's `describeCurrentPage()` can return. */
|
|
596
|
+
pageLabels?: readonly string[];
|
|
585
597
|
}): Record<string, string>;
|
|
586
598
|
//# sourceMappingURL=i18nManifest.d.ts.map
|
|
@@ -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;
|
|
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;AAc1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+GG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+dG,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,CAgCtE,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,+BAA+B;;EAGjC,CAAC;AAEZ;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKjE,CAAC;AAEL;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,mBAAmB,EACnB,IAAI,GAAG,OAAO,GAAG,mBAAmB,CACrC,GACC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED;;;;;;;;;;;;;;;;;;GAkBG;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;IAC7C,4EAA4E;IAC5E,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuCzB"}
|
|
@@ -7,10 +7,11 @@ import { INCOMPLETE_TURN_NOTICES as a } from "./streamBudget.js";
|
|
|
7
7
|
import { STAGE_COPY as o, THINKING_PHRASES as s } from "./stageCopy.js";
|
|
8
8
|
import { VOICE_MUTED_LABEL as c, VOICE_THINKING_LABEL as l } from "./voice/voiceStatus.js";
|
|
9
9
|
import { ATTACHMENT_SOURCES as u } from "./attachmentSources.js";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
10
|
+
import { assistantProductCopyEntries as d } from "./productCopy.js";
|
|
11
|
+
import { WRITE_PROPOSAL_ERROR_COPY as f } from "./writeProposalErrorCopy.js";
|
|
12
|
+
import { WRITE_PROPOSAL_VOICE_COPY as p } from "./writeProposalVoice.js";
|
|
12
13
|
//#region src/shared/assistant/i18nManifest.ts
|
|
13
|
-
var
|
|
14
|
+
var m = {
|
|
14
15
|
"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.",
|
|
15
16
|
"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.",
|
|
16
17
|
"apiCalls.consentCancel": "Stay in Ask",
|
|
@@ -421,39 +422,43 @@ var p = {
|
|
|
421
422
|
"writeProposal.values": "Values",
|
|
422
423
|
"writeProposal.variablesOmitted": "{{count}} more values not shown",
|
|
423
424
|
"writeProposal.waitForTurn": "You can confirm once the assistant finishes replying."
|
|
424
|
-
},
|
|
425
|
-
...
|
|
426
|
-
...
|
|
427
|
-
...
|
|
428
|
-
...
|
|
429
|
-
...
|
|
430
|
-
...
|
|
431
|
-
...
|
|
432
|
-
...
|
|
425
|
+
}, h = (e) => Object.fromEntries(e.map((e) => [e.key, e.fallback])), g = Object.freeze({
|
|
426
|
+
...h(Object.values(o)),
|
|
427
|
+
...h(s),
|
|
428
|
+
...h([l, c]),
|
|
429
|
+
...h(a),
|
|
430
|
+
...h(Object.values(i)),
|
|
431
|
+
...h(Object.values(r)),
|
|
432
|
+
...h(Object.values(f)),
|
|
433
|
+
...h(Object.values(p)),
|
|
433
434
|
...Object.fromEntries(u.map((e) => [e.labelKey, e.labelFallback]))
|
|
434
|
-
}),
|
|
435
|
-
...
|
|
436
|
-
...
|
|
437
|
-
...
|
|
435
|
+
}), _ = Object.freeze({ "outcome.usageDailyLimitReachedNoTime": "You've reached today's AI assistant limit. Try again tomorrow." }), v = Object.freeze({
|
|
436
|
+
...m,
|
|
437
|
+
...g,
|
|
438
|
+
..._
|
|
438
439
|
});
|
|
439
|
-
function
|
|
440
|
+
function y(e) {
|
|
440
441
|
let r = e.map((e) => e.id).filter((e) => !n(e));
|
|
441
442
|
if (r.length > 0) throw Error(`assistantModeI18nCopy: malformed mode id ${r.map((e) => JSON.stringify(e)).join(", ")}. Declare product modes with declareAssistantMode().`);
|
|
442
443
|
return Object.fromEntries(e.map((e) => [`mode.${e.id}`, e.label || t(e)]));
|
|
443
444
|
}
|
|
444
|
-
function
|
|
445
|
+
function b(t) {
|
|
445
446
|
let n = {
|
|
446
|
-
...
|
|
447
|
-
...
|
|
447
|
+
...v,
|
|
448
|
+
...y(t.modes)
|
|
448
449
|
}, r = Object.entries(t.overrides ?? {}), i = r.filter(([e]) => !Object.hasOwn(n, e)).map(([e]) => e);
|
|
449
450
|
if (i.length > 0) throw Error(`assistantI18nSeedCopy: no shared assistant key ${i.join(", ")} to override. Check the spelling, or that the key is a mode this product offers; a key fe-libs no longer requests belongs with the product's own keys.`);
|
|
450
451
|
let a = r.filter(([, e]) => e.trim() === "").map(([e]) => e);
|
|
451
452
|
if (a.length > 0) throw Error(`assistantI18nSeedCopy: blank English for ${a.join(", ")}. Omit the override to keep the shared English.`);
|
|
452
453
|
let o = {
|
|
453
454
|
...n,
|
|
454
|
-
...Object.fromEntries(r)
|
|
455
|
+
...Object.fromEntries(r),
|
|
456
|
+
...d({
|
|
457
|
+
modes: t.modes,
|
|
458
|
+
pageLabels: t.pageLabels
|
|
459
|
+
})
|
|
455
460
|
};
|
|
456
461
|
return Object.fromEntries(Object.entries(o).map(([n, r]) => [e(t.namespace, n), r]));
|
|
457
462
|
}
|
|
458
463
|
//#endregion
|
|
459
|
-
export {
|
|
464
|
+
export { g as ASSISTANT_I18N_COMPUTED_COPY, m as ASSISTANT_I18N_LITERAL_COPY, v as ASSISTANT_I18N_MANIFEST, _ as ASSISTANT_I18N_SEED_COMPAT_COPY, b as assistantI18nSeedCopy, y as assistantModeI18nCopy };
|
|
@@ -90,6 +90,7 @@ export * from './i18nManifest';
|
|
|
90
90
|
export * from './modeCopy';
|
|
91
91
|
export * from './modeIds';
|
|
92
92
|
export * from './modeCapabilities';
|
|
93
|
+
export * from './productCopy';
|
|
93
94
|
export * from './adminModeSendGate';
|
|
94
95
|
export * from './attachmentTurn';
|
|
95
96
|
export * from './writeModeConsent';
|
|
@@ -1 +1 @@
|
|
|
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;AAE9C,cAAc,qBAAqB,CAAC;AAGpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAElC,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,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;AAClC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,aAAa,CAAC;AAK5B,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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Display-time translation of the copy a PRODUCT hands the shared assistant
|
|
3
|
+
* (BOFF-8060, F5): its suggestion chips, its mode descriptions, and the page
|
|
4
|
+
* label from `describeCurrentPage()`.
|
|
5
|
+
*
|
|
6
|
+
* WHY. Products pass these as English constants, and the assistant rendered
|
|
7
|
+
* them exactly as passed, so the chips under "How can I help?" and the
|
|
8
|
+
* "Context: <page>" line stayed English in every locale (production check,
|
|
9
|
+
* 2026-10-07: BigConsole 8 chips / 6 page names, VibeControls 12 / 13).
|
|
10
|
+
*
|
|
11
|
+
* HOW. Each string gets a key DERIVED FROM ITS ENGLISH, under the product's
|
|
12
|
+
* assistant namespace:
|
|
13
|
+
*
|
|
14
|
+
* suggestion.<modeId>.<slug(english)> a suggestion chip
|
|
15
|
+
* modeDescription.<modeId> a mode's description
|
|
16
|
+
* page.<slug(english)> a page label
|
|
17
|
+
*
|
|
18
|
+
* `slug` is the lower-camel ASCII of the English ("Show overdue tasks" ->
|
|
19
|
+
* `showOverdueTasks`). Deriving the key from the words means:
|
|
20
|
+
* - a product needs no key table: `assistantI18nSeedCopy` emits these keys
|
|
21
|
+
* from the same mode list and page labels the product already passes;
|
|
22
|
+
* - when the English CHANGES, the key changes with it, so a stale translation
|
|
23
|
+
* of the old words can never be shown — the new English shows until the new
|
|
24
|
+
* key is translated.
|
|
25
|
+
*
|
|
26
|
+
* ★ Not `mode.<id>.suggestion.*`. `mode.<id>` is already a live LEAF (the
|
|
27
|
+
* pill label). The served dictionary COULD hold it as a branch too: the label
|
|
28
|
+
* would move to the branch's `_` slot, which `resolveTranslationValue` reads.
|
|
29
|
+
* This is a choice, not a limit. Separate families add no child under any
|
|
30
|
+
* live leaf, so no served key changes shape and a seed has no leaf/branch
|
|
31
|
+
* collisions to account for.
|
|
32
|
+
*
|
|
33
|
+
* ★★ THESE IDS ARE THE SEED CONTRACT. The prepared seeds (BigConsole B5,
|
|
34
|
+
* VibeControls V1) are generated by calling `assistantI18nSeedCopy` /
|
|
35
|
+
* `assistantProductCopyEntries`, never by re-deriving the slug elsewhere. The
|
|
36
|
+
* ids are pinned in `productCopy.test.ts` ("seed plan ids"). A change to this
|
|
37
|
+
* derivation re-keys every seeded translation, so regenerate those seeds with
|
|
38
|
+
* it.
|
|
39
|
+
*
|
|
40
|
+
* `modeDescription.<id>` is seeded, but no fe-libs UI displays a mode
|
|
41
|
+
* description yet. The key exists so a description can be translated once it
|
|
42
|
+
* is shown.
|
|
43
|
+
*
|
|
44
|
+
* ★ The model still reads English page context: `describeCurrentPage()` is
|
|
45
|
+
* unchanged and only its DISPLAY is translated. A clicked chip sends the text
|
|
46
|
+
* as displayed, i.e. localized (operator decision D-7, 2026-10-07): it is what
|
|
47
|
+
* the person saw and chose.
|
|
48
|
+
*
|
|
49
|
+
* Pure and import-free, so it loads in any test or extractor script.
|
|
50
|
+
*/
|
|
51
|
+
/** Keys longer than this get a hash suffix instead of the full slug. */
|
|
52
|
+
export declare const MAX_COPY_SLUG_LENGTH = 64;
|
|
53
|
+
/**
|
|
54
|
+
* Lower-camel ASCII slug of an English string; `null` when nothing ASCII
|
|
55
|
+
* alphanumeric is left (such copy is shown as passed, never keyed).
|
|
56
|
+
*
|
|
57
|
+
* Over-long slugs keep a readable prefix plus a hash of the whole English, so
|
|
58
|
+
* two long chips that share a prefix still get different keys.
|
|
59
|
+
*/
|
|
60
|
+
export declare function assistantCopySlug(english: string): string | null;
|
|
61
|
+
/** `suggestion.<modeId>.<slug>`, or null for copy that cannot be keyed. */
|
|
62
|
+
export declare function assistantSuggestionKey(modeId: string, english: string): string | null;
|
|
63
|
+
/** `modeDescription.<modeId>`. */
|
|
64
|
+
export declare function assistantModeDescriptionKey(modeId: string): string;
|
|
65
|
+
/** `page.<slug>`, or null for a label that cannot be keyed. */
|
|
66
|
+
export declare function assistantPageLabelKey(english: string): string | null;
|
|
67
|
+
/** Translate one piece of product copy, or return it unchanged when unkeyable. */
|
|
68
|
+
export declare function translateProductCopy(tr: (key: string, fallback: string) => string, key: string | null, english: string): string;
|
|
69
|
+
/** The relative keys and English for a product's modes and page labels. */
|
|
70
|
+
export declare function assistantProductCopyEntries(args: {
|
|
71
|
+
modes: readonly {
|
|
72
|
+
id: string;
|
|
73
|
+
description?: string;
|
|
74
|
+
suggestions?: readonly string[];
|
|
75
|
+
}[];
|
|
76
|
+
pageLabels?: readonly string[];
|
|
77
|
+
}): Record<string, string>;
|
|
78
|
+
//# sourceMappingURL=productCopy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"productCopy.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/productCopy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,wEAAwE;AACxE,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAcvC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBhE;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAGf;AAED,kCAAkC;AAClC,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,+DAA+D;AAC/D,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpE;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAGlC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,EAC7C,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,OAAO,EAAE,MAAM,GACd,MAAM,CAER;AAED,2EAA2E;AAC3E,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,KAAK,EAAE,SAAS;QACd,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KACjC,EAAE,CAAC;IACJ,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0BzB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//#region src/shared/assistant/productCopy.ts
|
|
2
|
+
var e = 64, t = 2166136261, n = 16777619;
|
|
3
|
+
function r(e) {
|
|
4
|
+
let r = t;
|
|
5
|
+
for (let t = 0; t < e.length; t += 1) r ^= e.charCodeAt(t), r = Math.imul(r, n);
|
|
6
|
+
return (r >>> 0).toString(36);
|
|
7
|
+
}
|
|
8
|
+
function i(e) {
|
|
9
|
+
let t = e.normalize("NFKD").replace(/[̀-ͯ]/g, "").split(/[^A-Za-z0-9]+/).filter((e) => e.length > 0).map((e) => e.toLowerCase());
|
|
10
|
+
if (t.length === 0) return null;
|
|
11
|
+
let n = t.map((e, t) => t === 0 ? e : e.charAt(0).toUpperCase() + e.slice(1)).join("");
|
|
12
|
+
if (n.length <= 64) return n;
|
|
13
|
+
let i = r(e.trim());
|
|
14
|
+
return `${n.slice(0, 64 - i.length - 1)}H${i}`;
|
|
15
|
+
}
|
|
16
|
+
function a(e, t) {
|
|
17
|
+
let n = i(t);
|
|
18
|
+
return n === null ? null : `suggestion.${e}.${n}`;
|
|
19
|
+
}
|
|
20
|
+
function o(e) {
|
|
21
|
+
return `modeDescription.${e}`;
|
|
22
|
+
}
|
|
23
|
+
function s(e) {
|
|
24
|
+
let t = i(e);
|
|
25
|
+
return t === null ? null : `page.${t}`;
|
|
26
|
+
}
|
|
27
|
+
function c(e, t, n) {
|
|
28
|
+
return t === null ? n : e(t, n);
|
|
29
|
+
}
|
|
30
|
+
function l(e) {
|
|
31
|
+
let t = {}, n = (e, n) => {
|
|
32
|
+
if (e === null) return;
|
|
33
|
+
let r = t[e];
|
|
34
|
+
if (r !== void 0 && r !== n) throw Error(`assistantProductCopyEntries: ${JSON.stringify(r)} and ${JSON.stringify(n)} both map to ${e}. Reword one of them.`);
|
|
35
|
+
t[e] = n;
|
|
36
|
+
};
|
|
37
|
+
for (let t of e.modes) {
|
|
38
|
+
t.description && t.description.trim() !== "" && n(o(t.id), t.description);
|
|
39
|
+
for (let e of t.suggestions ?? []) n(a(t.id, e), e);
|
|
40
|
+
}
|
|
41
|
+
for (let t of e.pageLabels ?? []) n(s(t), t);
|
|
42
|
+
return t;
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { e as MAX_COPY_SLUG_LENGTH, i as assistantCopySlug, o as assistantModeDescriptionKey, s as assistantPageLabelKey, l as assistantProductCopyEntries, a as assistantSuggestionKey, c as translateProductCopy };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantChatArea.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantChatArea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AAkQf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAmLvE;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"AssistantChatArea.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantChatArea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AAkQf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAmLvE;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CA0gMxD,CAAC"}
|
|
@@ -109,7 +109,7 @@ var Br = ({ visible: Br = !0, writeAccess: Vr = "unknown" }) => {
|
|
|
109
109
|
productWriteApproval: z,
|
|
110
110
|
capabilities: r ? n.sandboxWriteCapabilities[r] : null
|
|
111
111
|
});
|
|
112
|
-
}, [z]), { getAccessToken: B, getWorkspaceToken: Jr, userId: V } = n(), { locale: H,
|
|
112
|
+
}, [z]), { getAccessToken: B, getWorkspaceToken: Jr, userId: V } = n(), { locale: H, isLocaleLoading: Yr } = t(), Xr = y((e) => e.voiceGraceMs), Zr = y((e) => e.handsFreeInterrupt), Qr = y((e) => e.handsFreeStreamNoticeAccepted), $r = y((e) => e.acceptHandsFreeStreamNotice), ei = y((e) => e.assistantLanguage), ti = y((e) => e.replyLanguage), ni = M(() => He(ei, ti, H), [
|
|
113
113
|
ei,
|
|
114
114
|
ti,
|
|
115
115
|
H
|
|
@@ -574,7 +574,7 @@ var Br = ({ visible: Br = !0, writeAccess: Vr = "unknown" }) => {
|
|
|
574
574
|
let t = Mt({
|
|
575
575
|
wanted: e.wanted,
|
|
576
576
|
locale: H,
|
|
577
|
-
isLoading: Yr,
|
|
577
|
+
isLoading: Yr(e.wanted),
|
|
578
578
|
translatedNow: kt(I, e.reply).translated
|
|
579
579
|
});
|
|
580
580
|
if (t === "write") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantEmptyState.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantEmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"AssistantEmptyState.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantEmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AAWxB,UAAU,KAAK;IACb,IAAI,EAAE,aAAa,CAAC;IACpB;;;OAGG;IACH,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1E;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACxC;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,KAAK,CAqHzC,CAAC"}
|
|
@@ -1,48 +1,56 @@
|
|
|
1
1
|
import { resolveModeConfig as e, useAssistantPageLabel as t, useAssistantProduct as n } from "../product.js";
|
|
2
2
|
import { useAssistantTr as r } from "../i18n.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { AUTO_READ_MODE as i, AUTO_WRITE_MODE as a } from "../autoRouting.js";
|
|
4
|
+
import { assistantPageLabelKey as o, assistantSuggestionKey as s, translateProductCopy as c } from "../productCopy.js";
|
|
5
|
+
import { hasConnectSource as l, useAssistantConnectSource as u } from "./composer/connectSource.js";
|
|
6
|
+
import { AssistantConnectSourceItem as d } from "./composer/AssistantConnectSourceItem.js";
|
|
7
|
+
import { Sparkles as f } from "lucide-react";
|
|
8
|
+
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
7
9
|
//#region src/shared/assistant/ui/AssistantEmptyState.tsx
|
|
8
|
-
var
|
|
9
|
-
let
|
|
10
|
-
|
|
10
|
+
var h = ({ mode: h, onSuggestionClick: g, suggestions: _, explainsAuto: v = !1 }) => {
|
|
11
|
+
let y = r(), { modes: b } = n(), x = e(b, h), S = t(), C = (_ ?? (x?.suggestions.slice(0, 4) ?? []).map((e) => ({ text: e }))).map((e) => {
|
|
12
|
+
let t = e.intent === "act" ? a : e.intent === "read" ? i : x?.id ?? h;
|
|
13
|
+
return {
|
|
14
|
+
...e,
|
|
15
|
+
display: c(y, s(t, e.text), e.text)
|
|
16
|
+
};
|
|
17
|
+
}), w = S ? c(y, o(S), S) : null, T = l(u());
|
|
18
|
+
return /* @__PURE__ */ m("div", {
|
|
11
19
|
className: "flex flex-1 flex-col items-center justify-center overflow-y-auto px-6 py-8 text-center",
|
|
12
20
|
children: [
|
|
13
|
-
/* @__PURE__ */
|
|
21
|
+
/* @__PURE__ */ p("div", {
|
|
14
22
|
className: "flex size-12 items-center justify-center rounded-2xl bg-gradient-to-br from-action-primary-bg/25 to-action-primary-bg/5 text-action-primary-bg shadow-sm",
|
|
15
|
-
children: /* @__PURE__ */
|
|
23
|
+
children: /* @__PURE__ */ p(f, { className: "size-6" })
|
|
16
24
|
}),
|
|
17
|
-
/* @__PURE__ */
|
|
25
|
+
/* @__PURE__ */ p("h2", {
|
|
18
26
|
className: "mt-5 text-2xl font-semibold leading-tight tracking-tight text-text-primary",
|
|
19
|
-
children:
|
|
27
|
+
children: y("empty.title", "How can I help?")
|
|
20
28
|
}),
|
|
21
|
-
/* @__PURE__ */
|
|
29
|
+
/* @__PURE__ */ p("p", {
|
|
22
30
|
className: "mt-2 max-w-[16rem] text-[13px] leading-relaxed text-text-muted",
|
|
23
|
-
children:
|
|
31
|
+
children: w ? y("empty.subtitle", "You're viewing {{page}}. Ask about it, or pick a suggestion below.", { page: w }) : y("empty.subtitleNoPage", "Ask me anything, or pick a suggestion below.")
|
|
24
32
|
}),
|
|
25
|
-
|
|
33
|
+
v ? /* @__PURE__ */ p("p", {
|
|
26
34
|
className: "mt-2 max-w-[18rem] text-[12px] leading-relaxed text-text-muted",
|
|
27
35
|
"data-testid": "assistant-auto-explainer",
|
|
28
|
-
children:
|
|
36
|
+
children: y("modeSelector.autoHint", "Answers your questions, and proposes changes for you to approve")
|
|
29
37
|
}) : null,
|
|
30
|
-
/* @__PURE__ */
|
|
38
|
+
/* @__PURE__ */ p("div", {
|
|
31
39
|
className: "mt-6 flex flex-wrap items-center justify-center gap-2",
|
|
32
|
-
children:
|
|
40
|
+
children: C.map((e) => /* @__PURE__ */ p("button", {
|
|
33
41
|
type: "button",
|
|
34
|
-
onClick: () =>
|
|
42
|
+
onClick: () => g(e.display, e.intent),
|
|
35
43
|
className: "rounded-full border border-border-subtle bg-bg-surface px-3.5 py-2 text-[13px] leading-tight text-text-primary shadow-sm transition-[color,background-color,border-color,box-shadow] hover:border-action-primary-bg/40 hover:bg-bg-elevated hover:shadow-md",
|
|
36
44
|
"data-testid": "assistant-suggestion",
|
|
37
|
-
children: e.
|
|
45
|
+
children: e.display
|
|
38
46
|
}, e.text))
|
|
39
47
|
}),
|
|
40
|
-
|
|
48
|
+
T ? /* @__PURE__ */ p("div", {
|
|
41
49
|
className: "mt-5",
|
|
42
|
-
children: /* @__PURE__ */
|
|
50
|
+
children: /* @__PURE__ */ p(d, { presentation: "action" })
|
|
43
51
|
}) : null
|
|
44
52
|
]
|
|
45
53
|
});
|
|
46
54
|
};
|
|
47
55
|
//#endregion
|
|
48
|
-
export {
|
|
56
|
+
export { h as AssistantEmptyState };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantHeader.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AssistantHeader.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAgBhC,UAAU,KAAK;IACb,qEAAqE;IACrE;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,gFAAgF;IAChF,WAAW,EAAE,OAAO,CAAC;IACrB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,KAAK,CAqJrC,CAAC"}
|