@burdenoff/fe-libs 2026.1007.4 → 2026.1007.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/api.d.ts +11 -0
- package/dist/shared/assistant/api.d.ts.map +1 -1
- package/dist/shared/assistant/api.js +6 -2
- 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/conversation.d.ts +14 -0
- package/dist/shared/assistant/conversation.d.ts.map +1 -1
- package/dist/shared/assistant/createSandboxAssistantTransport.d.ts +8 -1
- package/dist/shared/assistant/createSandboxAssistantTransport.d.ts.map +1 -1
- package/dist/shared/assistant/createSandboxAssistantTransport.js +70 -51
- package/dist/shared/assistant/history/historyMapping.d.ts.map +1 -1
- package/dist/shared/assistant/history/historyMapping.js +19 -12
- package/dist/shared/assistant/i18nManifest.d.ts +26 -5
- package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
- package/dist/shared/assistant/i18nManifest.js +36 -22
- package/dist/shared/assistant/index.d.ts +7 -0
- package/dist/shared/assistant/index.d.ts.map +1 -1
- package/dist/shared/assistant/localUiCommandCopy.d.ts +23 -0
- package/dist/shared/assistant/localUiCommandCopy.d.ts.map +1 -1
- package/dist/shared/assistant/localUiCommandCopy.js +60 -23
- package/dist/shared/assistant/localUiCommands.d.ts +29 -0
- package/dist/shared/assistant/localUiCommands.d.ts.map +1 -1
- package/dist/shared/assistant/localUiCommands.js +18 -7
- 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/types.d.ts +19 -8
- package/dist/shared/assistant/types.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +1479 -1140
- 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/assistant/ui/AssistantMarkdownRenderer.d.ts +18 -3
- package/dist/shared/assistant/ui/AssistantMarkdownRenderer.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMarkdownRenderer.js +1 -1
- package/dist/shared/assistant/ui/AssistantMessageItem.d.ts +5 -0
- package/dist/shared/assistant/ui/AssistantMessageItem.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMessageItem.js +89 -84
- package/dist/shared/assistant/ui/AssistantMessageList.d.ts +5 -0
- package/dist/shared/assistant/ui/AssistantMessageList.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMessageList.js +26 -25
- package/dist/shared/assistant/ui/AssistantUiOfferLink.d.ts +45 -0
- package/dist/shared/assistant/ui/AssistantUiOfferLink.d.ts.map +1 -0
- package/dist/shared/assistant/ui/AssistantUiOfferLink.js +56 -0
- package/dist/shared/assistant/ui/assistantOverlayState.d.ts +9 -0
- package/dist/shared/assistant/ui/assistantOverlayState.d.ts.map +1 -1
- package/dist/shared/assistant/ui/assistantOverlayState.js +37 -28
- package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.d.ts.map +1 -1
- package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.js +1 -1
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts +5 -0
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.js +12 -11
- package/dist/shared/assistant/ui/voice/VoiceConversationView.d.ts +6 -1
- package/dist/shared/assistant/ui/voice/VoiceConversationView.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/VoiceConversationView.js +7 -7
- package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.d.ts +6 -1
- package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.js +15 -12
- package/dist/shared/assistant/uiActions/actOnResolve.d.ts +108 -0
- package/dist/shared/assistant/uiActions/actOnResolve.d.ts.map +1 -0
- package/dist/shared/assistant/uiActions/actOnResolve.js +51 -0
- package/dist/shared/assistant/uiActions/linkContext.d.ts +29 -0
- package/dist/shared/assistant/uiActions/linkContext.d.ts.map +1 -1
- package/dist/shared/assistant/uiActions/linkContext.js +37 -10
- package/dist/shared/assistant/uiActions/navIntent.d.ts +58 -0
- package/dist/shared/assistant/uiActions/navIntent.d.ts.map +1 -0
- package/dist/shared/assistant/uiActions/navIntent.js +79 -0
- package/dist/shared/assistant/uiActions/navigateAction.d.ts +6 -1
- package/dist/shared/assistant/uiActions/navigateAction.d.ts.map +1 -1
- package/dist/shared/assistant/uiActions/navigateAction.js +18 -14
- package/dist/shared/assistant/uiActions/navigationOutcome.d.ts +16 -2
- package/dist/shared/assistant/uiActions/navigationOutcome.d.ts.map +1 -1
- package/dist/shared/assistant/uiActions/navigationOutcome.js +6 -2
- package/dist/shared/assistant/uiActions/offerYesOnSurface.d.ts +39 -0
- package/dist/shared/assistant/uiActions/offerYesOnSurface.d.ts.map +1 -0
- package/dist/shared/assistant/uiActions/offerYesOnSurface.js +34 -0
- package/dist/shared/assistant/uiActions/uiCatalogue.d.ts +14 -0
- package/dist/shared/assistant/uiActions/uiCatalogue.d.ts.map +1 -1
- package/dist/shared/assistant/uiActions/uiCatalogue.js +23 -3
- package/dist/shared/assistant/uiActions/uiOffers.d.ts +249 -0
- package/dist/shared/assistant/uiActions/uiOffers.d.ts.map +1 -0
- package/dist/shared/assistant/uiActions/uiOffers.js +195 -0
- package/dist/shared/assistant/writeProposals.d.ts +6 -0
- package/dist/shared/assistant/writeProposals.d.ts.map +1 -1
- package/dist/shared/assistant/writeReplyBinder.d.ts +40 -0
- package/dist/shared/assistant/writeReplyBinder.d.ts.map +1 -1
- package/dist/shared/assistant/writeReplyBinder.js +100 -83
- package/dist/shared/assistant/writeReplySend.d.ts +14 -0
- package/dist/shared/assistant/writeReplySend.d.ts.map +1 -1
- package/dist/shared/assistant/writeReplySend.js +32 -29
- 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/hooks/index.d.ts +2 -0
- package/dist/shared/hooks/index.d.ts.map +1 -1
- package/dist/shared/navigation/unsavedChanges.d.ts +83 -0
- package/dist/shared/navigation/unsavedChanges.d.ts.map +1 -0
- package/dist/shared/navigation/unsavedChanges.js +46 -0
- 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 +244 -237
- package/dist/shared-hooks.js +10 -9
- package/dist/shared-providers-shell.js +20 -19
- package/dist/shared.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 +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"}
|
|
@@ -1,82 +1,83 @@
|
|
|
1
1
|
import { useAssistantTr as e } from "../i18n.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
2
|
+
import { assistantPageLabelKey as t, translateProductCopy as n } from "../productCopy.js";
|
|
3
|
+
import { useAssistantPreview as r } from "../preview/context.js";
|
|
4
|
+
import { hasAssistantPreviewSurface as i } from "../preview/types.js";
|
|
5
|
+
import { AssistantMoreMenu as a } from "./AssistantMoreMenu.js";
|
|
6
|
+
import { Eye as o, History as s, PanelBottom as c, PanelRight as l, Plus as u, Sparkles as d, X as f } from "lucide-react";
|
|
7
|
+
import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
7
8
|
//#region src/shared/assistant/ui/AssistantHeader.tsx
|
|
8
|
-
var
|
|
9
|
-
let
|
|
10
|
-
return /* @__PURE__ */
|
|
9
|
+
var g = ({ contextLabel: g, onNewConversation: _, onOpenHistory: v, historyOpen: y, onTogglePreview: b, previewOpen: x, onClose: S, docked: C, onToggleDock: w }) => {
|
|
10
|
+
let T = e(), E = r();
|
|
11
|
+
return /* @__PURE__ */ h("div", {
|
|
11
12
|
className: "flex items-center gap-2 border-b border-border-default bg-bg-elevated px-3 py-2.5",
|
|
12
|
-
children: [/* @__PURE__ */
|
|
13
|
+
children: [/* @__PURE__ */ h("div", {
|
|
13
14
|
className: "flex min-w-0 flex-1 items-center gap-2",
|
|
14
|
-
children: [/* @__PURE__ */
|
|
15
|
+
children: [/* @__PURE__ */ m("span", {
|
|
15
16
|
className: "flex size-7 flex-shrink-0 items-center justify-center rounded-lg bg-gradient-to-br from-action-primary-bg/25 to-action-primary-bg/5 text-action-primary-bg",
|
|
16
|
-
children: /* @__PURE__ */
|
|
17
|
-
}), /* @__PURE__ */
|
|
17
|
+
children: /* @__PURE__ */ m(d, { className: "size-4" })
|
|
18
|
+
}), /* @__PURE__ */ h("span", {
|
|
18
19
|
className: "min-w-0 flex-1",
|
|
19
|
-
children: [/* @__PURE__ */
|
|
20
|
+
children: [/* @__PURE__ */ m("span", {
|
|
20
21
|
className: "block truncate text-[14px] font-semibold leading-tight text-text-primary",
|
|
21
|
-
children:
|
|
22
|
-
}), /* @__PURE__ */
|
|
22
|
+
children: T("header.title", "AI Assistant")
|
|
23
|
+
}), /* @__PURE__ */ h("span", {
|
|
23
24
|
className: "block truncate text-[11px] leading-tight text-text-muted",
|
|
24
|
-
children: [
|
|
25
|
+
children: [T("header.ready", "Ready"), g && /* @__PURE__ */ h(p, { children: [/* @__PURE__ */ m("span", {
|
|
25
26
|
"aria-hidden": "true",
|
|
26
27
|
children: " · "
|
|
27
|
-
}),
|
|
28
|
+
}), T("header.context", "Context: {{page}}", { page: n(T, t(g), g) })] })]
|
|
28
29
|
})]
|
|
29
30
|
})]
|
|
30
|
-
}), /* @__PURE__ */
|
|
31
|
+
}), /* @__PURE__ */ h("div", {
|
|
31
32
|
className: "flex flex-shrink-0 items-center gap-0.5",
|
|
32
33
|
children: [
|
|
33
|
-
/* @__PURE__ */
|
|
34
|
+
/* @__PURE__ */ m("button", {
|
|
34
35
|
type: "button",
|
|
35
|
-
onClick:
|
|
36
|
+
onClick: _,
|
|
36
37
|
className: "rounded-lg p-1.5 text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary",
|
|
37
|
-
"aria-label":
|
|
38
|
+
"aria-label": T("header.newConversation", "New conversation"),
|
|
38
39
|
"data-testid": "assistant-new-conversation",
|
|
39
|
-
children: /* @__PURE__ */
|
|
40
|
+
children: /* @__PURE__ */ m(u, { className: "size-4" })
|
|
40
41
|
}),
|
|
41
|
-
/* @__PURE__ */
|
|
42
|
+
/* @__PURE__ */ m("button", {
|
|
42
43
|
type: "button",
|
|
43
|
-
onClick:
|
|
44
|
-
className: `rounded-lg p-1.5 transition-colors ${
|
|
45
|
-
"aria-label":
|
|
46
|
-
"aria-pressed":
|
|
44
|
+
onClick: v,
|
|
45
|
+
className: `rounded-lg p-1.5 transition-colors ${y ? "bg-action-primary-bg/15 text-action-primary-bg" : "text-text-secondary hover:bg-bg-sunken hover:text-text-primary"}`,
|
|
46
|
+
"aria-label": T("header.history", "Conversation history"),
|
|
47
|
+
"aria-pressed": y,
|
|
47
48
|
"data-testid": "assistant-open-history",
|
|
48
|
-
children: /* @__PURE__ */
|
|
49
|
+
children: /* @__PURE__ */ m(s, { className: "size-4" })
|
|
49
50
|
}),
|
|
50
|
-
|
|
51
|
+
i(E) && b && /* @__PURE__ */ m("button", {
|
|
51
52
|
type: "button",
|
|
52
|
-
onClick:
|
|
53
|
-
className: `rounded-lg p-1.5 transition-colors ${
|
|
54
|
-
"aria-label":
|
|
55
|
-
"aria-pressed": !!
|
|
53
|
+
onClick: b,
|
|
54
|
+
className: `rounded-lg p-1.5 transition-colors ${x ? "bg-action-primary-bg/15 text-action-primary-bg" : "text-text-secondary hover:bg-bg-sunken hover:text-text-primary"}`,
|
|
55
|
+
"aria-label": E.label ?? T("header.preview", "Preview"),
|
|
56
|
+
"aria-pressed": !!x,
|
|
56
57
|
"data-testid": "assistant-toggle-preview",
|
|
57
|
-
children: /* @__PURE__ */
|
|
58
|
+
children: /* @__PURE__ */ m(o, { className: "size-4" })
|
|
58
59
|
}),
|
|
59
|
-
/* @__PURE__ */
|
|
60
|
-
|
|
60
|
+
/* @__PURE__ */ m(a, {}),
|
|
61
|
+
w && /* @__PURE__ */ m("button", {
|
|
61
62
|
type: "button",
|
|
62
|
-
onClick:
|
|
63
|
+
onClick: w,
|
|
63
64
|
className: "hidden rounded-lg p-1.5 text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary sm:inline-flex",
|
|
64
|
-
"aria-label":
|
|
65
|
-
"aria-pressed":
|
|
65
|
+
"aria-label": C ? T("header.float", "Float chat window") : T("header.dock", "Dock to side panel"),
|
|
66
|
+
"aria-pressed": C,
|
|
66
67
|
"data-testid": "assistant-toggle-dock",
|
|
67
|
-
children:
|
|
68
|
+
children: m(C ? c : l, { className: "size-4" })
|
|
68
69
|
}),
|
|
69
|
-
/* @__PURE__ */
|
|
70
|
+
/* @__PURE__ */ m("button", {
|
|
70
71
|
type: "button",
|
|
71
|
-
onClick:
|
|
72
|
+
onClick: S,
|
|
72
73
|
className: "rounded-lg p-1.5 text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary",
|
|
73
|
-
"aria-label":
|
|
74
|
+
"aria-label": T("header.close", "Close assistant"),
|
|
74
75
|
"data-testid": "assistant-close",
|
|
75
|
-
children: /* @__PURE__ */ f
|
|
76
|
+
children: /* @__PURE__ */ m(f, { className: "size-4" })
|
|
76
77
|
})
|
|
77
78
|
]
|
|
78
79
|
})]
|
|
79
80
|
});
|
|
80
81
|
};
|
|
81
82
|
//#endregion
|
|
82
|
-
export {
|
|
83
|
+
export { g as AssistantHeader };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FC, MouseEvent, ReactNode } from 'react';
|
|
2
2
|
import { assistantRoutePath, assistantUrlTransform, classifyAssistantHref, AssistantLinkKind } from '../uiActions/assistantHref';
|
|
3
|
+
import { NavigationInitiator, UnsavedChange } from '../../navigation/unsavedChanges';
|
|
3
4
|
interface Props {
|
|
4
5
|
content: string;
|
|
5
6
|
}
|
|
@@ -18,15 +19,29 @@ export type AssistantNavigateResult =
|
|
|
18
19
|
/** A shell-less target: opened in a new tab, which cannot be verified. */
|
|
19
20
|
| {
|
|
20
21
|
kind: "new-tab";
|
|
21
|
-
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* ★ BOFF-8060 (N4): not routed. `unsaved-changes` names what is unsaved, for
|
|
25
|
+
* the "You have unsaved changes in {label}" reply.
|
|
26
|
+
*/
|
|
27
|
+
| {
|
|
22
28
|
kind: "refused";
|
|
23
29
|
reason: "unsaved-changes" | "not-routable";
|
|
30
|
+
unsaved?: readonly UnsavedChange[];
|
|
24
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* ★ BOFF-8060 (N4): who started this navigation. The person's own (a link they
|
|
34
|
+
* clicked in a reply) is at sidebar parity; the assistant's (a typed or spoken
|
|
35
|
+
* command, a "yes", act-on-resolve) is refused while the page holds unsaved
|
|
36
|
+
* changes. A navigator that does not say is treated as the assistant's.
|
|
37
|
+
*/
|
|
38
|
+
export type AssistantNavigateInitiator = NavigationInitiator;
|
|
25
39
|
/**
|
|
26
40
|
* Route an in-app PATH — `/fields?crop=42#yield`, never a full URL. Supplied by
|
|
27
|
-
* the product; absent means "no SPA routing".
|
|
41
|
+
* the product; absent means "no SPA routing". A product navigator may ignore
|
|
42
|
+
* `initiator`; `createAssistantNavigate` reads it.
|
|
28
43
|
*/
|
|
29
|
-
export type AssistantNavigate = (path: string) => AssistantNavigateResult | void;
|
|
44
|
+
export type AssistantNavigate = (path: string, initiator?: AssistantNavigateInitiator) => AssistantNavigateResult | void;
|
|
30
45
|
/**
|
|
31
46
|
* ★★ The cases where the BROWSER must win, not the router. Losing these is how
|
|
32
47
|
* "open in new tab", "copy link" and middle-click quietly stop working — the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantMarkdownRenderer.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantMarkdownRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAIL,KAAK,EAAE,EACP,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAYf,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"AssistantMarkdownRenderer.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantMarkdownRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAIL,KAAK,EAAE,EACP,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAYf,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACd,MAAM,iCAAiC,CAAC;AAEzC,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAsCD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,CAAC;AAC5E,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC;;;;GAIG;AACH,MAAM,MAAM,uBAAuB;AACjC,6DAA6D;AAC3D;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE;AACpB,0EAA0E;GACxE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE;AACrB;;;GAGG;GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC;IAC3C,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CACpC,CAAC;AAEN;;;;;GAKG;AACH,MAAM,MAAM,0BAA0B,GAAG,mBAAmB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,0BAA0B,KACnC,uBAAuB,GAAG,IAAI,CAAC;AAEpC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,OAAO,CASjF;AAID;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC;IACzC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,SAAS,CAAC;CACrB,CAIA,CAAC;AAEF,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAE/D;AAwTD,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,KAAK,CAiB/C,CAAC"}
|
|
@@ -34,7 +34,7 @@ var C = "text-action-primary-bg underline-offset-2 hover:underline", w = ({ href
|
|
|
34
34
|
className: C,
|
|
35
35
|
"data-testid": "assistant-markdown-link",
|
|
36
36
|
onClick: (e) => {
|
|
37
|
-
y(e) || (e.preventDefault(), n(i));
|
|
37
|
+
y(e) || (e.preventDefault(), n(i, "person"));
|
|
38
38
|
},
|
|
39
39
|
children: t
|
|
40
40
|
}) : r === "internal" || r === "fragment" ? /* @__PURE__ */ g("a", {
|
|
@@ -60,6 +60,11 @@ interface Props {
|
|
|
60
60
|
legacyWriteCardHidden?: boolean;
|
|
61
61
|
/** ★ BOFF-7803 5a (FE7): this reply's write-proposal cards, if any. */
|
|
62
62
|
writeProposals?: ReactNode;
|
|
63
|
+
/**
|
|
64
|
+
* ★ BOFF-8060 (N3): the page the model offered, as an "Open {page}" link,
|
|
65
|
+
* drawn directly under the reply's text. Absent, nothing is drawn.
|
|
66
|
+
*/
|
|
67
|
+
uiOffers?: ReactNode;
|
|
63
68
|
}
|
|
64
69
|
/**
|
|
65
70
|
* Purely decorative "still typing" caret: hidden from assistive tech (the list's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantMessageItem.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantMessageItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAyB3E,OAAO,KAAK,EACV,+BAA+B,EAG/B,OAAO,EACR,MAAM,iBAAiB,CAAC;AAMzB,UAAU,KAAK;IACb,mEAAmE;IACnE,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,+BAA+B,GAAG,IAAI,CAAC;IACpD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,uEAAuE;IACvE,cAAc,CAAC,EAAE,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"AssistantMessageItem.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantMessageItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAyB3E,OAAO,KAAK,EACV,+BAA+B,EAG/B,OAAO,EACR,MAAM,iBAAiB,CAAC;AAMzB,UAAU,KAAK;IACb,mEAAmE;IACnE,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,+BAA+B,GAAG,IAAI,CAAC;IACpD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,uEAAuE;IACvE,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAyCD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,EAY5B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,KAAK,CA4X1C,CAAC"}
|
|
@@ -8,103 +8,107 @@ import { AssistantMarkdownRenderer as a } from "./AssistantMarkdownRenderer.js";
|
|
|
8
8
|
import { downloadAssistantArtifact as o } from "../api.js";
|
|
9
9
|
import { languageConfirmationCopy as s } from "../appControls/languageReply.js";
|
|
10
10
|
import { getAssistantDisplayContent as ee } from "../displayContent.js";
|
|
11
|
-
import { AssistantToolActivity as te, parseToolActivity as
|
|
12
|
-
import { usePrefersReducedMotion as
|
|
13
|
-
import { AssistantAvatar as
|
|
14
|
-
import { useAssistantSpeech as
|
|
11
|
+
import { AssistantToolActivity as te, parseToolActivity as c } from "./AssistantToolActivity.js";
|
|
12
|
+
import { usePrefersReducedMotion as l } from "./usePrefersReducedMotion.js";
|
|
13
|
+
import { AssistantAvatar as ne } from "./AssistantAvatar.js";
|
|
14
|
+
import { useAssistantSpeech as re } from "./AssistantSpeechProvider.js";
|
|
15
15
|
import { AssistantMessageAttachments as ie } from "./AssistantMessageAttachments.js";
|
|
16
|
-
import { AssistantPendingWriteCard as
|
|
17
|
-
import { AssistantSpeakButton as
|
|
18
|
-
import { SaveToFilesButton as
|
|
16
|
+
import { AssistantPendingWriteCard as ae } from "./AssistantPendingWriteCard.js";
|
|
17
|
+
import { AssistantSpeakButton as oe } from "./AssistantSpeakButton.js";
|
|
18
|
+
import { SaveToFilesButton as u } from "../../../storage/SaveToFilesButton.js";
|
|
19
19
|
import "../../../storage/index.js";
|
|
20
|
-
import { AssistantTurnActivity as
|
|
21
|
-
import { useMemo as
|
|
22
|
-
import { Check as
|
|
23
|
-
import { Fragment as
|
|
20
|
+
import { AssistantTurnActivity as se } from "./AssistantTurnActivity.js";
|
|
21
|
+
import { useMemo as d, useRef as f, useState as p } from "react";
|
|
22
|
+
import { Check as ce, Copy as m, RotateCcw as h } from "lucide-react";
|
|
23
|
+
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
24
24
|
//#region src/shared/assistant/ui/AssistantMessageItem.tsx
|
|
25
|
-
function
|
|
25
|
+
function le(e) {
|
|
26
26
|
return e.role === "assistant" ? e.metadata : void 0;
|
|
27
27
|
}
|
|
28
|
-
function
|
|
28
|
+
function y(e) {
|
|
29
29
|
return e?.artifacts ?? [];
|
|
30
30
|
}
|
|
31
|
-
function
|
|
31
|
+
function b(e) {
|
|
32
32
|
return window.atob(e);
|
|
33
33
|
}
|
|
34
|
-
function
|
|
35
|
-
let r =
|
|
34
|
+
function x(e, t, n) {
|
|
35
|
+
let r = b(e), i = new Uint8Array(r.length);
|
|
36
36
|
for (let e = 0; e < r.length; e += 1) i[e] = r.charCodeAt(e);
|
|
37
37
|
let a = new Blob([i], { type: n }), o = URL.createObjectURL(a), s = document.createElement("a");
|
|
38
38
|
s.href = o, s.download = t, document.body.appendChild(s), s.click(), document.body.removeChild(s), URL.revokeObjectURL(o);
|
|
39
39
|
}
|
|
40
|
-
var
|
|
40
|
+
var S = () => /* @__PURE__ */ _("span", {
|
|
41
41
|
"aria-hidden": "true",
|
|
42
42
|
"data-testid": "assistant-streaming-caret",
|
|
43
|
-
className: "ml-0.5 inline-block h-4 w-1.5 rounded-sm bg-text-secondary align-middle" + (
|
|
44
|
-
}),
|
|
45
|
-
let P = r(), { locale: F } = e(), I = s(
|
|
43
|
+
className: "ml-0.5 inline-block h-4 w-1.5 rounded-sm bg-text-secondary align-middle" + (l() ? "" : " motion-safe:animate-pulse")
|
|
44
|
+
}), C = ({ onApprovePendingWrite: l, approvingWriteRef: b = null, pendingWriteExpired: C = !1, pendingWriteApproved: ue = !1, pendingWriteGoAheadSent: de = !1, message: w, processing: T, isStreaming: E, isFailed: D, isLastAssistant: O, isNewestAssistant: k, onRetry: A, legacyWriteCardHidden: j = !1, writeProposals: M, uiOffers: N }) => {
|
|
45
|
+
let P = r(), { locale: F } = e(), I = s(w, P), L = I ? I.translated ? F : "en" : w.metadata?.lang, R = I ? `${w.id}:language:${L}` : w.id, z = f(R), B = n(), { getAccessToken: V, getWorkspaceToken: fe } = t(), H = re(), [pe, U] = p(null), [W, G] = p(!1), K = w.role === "user", q = d(() => le(w), [w]), J = d(() => y(q), [q]), Y = T === void 0 ? E ? {
|
|
46
46
|
status: "streaming",
|
|
47
|
-
messageId:
|
|
48
|
-
updatedAt:
|
|
49
|
-
} : null :
|
|
47
|
+
messageId: w.id,
|
|
48
|
+
updatedAt: w.timestamp
|
|
49
|
+
} : null : T, X = ee(w, Y, P), { steps: Z, text: Q } = d(() => K ? {
|
|
50
50
|
steps: [],
|
|
51
|
-
text:
|
|
52
|
-
} : X.kind === "output" ?
|
|
51
|
+
text: w.content
|
|
52
|
+
} : X.kind === "output" ? c(X.text) : {
|
|
53
53
|
steps: [],
|
|
54
54
|
text: ""
|
|
55
55
|
}, [
|
|
56
56
|
K,
|
|
57
|
-
|
|
57
|
+
w.content,
|
|
58
58
|
X.kind,
|
|
59
59
|
X.text
|
|
60
|
-
]),
|
|
60
|
+
]), me = () => {
|
|
61
61
|
i(Q).then((e) => {
|
|
62
62
|
e && (G(!0), setTimeout(() => G(!1), 2e3));
|
|
63
63
|
});
|
|
64
|
-
},
|
|
64
|
+
}, he = async (e) => {
|
|
65
65
|
if (!q?.sandboxId || !q.sessionId) return;
|
|
66
66
|
let t = new URLSearchParams(window.location.search).get("workspace") ?? "";
|
|
67
67
|
if (t) {
|
|
68
|
-
|
|
68
|
+
U(e.path);
|
|
69
69
|
try {
|
|
70
70
|
let n = await o(q.sandboxId, t, q.sessionId, e.path, q.mode, {
|
|
71
71
|
accessToken: V(),
|
|
72
|
-
workspaceToken:
|
|
72
|
+
workspaceToken: fe()
|
|
73
73
|
});
|
|
74
|
-
|
|
74
|
+
x(n.contentBase64, n.filename, n.mimeType);
|
|
75
75
|
} finally {
|
|
76
|
-
|
|
76
|
+
U(null);
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
|
-
}, $ = new Date(
|
|
79
|
+
}, $ = new Date(w.timestamp).toLocaleTimeString([], {
|
|
80
80
|
hour: "2-digit",
|
|
81
81
|
minute: "2-digit"
|
|
82
82
|
});
|
|
83
|
-
if (
|
|
83
|
+
if (w.role === "system") return /* @__PURE__ */ _("div", {
|
|
84
84
|
className: "flex justify-center px-2 py-1",
|
|
85
85
|
"data-testid": "assistant-message-system",
|
|
86
|
-
children: /* @__PURE__ */
|
|
86
|
+
children: w.metadata?.localAction?.kind === "navigate" ? /* @__PURE__ */ _("div", {
|
|
87
|
+
className: "max-w-[90%] break-words rounded-lg border border-border-subtle bg-bg-sunken/60 px-3 py-2 text-center text-xs leading-relaxed text-text-muted",
|
|
88
|
+
"data-testid": "assistant-message-system-navigation",
|
|
89
|
+
children: /* @__PURE__ */ _(a, { content: w.content })
|
|
90
|
+
}) : /* @__PURE__ */ _("p", {
|
|
87
91
|
className: "max-w-[90%] whitespace-pre-wrap break-words rounded-lg border border-border-subtle bg-bg-sunken/60 px-3 py-2 text-center text-xs leading-relaxed text-text-muted",
|
|
88
|
-
children:
|
|
92
|
+
children: w.content
|
|
89
93
|
})
|
|
90
94
|
});
|
|
91
95
|
if (K) {
|
|
92
|
-
let e =
|
|
93
|
-
return /* @__PURE__ */
|
|
96
|
+
let e = w.metadata?.attachments ?? [];
|
|
97
|
+
return /* @__PURE__ */ _("div", {
|
|
94
98
|
className: "flex justify-end",
|
|
95
99
|
"data-testid": "assistant-message-user",
|
|
96
|
-
children: /* @__PURE__ */
|
|
100
|
+
children: /* @__PURE__ */ v("div", {
|
|
97
101
|
className: "max-w-[85%]",
|
|
98
102
|
children: [
|
|
99
|
-
|
|
103
|
+
w.content && /* @__PURE__ */ _("div", {
|
|
100
104
|
className: "rounded-2xl rounded-br-md bg-action-primary-bg/12 px-3.5 py-2.5 text-[15px] leading-relaxed text-text-primary",
|
|
101
|
-
children: /* @__PURE__ */
|
|
105
|
+
children: /* @__PURE__ */ _("p", {
|
|
102
106
|
className: "whitespace-pre-wrap",
|
|
103
|
-
children:
|
|
107
|
+
children: w.content
|
|
104
108
|
})
|
|
105
109
|
}),
|
|
106
|
-
/* @__PURE__ */
|
|
107
|
-
/* @__PURE__ */
|
|
110
|
+
/* @__PURE__ */ _(ie, { attachments: e }),
|
|
111
|
+
/* @__PURE__ */ _("div", {
|
|
108
112
|
className: "mt-1 pr-1 text-right text-[10px] text-text-muted",
|
|
109
113
|
children: $
|
|
110
114
|
})
|
|
@@ -112,46 +116,47 @@ var C = () => /* @__PURE__ */ v("span", {
|
|
|
112
116
|
})
|
|
113
117
|
});
|
|
114
118
|
}
|
|
115
|
-
return /* @__PURE__ */
|
|
119
|
+
return /* @__PURE__ */ v("div", {
|
|
116
120
|
className: "flex gap-2.5",
|
|
117
121
|
"data-testid": "assistant-message-assistant",
|
|
118
|
-
children: [/* @__PURE__ */
|
|
122
|
+
children: [/* @__PURE__ */ _(ne, { active: E }), /* @__PURE__ */ v("div", {
|
|
119
123
|
className: "min-w-0 flex-1",
|
|
120
124
|
children: [
|
|
121
|
-
Z.length > 0 && /* @__PURE__ */
|
|
122
|
-
q?.pendingWrite && !
|
|
125
|
+
Z.length > 0 && /* @__PURE__ */ _(te, { steps: Z }),
|
|
126
|
+
q?.pendingWrite && !j ? /* @__PURE__ */ _(ae, {
|
|
123
127
|
pendingWrite: q.pendingWrite,
|
|
124
|
-
onApprove:
|
|
125
|
-
approving:
|
|
126
|
-
expired:
|
|
127
|
-
approved:
|
|
128
|
-
goAheadSent:
|
|
129
|
-
awaitingTurn: !!
|
|
128
|
+
onApprove: l,
|
|
129
|
+
approving: b !== null && b === q.pendingWrite.reference,
|
|
130
|
+
expired: C,
|
|
131
|
+
approved: ue,
|
|
132
|
+
goAheadSent: de,
|
|
133
|
+
awaitingTurn: !!E
|
|
130
134
|
}) : null,
|
|
131
|
-
|
|
132
|
-
Q && /* @__PURE__ */
|
|
135
|
+
M,
|
|
136
|
+
Q && /* @__PURE__ */ _("div", {
|
|
133
137
|
className: "text-[15px] leading-relaxed text-text-primary",
|
|
134
|
-
children: /* @__PURE__ */
|
|
138
|
+
children: /* @__PURE__ */ _(a, { content: Q })
|
|
135
139
|
}),
|
|
136
|
-
X.kind === "working" && /* @__PURE__ */
|
|
137
|
-
X.kind === "stopped" && /* @__PURE__ */
|
|
140
|
+
X.kind === "working" && /* @__PURE__ */ _(se, { processing: Y }),
|
|
141
|
+
X.kind === "stopped" && /* @__PURE__ */ _("p", {
|
|
138
142
|
className: "text-[15px] leading-relaxed text-text-secondary",
|
|
139
143
|
"data-testid": "assistant-turn-stopped",
|
|
140
144
|
children: X.text
|
|
141
145
|
}),
|
|
142
|
-
|
|
143
|
-
|
|
146
|
+
E && /* @__PURE__ */ _(S, {}),
|
|
147
|
+
N,
|
|
148
|
+
J.length > 0 && q?.sandboxId && q.sessionId && /* @__PURE__ */ v("div", {
|
|
144
149
|
className: "mt-3 space-y-2 border-t border-border-subtle pt-2",
|
|
145
|
-
children: [/* @__PURE__ */
|
|
150
|
+
children: [/* @__PURE__ */ _("p", {
|
|
146
151
|
className: "text-[10px] font-medium uppercase tracking-wide text-text-muted",
|
|
147
152
|
children: P("message.downloads", "Downloads")
|
|
148
|
-
}), /* @__PURE__ */
|
|
153
|
+
}), /* @__PURE__ */ _("div", {
|
|
149
154
|
className: "flex flex-wrap gap-2",
|
|
150
155
|
children: J.map((e) => {
|
|
151
156
|
let t = `${e.name}${e.type === "directory" ? ".tar.gz" : ""}`;
|
|
152
|
-
return /* @__PURE__ */
|
|
157
|
+
return /* @__PURE__ */ _(u, {
|
|
153
158
|
label: t,
|
|
154
|
-
disabled:
|
|
159
|
+
disabled: pe === e.path,
|
|
155
160
|
testId: `assistant-artifact-${e.name}`,
|
|
156
161
|
source: {
|
|
157
162
|
kind: "sandbox-artifact",
|
|
@@ -161,58 +166,58 @@ var C = () => /* @__PURE__ */ v("span", {
|
|
|
161
166
|
filename: t
|
|
162
167
|
},
|
|
163
168
|
defaultFolderPath: B.artifacts,
|
|
164
|
-
onDownload: () =>
|
|
169
|
+
onDownload: () => he(e)
|
|
165
170
|
}, e.path);
|
|
166
171
|
})
|
|
167
172
|
})]
|
|
168
173
|
}),
|
|
169
|
-
!
|
|
174
|
+
!E && (Q || D || O) && /* @__PURE__ */ v("div", {
|
|
170
175
|
className: "mt-1.5 flex items-center gap-1",
|
|
171
176
|
children: [
|
|
172
|
-
Q && /* @__PURE__ */
|
|
177
|
+
Q && /* @__PURE__ */ _("button", {
|
|
173
178
|
type: "button",
|
|
174
|
-
onClick:
|
|
179
|
+
onClick: me,
|
|
175
180
|
className: "flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] text-text-muted transition-colors hover:bg-bg-elevated hover:text-text-secondary",
|
|
176
181
|
"aria-label": P("message.copy", "Copy message"),
|
|
177
182
|
"data-testid": "assistant-message-copy",
|
|
178
|
-
children:
|
|
183
|
+
children: W ? /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(ce, { className: "size-3 text-status-success-text" }), /* @__PURE__ */ _("span", { children: P("message.copied", "Copied") })] }) : /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(m, { className: "size-3" }), /* @__PURE__ */ _("span", { children: P("message.copyShort", "Copy") })] })
|
|
179
184
|
}),
|
|
180
|
-
Q &&
|
|
181
|
-
let e =
|
|
182
|
-
return /* @__PURE__ */
|
|
185
|
+
Q && H.isSupported && (() => {
|
|
186
|
+
let e = H.blockedFor(R) ?? H.disabledReason, t = H.isSpeaking(w.id) || H.isSpeaking(z.current), n = !!e && !!k, r = n ? `speak-reason-${w.id}` : void 0;
|
|
187
|
+
return /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(oe, {
|
|
183
188
|
isSpeaking: t,
|
|
184
189
|
disabled: e !== null,
|
|
185
190
|
disabledReason: e,
|
|
186
191
|
describedById: r,
|
|
187
192
|
onClick: () => {
|
|
188
193
|
if (t) {
|
|
189
|
-
|
|
194
|
+
H.stop();
|
|
190
195
|
return;
|
|
191
196
|
}
|
|
192
|
-
z.current = R,
|
|
197
|
+
z.current = R, H.toggle(R, Q, L);
|
|
193
198
|
}
|
|
194
|
-
}), n && /* @__PURE__ */
|
|
199
|
+
}), n && /* @__PURE__ */ _("span", {
|
|
195
200
|
id: r,
|
|
196
201
|
className: "text-[11px] text-text-muted",
|
|
197
202
|
"data-testid": "assistant-speak-reason",
|
|
198
203
|
children: e
|
|
199
204
|
})] });
|
|
200
205
|
})(),
|
|
201
|
-
(
|
|
206
|
+
(D || O) && A && !w.metadata?.localAction && /* @__PURE__ */ v("button", {
|
|
202
207
|
type: "button",
|
|
203
|
-
onClick:
|
|
204
|
-
className: `flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] transition-colors hover:bg-bg-elevated ${
|
|
208
|
+
onClick: A,
|
|
209
|
+
className: `flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] transition-colors hover:bg-bg-elevated ${D ? "text-status-error-text" : "text-text-muted hover:text-text-secondary"}`,
|
|
205
210
|
"aria-label": P("message.retry", "Retry"),
|
|
206
211
|
"data-testid": "assistant-message-retry",
|
|
207
|
-
children: [/* @__PURE__ */
|
|
212
|
+
children: [/* @__PURE__ */ _(h, { className: "size-3" }), /* @__PURE__ */ _("span", { children: P("message.retry", "Retry") })]
|
|
208
213
|
})
|
|
209
214
|
]
|
|
210
215
|
}),
|
|
211
|
-
/* @__PURE__ */
|
|
216
|
+
/* @__PURE__ */ v("div", {
|
|
212
217
|
className: "mt-1 text-[10px] text-text-muted",
|
|
213
|
-
children: [$,
|
|
218
|
+
children: [$, w.tokens && /* @__PURE__ */ v("span", {
|
|
214
219
|
className: "ml-2",
|
|
215
|
-
children: [
|
|
220
|
+
children: [w.tokens.input + w.tokens.output, " tokens"]
|
|
216
221
|
})]
|
|
217
222
|
})
|
|
218
223
|
]
|
|
@@ -220,4 +225,4 @@ var C = () => /* @__PURE__ */ v("span", {
|
|
|
220
225
|
});
|
|
221
226
|
};
|
|
222
227
|
//#endregion
|
|
223
|
-
export {
|
|
228
|
+
export { C as AssistantMessageItem, S as StreamingCaret };
|