@burdenoff/fe-libs 2026.910.5 → 2026.910.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.
- package/dist/shared/assistant/index.d.ts +2 -0
- package/dist/shared/assistant/index.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AIAssistantPanel.d.ts +11 -0
- package/dist/shared/assistant/ui/AIAssistantPanel.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AIAssistantPanel.js +47 -43
- package/dist/shared/assistant/ui/composer/AssistantAttachmentButton.d.ts.map +1 -1
- package/dist/shared/assistant/ui/composer/AssistantAttachmentButton.js +50 -47
- package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.d.ts +7 -0
- package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.d.ts.map +1 -0
- package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.js +52 -0
- package/dist/shared/assistant/ui/composer/connectSource.d.ts +8 -0
- package/dist/shared/assistant/ui/composer/connectSource.d.ts.map +1 -0
- package/dist/shared/assistant/ui/composer/connectSource.js +12 -0
- package/dist/shared/providers/shell/I18nProvider.d.ts.map +1 -1
- package/dist/shared/providers/shell/I18nProvider.js +72 -71
- package/dist/shared/providers/shell/interpolate.d.ts +30 -0
- package/dist/shared/providers/shell/interpolate.d.ts.map +1 -0
- package/dist/shared/providers/shell/interpolate.js +11 -0
- package/dist/shared-assistant.js +39 -37
- package/package.json +2 -2
|
@@ -89,6 +89,8 @@ export * from './ui/AssistantSpeakButton';
|
|
|
89
89
|
export * from './ui/AssistantSpokenTurnsNotice';
|
|
90
90
|
export * from './ui/composer/AssistantAttachmentButton';
|
|
91
91
|
export * from './ui/composer/AssistantAttachmentChips';
|
|
92
|
+
export * from './ui/composer/AssistantConnectSourceItem';
|
|
93
|
+
export * from './ui/composer/connectSource';
|
|
92
94
|
export * from './ui/composer/AssistantLanguageSelector';
|
|
93
95
|
export * from './ui/composer/AssistantModeSelector';
|
|
94
96
|
export * from './ui/composer/AssistantVoiceButton';
|
|
@@ -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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"}
|
|
@@ -24,6 +24,17 @@ export type AIAssistantPanelProps = PanelProps & {
|
|
|
24
24
|
* stay ordinary same-tab anchors — the assistant never navigates on its own.
|
|
25
25
|
*/
|
|
26
26
|
onNavigate?: AssistantNavigate;
|
|
27
|
+
/**
|
|
28
|
+
* Where this product's "connect a data source" page lives, e.g.
|
|
29
|
+
* `/integrations/connections`. Absence is the off-switch: with no href the
|
|
30
|
+
* attach menu shows no such item.
|
|
31
|
+
*
|
|
32
|
+
* ★ Threaded through rather than assumed, for the same reason as `onNavigate`:
|
|
33
|
+
* only the product knows its own routes. It is classified like any other link
|
|
34
|
+
* before it is used, so a same-origin path routes in-app and anything else
|
|
35
|
+
* opens in a new tab.
|
|
36
|
+
*/
|
|
37
|
+
connectSourceHref?: string;
|
|
27
38
|
};
|
|
28
39
|
/**
|
|
29
40
|
* The panel.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIAssistantPanel.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AIAssistantPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAU,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAIvE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"AIAssistantPanel.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AIAssistantPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAU,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAIvE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AAMrC,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG;IAC/C,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAgHtD,CAAC"}
|
|
@@ -3,52 +3,56 @@ import { useAssistantTr as t } from "../i18n.js";
|
|
|
3
3
|
import { AssistantNavigateProvider as n } from "./AssistantMarkdownRenderer.js";
|
|
4
4
|
import { useAssistantStore as r } from "../store.js";
|
|
5
5
|
import { AssistantSpeechProvider as i } from "./AssistantSpeechProvider.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
6
|
+
import { AssistantConnectSourceProvider as a } from "./composer/connectSource.js";
|
|
7
|
+
import { AssistantHeader as o } from "./AssistantHeader.js";
|
|
8
|
+
import { AssistantConversationList as s } from "./AssistantConversationList.js";
|
|
9
|
+
import { useFilesServiceWarmup as c } from "../../../storage/warmFilesService.js";
|
|
10
|
+
import { useAssistantHeartbeat as l } from "../useAssistantHeartbeat.js";
|
|
11
|
+
import { useAssistantKeyboardShortcuts as u } from "../useAssistantKeyboardShortcuts.js";
|
|
12
|
+
import { AssistantChatArea as d } from "./AssistantChatArea.js";
|
|
13
|
+
import { useRef as f } from "react";
|
|
14
|
+
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
14
15
|
//#region src/shared/assistant/ui/AIAssistantPanel.tsx
|
|
15
|
-
var
|
|
16
|
-
let
|
|
17
|
-
|
|
18
|
-
let
|
|
19
|
-
return
|
|
20
|
-
panelRef:
|
|
21
|
-
onClose:
|
|
22
|
-
}), /* @__PURE__ */
|
|
23
|
-
visible:
|
|
24
|
-
children: /* @__PURE__ */
|
|
25
|
-
value:
|
|
26
|
-
children: /* @__PURE__ */ p(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
16
|
+
var h = ({ onClose: h, visible: g, docked: _, onToggleDock: v, writeAccess: y, onNavigate: b, connectSourceHref: x }) => {
|
|
17
|
+
let S = t(), C = f(null), { conversations: w, activeConversationId: T, conversationListOpen: E, toggleConversationList: D, createConversation: O } = r(), k = w.find((e) => e.id === T);
|
|
18
|
+
l(k?.backendSessionId ?? null, k?.mode ?? null, g ?? !0), c(g ?? !0);
|
|
19
|
+
let A = e(g !== !1);
|
|
20
|
+
return u({
|
|
21
|
+
panelRef: C,
|
|
22
|
+
onClose: h
|
|
23
|
+
}), /* @__PURE__ */ p(i, {
|
|
24
|
+
visible: g ?? !0,
|
|
25
|
+
children: /* @__PURE__ */ p(n, {
|
|
26
|
+
value: b,
|
|
27
|
+
children: /* @__PURE__ */ p(a, {
|
|
28
|
+
value: x,
|
|
29
|
+
children: /* @__PURE__ */ m("div", {
|
|
30
|
+
ref: C,
|
|
31
|
+
className: "relative flex h-full w-full flex-col bg-bg-surface",
|
|
32
|
+
role: "complementary",
|
|
33
|
+
"aria-label": S("panel.ariaLabel", "AI Assistant"),
|
|
34
|
+
"data-testid": "ai-assistant-panel",
|
|
35
|
+
tabIndex: -1,
|
|
36
|
+
children: [
|
|
37
|
+
/* @__PURE__ */ p(o, {
|
|
38
|
+
contextLabel: A,
|
|
39
|
+
onNewConversation: () => O(),
|
|
40
|
+
onOpenHistory: D,
|
|
41
|
+
historyOpen: E,
|
|
42
|
+
onClose: h,
|
|
43
|
+
docked: _,
|
|
44
|
+
onToggleDock: v
|
|
45
|
+
}),
|
|
46
|
+
E && /* @__PURE__ */ p(s, {}),
|
|
47
|
+
/* @__PURE__ */ p(d, {
|
|
48
|
+
visible: g ?? !0,
|
|
49
|
+
writeAccess: y
|
|
50
|
+
})
|
|
51
|
+
]
|
|
52
|
+
})
|
|
49
53
|
})
|
|
50
54
|
})
|
|
51
55
|
});
|
|
52
56
|
};
|
|
53
57
|
//#endregion
|
|
54
|
-
export {
|
|
58
|
+
export { h as AIAssistantPanel };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantAttachmentButton.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/AssistantAttachmentButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AssistantAttachmentButton.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/AssistantAttachmentButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AAaf,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,wEAAwE;IACxE,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AASD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,KAAK,CA4J/C,CAAC"}
|
|
@@ -1,86 +1,89 @@
|
|
|
1
1
|
import { useAssistantTr as e } from "../../i18n.js";
|
|
2
2
|
import "../../attachments.js";
|
|
3
3
|
import { availableAttachmentSources as t, deviceHasCamera as n } from "../../attachmentSources.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { useAssistantConnectSource as r } from "./connectSource.js";
|
|
5
|
+
import { AssistantConnectSourceItem as i } from "./AssistantConnectSourceItem.js";
|
|
6
|
+
import { useCallback as a, useEffect as o, useMemo as s, useRef as c, useState as l } from "react";
|
|
7
|
+
import { Camera as u, FileText as d, FolderOpen as f, ImageIcon as p, Plus as m } from "lucide-react";
|
|
8
|
+
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
7
9
|
//#region src/shared/assistant/ui/composer/AssistantAttachmentButton.tsx
|
|
8
|
-
var
|
|
9
|
-
camera:
|
|
10
|
-
gallery:
|
|
11
|
-
documents:
|
|
12
|
-
files:
|
|
13
|
-
},
|
|
14
|
-
let
|
|
15
|
-
|
|
16
|
-
let
|
|
17
|
-
|
|
18
|
-
if (!
|
|
10
|
+
var _ = {
|
|
11
|
+
camera: u,
|
|
12
|
+
gallery: p,
|
|
13
|
+
documents: d,
|
|
14
|
+
files: f
|
|
15
|
+
}, v = ({ onFiles: u, onPickerOpen: d, direction: f = "up", canAddMore: p, disabled: v = !1 }) => {
|
|
16
|
+
let y = e(), b = c(null), x = c(null), S = c(null), [C, w] = l(!1), T = c(d);
|
|
17
|
+
T.current = d;
|
|
18
|
+
let E = s(() => t(n()), []), D = r(), O = p || !!D, k = p ? y("composer.attach", "Attach files or photos") : y("composer.attachFull", "Attachment limit reached ({{max}})", { max: 5 });
|
|
19
|
+
o(() => {
|
|
20
|
+
if (!C) return;
|
|
19
21
|
let e = (e) => {
|
|
20
|
-
e.key === "Escape" && (
|
|
22
|
+
e.key === "Escape" && (w(!1), S.current?.focus());
|
|
21
23
|
}, t = (e) => {
|
|
22
24
|
let t = e.target;
|
|
23
|
-
|
|
25
|
+
x.current?.contains(t) || S.current?.contains(t) || w(!1);
|
|
24
26
|
};
|
|
25
27
|
return window.addEventListener("keydown", e), window.addEventListener("mousedown", t), () => {
|
|
26
28
|
window.removeEventListener("keydown", e), window.removeEventListener("mousedown", t);
|
|
27
29
|
};
|
|
28
|
-
}, [
|
|
29
|
-
let
|
|
30
|
-
|
|
31
|
-
}, [
|
|
32
|
-
let t =
|
|
33
|
-
t && (t.accept = e.accept, t.multiple = e.multiple, e.capture ? t.setAttribute("capture", e.capture) : t.removeAttribute("capture"),
|
|
30
|
+
}, [C]);
|
|
31
|
+
let A = a((e) => {
|
|
32
|
+
u(e.target.files), e.target.value = "";
|
|
33
|
+
}, [u]), j = a((e) => {
|
|
34
|
+
let t = b.current;
|
|
35
|
+
t && (t.accept = e.accept, t.multiple = e.multiple, e.capture ? t.setAttribute("capture", e.capture) : t.removeAttribute("capture"), w(!1), T.current?.(), t.click());
|
|
34
36
|
}, []);
|
|
35
|
-
return /* @__PURE__ */
|
|
37
|
+
return /* @__PURE__ */ g("div", {
|
|
36
38
|
className: "relative flex-shrink-0",
|
|
37
39
|
children: [
|
|
38
|
-
/* @__PURE__ */
|
|
39
|
-
ref:
|
|
40
|
+
/* @__PURE__ */ h("input", {
|
|
41
|
+
ref: b,
|
|
40
42
|
type: "file",
|
|
41
43
|
multiple: !0,
|
|
42
44
|
className: "hidden",
|
|
43
|
-
onChange:
|
|
45
|
+
onChange: A,
|
|
44
46
|
tabIndex: -1,
|
|
45
47
|
"aria-hidden": "true",
|
|
46
48
|
"data-testid": "assistant-attach-input"
|
|
47
49
|
}),
|
|
48
|
-
/* @__PURE__ */
|
|
49
|
-
ref:
|
|
50
|
+
/* @__PURE__ */ h("button", {
|
|
51
|
+
ref: S,
|
|
50
52
|
type: "button",
|
|
51
|
-
onClick: () =>
|
|
52
|
-
disabled:
|
|
53
|
-
title:
|
|
54
|
-
"aria-label":
|
|
53
|
+
onClick: () => w((e) => !e),
|
|
54
|
+
disabled: v || !O,
|
|
55
|
+
title: k,
|
|
56
|
+
"aria-label": k,
|
|
55
57
|
"aria-haspopup": "menu",
|
|
56
|
-
"aria-expanded":
|
|
58
|
+
"aria-expanded": C,
|
|
57
59
|
className: "flex size-9 items-center justify-center rounded-full border border-border-subtle bg-bg-elevated text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong disabled:cursor-not-allowed disabled:text-text-muted disabled:hover:bg-bg-elevated",
|
|
58
60
|
"data-testid": "assistant-attach",
|
|
59
|
-
children: /* @__PURE__ */
|
|
61
|
+
children: /* @__PURE__ */ h(m, { className: "size-4" })
|
|
60
62
|
}),
|
|
61
|
-
|
|
62
|
-
ref:
|
|
63
|
+
C ? /* @__PURE__ */ g("div", {
|
|
64
|
+
ref: x,
|
|
63
65
|
role: "menu",
|
|
64
|
-
"aria-label":
|
|
65
|
-
className: `absolute ${
|
|
66
|
+
"aria-label": y("composer.attachSource", "Attach from"),
|
|
67
|
+
className: `absolute ${f === "up" ? "bottom-full mb-2" : "top-full mt-2"} left-0 z-30 min-w-44 overflow-hidden rounded-xl border border-border-default bg-bg-elevated py-1 shadow-lg`,
|
|
66
68
|
"data-testid": "assistant-attach-menu",
|
|
67
|
-
children:
|
|
68
|
-
let t =
|
|
69
|
-
return /* @__PURE__ */
|
|
69
|
+
children: [E.map((e) => {
|
|
70
|
+
let t = _[e.id];
|
|
71
|
+
return /* @__PURE__ */ g("button", {
|
|
70
72
|
type: "button",
|
|
71
73
|
role: "menuitem",
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
disabled: !p,
|
|
75
|
+
onClick: () => j(e),
|
|
76
|
+
className: "flex w-full items-center gap-2.5 px-3 py-2 text-left text-sm text-text-primary transition-colors hover:bg-bg-sunken focus:outline-none focus-visible:bg-bg-sunken disabled:cursor-not-allowed disabled:text-text-muted disabled:hover:bg-transparent",
|
|
74
77
|
"data-testid": `assistant-attach-source-${e.id}`,
|
|
75
|
-
children: [/* @__PURE__ */
|
|
78
|
+
children: [/* @__PURE__ */ h(t, {
|
|
76
79
|
className: "size-4 flex-shrink-0 text-text-secondary",
|
|
77
80
|
"aria-hidden": "true"
|
|
78
|
-
}),
|
|
81
|
+
}), y(e.labelKey, e.labelFallback)]
|
|
79
82
|
}, e.id);
|
|
80
|
-
})
|
|
83
|
+
}), /* @__PURE__ */ h(i, { onActivate: () => w(!1) })]
|
|
81
84
|
}) : null
|
|
82
85
|
]
|
|
83
86
|
});
|
|
84
87
|
};
|
|
85
88
|
//#endregion
|
|
86
|
-
export {
|
|
89
|
+
export { v as AssistantAttachmentButton };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
export interface AssistantConnectSourceItemProps {
|
|
3
|
+
/** Close the surrounding menu. Fired only when this item actually acts. */
|
|
4
|
+
onActivate?: () => void;
|
|
5
|
+
}
|
|
6
|
+
export declare const AssistantConnectSourceItem: FC<AssistantConnectSourceItemProps>;
|
|
7
|
+
//# sourceMappingURL=AssistantConnectSourceItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantConnectSourceItem.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/AssistantConnectSourceItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAe,KAAK,EAAE,EAAmB,MAAM,OAAO,CAAC;AAuC9D,MAAM,WAAW,+BAA+B;IAC9C,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,+BAA+B,CAwD1E,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { useAssistantTr as e } from "../../i18n.js";
|
|
2
|
+
import { assistantRoutePath as t, classifyAssistantHref as n, useAssistantNavigate as r } from "../AssistantMarkdownRenderer.js";
|
|
3
|
+
import { useAssistantConnectSource as i } from "./connectSource.js";
|
|
4
|
+
import { useCallback as a } from "react";
|
|
5
|
+
import { Link2 as o } from "lucide-react";
|
|
6
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
7
|
+
//#region src/shared/assistant/ui/composer/AssistantConnectSourceItem.tsx
|
|
8
|
+
function l(e, t) {
|
|
9
|
+
let n = (e ?? "").trim();
|
|
10
|
+
if (!n) return !1;
|
|
11
|
+
let r = t;
|
|
12
|
+
if (!r) try {
|
|
13
|
+
r = typeof window > "u" ? void 0 : window.location.origin;
|
|
14
|
+
} catch {
|
|
15
|
+
r = void 0;
|
|
16
|
+
}
|
|
17
|
+
if (!r) return !1;
|
|
18
|
+
try {
|
|
19
|
+
let { protocol: e } = new URL(n, r);
|
|
20
|
+
return e === "https:" || e === "http:";
|
|
21
|
+
} catch {
|
|
22
|
+
return !1;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
var u = ({ onActivate: u }) => {
|
|
26
|
+
let d = e(), f = i(), p = r(), m = n(f), h = m === "internal" ? t(f) : null, g = m === "external" && l(f), _ = a((e) => {
|
|
27
|
+
e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || (u?.(), !(!p || !h) && (e.preventDefault(), p(h)));
|
|
28
|
+
}, [
|
|
29
|
+
p,
|
|
30
|
+
h,
|
|
31
|
+
u
|
|
32
|
+
]);
|
|
33
|
+
if (!f || m === "blocked" || !h && !g) return null;
|
|
34
|
+
let v = d("composer.connectSource", "Connect a source");
|
|
35
|
+
return /* @__PURE__ */ c("a", {
|
|
36
|
+
href: f,
|
|
37
|
+
role: "menuitem",
|
|
38
|
+
onClick: _,
|
|
39
|
+
...g ? {
|
|
40
|
+
target: "_blank",
|
|
41
|
+
rel: "noopener noreferrer"
|
|
42
|
+
} : {},
|
|
43
|
+
className: "flex w-full items-center gap-2.5 border-t border-border-subtle px-3 py-2 text-left text-sm text-text-primary transition-colors hover:bg-bg-sunken focus:outline-none focus-visible:bg-bg-sunken",
|
|
44
|
+
"data-testid": "assistant-connect-source",
|
|
45
|
+
children: [/* @__PURE__ */ s(o, {
|
|
46
|
+
className: "size-4 flex-shrink-0 text-text-secondary",
|
|
47
|
+
"aria-hidden": "true"
|
|
48
|
+
}), v]
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
//#endregion
|
|
52
|
+
export { u as AssistantConnectSourceItem };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
export declare const AssistantConnectSourceProvider: FC<{
|
|
3
|
+
value?: string;
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
}>;
|
|
6
|
+
/** The product's connections href, or null when the product supplied none. */
|
|
7
|
+
export declare function useAssistantConnectSource(): string | null;
|
|
8
|
+
//# sourceMappingURL=connectSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connectSource.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/connectSource.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAA6B,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3E,eAAO,MAAM,8BAA8B,EAAE,EAAE,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;CACrB,CAIA,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,yBAAyB,IAAI,MAAM,GAAG,IAAI,CAEzD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createContext as e, useContext as t } from "react";
|
|
2
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
3
|
+
//#region src/shared/assistant/ui/composer/connectSource.tsx
|
|
4
|
+
var r = e(null), i = ({ value: e, children: t }) => /* @__PURE__ */ n(r.Provider, {
|
|
5
|
+
value: e ?? null,
|
|
6
|
+
children: t
|
|
7
|
+
});
|
|
8
|
+
function a() {
|
|
9
|
+
return t(r);
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { i as AssistantConnectSourceProvider, a as useAssistantConnectSource };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"I18nProvider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/shell/I18nProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"I18nProvider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/shell/I18nProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAWlF,MAAM,WAAW,qBAAqB;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,qBAAqB,CAAC;CAC/C;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,qBAAqB,CAAC;IACpC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,CAAC,EAAE,CACD,GAAG,EAAE,MAAM,EACX,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KACrC,MAAM,CAAC;IACZ,uDAAuD;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAID;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAErF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,mBAAmB,CAAC;IACxC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC;CAC9B;AA2FD;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,qBAAqB,GAAG,SAAS,EACvC,QAAQ,EAAE,qBAAqB,GAAG,SAAS,GAC1C,qBAAqB,CAsBvB;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,aAAoB,EACpB,YAAY,EAAE,kBAAyC,EACvD,UAA+B,EAC/B,SAAS,EACT,iBAAiB,EACjB,wBAA+B,EAC/B,gBAAgB,GACjB,EAAE,iBAAiB,2CAwMnB;AAED,wBAAgB,OAAO,qBAMtB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE9D"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { interpolate as e } from "./interpolate.js";
|
|
2
|
+
import { createContext as t, use as n, useCallback as r, useEffect as i, useMemo as a, useRef as o, useState as s } from "react";
|
|
3
|
+
import { Fragment as c, jsx as l } from "react/jsx-runtime";
|
|
3
4
|
//#region src/shared/providers/shell/I18nProvider.tsx
|
|
4
|
-
var
|
|
5
|
+
var u = t(null), d = {
|
|
5
6
|
en: {},
|
|
6
7
|
es: {},
|
|
7
8
|
fr: {},
|
|
@@ -11,7 +12,7 @@ var l = e(null), u = {
|
|
|
11
12
|
ta: {},
|
|
12
13
|
hi: {},
|
|
13
14
|
ar: {}
|
|
14
|
-
},
|
|
15
|
+
}, f = {
|
|
15
16
|
attempted: /* @__PURE__ */ new Set(),
|
|
16
17
|
translations: {},
|
|
17
18
|
version: 0,
|
|
@@ -19,7 +20,7 @@ var l = e(null), u = {
|
|
|
19
20
|
this.attempted.clear(), this.translations = {}, this.version++;
|
|
20
21
|
}
|
|
21
22
|
};
|
|
22
|
-
function
|
|
23
|
+
function p(e, t, n) {
|
|
23
24
|
if (typeof window > "u") return n;
|
|
24
25
|
if (e) {
|
|
25
26
|
let t = localStorage.getItem(`bf-p-${e}-locale`);
|
|
@@ -27,17 +28,17 @@ function f(e, t, n) {
|
|
|
27
28
|
}
|
|
28
29
|
return localStorage.getItem(t) || n;
|
|
29
30
|
}
|
|
30
|
-
function
|
|
31
|
+
function m(e, t) {
|
|
31
32
|
if (!e) return;
|
|
32
33
|
let n = t.split("."), r = e;
|
|
33
34
|
for (let e of n) if (typeof r == "object" && r && e in r) r = r[e];
|
|
34
35
|
else return;
|
|
35
36
|
return typeof r == "string" ? r : void 0;
|
|
36
37
|
}
|
|
37
|
-
function
|
|
38
|
+
function h(e) {
|
|
38
39
|
return typeof e == "object" && !!e;
|
|
39
40
|
}
|
|
40
|
-
function
|
|
41
|
+
function g(e, t) {
|
|
41
42
|
if (!e && !t) return {};
|
|
42
43
|
if (!e) return { ...t ?? {} };
|
|
43
44
|
if (!t) return { ...e };
|
|
@@ -48,103 +49,103 @@ function h(e, t) {
|
|
|
48
49
|
n[e] = r;
|
|
49
50
|
continue;
|
|
50
51
|
}
|
|
51
|
-
n[e] = h(
|
|
52
|
+
n[e] = g(h(t) ? t : void 0, r);
|
|
52
53
|
}
|
|
53
54
|
return n;
|
|
54
55
|
}
|
|
55
|
-
function
|
|
56
|
-
let [
|
|
57
|
-
let e = { ...
|
|
58
|
-
for (let [t, n] of Object.entries(
|
|
56
|
+
function _({ children: t, defaultLocale: n = "en", translations: h = d, storageKey: _ = "burdenoff-locale", profileId: v, fetchTranslations: y, showChildrenWhileLoading: b = !0, loadingComponent: x }) {
|
|
57
|
+
let [S, C] = s(() => p(v, _, n)), [w, T] = s({}), [E, D] = s(!!y), [O, k] = s(null), A = o(/* @__PURE__ */ new Set()), j = o(f.version), M = a(() => {
|
|
58
|
+
let e = { ...h };
|
|
59
|
+
for (let [t, n] of Object.entries(w)) if (n && Object.keys(n).length > 0) {
|
|
59
60
|
let r = t;
|
|
60
|
-
e[r] = h
|
|
61
|
+
e[r] = g(h[r], n);
|
|
61
62
|
}
|
|
62
63
|
return e;
|
|
63
|
-
}, [
|
|
64
|
-
if (
|
|
65
|
-
if (
|
|
66
|
-
let t =
|
|
67
|
-
t && Object.keys(t).length > 0 &&
|
|
64
|
+
}, [h, w]), N = r(async (e) => {
|
|
65
|
+
if (y) {
|
|
66
|
+
if (j.current !== f.version && (A.current.clear(), j.current = f.version), f.attempted.has(e)) {
|
|
67
|
+
let t = f.translations[e];
|
|
68
|
+
t && Object.keys(t).length > 0 && T((n) => !n[e] || Object.keys(n[e]).length === 0 ? {
|
|
68
69
|
...n,
|
|
69
70
|
[e]: t
|
|
70
71
|
} : n);
|
|
71
72
|
return;
|
|
72
73
|
}
|
|
73
|
-
if (!
|
|
74
|
-
|
|
74
|
+
if (!A.current.has(e)) {
|
|
75
|
+
A.current.add(e), D(!0), k(null);
|
|
75
76
|
try {
|
|
76
|
-
let t = await
|
|
77
|
-
t && Object.keys(t).length > 0 && (
|
|
77
|
+
let t = await y(e);
|
|
78
|
+
t && Object.keys(t).length > 0 && (f.attempted.add(e), f.translations[e] = t), T((n) => ({
|
|
78
79
|
...n,
|
|
79
80
|
[e]: t
|
|
80
81
|
}));
|
|
81
82
|
} catch (t) {
|
|
82
|
-
console.error(`[I18nProvider] Failed to fetch translations for ${e}:`, t),
|
|
83
|
+
console.error(`[I18nProvider] Failed to fetch translations for ${e}:`, t), k(t instanceof Error ? t.message : "Failed to fetch translations");
|
|
83
84
|
} finally {
|
|
84
|
-
|
|
85
|
+
A.current.delete(e), D(!1);
|
|
85
86
|
}
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
|
-
}, [
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
}, [y]);
|
|
90
|
+
i(() => {
|
|
91
|
+
y && (f.attempted.has(S) && f.translations[S] && Object.keys(f.translations[S]).length > 0 || N(S));
|
|
91
92
|
}, [
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
]),
|
|
96
|
-
let e =
|
|
97
|
-
|
|
93
|
+
y,
|
|
94
|
+
S,
|
|
95
|
+
N
|
|
96
|
+
]), i(() => {
|
|
97
|
+
let e = p(v, _, n);
|
|
98
|
+
C(e), document.documentElement.setAttribute("lang", e);
|
|
98
99
|
}, [
|
|
100
|
+
v,
|
|
99
101
|
_,
|
|
100
|
-
|
|
101
|
-
t
|
|
102
|
+
n
|
|
102
103
|
]);
|
|
103
|
-
let
|
|
104
|
-
|
|
105
|
-
}, [
|
|
106
|
-
let
|
|
107
|
-
if (typeof
|
|
108
|
-
else if (
|
|
109
|
-
let { defaultValue: e, ...t } =
|
|
110
|
-
typeof e == "string" ?
|
|
104
|
+
let P = r((e) => {
|
|
105
|
+
C(e), localStorage.setItem(_, e), v && localStorage.setItem(`bf-p-${v}-locale`, e), document.documentElement.setAttribute("lang", e);
|
|
106
|
+
}, [_, v]), F = r((t, r, i) => {
|
|
107
|
+
let a, o;
|
|
108
|
+
if (typeof r == "string") a = r, o = i;
|
|
109
|
+
else if (r && typeof r == "object") {
|
|
110
|
+
let { defaultValue: e, ...t } = r;
|
|
111
|
+
typeof e == "string" ? a = e : typeof e == "number" && (a = String(e)), o = t;
|
|
111
112
|
}
|
|
112
|
-
let
|
|
113
|
-
return
|
|
113
|
+
let s = m(M[S], t) ?? (S === n ? void 0 : m(M[n], t)) ?? (n === "en" ? void 0 : m(M.en, t)) ?? a ?? t;
|
|
114
|
+
return o ? e(s, o) : s;
|
|
114
115
|
}, [
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
]),
|
|
119
|
-
locale:
|
|
120
|
-
translations:
|
|
121
|
-
setLocale:
|
|
122
|
-
t:
|
|
123
|
-
isLoading:
|
|
124
|
-
error:
|
|
116
|
+
S,
|
|
117
|
+
M,
|
|
118
|
+
n
|
|
119
|
+
]), I = a(() => ({
|
|
120
|
+
locale: S,
|
|
121
|
+
translations: M[S] || {},
|
|
122
|
+
setLocale: P,
|
|
123
|
+
t: F,
|
|
124
|
+
isLoading: E,
|
|
125
|
+
error: O
|
|
125
126
|
}), [
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
N,
|
|
127
|
+
S,
|
|
128
|
+
M,
|
|
129
129
|
P,
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
F,
|
|
131
|
+
E,
|
|
132
|
+
O
|
|
132
133
|
]);
|
|
133
|
-
return
|
|
134
|
-
value:
|
|
135
|
-
children:
|
|
134
|
+
return E && !b && x ? /* @__PURE__ */ l(c, { children: x }) : /* @__PURE__ */ l(u.Provider, {
|
|
135
|
+
value: I,
|
|
136
|
+
children: t
|
|
136
137
|
});
|
|
137
138
|
}
|
|
138
|
-
function
|
|
139
|
-
let e =
|
|
139
|
+
function v() {
|
|
140
|
+
let e = n(u);
|
|
140
141
|
if (!e) throw Error("useI18n must be used within an I18nProvider");
|
|
141
142
|
return e;
|
|
142
143
|
}
|
|
143
|
-
function
|
|
144
|
-
|
|
144
|
+
function y() {
|
|
145
|
+
f.clear();
|
|
145
146
|
}
|
|
146
|
-
function
|
|
147
|
-
return
|
|
147
|
+
function b(e) {
|
|
148
|
+
return f.attempted.has(e);
|
|
148
149
|
}
|
|
149
150
|
//#endregion
|
|
150
|
-
export {
|
|
151
|
+
export { _ as I18nProvider, y as clearTranslationCache, b as isTranslationAttempted, g as mergeTranslationDictionaries, v as useI18n };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Substitute `{{name}}` and `{name}` placeholders in one left-to-right pass.
|
|
3
|
+
*
|
|
4
|
+
* WHY BOTH SPELLINGS
|
|
5
|
+
* `{{name}}` is the house style, but a large amount of already-SEEDED copy uses
|
|
6
|
+
* the single brace: 174 rows in the FluidGrids production dictionary alone (25
|
|
7
|
+
* of them `dashboard.*`) against 512 rows using `{{name}}`. Those strings were
|
|
8
|
+
* authored in MFEs whose local fallback helper interpolates single braces, so
|
|
9
|
+
* they looked correct until the key reached the dictionary and `t()` began
|
|
10
|
+
* returning the stored value instead of the local fallback — at which point the
|
|
11
|
+
* FluidGrids dashboard rendered `{memberLabel} across {count} {workspaceLabel}`
|
|
12
|
+
* verbatim to users (BOFF-7245). Accepting both spellings fixes every such row
|
|
13
|
+
* in every product with no re-seed.
|
|
14
|
+
*
|
|
15
|
+
* WHY ONE REGEX PASS AND NOT CHAINED `replaceAll`
|
|
16
|
+
* Chained replacement re-scans text it has already written. A parameter whose
|
|
17
|
+
* VALUE happens to contain braces — a workspace literally named "{count}", a
|
|
18
|
+
* translated string carrying a placeholder — would be substituted a second time
|
|
19
|
+
* on a later iteration. Matching once and looking each name up leaves inserted
|
|
20
|
+
* values untouched, and it is also why a repeated placeholder works: every
|
|
21
|
+
* occurrence is matched by the same pass, which the old `replace` (first match
|
|
22
|
+
* only) got wrong for "…{{observed}}{{unit}} · threshold {{threshold}}{{unit}}".
|
|
23
|
+
*
|
|
24
|
+
* An unknown name is left exactly as written rather than blanked, so a missing
|
|
25
|
+
* parameter shows up as `{name}` in review instead of silently vanishing, and
|
|
26
|
+
* braces that are not placeholders at all — `{}` in a code sample, `{0}` in an
|
|
27
|
+
* index template — survive untouched.
|
|
28
|
+
*/
|
|
29
|
+
export declare function interpolate(template: string, params: Record<string, string | number>): string;
|
|
30
|
+
//# sourceMappingURL=interpolate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpolate.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/shell/interpolate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAU7F"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/shared/providers/shell/interpolate.ts
|
|
2
|
+
function e(e, t) {
|
|
3
|
+
return e.replace(/\{\{(\w+)\}\}|\{(\w+)\}/g, (e, n, r) => {
|
|
4
|
+
let i = n ?? r;
|
|
5
|
+
if (i === void 0) return e;
|
|
6
|
+
let a = t[i];
|
|
7
|
+
return a === void 0 ? e : String(a);
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { e as interpolate };
|
package/dist/shared-assistant.js
CHANGED
|
@@ -55,40 +55,42 @@ import { AssistantLanguageMenu as Zr } from "./shared/assistant/ui/AssistantLang
|
|
|
55
55
|
import { AssistantReplyLanguageSelector as Qr } from "./shared/assistant/ui/AssistantReplyLanguageSelector.js";
|
|
56
56
|
import { AssistantSpeakButton as $r } from "./shared/assistant/ui/AssistantSpeakButton.js";
|
|
57
57
|
import { AssistantSpokenTurnsNotice as ei } from "./shared/assistant/ui/AssistantSpokenTurnsNotice.js";
|
|
58
|
-
import {
|
|
59
|
-
import {
|
|
60
|
-
import {
|
|
61
|
-
import {
|
|
62
|
-
import {
|
|
63
|
-
import {
|
|
64
|
-
import {
|
|
65
|
-
import {
|
|
66
|
-
import {
|
|
67
|
-
import {
|
|
68
|
-
import {
|
|
69
|
-
import {
|
|
70
|
-
import {
|
|
71
|
-
import {
|
|
72
|
-
import {
|
|
73
|
-
import {
|
|
74
|
-
import {
|
|
75
|
-
import {
|
|
76
|
-
import {
|
|
77
|
-
import {
|
|
78
|
-
import {
|
|
79
|
-
import {
|
|
80
|
-
import {
|
|
81
|
-
import {
|
|
82
|
-
import {
|
|
83
|
-
import {
|
|
84
|
-
import {
|
|
85
|
-
import {
|
|
86
|
-
import {
|
|
87
|
-
import {
|
|
88
|
-
import {
|
|
89
|
-
import {
|
|
90
|
-
import {
|
|
91
|
-
import {
|
|
92
|
-
import {
|
|
93
|
-
import {
|
|
94
|
-
|
|
58
|
+
import { AssistantConnectSourceProvider as ti, useAssistantConnectSource as ni } from "./shared/assistant/ui/composer/connectSource.js";
|
|
59
|
+
import { AssistantConnectSourceItem as ri } from "./shared/assistant/ui/composer/AssistantConnectSourceItem.js";
|
|
60
|
+
import { AssistantAttachmentButton as ii } from "./shared/assistant/ui/composer/AssistantAttachmentButton.js";
|
|
61
|
+
import { AssistantAttachmentChips as ai } from "./shared/assistant/ui/composer/AssistantAttachmentChips.js";
|
|
62
|
+
import { AssistantLanguageSelector as oi, FOLLOW_APP_LOCALE as si } from "./shared/assistant/ui/composer/AssistantLanguageSelector.js";
|
|
63
|
+
import { ASSISTANT_MODE_META as ci, AssistantModeSelector as li, nextModeIndex as ui } from "./shared/assistant/ui/composer/AssistantModeSelector.js";
|
|
64
|
+
import { AssistantVoiceButton as di } from "./shared/assistant/ui/composer/AssistantVoiceButton.js";
|
|
65
|
+
import { AUTO_VOICE as fi, AssistantVoiceSelector as pi } from "./shared/assistant/ui/composer/AssistantVoiceSelector.js";
|
|
66
|
+
import { AssistantVoiceOrb as mi } from "./shared/assistant/ui/voice/AssistantVoiceOrb.js";
|
|
67
|
+
import { AssistantVoiceSessionButton as hi } from "./shared/assistant/ui/voice/AssistantVoiceSessionButton.js";
|
|
68
|
+
import { CAPTION_SCROLL_ATTR as gi, VoiceCaption as _i } from "./shared/assistant/ui/voice/VoiceCaption.js";
|
|
69
|
+
import { VoiceConversationView as vi } from "./shared/assistant/ui/voice/VoiceConversationView.js";
|
|
70
|
+
import { VoiceWaveform as yi } from "./shared/assistant/ui/voice/VoiceWaveform.js";
|
|
71
|
+
import { VoiceMiniController as bi } from "./shared/assistant/ui/voice/VoiceMiniController.js";
|
|
72
|
+
import { VoiceStage as xi } from "./shared/assistant/ui/voice/VoiceStage.js";
|
|
73
|
+
import { VoiceTranscriptDrawer as Si } from "./shared/assistant/ui/voice/VoiceTranscriptDrawer.js";
|
|
74
|
+
import { downloadFile as Ci, exportConversation as wi } from "./shared/assistant/exportConversation.js";
|
|
75
|
+
import { AssistantMoreMenu as Ti } from "./shared/assistant/ui/AssistantMoreMenu.js";
|
|
76
|
+
import { AssistantHeader as Ei } from "./shared/assistant/ui/AssistantHeader.js";
|
|
77
|
+
import { AssistantConversationList as Di } from "./shared/assistant/ui/AssistantConversationList.js";
|
|
78
|
+
import { AssistantEmptyState as Oi } from "./shared/assistant/ui/AssistantEmptyState.js";
|
|
79
|
+
import { AssistantMessageItem as ki } from "./shared/assistant/ui/AssistantMessageItem.js";
|
|
80
|
+
import { AssistantMessageList as Ai } from "./shared/assistant/ui/AssistantMessageList.js";
|
|
81
|
+
import { AssistantVoiceSession as ji } from "./shared/assistant/ui/voice/AssistantVoiceSession.js";
|
|
82
|
+
import { useAssistantApiAccess as Mi } from "./shared/assistant/useAssistantApiAccess.js";
|
|
83
|
+
import { useConversationTurns as Ni } from "./shared/assistant/useConversationTurns.js";
|
|
84
|
+
import { isMultimodalBodyRejection as Pi, isRecoverableAssistantError as Fi } from "./shared/assistant/transportErrors.js";
|
|
85
|
+
import { aiCreditsUpdatedEventName as Ii, dispatchAssistantQuotaExhausted as Li, notifyAiCreditsUpdated as Ri } from "./shared/assistant/aiCredits.js";
|
|
86
|
+
import { useWorkspaceWriteAccess as zi } from "./shared/assistant/useWorkspaceWriteAccess.js";
|
|
87
|
+
import { extractDocumentText as Bi } from "./shared/assistant/documentExtract.js";
|
|
88
|
+
import { useAssistantAttachments as Vi } from "./shared/assistant/useAssistantAttachments.js";
|
|
89
|
+
import { AssistantComposer as Hi } from "./shared/assistant/ui/composer/AssistantComposer.js";
|
|
90
|
+
import { isProdRuntime as Ui } from "./shared/assistant/env.js";
|
|
91
|
+
import { useAssistantHeartbeat as Wi } from "./shared/assistant/useAssistantHeartbeat.js";
|
|
92
|
+
import { useAssistantKeyboardShortcuts as Gi } from "./shared/assistant/useAssistantKeyboardShortcuts.js";
|
|
93
|
+
import { AssistantApiCallsConsentDialog as Ki } from "./shared/assistant/ui/AssistantApiCallsConsentDialog.js";
|
|
94
|
+
import { AssistantChatArea as qi } from "./shared/assistant/ui/AssistantChatArea.js";
|
|
95
|
+
import { AIAssistantPanel as Ji } from "./shared/assistant/ui/AIAssistantPanel.js";
|
|
96
|
+
export { Ji as AIAssistantPanel, L as ASSISTANT_API_AUTH_STRATEGY, sn as ASSISTANT_LANGUAGES, ci as ASSISTANT_MODE_META, Kn as ATTACHMENT_ACCEPT, Hr as ATTACHMENT_SOURCES, fi as AUTO_VOICE, Ki as AssistantApiCallsConsentDialog, ii as AssistantAttachmentButton, ai as AssistantAttachmentChips, Jr as AssistantAutoSpeakToggle, qi as AssistantChatArea, Hi as AssistantComposer, ri as AssistantConnectSourceItem, ti as AssistantConnectSourceProvider, Di as AssistantConversationList, Oi as AssistantEmptyState, Ei as AssistantHeader, s as AssistantI18nProvider, Zr as AssistantLanguageMenu, oi as AssistantLanguageSelector, f as AssistantMarkdownImage, h as AssistantMarkdownRenderer, Yr as AssistantMessageAttachments, ki as AssistantMessageItem, Ai as AssistantMessageList, li as AssistantModeSelector, Ti as AssistantMoreMenu, g as AssistantNavigateProvider, Xr as AssistantPendingWriteCard, t as AssistantProductProvider, Qr as AssistantReplyLanguageSelector, _e as AssistantRuntimeManager, $r as AssistantSpeakButton, Ir as AssistantSpeechProvider, ei as AssistantSpokenTurnsNotice, Pr as AssistantToolActivity, di as AssistantVoiceButton, mi as AssistantVoiceOrb, pi as AssistantVoiceSelector, ji as AssistantVoiceSession, hi as AssistantVoiceSessionButton, qn as AttachmentRejectedError, En as BOILERPLATE_PAGE_SHARE, gi as CAPTION_SCROLL_ATTR, O as CHECK_AI_CREDITS, k as CREATE_SANDBOX, zt as DEFAULT_SPEAKABLE_LABELS, cn as DEFAULT_SPEECH_RATE, ft as ENDPOINT_GRACE_MS, A as EXTEND_SANDBOX_TTL, si as FOLLOW_APP_LOCALE, j as GET_ACTIVE_SANDBOXES, M as GET_SANDBOX, He as HOSTED_TTS_MAX_CHARS, Re as HOSTED_TTS_TIER, ze as HOSTED_VOICES, yn as IDLE_PLAYBACK, pt as INITIAL_SESSION, Jn as INLINE_IMAGE_MAX_DIM, Yn as INLINE_IMAGE_QUALITY, mt as INTERRUPT_MAX_MS, ht as INTERRUPT_MIN_MS, Xn as MAX_ATTACHMENTS, Dn as MAX_BOILERPLATE_LINE_CHARS, On as MAX_EXTRACTED_CHARS, Zn as MAX_FILE_BYTES, Qn as MAX_INLINE_CHARS_PER_FILE, $n as MAX_INLINE_CHARS_TOTAL, wn as MAX_INLINE_IMAGE_BASE64_BYTES, er as MAX_INLINE_IMAGE_BASE64_CHARS, tr as MAX_INLINE_IMAGE_PARTS, nr as MAX_INLINE_TURN_BODY_BYTES, kn as MAX_PDF_PAGES_SCANNED, Tn as MAX_REQUEST_BODY_BYTES, Bt as MAX_SPEAKABLE_CHARS, Vt as MAX_SPOKEN_TABLE_ROWS, rr as MAX_TURN_BODY_BYTES, Zt as MINI_CAPTION_BUDGET, An as MIN_PAGE_TEXT_CHARS, jn as MIN_TEXT_PAGE_SHARE, Dr as PHRASE_ROTATE_MS, $t as POLL_FAST_MS, en as POLL_FAST_UNTIL_MS, tn as POLL_SLOW_MS, nn as POLL_STEADY_MS, rn as POLL_STEADY_UNTIL_MS, Yt as PREVIEW_LANGUAGES, ir as PROMPT_ENVELOPE_RESERVE_BYTES, N as PROXY_SANDBOX_REQUEST, P as REPORT_AI_TOKEN_USAGE, Gr as SANDBOX_READY_TTL_MS, gt as SILENCE_SUBMIT_MS, Ue as SPEAKING_RATE_MAX, We as SPEAKING_RATE_MAX_STREAMING, Ge as SPEAKING_RATE_MAX_SYNC, Ke as SPEAKING_RATE_MIN, Ht as SPEECH_CHUNK_CHARS, Ut as SPEECH_CHUNK_CJK_CHARS, wt as SPEECH_LANG, hn as SPOKEN_LABEL_LANGUAGES, Or as STAGE_COPY, F as STOP_ASSISTANT_SANDBOX, kr as THINKING_PHRASES, ar as TURN_BODY_HEADROOM_BYTES, Tt as VOICE_LIST_TIMEOUT_MS, _i as VoiceCaption, vi as VoiceConversationView, bi as VoiceMiniController, xi as VoiceStage, Si as VoiceTranscriptDrawer, yi as VoiceWaveform, I as WAIT_FOR_SANDBOX_RUNNING, q as abortAssistantTurn, Ii as aiCreditsUpdatedEventName, J as approvePendingWrite, _ as assistantRoutePath, c as assistantTranslationKey, v as assistantUrlTransform, Ur as availableAttachmentSources, qe as base64ToBytes, y as browserShouldHandle, Le as browserSpeechEngine, Y as buildAssistantSandboxEnv, or as buildAttachmentPromptBlock, It as buildContinuedFromVoiceNote, ve as buildProgress, sr as buildPromptParts, X as buildPromptRequestBody, cr as buildPromptWithAttachments, Je as buildRequest, E as buildSandboxContextInput, Lt as buildVoiceTranscriptMarkdown, Ae as chatTurns, Z as checkAssistantAiCredits, Wt as chunkForSpeech, b as classifyAssistantHref, lr as classifyAttachment, Ye as classifyHttpFailure, S as classifyQuotaError, Mn as columnLetterToIndex, tt as configureSpeechEngine, Gt as containsCjk, d as copyToClipboard, ur as countInlineImageCandidates, dr as countInlinedImageParts, Q as createAssistantSandbox, $ as createAssistantSession, $e as createHostedTtsEngine, Kr as createReadinessTracker, et as createRoutingSpeechEngine, Oe as createSandboxAssistantTransport, nt as createSpeechEngines, Xe as decodeAudioResponse, Nn as decodeXmlEntities, C as describeQuotaError, fr as detectDocumentFormat, _n as detectScriptLocale, Wr as deviceHasCamera, Li as dispatchAssistantQuotaExhausted, Pn as docxXmlToText, ee as downloadAssistantArtifact, Ci as downloadFile, pr as estimateTurnBodyBytes, D as executeSandboxGraphQL, wi as exportConversation, te as extendAssistantSandboxTTL, Bi as extractDocumentText, ln as findAssistantLanguage, ne as findExistingSandbox, pn as findPendingWrite, Fn as fitPdfPages, mr as formatBytes, In as formatPageRanges, zr as getActorId, re as getAssistantArtifacts, ye as getAssistantMedia, ie as getAssistantMessages, ae as getAssistantSession, oe as getAssistantStreamAccess, be as getAssistantText, hr as getAttachmentSendBlocker, U as getCapability, gr as getExtension, R as getImageForMode, z as getImageTagForMode, Br as getOrganizationId, xe as getRawMessageCreatedAt, B as getResourcesForMode, V as getSandboxImageRegistry, _r as getSendableAttachments, rt as getSpeechEngine, Se as getToolProgress, Vr as getWorkspaceId, je as groupBySession, Me as groupConsecutiveBySession, vr as hasAttachmentWorkInFlight, Be as hostedLocaleFor, Ve as hostedSupportsLanguage, p as imageHostLabel, _t as isCapturing, vt as isEcho, Ln as isMostlyImagePages, Pi as isMultimodalBodyRejection, Ui as isProdRuntime, w as isQuotaExhaustedError, Ce as isReapedSandboxConnectionError, qr as isRecentlyVerified, we as isRecoverable, Fi as isRecoverableAssistantError, m as isRemoteImageSrc, bn as isSpeakingMessage, Et as isSpeechBlocked, Ar as isStageCopy, yt as isSubmittable, wr as isTurnInFlight, W as isUnknownFieldError, Ne as isVoiceTurn, Rn as joinSheets, Dt as languageDisplayName, Te as mapSessionToHistory, G as markSupported, K as markUnsupported, Ee as mergeMessagesById, ot as micIsInterrupt, se as modeRequiresConfirmWrites, ui as nextModeIndex, Ot as normalizeLangTag, Ri as notifyAiCreditsUpdated, bt as orbMode, zn as pageMarker, mn as parseConfirmationRefusal, yr as parseDataUrl, Bn as parseSharedStrings, Fr as parseToolActivity, Vn as parseWorkbookSheets, Hn as pdfTextItemsToPage, Tr as planAbandonedTurn, xt as planReplyConsumption, Er as planTurnAbort, an as pollDelayMs, kt as primaryLanguageSubtag, xn as publishedChunks, T as quotaExhaustedEventName, it as readSpeechEngineConfig, ce as releaseSupersededAssistantSandboxes, dn as replyFollowsInput, le as reportAssistantAiTokenUsage, Sn as requiresCancel, at as resetSpeechEngine, un as resolveAssistantLanguage, fn as resolveLanguagePair, n as resolveModeConfig, H as resolveSandboxAssistantMode, vn as resolveSpeechLocale, De as sanitize, ue as selectExistingAssistantSandbox, de as selectSupersededAssistantSandboxes, At as selectVoiceForLocale, fe as sendAssistantPromptAsync, pe as sendHeartbeat, Un as sheetXmlToRows, Ze as shouldDisableEngine, Qt as showPreviousChunk, st as showsAssistantCaption, ct as showsUserCaption, Kt as speakableEmail, jt as speechGate, gn as speechLabelsFor, Mt as speechLangForLocale, Cn as speechPlaybackReducer, Qe as splitForVendor, qt as splitTableRow, St as spokenSoFar, jr as stageText, Mr as statusStageCopy, me as stopReapedAssistantSandbox, Wn as summarisePageText, Nr as thinkingPhrase, on as toCaptionText, br as toMessageAttachment, Jt as toSpeakableText, xr as truncateForInline, Gn as truncatePagesForInline, Mi as useAssistantApiAccess, Vi as useAssistantAttachments, ni as useAssistantConnectSource, Wi as useAssistantHeartbeat, l as useAssistantI18nNamespace, Gi as useAssistantKeyboardShortcuts, x as useAssistantNavigate, r as useAssistantPageLabel, i as useAssistantProduct, a as useAssistantProductOrNull, Lr as useAssistantSpeech, o as useAssistantStorageFolders, Cr as useAssistantStore, u as useAssistantTr, Ni as useConversationTurns, ke as useSandboxAssistantTransport, e as useVoiceInput, Rr as useVoiceSession, zi as useWorkspaceWriteAccess, Sr as validateFile, Nt as voiceAvailability, Pe as voiceMarker, Xt as voicePreviewText, Pt as voiceQualityRank, Fe as voiceSessionIdOf, Ct as voiceSessionReducer, lt as voiceStageState, Rt as voiceTranscriptFilename, Ie as voiceTurnsOnly, Ft as voicesForLocale, he as waitForAssistantServiceReady, ge as waitForSandboxRunning, ut as waveformIsActive, dt as waveformIsSettled };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@burdenoff/fe-libs",
|
|
3
|
-
"version": "2026.910.
|
|
3
|
+
"version": "2026.910.7",
|
|
4
4
|
"description": "Burdenoff frontend primitives and domain libraries",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -307,7 +307,7 @@
|
|
|
307
307
|
"format": "prettier --config shared/config/prettier.config.mjs --write \"src/**/*.{ts,tsx}\" \"!src/config/*.config.ts\"",
|
|
308
308
|
"type:check": "bash scripts/build-limits.sh tsc --noEmit",
|
|
309
309
|
"test:package-css-exports": "node scripts/validate-package-css-exports.mjs",
|
|
310
|
-
"test": "bun test scripts/graphql-schema-drift/__tests__ scripts/a11y-audit/__tests__ src/credentials src/storage src/shared/assistant src/shared/components src/shared/graphql/links/sse-link.test.ts src/shared/config/gatewayUrls.test.ts src/shared/config/authBridgeUrls.test.ts src/shared/config/gatewayFallback.test.ts src/shared/utils/gatewayFetchRewrite.test.ts src/shared/utils/authCookie.test.ts src/shared/providers/AppShellProvider.test.ts src/shared/events/sinks/RybbitSink.test.ts src/shell-native src/shared/native src/chrome/__tests__ src/ui/__tests__",
|
|
310
|
+
"test": "bun test scripts/graphql-schema-drift/__tests__ scripts/a11y-audit/__tests__ src/credentials src/storage src/shared/assistant src/shared/components src/shared/graphql/links/sse-link.test.ts src/shared/config/gatewayUrls.test.ts src/shared/config/authBridgeUrls.test.ts src/shared/config/gatewayFallback.test.ts src/shared/utils/gatewayFetchRewrite.test.ts src/shared/utils/authCookie.test.ts src/shared/providers/AppShellProvider.test.ts src/shared/providers/shell/interpolate.test.ts src/shared/events/sinks/RybbitSink.test.ts src/shell-native src/shared/native src/chrome/__tests__ src/ui/__tests__",
|
|
311
311
|
"sanity": "bash scripts/build-limits.sh --gate bash -c 'bun run lint:sanity && bun run format && bun run type:check && bun run test && bun run build'",
|
|
312
312
|
"switch:status": "bun scripts/deps-mode.ts status",
|
|
313
313
|
"switch:remote": "bun scripts/deps-mode.ts remote",
|