@agent-native/toolkit 0.213.1 → 0.214.0
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/agent-native.eject.json +9 -0
- package/dist/app/agentkit/react/components.d.ts.map +1 -1
- package/dist/app/agentkit/react/components.js +10 -4
- package/dist/app/agentkit/react/components.js.map +1 -1
- package/dist/app/agentkit/react/context.d.ts +13 -1
- package/dist/app/agentkit/react/context.d.ts.map +1 -1
- package/dist/app/agentkit/react/context.js +3 -1
- package/dist/app/agentkit/react/context.js.map +1 -1
- package/dist/app/agentkit/react/index.d.ts +1 -0
- package/dist/app/agentkit/react/index.d.ts.map +1 -1
- package/dist/app/agentkit/react/index.js +1 -0
- package/dist/app/agentkit/react/index.js.map +1 -1
- package/dist/app/agentkit/react/message-content-order.d.ts +21 -0
- package/dist/app/agentkit/react/message-content-order.d.ts.map +1 -0
- package/dist/app/agentkit/react/message-content-order.js +173 -0
- package/dist/app/agentkit/react/message-content-order.js.map +1 -0
- package/dist/app/agentkit/react/root.d.ts +3 -1
- package/dist/app/agentkit/react/root.d.ts.map +1 -1
- package/dist/app/agentkit/react/root.js +2 -2
- package/dist/app/agentkit/react/root.js.map +1 -1
- package/dist/app/agentkit/react/styles.css +2 -2
- package/dist/app/chat/AgentKitAssistantChat.d.ts.map +1 -1
- package/dist/app/chat/AgentKitAssistantChat.js +7 -2
- package/dist/app/chat/AgentKitAssistantChat.js.map +1 -1
- package/dist/app/chat/AgentPanel.d.ts +14 -2
- package/dist/app/chat/AgentPanel.d.ts.map +1 -1
- package/dist/app/chat/AgentPanel.js +22 -5
- package/dist/app/chat/AgentPanel.js.map +1 -1
- package/dist/app/chat/chat/surface-types.d.ts +8 -0
- package/dist/app/chat/chat/surface-types.d.ts.map +1 -1
- package/dist/app/chat/chat/surface-types.js.map +1 -1
- package/dist/app/chat/chat/widgets/DataChartRenderer.d.ts.map +1 -1
- package/dist/app/chat/chat/widgets/DataChartRenderer.js +127 -30
- package/dist/app/chat/chat/widgets/DataChartRenderer.js.map +1 -1
- package/dist/app/chat/chat/widgets/DataChartWidget.d.ts +3 -2
- package/dist/app/chat/chat/widgets/DataChartWidget.d.ts.map +1 -1
- package/dist/app/chat/chat/widgets/DataChartWidget.js +14 -9
- package/dist/app/chat/chat/widgets/DataChartWidget.js.map +1 -1
- package/dist/app/chat/chat/widgets/DataInsightsWidget.js +1 -1
- package/dist/app/chat/chat/widgets/DataInsightsWidget.js.map +1 -1
- package/dist/app/chat/chat/widgets/DataTableWidget.d.ts +3 -2
- package/dist/app/chat/chat/widgets/DataTableWidget.d.ts.map +1 -1
- package/dist/app/chat/chat/widgets/DataTableWidget.js +10 -66
- package/dist/app/chat/chat/widgets/DataTableWidget.js.map +1 -1
- package/dist/app/chat/chat/widgets/DataWidgetDisplayControls.d.ts +11 -0
- package/dist/app/chat/chat/widgets/DataWidgetDisplayControls.d.ts.map +1 -0
- package/dist/app/chat/chat/widgets/DataWidgetDisplayControls.js +131 -0
- package/dist/app/chat/chat/widgets/DataWidgetDisplayControls.js.map +1 -0
- package/dist/app/chat/chat/widgets/builtin-tool-renderers.js +2 -2
- package/dist/app/chat/chat/widgets/builtin-tool-renderers.js.map +1 -1
- package/dist/app/chat/mcp-apps/McpAppRenderer.d.ts.map +1 -1
- package/dist/app/chat/mcp-apps/McpAppRenderer.js +6 -5
- package/dist/app/chat/mcp-apps/McpAppRenderer.js.map +1 -1
- package/dist/app/chat/mcp-apps/mcp-app-theme.d.ts +2 -0
- package/dist/app/chat/mcp-apps/mcp-app-theme.d.ts.map +1 -0
- package/dist/app/chat/mcp-apps/mcp-app-theme.js +11 -0
- package/dist/app/chat/mcp-apps/mcp-app-theme.js.map +1 -0
- package/dist/app/i18n/catalogs/ar-SA.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.js +8 -0
- package/dist/app/i18n/catalogs/ar-SA.js.map +1 -1
- package/dist/app/i18n/catalogs/de-DE.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/de-DE.js +8 -0
- package/dist/app/i18n/catalogs/de-DE.js.map +1 -1
- package/dist/app/i18n/catalogs/en-US.d.ts +8 -0
- package/dist/app/i18n/catalogs/en-US.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/en-US.js +8 -0
- package/dist/app/i18n/catalogs/en-US.js.map +1 -1
- package/dist/app/i18n/catalogs/es-ES.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/es-ES.js +8 -0
- package/dist/app/i18n/catalogs/es-ES.js.map +1 -1
- package/dist/app/i18n/catalogs/fr-FR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/fr-FR.js +8 -0
- package/dist/app/i18n/catalogs/fr-FR.js.map +1 -1
- package/dist/app/i18n/catalogs/hi-IN.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/hi-IN.js +8 -0
- package/dist/app/i18n/catalogs/hi-IN.js.map +1 -1
- package/dist/app/i18n/catalogs/ja-JP.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ja-JP.js +8 -0
- package/dist/app/i18n/catalogs/ja-JP.js.map +1 -1
- package/dist/app/i18n/catalogs/ko-KR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ko-KR.js +8 -0
- package/dist/app/i18n/catalogs/ko-KR.js.map +1 -1
- package/dist/app/i18n/catalogs/pt-BR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/pt-BR.js +8 -0
- package/dist/app/i18n/catalogs/pt-BR.js.map +1 -1
- package/dist/app/i18n/catalogs/zh-CN.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/zh-CN.js +8 -0
- package/dist/app/i18n/catalogs/zh-CN.js.map +1 -1
- package/dist/app/i18n/catalogs/zh-TW.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/zh-TW.js +8 -0
- package/dist/app/i18n/catalogs/zh-TW.js.map +1 -1
- package/dist/app/providers/AppProviders.d.ts +2 -1
- package/dist/app/providers/AppProviders.d.ts.map +1 -1
- package/dist/app/providers/AppProviders.js +4 -3
- package/dist/app/providers/AppProviders.js.map +1 -1
- package/dist/app/providers/ThemeFamilySync.d.ts +2 -0
- package/dist/app/providers/ThemeFamilySync.d.ts.map +1 -0
- package/dist/app/providers/ThemeFamilySync.js +6 -0
- package/dist/app/providers/ThemeFamilySync.js.map +1 -0
- package/dist/app/settings/account/PreferencesSettings.d.ts.map +1 -1
- package/dist/app/settings/account/PreferencesSettings.js +2 -1
- package/dist/app/settings/account/PreferencesSettings.js.map +1 -1
- package/dist/app/settings/account/ThemeFamilySettings.d.ts +2 -0
- package/dist/app/settings/account/ThemeFamilySettings.d.ts.map +1 -0
- package/dist/app/settings/account/ThemeFamilySettings.js +31 -0
- package/dist/app/settings/account/ThemeFamilySettings.js.map +1 -0
- package/dist/app/settings/account/search-entries.d.ts.map +1 -1
- package/dist/app/settings/account/search-entries.js +6 -0
- package/dist/app/settings/account/search-entries.js.map +1 -1
- package/dist/app/shared/DefaultSpinner.d.ts.map +1 -1
- package/dist/app/shared/DefaultSpinner.js +4 -5
- package/dist/app/shared/DefaultSpinner.js.map +1 -1
- package/dist/app/shared/ErrorBoundary.d.ts +1 -0
- package/dist/app/shared/ErrorBoundary.d.ts.map +1 -1
- package/dist/app/shared/ErrorBoundary.js +27 -12
- package/dist/app/shared/ErrorBoundary.js.map +1 -1
- package/dist/app/shared/PoweredByBadge.d.ts.map +1 -1
- package/dist/app/shared/PoweredByBadge.js +8 -49
- package/dist/app/shared/PoweredByBadge.js.map +1 -1
- package/dist/app/styles/agent-conversation.css +0 -23
- package/dist/app/styles/agent-native.css +1 -1
- package/dist/app/styles/theme-families.css +66 -0
- package/dist/composer/ComposerContextBanner.d.ts +22 -0
- package/dist/composer/ComposerContextBanner.d.ts.map +1 -0
- package/dist/composer/ComposerContextBanner.js +9 -0
- package/dist/composer/ComposerContextBanner.js.map +1 -0
- package/dist/composer/ComposerModePicker.d.ts +26 -0
- package/dist/composer/ComposerModePicker.d.ts.map +1 -0
- package/dist/composer/ComposerModePicker.js +14 -0
- package/dist/composer/ComposerModePicker.js.map +1 -0
- package/dist/composer/index.d.ts +2 -0
- package/dist/composer/index.d.ts.map +1 -1
- package/dist/composer/index.js +2 -0
- package/dist/composer/index.js.map +1 -1
- package/dist/styles.css +1 -0
- package/package.json +3 -3
- package/src/app/agentkit/react/components.spec.tsx +12 -0
- package/src/app/agentkit/react/components.tsx +41 -22
- package/src/app/agentkit/react/context.tsx +17 -0
- package/src/app/agentkit/react/index.ts +1 -0
- package/src/app/agentkit/react/lifecycle.spec.tsx +116 -1
- package/src/app/agentkit/react/message-content-order.spec.ts +190 -0
- package/src/app/agentkit/react/message-content-order.ts +246 -0
- package/src/app/agentkit/react/root.tsx +4 -0
- package/src/app/agentkit/react/styles.css +2 -2
- package/src/app/chat/AgentKitAssistantChat.spec.tsx +19 -0
- package/src/app/chat/AgentKitAssistantChat.tsx +10 -1
- package/src/app/chat/AgentPanel.header.spec.ts +72 -14
- package/src/app/chat/AgentPanel.tsx +97 -53
- package/src/app/chat/chat/surface-types.ts +8 -0
- package/src/app/chat/chat/widgets/DataChartRenderer.spec.tsx +217 -0
- package/src/app/chat/chat/widgets/DataChartRenderer.tsx +306 -68
- package/src/app/chat/chat/widgets/DataChartWidget.spec.tsx +329 -0
- package/src/app/chat/chat/widgets/DataChartWidget.ssr.spec.tsx +25 -0
- package/src/app/chat/chat/widgets/DataChartWidget.tsx +48 -33
- package/src/app/chat/chat/widgets/DataInsightsWidget.tsx +2 -2
- package/src/app/chat/chat/widgets/DataTableWidget.spec.tsx +37 -3
- package/src/app/chat/chat/widgets/DataTableWidget.tsx +22 -86
- package/src/app/chat/chat/widgets/DataWidgetDisplayControls.tsx +301 -0
- package/src/app/chat/chat/widgets/builtin-tool-renderers.tsx +5 -5
- package/src/app/chat/mcp-apps/McpAppRenderer.tsx +10 -5
- package/src/app/chat/mcp-apps/mcp-app-theme.spec.ts +30 -0
- package/src/app/chat/mcp-apps/mcp-app-theme.ts +11 -0
- package/src/app/i18n/catalogs/ar-SA.ts +9 -0
- package/src/app/i18n/catalogs/de-DE.ts +9 -0
- package/src/app/i18n/catalogs/en-US.ts +9 -0
- package/src/app/i18n/catalogs/es-ES.ts +10 -0
- package/src/app/i18n/catalogs/fr-FR.ts +10 -0
- package/src/app/i18n/catalogs/hi-IN.ts +9 -0
- package/src/app/i18n/catalogs/ja-JP.ts +9 -0
- package/src/app/i18n/catalogs/ko-KR.ts +9 -0
- package/src/app/i18n/catalogs/pt-BR.ts +9 -0
- package/src/app/i18n/catalogs/zh-CN.ts +8 -0
- package/src/app/i18n/catalogs/zh-TW.ts +9 -0
- package/src/app/providers/AppProviders.spec.tsx +71 -0
- package/src/app/providers/AppProviders.tsx +10 -0
- package/src/app/providers/ThemeFamilySync.tsx +6 -0
- package/src/app/settings/account/PreferencesSettings.spec.tsx +13 -2
- package/src/app/settings/account/PreferencesSettings.tsx +8 -0
- package/src/app/settings/account/ThemeFamilySettings.tsx +61 -0
- package/src/app/settings/account/search-entries.ts +6 -0
- package/src/app/shared/DefaultSpinner.spec.tsx +14 -0
- package/src/app/shared/DefaultSpinner.tsx +4 -5
- package/src/app/shared/ErrorBoundary.spec.tsx +45 -2
- package/src/app/shared/ErrorBoundary.tsx +37 -12
- package/src/app/shared/PoweredByBadge.spec.tsx +16 -0
- package/src/app/shared/PoweredByBadge.tsx +8 -50
- package/src/app/styles/agent-conversation.css +0 -23
- package/src/app/styles/agent-native.css +1 -1
- package/src/app/styles/agent-native.spec.ts +18 -0
- package/src/app/styles/theme-families.css +66 -0
- package/src/app/styles/theme-families.spec.ts +29 -0
- package/src/composer/ComposerContextBanner.spec.tsx +74 -0
- package/src/composer/ComposerContextBanner.tsx +72 -0
- package/src/composer/ComposerModePicker.spec.tsx +101 -0
- package/src/composer/ComposerModePicker.tsx +98 -0
- package/src/composer/index.ts +9 -0
- package/src/styles.css +1 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The agent-native family uses the shared Tailwind/shadcn palette from the
|
|
3
|
+
* Design template. App styles remain the original family by default.
|
|
4
|
+
*/
|
|
5
|
+
:root[data-theme-family="agent-native"],
|
|
6
|
+
:root[data-theme-family="agent-native"][data-appearance] {
|
|
7
|
+
--background: 0 0% 100%;
|
|
8
|
+
--foreground: 0 0% 10%;
|
|
9
|
+
--card: 0 0% 100%;
|
|
10
|
+
--card-foreground: 0 0% 10%;
|
|
11
|
+
--popover: 0 0% 100%;
|
|
12
|
+
--popover-foreground: 0 0% 10%;
|
|
13
|
+
--primary: 0 0% 15%;
|
|
14
|
+
--primary-foreground: 0 0% 100%;
|
|
15
|
+
--secondary: 0 0% 95%;
|
|
16
|
+
--secondary-foreground: 0 0% 15%;
|
|
17
|
+
--muted: 0 0% 95%;
|
|
18
|
+
--muted-foreground: 0 0% 45%;
|
|
19
|
+
--accent: 0 0% 95%;
|
|
20
|
+
--accent-foreground: 0 0% 15%;
|
|
21
|
+
--destructive: 0 84% 60%;
|
|
22
|
+
--destructive-foreground: 0 0% 98%;
|
|
23
|
+
--border: 0 0% 90%;
|
|
24
|
+
--input: 0 0% 90%;
|
|
25
|
+
--ring: 0 0% 40%;
|
|
26
|
+
--radius: 0.5rem;
|
|
27
|
+
--sidebar-background: 0 0% 97%;
|
|
28
|
+
--sidebar-foreground: 0 0% 45%;
|
|
29
|
+
--sidebar-primary: 0 0% 15%;
|
|
30
|
+
--sidebar-primary-foreground: 0 0% 100%;
|
|
31
|
+
--sidebar-accent: 0 0% 95%;
|
|
32
|
+
--sidebar-accent-foreground: 0 0% 15%;
|
|
33
|
+
--sidebar-border: 0 0% 90%;
|
|
34
|
+
--sidebar-ring: 0 0% 40%;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.dark[data-theme-family="agent-native"],
|
|
38
|
+
.dark[data-theme-family="agent-native"][data-appearance] {
|
|
39
|
+
--background: 0 0% 13%;
|
|
40
|
+
--foreground: 0 0% 90%;
|
|
41
|
+
--card: 0 0% 15%;
|
|
42
|
+
--card-foreground: 0 0% 90%;
|
|
43
|
+
--popover: 0 0% 15%;
|
|
44
|
+
--popover-foreground: 0 0% 90%;
|
|
45
|
+
--primary: 0 0% 75%;
|
|
46
|
+
--primary-foreground: 0 0% 10%;
|
|
47
|
+
--secondary: 0 0% 18%;
|
|
48
|
+
--secondary-foreground: 0 0% 90%;
|
|
49
|
+
--muted: 0 0% 16%;
|
|
50
|
+
--muted-foreground: 0 0% 60%;
|
|
51
|
+
--accent: 0 0% 18%;
|
|
52
|
+
--accent-foreground: 0 0% 96%;
|
|
53
|
+
--destructive: 0 91% 71%;
|
|
54
|
+
--destructive-foreground: 0 0% 98%;
|
|
55
|
+
--border: 0 0% 24%;
|
|
56
|
+
--input: 0 0% 24%;
|
|
57
|
+
--ring: 0 0% 60%;
|
|
58
|
+
--sidebar-background: 0 0% 10%;
|
|
59
|
+
--sidebar-foreground: 0 0% 60%;
|
|
60
|
+
--sidebar-primary: 0 0% 75%;
|
|
61
|
+
--sidebar-primary-foreground: 0 0% 10%;
|
|
62
|
+
--sidebar-accent: 0 0% 16%;
|
|
63
|
+
--sidebar-accent-foreground: 0 0% 90%;
|
|
64
|
+
--sidebar-border: 0 0% 20%;
|
|
65
|
+
--sidebar-ring: 0 0% 60%;
|
|
66
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
interface ComposerContextBannerBaseProps {
|
|
3
|
+
/** Localized name for the banner's content. */
|
|
4
|
+
ariaLabel: string;
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
/** Localized label for the action that opens or adds context. */
|
|
7
|
+
addContextLabel: string;
|
|
8
|
+
onAddContext: () => void;
|
|
9
|
+
icon?: ReactNode;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
export type ComposerContextBannerProps = ComposerContextBannerBaseProps & ({
|
|
13
|
+
dismissLabel?: never;
|
|
14
|
+
onDismiss?: never;
|
|
15
|
+
} | {
|
|
16
|
+
dismissLabel: string;
|
|
17
|
+
onDismiss: () => void;
|
|
18
|
+
});
|
|
19
|
+
/** Shared informational banner that hosts can place in `composerContextBannerSlot`. */
|
|
20
|
+
export declare function ComposerContextBanner({ ariaLabel, children, addContextLabel, onAddContext, dismissLabel, onDismiss, icon, className, }: ComposerContextBannerProps): import("react").JSX.Element;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=ComposerContextBanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposerContextBanner.d.ts","sourceRoot":"","sources":["../../src/composer/ComposerContextBanner.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,UAAU,8BAA8B;IACtC,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,0BAA0B,GAAG,8BAA8B,GACrE,CACI;IAAE,YAAY,CAAC,EAAE,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,GAC3C;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,IAAI,CAAA;CAAE,CAClD,CAAC;AAEJ,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,SAAS,GACV,EAAE,0BAA0B,+BAsC5B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { IconPlus, IconSparkles, IconX } from "@tabler/icons-react";
|
|
3
|
+
import { Button } from "../ui/button.js";
|
|
4
|
+
import { cn } from "../utils.js";
|
|
5
|
+
/** Shared informational banner that hosts can place in `composerContextBannerSlot`. */
|
|
6
|
+
export function ComposerContextBanner({ ariaLabel, children, addContextLabel, onAddContext, dismissLabel, onDismiss, icon, className, }) {
|
|
7
|
+
return (_jsxs("aside", { "aria-label": ariaLabel, "data-agent-composer-slot": "context-banner", className: cn("agent-composer-context-banner mx-auto mb-2 flex w-full max-w-3xl items-center gap-1.5 rounded-lg border border-border bg-background px-2.5 py-2 text-xs text-muted-foreground", className), children: [_jsx("span", { className: "shrink-0 text-primary", children: icon ?? _jsx(IconSparkles, { "aria-hidden": "true", className: "size-4" }) }), _jsx("span", { className: "min-w-0 flex-1", children: children }), _jsxs(Button, { className: "shrink-0", onClick: onAddContext, size: "xs", type: "button", variant: "outline", children: [addContextLabel, _jsx(IconPlus, { "aria-hidden": "true" })] }), onDismiss ? (_jsx(Button, { "aria-label": dismissLabel, className: "shrink-0", onClick: onDismiss, size: "icon-xs", type: "button", variant: "ghost", children: _jsx(IconX, { "aria-hidden": "true" }) })) : null] }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=ComposerContextBanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposerContextBanner.js","sourceRoot":"","sources":["../../src/composer/ComposerContextBanner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAGpE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAmBjC,uFAAuF;AACvF,MAAM,UAAU,qBAAqB,CAAC,EACpC,SAAS,EACT,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,SAAS,GACkB;IAC3B,OAAO,CACL,+BACc,SAAS,8BACI,gBAAgB,EACzC,SAAS,EAAE,EAAE,CACX,+KAA+K,EAC/K,SAAS,CACV,aAED,eAAM,SAAS,EAAC,uBAAuB,YACpC,IAAI,IAAI,KAAC,YAAY,mBAAa,MAAM,EAAC,SAAS,EAAC,QAAQ,GAAG,GAC1D,EACP,eAAM,SAAS,EAAC,gBAAgB,YAAE,QAAQ,GAAQ,EAClD,MAAC,MAAM,IACL,SAAS,EAAC,UAAU,EACpB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAC,IAAI,EACT,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,aAEhB,eAAe,EAChB,KAAC,QAAQ,mBAAa,MAAM,GAAG,IACxB,EACR,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,MAAM,kBACO,YAAY,EACxB,SAAS,EAAC,UAAU,EACpB,OAAO,EAAE,SAAS,EAClB,IAAI,EAAC,SAAS,EACd,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,OAAO,YAEf,KAAC,KAAK,mBAAa,MAAM,GAAG,GACrB,CACV,CAAC,CAAC,CAAC,IAAI,IACF,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface ComposerModeOption {
|
|
3
|
+
/** Stable host-defined mode identifier. */
|
|
4
|
+
value: string;
|
|
5
|
+
/** Localized visible label supplied by the host. */
|
|
6
|
+
label: string;
|
|
7
|
+
/** Optional localized explanation shown in the menu. */
|
|
8
|
+
description?: string;
|
|
9
|
+
/** Optional host-provided icon. */
|
|
10
|
+
icon?: ReactNode;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface ComposerModePickerProps {
|
|
14
|
+
/** Localized accessible name for this choice, such as "Ask mode". */
|
|
15
|
+
ariaLabel: string;
|
|
16
|
+
value: string;
|
|
17
|
+
options: readonly ComposerModeOption[];
|
|
18
|
+
onValueChange: (value: string) => void;
|
|
19
|
+
className?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A shared, host-configurable mode picker for composer modes that are not part
|
|
23
|
+
* of the framework's built-in Act/Plan execution setting.
|
|
24
|
+
*/
|
|
25
|
+
export declare function ComposerModePicker({ ariaLabel, value, options, onValueChange, className, }: ComposerModePickerProps): import("react").JSX.Element;
|
|
26
|
+
//# sourceMappingURL=ComposerModePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposerModePicker.d.ts","sourceRoot":"","sources":["../../src/composer/ComposerModePicker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAWvC,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,KAAK,EACL,OAAO,EACP,aAAa,EACb,SAAS,GACV,EAAE,uBAAuB,+BAsDzB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { IconChevronDown } from "@tabler/icons-react";
|
|
3
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, } from "../ui/dropdown-menu.js";
|
|
4
|
+
import { cn } from "../utils.js";
|
|
5
|
+
/**
|
|
6
|
+
* A shared, host-configurable mode picker for composer modes that are not part
|
|
7
|
+
* of the framework's built-in Act/Plan execution setting.
|
|
8
|
+
*/
|
|
9
|
+
export function ComposerModePicker({ ariaLabel, value, options, onValueChange, className, }) {
|
|
10
|
+
const selectedOption = options.find((option) => option.value === value);
|
|
11
|
+
const selectedLabel = selectedOption?.label ?? value;
|
|
12
|
+
return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs("button", { type: "button", "aria-label": `${ariaLabel}: ${selectedLabel}`, "data-agent-composer-slot": "mode-picker", className: cn("agent-composer-mode-picker inline-flex h-7 max-w-48 shrink-0 items-center gap-1 rounded-md px-2 text-xs font-medium text-muted-foreground hover:bg-accent/50 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", className), children: [selectedOption?.icon, _jsx("span", { className: "min-w-0 truncate", children: selectedLabel }), _jsx(IconChevronDown, { "aria-hidden": "true", className: "size-3 shrink-0 opacity-60" })] }) }), _jsx(DropdownMenuContent, { side: "top", align: "start", collisionPadding: 8, className: "agent-composer-mode-picker-menu min-w-48", children: _jsx(DropdownMenuRadioGroup, { value: value, onValueChange: onValueChange, children: options.map((option) => (_jsxs(DropdownMenuRadioItem, { value: option.value, indicator: "check", disabled: option.disabled, className: "agent-composer-mode-picker-option pe-3", children: [option.icon, _jsxs("span", { className: "min-w-0 flex-1", children: [_jsx("span", { className: "block truncate", children: option.label }), option.description ? (_jsx("span", { className: "mt-0.5 block whitespace-normal text-xs text-muted-foreground", children: option.description })) : null] })] }, option.value))) }) })] }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ComposerModePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposerModePicker.js","sourceRoot":"","sources":["../../src/composer/ComposerModePicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAuBjC;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,SAAS,EACT,KAAK,EACL,OAAO,EACP,aAAa,EACb,SAAS,GACe;IACxB,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,cAAc,EAAE,KAAK,IAAI,KAAK,CAAC;IAErD,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,kBACE,IAAI,EAAC,QAAQ,gBACD,GAAG,SAAS,KAAK,aAAa,EAAE,8BACnB,aAAa,EACtC,SAAS,EAAE,EAAE,CACX,4PAA4P,EAC5P,SAAS,CACV,aAEA,cAAc,EAAE,IAAI,EACrB,eAAM,SAAS,EAAC,kBAAkB,YAAE,aAAa,GAAQ,EACzD,KAAC,eAAe,mBACF,MAAM,EAClB,SAAS,EAAC,4BAA4B,GACtC,IACK,GACW,EACtB,KAAC,mBAAmB,IAClB,IAAI,EAAC,KAAK,EACV,KAAK,EAAC,OAAO,EACb,gBAAgB,EAAE,CAAC,EACnB,SAAS,EAAC,0CAA0C,YAEpD,KAAC,sBAAsB,IAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,YAC/D,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,MAAC,qBAAqB,IAEpB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,SAAS,EAAC,OAAO,EACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,SAAS,EAAC,wCAAwC,aAEjD,MAAM,CAAC,IAAI,EACZ,gBAAM,SAAS,EAAC,gBAAgB,aAC9B,eAAM,SAAS,EAAC,gBAAgB,YAAE,MAAM,CAAC,KAAK,GAAQ,EACrD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CACpB,eAAM,SAAS,EAAC,8DAA8D,YAC3E,MAAM,CAAC,WAAW,GACd,CACR,CAAC,CAAC,CAAC,IAAI,IACH,KAdF,MAAM,CAAC,KAAK,CAeK,CACzB,CAAC,GACqB,GACL,IACT,CAChB,CAAC;AACJ,CAAC"}
|
package/dist/composer/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { FileReference } from "./extensions/FileReference.js";
|
|
2
|
+
export { ComposerContextBanner, type ComposerContextBannerProps, } from "./ComposerContextBanner.js";
|
|
3
|
+
export { ComposerModePicker, type ComposerModeOption, type ComposerModePickerProps, } from "./ComposerModePicker.js";
|
|
2
4
|
export { useComposerDefaultActions, mergeComposerMenuItems, } from "./ComposerPlusMenu.js";
|
|
3
5
|
export { ComposerContextMenu, ComposerContextSearchInput, type ComposerContextSearchInputProps, type ComposerContextPageControls, getComposerContextMenuEntries, type ComposerContextMenuProps, type ComposerContextMenuItem, type ComposerContextMenuAction, type ComposerContextMenuCategory, type ComposerContextPickerConfig, type ComposerContextPickerItem, type ComposerContextPickerRequest, type ComposerContextPickerResult, type ComposerContextPickerSelection, type ComposerContextPickerFooterAction, } from "./ComposerContextMenu.js";
|
|
4
6
|
export { ComposerContextPickerDialog } from "./ComposerContextPickerDialog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composer/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composer/index.ts"],"names":[],"mappings":"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"}
|
package/dist/composer/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { FileReference } from "./extensions/FileReference.js";
|
|
2
|
+
export { ComposerContextBanner, } from "./ComposerContextBanner.js";
|
|
3
|
+
export { ComposerModePicker, } from "./ComposerModePicker.js";
|
|
2
4
|
export { useComposerDefaultActions, mergeComposerMenuItems, } from "./ComposerPlusMenu.js";
|
|
3
5
|
export { ComposerContextMenu, ComposerContextSearchInput, getComposerContextMenuEntries, } from "./ComposerContextMenu.js";
|
|
4
6
|
export { ComposerContextPickerDialog } from "./ComposerContextPickerDialog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/composer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EACL,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAG1B,6BAA6B,GAW9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,GAE3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EACL,kBAAkB,GAEnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,GAIzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,8BAA8B,EAC9B,kCAAkC,EAClC,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,mCAAmC,EACnC,wCAAwC,EACxC,qBAAqB,EACrB,iBAAiB,GAQlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,0BAA0B,GAE3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,GAIf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,SAAS,GAGV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,GAMnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAQvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,0BAA0B,EAC1B,wCAAwC,EACxC,wBAAwB,EACxB,iCAAiC,EACjC,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,GAK7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,EAC/B,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,GAG1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,GAG3B,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/composer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EACL,qBAAqB,GAEtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,kBAAkB,GAGnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAG1B,6BAA6B,GAW9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,GAE3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EACL,kBAAkB,GAEnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,GAIzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,8BAA8B,EAC9B,kCAAkC,EAClC,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,mCAAmC,EACnC,wCAAwC,EACxC,qBAAqB,EACrB,iBAAiB,GAQlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,0BAA0B,GAE3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,GAIf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,SAAS,GAGV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,GAMnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAQvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,0BAA0B,EAC1B,wCAAwC,EACxC,wBAAwB,EACxB,iCAAiC,EACjC,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,GAK7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,EAC/B,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,GAG1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,GAG3B,MAAM,uBAAuB,CAAC"}
|
package/dist/styles.css
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/toolkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.214.0",
|
|
4
4
|
"description": "Reusable app-building UI and helpers for Agent-Native apps.",
|
|
5
5
|
"homepage": "https://github.com/BuilderIO/agent-native#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -678,7 +678,7 @@
|
|
|
678
678
|
"y-protocols": "^1.0.7",
|
|
679
679
|
"yjs": "^13.6.33",
|
|
680
680
|
"zod": "^4.3.6",
|
|
681
|
-
"@agent-native/agentkit": "^0.
|
|
681
|
+
"@agent-native/agentkit": "^0.214.0"
|
|
682
682
|
},
|
|
683
683
|
"devDependencies": {
|
|
684
684
|
"@excalidraw/excalidraw": "0.18.1",
|
|
@@ -702,7 +702,7 @@
|
|
|
702
702
|
"typescript-7": "npm:typescript@^7.0.2",
|
|
703
703
|
"vite": "8.1.0",
|
|
704
704
|
"vitest": "^4.1.5",
|
|
705
|
-
"@agent-native/core": "^0.
|
|
705
|
+
"@agent-native/core": "^0.214.0"
|
|
706
706
|
},
|
|
707
707
|
"peerDependencies": {
|
|
708
708
|
"@agent-native/core": ">=0.205.1",
|
|
@@ -196,6 +196,18 @@ describe("AgentMessageActions layout", () => {
|
|
|
196
196
|
});
|
|
197
197
|
|
|
198
198
|
describe("AgentKitChat", () => {
|
|
199
|
+
it("keeps work-summary chevrons visible before the row is opened", () => {
|
|
200
|
+
const styles = readFileSync(
|
|
201
|
+
new URL("./styles.css", import.meta.url),
|
|
202
|
+
"utf8",
|
|
203
|
+
).replace(/\r\n/g, "\n");
|
|
204
|
+
const rule = styles.match(
|
|
205
|
+
/\.agentkit-activities-summary > \.agentkit-summary-chevron \{([^}]*)\}/,
|
|
206
|
+
)?.[1];
|
|
207
|
+
|
|
208
|
+
expect(rule).toContain("opacity: 1;");
|
|
209
|
+
});
|
|
210
|
+
|
|
199
211
|
it("renders the complete reference surface from one managed component", () => {
|
|
200
212
|
const transport: AgentTransport = {
|
|
201
213
|
async startRun() {
|
|
@@ -136,6 +136,7 @@ import {
|
|
|
136
136
|
type AgentKitSuggestionsRenderProps,
|
|
137
137
|
type AgentRunFailureRenderProps,
|
|
138
138
|
} from "./context.js";
|
|
139
|
+
import { orderMessageContent } from "./message-content-order.js";
|
|
139
140
|
import { AgentStreamingText } from "./streaming-text.js";
|
|
140
141
|
|
|
141
142
|
// AgentKit React installs without @agent-native/core, so it repeats core's
|
|
@@ -1907,7 +1908,9 @@ function AgentWorkDisclosure({
|
|
|
1907
1908
|
current?: ReactNode;
|
|
1908
1909
|
children: ReactNode;
|
|
1909
1910
|
}) {
|
|
1911
|
+
const { slots } = useAgentKit();
|
|
1910
1912
|
const [open, setOpen] = useState(false);
|
|
1913
|
+
const Summary = slots.workedForSummary;
|
|
1911
1914
|
return (
|
|
1912
1915
|
<details
|
|
1913
1916
|
className="agentkit-activities"
|
|
@@ -1924,18 +1927,30 @@ function AgentWorkDisclosure({
|
|
|
1924
1927
|
setOpen((value) => !value);
|
|
1925
1928
|
}}
|
|
1926
1929
|
>
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1930
|
+
{Summary ? (
|
|
1931
|
+
<Summary
|
|
1932
|
+
label={label}
|
|
1933
|
+
running={running}
|
|
1934
|
+
expandable={expandable}
|
|
1935
|
+
open={open}
|
|
1936
|
+
current={current}
|
|
1937
|
+
/>
|
|
1938
|
+
) : (
|
|
1939
|
+
<>
|
|
1940
|
+
<IconChevronRight
|
|
1941
|
+
aria-hidden="true"
|
|
1942
|
+
className="agentkit-icon agentkit-summary-chevron"
|
|
1943
|
+
/>
|
|
1944
|
+
<span className="agentkit-activities-summary-content">
|
|
1945
|
+
{label ? (
|
|
1946
|
+
<span className="agentkit-activities-heading">
|
|
1947
|
+
<span className="agentkit-activities-label">{label}</span>
|
|
1948
|
+
</span>
|
|
1949
|
+
) : null}
|
|
1950
|
+
{current}
|
|
1931
1951
|
</span>
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
</span>
|
|
1935
|
-
<IconChevronRight
|
|
1936
|
-
aria-hidden="true"
|
|
1937
|
-
className="agentkit-icon agentkit-summary-chevron"
|
|
1938
|
-
/>
|
|
1952
|
+
</>
|
|
1953
|
+
)}
|
|
1939
1954
|
</summary>
|
|
1940
1955
|
{children}
|
|
1941
1956
|
</details>
|
|
@@ -3787,7 +3802,7 @@ export function AgentMessageView({
|
|
|
3787
3802
|
value: message,
|
|
3788
3803
|
threadId,
|
|
3789
3804
|
}: AgentKitRenderProps<AgentMessage>) {
|
|
3790
|
-
const { labels, slots } = useAgentKit();
|
|
3805
|
+
const { labels, slots, resolveMessageContentOrder } = useAgentKit();
|
|
3791
3806
|
const thread = useAgentThread(threadId);
|
|
3792
3807
|
const visibleMessage = stripAgentMessageContext(message);
|
|
3793
3808
|
const Supplement = slots.messageSupplement;
|
|
@@ -3812,6 +3827,13 @@ export function AgentMessageView({
|
|
|
3812
3827
|
thread.annotationMessageIds[annotation.id] === message.id &&
|
|
3813
3828
|
!embeddedAnnotationIds.has(annotation.id),
|
|
3814
3829
|
);
|
|
3830
|
+
const orderedContent = orderMessageContent(
|
|
3831
|
+
visibleMessage,
|
|
3832
|
+
visibleMessage.parts,
|
|
3833
|
+
attachedWidgets,
|
|
3834
|
+
thread.events,
|
|
3835
|
+
resolveMessageContentOrder,
|
|
3836
|
+
);
|
|
3815
3837
|
if (
|
|
3816
3838
|
!message.parts.length &&
|
|
3817
3839
|
!attachedWidgets.length &&
|
|
@@ -3830,23 +3852,20 @@ export function AgentMessageView({
|
|
|
3830
3852
|
aria-busy={message.status === "streaming"}
|
|
3831
3853
|
>
|
|
3832
3854
|
<div className="agentkit-message-content">
|
|
3833
|
-
{
|
|
3855
|
+
{orderedContent.map((item, index) => (
|
|
3834
3856
|
<AgentMessagePartView
|
|
3835
|
-
key={
|
|
3836
|
-
value={
|
|
3857
|
+
key={item.key}
|
|
3858
|
+
value={
|
|
3859
|
+
item.type === "widget"
|
|
3860
|
+
? { type: "widget", widget: item.widget }
|
|
3861
|
+
: item.part
|
|
3862
|
+
}
|
|
3837
3863
|
threadId={threadId}
|
|
3838
3864
|
active={message.status === "streaming"}
|
|
3839
3865
|
resetKey={`${threadId}:${message.id}:${index}`}
|
|
3840
3866
|
userMessage={message.role === "user"}
|
|
3841
3867
|
/>
|
|
3842
3868
|
))}
|
|
3843
|
-
{attachedWidgets.map((widget) => (
|
|
3844
|
-
<AgentMessagePartView
|
|
3845
|
-
key={widget.id}
|
|
3846
|
-
value={{ type: "widget", widget }}
|
|
3847
|
-
threadId={threadId}
|
|
3848
|
-
/>
|
|
3849
|
-
))}
|
|
3850
3869
|
{attachedAnnotations.length ? (
|
|
3851
3870
|
<div className="agentkit-annotations">
|
|
3852
3871
|
{attachedAnnotations.map((annotation) => (
|
|
@@ -43,6 +43,8 @@ import {
|
|
|
43
43
|
type ReactNode,
|
|
44
44
|
} from "react";
|
|
45
45
|
|
|
46
|
+
import type { AgentMessageContentOrderResolver } from "./message-content-order.js";
|
|
47
|
+
|
|
46
48
|
export interface AgentKitRenderProps<T> {
|
|
47
49
|
value: T;
|
|
48
50
|
threadId: ThreadId;
|
|
@@ -79,6 +81,14 @@ export interface AgentKitSuggestionsRenderProps {
|
|
|
79
81
|
onSelect: (suggestion: AgentSuggestion) => void;
|
|
80
82
|
}
|
|
81
83
|
|
|
84
|
+
export interface AgentKitWorkedForSummaryRenderProps {
|
|
85
|
+
label: string;
|
|
86
|
+
running?: boolean;
|
|
87
|
+
expandable: boolean;
|
|
88
|
+
open: boolean;
|
|
89
|
+
current?: ReactNode;
|
|
90
|
+
}
|
|
91
|
+
|
|
82
92
|
export interface AgentConnectionErrorRenderProps {
|
|
83
93
|
error: AgentError;
|
|
84
94
|
threadId: ThreadId;
|
|
@@ -153,6 +163,8 @@ export interface AgentKitSlots {
|
|
|
153
163
|
composer?: ComponentType<{ threadId: ThreadId }>;
|
|
154
164
|
queue?: ComponentType<AgentKitQueueRenderProps>;
|
|
155
165
|
suggestions?: ComponentType<AgentKitSuggestionsRenderProps>;
|
|
166
|
+
/** Replaces the visible work-summary row while the shared disclosure owns its semantics. */
|
|
167
|
+
workedForSummary?: ComponentType<AgentKitWorkedForSummaryRenderProps>;
|
|
156
168
|
}
|
|
157
169
|
|
|
158
170
|
export interface AgentKitToolSource {
|
|
@@ -482,6 +494,7 @@ export interface AgentKitProviderProps {
|
|
|
482
494
|
) => Promise<AgentConnectionResponse>;
|
|
483
495
|
/** Receives full renderer failures while the UI shows a safe fallback. */
|
|
484
496
|
onRenderError?: (failure: AgentKitRenderFailure) => void;
|
|
497
|
+
resolveMessageContentOrder?: AgentMessageContentOrderResolver;
|
|
485
498
|
onClientEffect?: (effect: {
|
|
486
499
|
type: "client.effect" | "client.deeplink";
|
|
487
500
|
name: string;
|
|
@@ -511,6 +524,7 @@ export interface AgentKitContextValue {
|
|
|
511
524
|
loadRunUsage?: AgentKitRunUsageLoader;
|
|
512
525
|
onConnectionRequest?: AgentKitProviderProps["onConnectionRequest"];
|
|
513
526
|
onRenderError?: (failure: AgentKitRenderFailure) => void;
|
|
527
|
+
resolveMessageContentOrder?: AgentMessageContentOrderResolver;
|
|
514
528
|
registerComposerFocus: (threadId: ThreadId, focus: () => void) => () => void;
|
|
515
529
|
requestComposerFocus: (threadId: ThreadId) => void;
|
|
516
530
|
}
|
|
@@ -531,6 +545,7 @@ export function AgentKitProvider({
|
|
|
531
545
|
loadRunUsage,
|
|
532
546
|
onConnectionRequest,
|
|
533
547
|
onRenderError,
|
|
548
|
+
resolveMessageContentOrder,
|
|
534
549
|
onClientEffect,
|
|
535
550
|
children,
|
|
536
551
|
}: AgentKitProviderProps) {
|
|
@@ -597,6 +612,7 @@ export function AgentKitProvider({
|
|
|
597
612
|
loadRunUsage,
|
|
598
613
|
onConnectionRequest,
|
|
599
614
|
onRenderError,
|
|
615
|
+
resolveMessageContentOrder,
|
|
600
616
|
registerComposerFocus,
|
|
601
617
|
requestComposerFocus,
|
|
602
618
|
}),
|
|
@@ -614,6 +630,7 @@ export function AgentKitProvider({
|
|
|
614
630
|
loadRunUsage,
|
|
615
631
|
onConnectionRequest,
|
|
616
632
|
onRenderError,
|
|
633
|
+
resolveMessageContentOrder,
|
|
617
634
|
registerComposerFocus,
|
|
618
635
|
requestComposerFocus,
|
|
619
636
|
],
|
|
@@ -157,6 +157,83 @@ afterEach(async () => {
|
|
|
157
157
|
});
|
|
158
158
|
|
|
159
159
|
describe("AgentChat lifecycle", () => {
|
|
160
|
+
it("renders host-ordered text around an attached widget", async () => {
|
|
161
|
+
const threadId = "thread-host-content-order";
|
|
162
|
+
const message = {
|
|
163
|
+
id: "assistant-host-content-order",
|
|
164
|
+
role: "assistant" as const,
|
|
165
|
+
status: "complete" as const,
|
|
166
|
+
parts: [{ type: "text" as const, text: "Intro. Summary." }],
|
|
167
|
+
};
|
|
168
|
+
const widget = {
|
|
169
|
+
id: "chart-host-content-order",
|
|
170
|
+
kind: "test-chart",
|
|
171
|
+
data: {},
|
|
172
|
+
};
|
|
173
|
+
const thread = {
|
|
174
|
+
...createAgentThreadState(threadId),
|
|
175
|
+
messages: [message],
|
|
176
|
+
widgets: { [widget.id]: widget },
|
|
177
|
+
widgetMessageIds: { [widget.id]: message.id },
|
|
178
|
+
};
|
|
179
|
+
const observable = observableController({
|
|
180
|
+
connection: "connected",
|
|
181
|
+
capabilities: {},
|
|
182
|
+
capabilitiesStatus: "ready",
|
|
183
|
+
threads: { [threadId]: thread },
|
|
184
|
+
revision: 0,
|
|
185
|
+
});
|
|
186
|
+
const tree = mount();
|
|
187
|
+
|
|
188
|
+
await tree.render(
|
|
189
|
+
<AgentKitProvider
|
|
190
|
+
controller={observable.controller}
|
|
191
|
+
threadId={threadId}
|
|
192
|
+
resolveMessageContentOrder={({ parts, widgets }) => {
|
|
193
|
+
const part = parts[0];
|
|
194
|
+
const chart = widgets[0];
|
|
195
|
+
if (part?.type !== "text" || !chart) return [];
|
|
196
|
+
return [
|
|
197
|
+
{
|
|
198
|
+
key: "intro",
|
|
199
|
+
type: "part",
|
|
200
|
+
part: { ...part, text: "Intro. " },
|
|
201
|
+
},
|
|
202
|
+
{ key: chart.id, type: "widget", widget: chart },
|
|
203
|
+
{
|
|
204
|
+
key: "summary",
|
|
205
|
+
type: "part",
|
|
206
|
+
part: { ...part, text: "Summary." },
|
|
207
|
+
},
|
|
208
|
+
];
|
|
209
|
+
}}
|
|
210
|
+
registry={{
|
|
211
|
+
widgets: {
|
|
212
|
+
"test-chart": () => <span data-chart-result>Chart</span>,
|
|
213
|
+
},
|
|
214
|
+
}}
|
|
215
|
+
slots={{
|
|
216
|
+
text: ({ value }) => <span data-chat-part>{value.text}</span>,
|
|
217
|
+
}}
|
|
218
|
+
>
|
|
219
|
+
<AgentKitChat composer={false} />
|
|
220
|
+
</AgentKitProvider>,
|
|
221
|
+
);
|
|
222
|
+
|
|
223
|
+
const content = tree.container.querySelector(
|
|
224
|
+
`[data-message-id="${message.id}"] .agentkit-message-content`,
|
|
225
|
+
);
|
|
226
|
+
const renderedOrder = [...(content?.children ?? [])].map((element) =>
|
|
227
|
+
element.hasAttribute("data-chat-part")
|
|
228
|
+
? element.textContent
|
|
229
|
+
: element.hasAttribute("data-chart-result")
|
|
230
|
+
? "chart"
|
|
231
|
+
: "other",
|
|
232
|
+
);
|
|
233
|
+
expect(renderedOrder).toEqual(["Intro. ", "chart", "Summary."]);
|
|
234
|
+
await tree.unmount();
|
|
235
|
+
});
|
|
236
|
+
|
|
160
237
|
it("keeps partial transcript updates out of live announcements", async () => {
|
|
161
238
|
const threadId = "thread-accessible-transcript";
|
|
162
239
|
const thread = {
|
|
@@ -1744,6 +1821,44 @@ describe("AgentChat lifecycle", () => {
|
|
|
1744
1821
|
".agentkit-activities-summary > .agentkit-summary-chevron",
|
|
1745
1822
|
),
|
|
1746
1823
|
).not.toBeNull();
|
|
1824
|
+
await tree.render(
|
|
1825
|
+
<AgentKitProvider
|
|
1826
|
+
controller={observable.controller}
|
|
1827
|
+
threadId={threadId}
|
|
1828
|
+
registry={{
|
|
1829
|
+
activities: {
|
|
1830
|
+
reasoning: ({ value }) => (
|
|
1831
|
+
<span data-protocol-reasoning>{value.label}</span>
|
|
1832
|
+
),
|
|
1833
|
+
},
|
|
1834
|
+
}}
|
|
1835
|
+
slots={{
|
|
1836
|
+
reasoning: ({ value, active, resetKey }) => (
|
|
1837
|
+
<span data-thought={resetKey} data-active={active}>
|
|
1838
|
+
{value.text}
|
|
1839
|
+
</span>
|
|
1840
|
+
),
|
|
1841
|
+
workedForSummary: ({ label, open, current }) => (
|
|
1842
|
+
<span data-work-summary data-open={open}>
|
|
1843
|
+
<span>{label}</span>
|
|
1844
|
+
<span data-work-chevron aria-hidden="true">
|
|
1845
|
+
›
|
|
1846
|
+
</span>
|
|
1847
|
+
{current}
|
|
1848
|
+
</span>
|
|
1849
|
+
),
|
|
1850
|
+
}}
|
|
1851
|
+
>
|
|
1852
|
+
<AgentKitChat composer={false} />
|
|
1853
|
+
</AgentKitProvider>,
|
|
1854
|
+
);
|
|
1855
|
+
expect(work.querySelector("[data-work-summary]")?.textContent).toContain(
|
|
1856
|
+
"Searching documentation",
|
|
1857
|
+
);
|
|
1858
|
+
expect(work.querySelector("[data-work-chevron]")).not.toBeNull();
|
|
1859
|
+
expect(
|
|
1860
|
+
work.querySelector("[data-work-summary]")?.getAttribute("data-open"),
|
|
1861
|
+
).toBe("false");
|
|
1747
1862
|
thread = reduceAgentEvent(thread, {
|
|
1748
1863
|
...base(8, 18),
|
|
1749
1864
|
type: "message.completed",
|
|
@@ -1765,7 +1880,7 @@ describe("AgentChat lifecycle", () => {
|
|
|
1765
1880
|
await flush();
|
|
1766
1881
|
expect(tree.container.querySelector(".agentkit-activities")).toBe(work);
|
|
1767
1882
|
expect(work.open).toBe(false);
|
|
1768
|
-
expect(work.querySelector("summary")?.textContent).toBe("Worked for 18s");
|
|
1883
|
+
expect(work.querySelector("summary")?.textContent).toBe("Worked for 18s›");
|
|
1769
1884
|
expect(work.querySelector("[data-agentkit-current-activity]")).toBeNull();
|
|
1770
1885
|
expect(tree.container.querySelectorAll("article")).toHaveLength(1);
|
|
1771
1886
|
const answer = tree.container.querySelector(
|