@agent-native/toolkit 0.227.0 → 0.228.0-nightly-20261110212400
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/app/chat/AgentPanel.d.ts +15 -15
- package/dist/app/chat/AgentPanel.d.ts.map +1 -1
- package/dist/app/chat/AgentPanel.js.map +1 -1
- package/dist/app/chat/AgentSidebar.d.ts +7 -1
- package/dist/app/chat/AgentSidebar.d.ts.map +1 -1
- package/dist/app/chat/AgentSidebar.js +33 -11
- package/dist/app/chat/AgentSidebar.js.map +1 -1
- package/dist/app/chat/chat/surface-types.d.ts +26 -26
- package/dist/app/chat/chat/surface-types.d.ts.map +1 -1
- package/dist/app/sharing/ShareButton.d.ts +2 -0
- package/dist/app/sharing/ShareButton.d.ts.map +1 -1
- package/dist/app/sharing/ShareButton.js +4 -3
- package/dist/app/sharing/ShareButton.js.map +1 -1
- package/dist/composer/TiptapComposer.js +3 -0
- package/dist/composer/TiptapComposer.js.map +1 -1
- package/dist/sharing/ShareControls.d.ts +2 -0
- package/dist/sharing/ShareControls.d.ts.map +1 -1
- package/dist/sharing/ShareControls.js +7 -2
- package/dist/sharing/ShareControls.js.map +1 -1
- package/package.json +4 -4
- package/src/app/chat/AgentPanel.header.spec.ts +4 -1
- package/src/app/chat/AgentPanel.tsx +19 -14
- package/src/app/chat/AgentSidebar.spec.tsx +108 -0
- package/src/app/chat/AgentSidebar.tsx +151 -96
- package/src/app/chat/chat/surface-types.ts +35 -31
- package/src/app/sharing/ShareButton.tsx +10 -3
- package/src/composer/TiptapComposer.tsx +2 -0
- package/src/composer/TiptapComposer.voice-toolbar.spec.tsx +16 -0
- package/src/sharing/ShareControls.tsx +44 -24
|
@@ -5,6 +5,8 @@ export interface JoinedShareControlProps {
|
|
|
5
5
|
copiedLabel: string;
|
|
6
6
|
onCopy: () => Promise<boolean | void> | boolean | void;
|
|
7
7
|
size?: "default" | "sm";
|
|
8
|
+
/** `plain` sets the two apart, as quiet controls in a toolbar. */
|
|
9
|
+
appearance?: "joined" | "plain";
|
|
8
10
|
disabled?: boolean;
|
|
9
11
|
blocked?: boolean;
|
|
10
12
|
className?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShareControls.d.ts","sourceRoot":"","sources":["../../src/sharing/ShareControls.tsx"],"names":[],"mappings":"AACA,OAAO,EAA2C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQhF,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC;IACvD,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"ShareControls.d.ts","sourceRoot":"","sources":["../../src/sharing/ShareControls.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs.js";
|
|
|
7
7
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../ui/tooltip.js";
|
|
8
8
|
import { cn } from "../utils.js";
|
|
9
9
|
/** A joined share trigger and quick-copy action. Wrap with a popover anchor when needed. */
|
|
10
|
-
export const JoinedShareControl = forwardRef(function JoinedShareControl({ trigger, copyLabel, copiedLabel, onCopy, size = "default", disabled, blocked, className, }, ref) {
|
|
10
|
+
export const JoinedShareControl = forwardRef(function JoinedShareControl({ trigger, copyLabel, copiedLabel, onCopy, size = "default", appearance = "joined", disabled, blocked, className, }, ref) {
|
|
11
11
|
const [copied, setCopied] = useState(false);
|
|
12
12
|
const resetTimer = useRef(null);
|
|
13
13
|
useEffect(() => () => {
|
|
@@ -26,10 +26,15 @@ export const JoinedShareControl = forwardRef(function JoinedShareControl({ trigg
|
|
|
26
26
|
resetTimer.current = setTimeout(() => setCopied(false), 1_400);
|
|
27
27
|
};
|
|
28
28
|
const label = copied ? copiedLabel : copyLabel;
|
|
29
|
+
const plain = appearance === "plain";
|
|
30
|
+
const copyButton = (_jsxs(Tooltip, { ...(copied ? { open: true } : {}), children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(Button, { type: "button", size: "sm", variant: plain ? "ghost" : "default", className: cn("w-8 shrink-0 px-0 shadow-none", plain && "text-muted-foreground hover:text-foreground", blocked && "opacity-50"), "aria-label": label, disabled: disabled, "data-blocked": blocked ? "" : undefined, onClick: () => void copy(), children: copied ? (_jsx(IconCheck, { "aria-hidden": "true" })) : (_jsx(IconLink, { "aria-hidden": "true" })) }) }), _jsx(TooltipContent, { side: "bottom", children: label })] }));
|
|
31
|
+
if (plain) {
|
|
32
|
+
return (_jsxs("div", { ref: ref, className: cn("flex shrink-0 items-center gap-0.5", className), children: [trigger, copyButton] }));
|
|
33
|
+
}
|
|
29
34
|
const segmentHeightClass = size === "sm"
|
|
30
35
|
? "[&>*:not([data-slot=button-group-separator]):not([data-button-group-ignore]):not(select[aria-hidden=true])]:!h-8"
|
|
31
36
|
: "[&>*:not([data-slot=button-group-separator]):not([data-button-group-ignore]):not(select[aria-hidden=true])]:!h-9";
|
|
32
|
-
return (_jsxs(ButtonGroup, { ref: ref, className: cn("shrink-0 [&>*:not([data-slot=button-group-separator]):not([data-button-group-ignore]):not(select[aria-hidden=true]):not(:first-child)]:border-primary-foreground/20", segmentHeightClass, className), children: [trigger,
|
|
37
|
+
return (_jsxs(ButtonGroup, { ref: ref, className: cn("shrink-0 [&>*:not([data-slot=button-group-separator]):not([data-button-group-ignore]):not(select[aria-hidden=true]):not(:first-child)]:border-primary-foreground/20", segmentHeightClass, className), children: [trigger, copyButton] }));
|
|
33
38
|
});
|
|
34
39
|
JoinedShareControl.displayName = "JoinedShareControl";
|
|
35
40
|
/** The underline tab strip every share surface uses. Render inside `Tabs`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShareControls.js","sourceRoot":"","sources":["../../src/sharing/ShareControls.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ShareControls.js","sourceRoot":"","sources":["../../src/sharing/ShareControls.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/toolkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.228.0-nightly-20261110212400",
|
|
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": {
|
|
@@ -716,7 +716,7 @@
|
|
|
716
716
|
"y-protocols": "^1.0.7",
|
|
717
717
|
"yjs": "^13.6.33",
|
|
718
718
|
"zod": "^4.3.6",
|
|
719
|
-
"@agent-native/agentkit": "^0.
|
|
719
|
+
"@agent-native/agentkit": "^0.228.0-nightly-20261110212400"
|
|
720
720
|
},
|
|
721
721
|
"devDependencies": {
|
|
722
722
|
"@excalidraw/excalidraw": "0.18.1",
|
|
@@ -740,10 +740,10 @@
|
|
|
740
740
|
"typescript-7": "npm:typescript@^7.0.2",
|
|
741
741
|
"vite": "8.1.0",
|
|
742
742
|
"vitest": "^4.1.5",
|
|
743
|
-
"@agent-native/core": "^0.
|
|
743
|
+
"@agent-native/core": "^0.228.0-nightly-20261110212400"
|
|
744
744
|
},
|
|
745
745
|
"peerDependencies": {
|
|
746
|
-
"@agent-native/core": "
|
|
746
|
+
"@agent-native/core": "0.228.0-nightly-20261110212400",
|
|
747
747
|
"@excalidraw/excalidraw": ">=0.18",
|
|
748
748
|
"@excalidraw/mermaid-to-excalidraw": ">=2",
|
|
749
749
|
"@tanstack/react-query": "^5.99.2",
|
|
@@ -1153,7 +1153,10 @@ describe("AgentPanel header overflow actions", () => {
|
|
|
1153
1153
|
expect(panelSource).toMatch(
|
|
1154
1154
|
/\{mode === "chat"\s*\?\s*mainTabs\.map[\s\S]*?:\s*cliTabs\.map/,
|
|
1155
1155
|
);
|
|
1156
|
-
|
|
1156
|
+
// oracle-change: a host's own panel has its own close, so the sidebar's collapse button stays out of it.
|
|
1157
|
+
expect(source).toContain(
|
|
1158
|
+
"showCollapseButton={!hostedPanel && showCollapseButton}",
|
|
1159
|
+
);
|
|
1157
1160
|
});
|
|
1158
1161
|
|
|
1159
1162
|
it("keeps host CLI tabs mounted while chat is active", () => {
|
|
@@ -590,26 +590,31 @@ export interface AgentPanelProps extends Omit<
|
|
|
590
590
|
isFullscreen?: boolean;
|
|
591
591
|
/** @deprecated Fullscreen sidebar controls are no longer rendered. */
|
|
592
592
|
onToggleFullscreen?: () => void;
|
|
593
|
-
onFullViewRequest?: (threadId?: string) => void;
|
|
594
|
-
onSnapTo75Percent?: () => void;
|
|
593
|
+
onFullViewRequest?: ((threadId?: string) => void) | undefined;
|
|
594
|
+
onSnapTo75Percent?: (() => void) | undefined;
|
|
595
595
|
isWideDrawer?: boolean;
|
|
596
|
-
onExitWideDrawer?: () => void;
|
|
597
|
-
onOpenSettings?: (section?: string) => void;
|
|
598
|
-
onNewCliTab?: () => void;
|
|
599
|
-
onNewUiTab?: () => void;
|
|
600
|
-
renderCliTab?:
|
|
596
|
+
onExitWideDrawer?: (() => void) | undefined;
|
|
597
|
+
onOpenSettings?: ((section?: string) => void) | undefined;
|
|
598
|
+
onNewCliTab?: (() => void) | undefined;
|
|
599
|
+
onNewUiTab?: (() => void) | undefined;
|
|
600
|
+
renderCliTab?:
|
|
601
|
+
| ((input: { id: string; active: boolean }) => React.ReactNode)
|
|
602
|
+
| undefined;
|
|
601
603
|
newTabMode?: "ui" | "cli";
|
|
602
|
-
newCliTabLabel?: string;
|
|
603
|
-
newUiTabLabel?: string;
|
|
604
|
-
storageKey?: string;
|
|
604
|
+
newCliTabLabel?: string | undefined;
|
|
605
|
+
newUiTabLabel?: string | undefined;
|
|
606
|
+
storageKey?: string | undefined;
|
|
605
607
|
preferEngineDefaultModel?: MultiTabAssistantChatProps["preferEngineDefaultModel"];
|
|
606
608
|
restoreActiveThread?: boolean;
|
|
607
|
-
scope?:
|
|
609
|
+
scope?:
|
|
610
|
+
| import("@agent-native/core/client/agent-chat").ChatThreadScope
|
|
611
|
+
| null
|
|
612
|
+
| undefined;
|
|
608
613
|
isolateHistoryByScope?: boolean;
|
|
609
614
|
composerAutoFocus?: MultiTabAssistantChatProps["composerAutoFocus"];
|
|
610
615
|
/** @deprecated Scope context now appears inside the composer. */
|
|
611
616
|
showScopeBadge?: MultiTabAssistantChatProps["showScopeBadge"];
|
|
612
|
-
browserTabId?: string;
|
|
617
|
+
browserTabId?: string | undefined;
|
|
613
618
|
threadUrlSync?: MultiTabAssistantChatProps["threadUrlSync"];
|
|
614
619
|
chatNotice?: React.ReactNode;
|
|
615
620
|
showTabBar?: boolean;
|
|
@@ -627,9 +632,9 @@ export interface AgentPanelProps extends Omit<
|
|
|
627
632
|
| ((actions: AgentPanelPageToolbarActions) => React.ReactNode);
|
|
628
633
|
onPageHeaderVisibilityChange?: (visible: boolean) => void;
|
|
629
634
|
chatOnly?: boolean;
|
|
630
|
-
agentPageHref?: string;
|
|
635
|
+
agentPageHref?: string | undefined;
|
|
631
636
|
codeAccess?: AgentPanelCodeAccess;
|
|
632
|
-
builderConnectTransport?: BuilderConnectTransport;
|
|
637
|
+
builderConnectTransport?: BuilderConnectTransport | undefined;
|
|
633
638
|
}
|
|
634
639
|
|
|
635
640
|
function useClientOnly() {
|
|
@@ -43,6 +43,7 @@ const mockPanel = vi.hoisted(() => {
|
|
|
43
43
|
| undefined,
|
|
44
44
|
hostedHarness: undefined as boolean | undefined,
|
|
45
45
|
emptyStateText: null as string | null | undefined,
|
|
46
|
+
composerAutoFocus: undefined as boolean | undefined,
|
|
46
47
|
composer: undefined as React.ReactNode,
|
|
47
48
|
importGate: new Promise<void>((resolve) => {
|
|
48
49
|
resolveImport = resolve;
|
|
@@ -62,6 +63,7 @@ vi.mock("./AgentSidebarPanel.js", async () => {
|
|
|
62
63
|
mcpSuggestionExcludedIntegrationIds,
|
|
63
64
|
hostedHarness,
|
|
64
65
|
emptyStateText,
|
|
66
|
+
composerAutoFocus,
|
|
65
67
|
}: {
|
|
66
68
|
onReadyChange?: (ready: boolean) => void;
|
|
67
69
|
onReferenceTargetChange?: MultiTabAssistantChatProps["onReferenceTargetChange"];
|
|
@@ -69,11 +71,13 @@ vi.mock("./AgentSidebarPanel.js", async () => {
|
|
|
69
71
|
mcpSuggestionExcludedIntegrationIds?: readonly string[];
|
|
70
72
|
hostedHarness?: boolean;
|
|
71
73
|
emptyStateText?: string;
|
|
74
|
+
composerAutoFocus?: boolean;
|
|
72
75
|
}) => {
|
|
73
76
|
mockPanel.mcpSuggestionExcludedIntegrationIds =
|
|
74
77
|
mcpSuggestionExcludedIntegrationIds;
|
|
75
78
|
mockPanel.hostedHarness = hostedHarness;
|
|
76
79
|
mockPanel.emptyStateText = emptyStateText;
|
|
80
|
+
mockPanel.composerAutoFocus = composerAutoFocus;
|
|
77
81
|
React.useEffect(() => {
|
|
78
82
|
mockPanel.onNavigationChange = onNavigationChange;
|
|
79
83
|
const record = (event: Event) => {
|
|
@@ -238,6 +242,7 @@ function renderSidebar(
|
|
|
238
242
|
storageKey?: string,
|
|
239
243
|
strictMode = false,
|
|
240
244
|
mcpSuggestionExcludedIntegrationIds?: readonly string[],
|
|
245
|
+
panelHost?: HTMLElement,
|
|
241
246
|
) {
|
|
242
247
|
const render = (nextEnabled: boolean) => {
|
|
243
248
|
flushSync(() => {
|
|
@@ -252,6 +257,7 @@ function renderSidebar(
|
|
|
252
257
|
mcpSuggestionExcludedIntegrationIds
|
|
253
258
|
}
|
|
254
259
|
openOnChatRunning={openOnChatRunning}
|
|
260
|
+
panelHost={panelHost}
|
|
255
261
|
position={position}
|
|
256
262
|
screenRefreshEnabled={screenRefreshEnabled}
|
|
257
263
|
storageKey={storageKey}
|
|
@@ -2296,6 +2302,108 @@ describe("AgentSidebar panel", () => {
|
|
|
2296
2302
|
expect(container?.querySelector("textarea")).toBeTruthy();
|
|
2297
2303
|
});
|
|
2298
2304
|
|
|
2305
|
+
describe("in a host's element", () => {
|
|
2306
|
+
function renderHosted(attached = true) {
|
|
2307
|
+
const host = document.createElement("div");
|
|
2308
|
+
if (attached) document.body.appendChild(host);
|
|
2309
|
+
renderSidebar(
|
|
2310
|
+
true,
|
|
2311
|
+
undefined,
|
|
2312
|
+
false,
|
|
2313
|
+
true,
|
|
2314
|
+
true,
|
|
2315
|
+
false,
|
|
2316
|
+
false,
|
|
2317
|
+
undefined,
|
|
2318
|
+
false,
|
|
2319
|
+
undefined,
|
|
2320
|
+
host,
|
|
2321
|
+
);
|
|
2322
|
+
return host;
|
|
2323
|
+
}
|
|
2324
|
+
|
|
2325
|
+
const press = (init: KeyboardEventInit) =>
|
|
2326
|
+
act(async () => {
|
|
2327
|
+
document.dispatchEvent(
|
|
2328
|
+
new KeyboardEvent("keydown", {
|
|
2329
|
+
bubbles: true,
|
|
2330
|
+
cancelable: true,
|
|
2331
|
+
...init,
|
|
2332
|
+
}),
|
|
2333
|
+
);
|
|
2334
|
+
});
|
|
2335
|
+
|
|
2336
|
+
it("draws the chat there and keeps it mounted after it closes", async () => {
|
|
2337
|
+
mockPanel.resolveImport();
|
|
2338
|
+
const host = renderHosted();
|
|
2339
|
+
await act(async () => {});
|
|
2340
|
+
|
|
2341
|
+
expect(
|
|
2342
|
+
host.querySelector("[data-agent-sidebar-layout='hosted']"),
|
|
2343
|
+
).toBeTruthy();
|
|
2344
|
+
expect(container?.querySelector(".agent-sidebar-panel")).toBeNull();
|
|
2345
|
+
expect(host.querySelector("textarea")).toBeTruthy();
|
|
2346
|
+
|
|
2347
|
+
await act(async () => {
|
|
2348
|
+
window.dispatchEvent(new CustomEvent("agent-panel:close"));
|
|
2349
|
+
});
|
|
2350
|
+
expect(
|
|
2351
|
+
host.querySelector("[data-agent-sidebar-state='closed']"),
|
|
2352
|
+
).toBeTruthy();
|
|
2353
|
+
expect(host.querySelector("textarea")).toBeTruthy();
|
|
2354
|
+
host.remove();
|
|
2355
|
+
});
|
|
2356
|
+
|
|
2357
|
+
it("does not take focus from the tab that opened it", async () => {
|
|
2358
|
+
mockPanel.resolveImport();
|
|
2359
|
+
const host = renderHosted();
|
|
2360
|
+
await act(async () => {});
|
|
2361
|
+
|
|
2362
|
+
expect(mockPanel.composerAutoFocus).toBe(false);
|
|
2363
|
+
host.remove();
|
|
2364
|
+
});
|
|
2365
|
+
|
|
2366
|
+
it("leaves its panel keys to the host", async () => {
|
|
2367
|
+
mockPanel.resolveImport();
|
|
2368
|
+
const host = renderHosted();
|
|
2369
|
+
await act(async () => {});
|
|
2370
|
+
await act(async () => {
|
|
2371
|
+
window.dispatchEvent(new CustomEvent("agent-panel:close"));
|
|
2372
|
+
});
|
|
2373
|
+
|
|
2374
|
+
await press({ code: "Backslash", key: "\\", ctrlKey: true });
|
|
2375
|
+
await press({ key: "i", metaKey: true, shiftKey: true });
|
|
2376
|
+
expect(
|
|
2377
|
+
host.querySelector("[data-agent-sidebar-state='open']"),
|
|
2378
|
+
).toBeNull();
|
|
2379
|
+
|
|
2380
|
+
await press({ key: "i", metaKey: true });
|
|
2381
|
+
expect(
|
|
2382
|
+
host.querySelector("[data-agent-sidebar-state='open']"),
|
|
2383
|
+
).toBeTruthy();
|
|
2384
|
+
host.remove();
|
|
2385
|
+
});
|
|
2386
|
+
|
|
2387
|
+
it("answers ⌘\\ itself while the host's element isn't on the page", async () => {
|
|
2388
|
+
mockPanel.resolveImport();
|
|
2389
|
+
const host = renderHosted(false);
|
|
2390
|
+
await act(async () => {});
|
|
2391
|
+
await act(async () => {
|
|
2392
|
+
window.dispatchEvent(new CustomEvent("agent-panel:close"));
|
|
2393
|
+
});
|
|
2394
|
+
|
|
2395
|
+
await press({ key: "i", metaKey: true, shiftKey: true });
|
|
2396
|
+
expect(
|
|
2397
|
+
host.querySelector("[data-agent-sidebar-state='open']"),
|
|
2398
|
+
).toBeNull();
|
|
2399
|
+
|
|
2400
|
+
await press({ code: "Backslash", key: "\\", ctrlKey: true });
|
|
2401
|
+
expect(
|
|
2402
|
+
host.querySelector("[data-agent-sidebar-state='open']"),
|
|
2403
|
+
).toBeTruthy();
|
|
2404
|
+
});
|
|
2405
|
+
});
|
|
2406
|
+
|
|
2299
2407
|
it("pauses screen refresh until the panel is active", () => {
|
|
2300
2408
|
renderSidebar(false);
|
|
2301
2409
|
|