@agent-native/toolkit 0.227.0 → 0.228.0-nightly-20261111004142

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.
Files changed (144) hide show
  1. package/agent-native.eject.json +8 -0
  2. package/dist/app/agent-page/AgentTabFrame.d.ts +2 -1
  3. package/dist/app/agent-page/AgentTabFrame.d.ts.map +1 -1
  4. package/dist/app/agent-page/AgentTabFrame.js +3 -2
  5. package/dist/app/agent-page/AgentTabFrame.js.map +1 -1
  6. package/dist/app/chat/AgentPanel.d.ts +15 -15
  7. package/dist/app/chat/AgentPanel.d.ts.map +1 -1
  8. package/dist/app/chat/AgentPanel.js.map +1 -1
  9. package/dist/app/chat/AgentSidebar.d.ts +7 -1
  10. package/dist/app/chat/AgentSidebar.d.ts.map +1 -1
  11. package/dist/app/chat/AgentSidebar.js +47 -16
  12. package/dist/app/chat/AgentSidebar.js.map +1 -1
  13. package/dist/app/chat/chat/surface-types.d.ts +26 -26
  14. package/dist/app/chat/chat/surface-types.d.ts.map +1 -1
  15. package/dist/app/extensions/EmbeddedExtension.d.ts.map +1 -1
  16. package/dist/app/extensions/EmbeddedExtension.js +6 -4
  17. package/dist/app/extensions/EmbeddedExtension.js.map +1 -1
  18. package/dist/app/extensions/ExtensionViewer.d.ts.map +1 -1
  19. package/dist/app/extensions/ExtensionViewer.js +6 -3
  20. package/dist/app/extensions/ExtensionViewer.js.map +1 -1
  21. package/dist/app/extensions/InlineExtensionFrame.d.ts.map +1 -1
  22. package/dist/app/extensions/InlineExtensionFrame.js +32 -28
  23. package/dist/app/extensions/InlineExtensionFrame.js.map +1 -1
  24. package/dist/app/extensions/use-extension-chat-submission.d.ts +14 -0
  25. package/dist/app/extensions/use-extension-chat-submission.d.ts.map +1 -0
  26. package/dist/app/extensions/use-extension-chat-submission.js +36 -0
  27. package/dist/app/extensions/use-extension-chat-submission.js.map +1 -0
  28. package/dist/app/i18n/catalogs/ar-SA.d.ts.map +1 -1
  29. package/dist/app/i18n/catalogs/ar-SA.js +16 -0
  30. package/dist/app/i18n/catalogs/ar-SA.js.map +1 -1
  31. package/dist/app/i18n/catalogs/de-DE.d.ts.map +1 -1
  32. package/dist/app/i18n/catalogs/de-DE.js +12 -0
  33. package/dist/app/i18n/catalogs/de-DE.js.map +1 -1
  34. package/dist/app/i18n/catalogs/en-US.d.ts +12 -0
  35. package/dist/app/i18n/catalogs/en-US.d.ts.map +1 -1
  36. package/dist/app/i18n/catalogs/en-US.js +12 -0
  37. package/dist/app/i18n/catalogs/en-US.js.map +1 -1
  38. package/dist/app/i18n/catalogs/es-ES.d.ts.map +1 -1
  39. package/dist/app/i18n/catalogs/es-ES.js +13 -0
  40. package/dist/app/i18n/catalogs/es-ES.js.map +1 -1
  41. package/dist/app/i18n/catalogs/fr-FR.d.ts.map +1 -1
  42. package/dist/app/i18n/catalogs/fr-FR.js +13 -0
  43. package/dist/app/i18n/catalogs/fr-FR.js.map +1 -1
  44. package/dist/app/i18n/catalogs/hi-IN.d.ts.map +1 -1
  45. package/dist/app/i18n/catalogs/hi-IN.js +12 -0
  46. package/dist/app/i18n/catalogs/hi-IN.js.map +1 -1
  47. package/dist/app/i18n/catalogs/ja-JP.d.ts.map +1 -1
  48. package/dist/app/i18n/catalogs/ja-JP.js +12 -0
  49. package/dist/app/i18n/catalogs/ja-JP.js.map +1 -1
  50. package/dist/app/i18n/catalogs/ko-KR.d.ts.map +1 -1
  51. package/dist/app/i18n/catalogs/ko-KR.js +12 -0
  52. package/dist/app/i18n/catalogs/ko-KR.js.map +1 -1
  53. package/dist/app/i18n/catalogs/pt-BR.d.ts.map +1 -1
  54. package/dist/app/i18n/catalogs/pt-BR.js +13 -0
  55. package/dist/app/i18n/catalogs/pt-BR.js.map +1 -1
  56. package/dist/app/i18n/catalogs/zh-CN.d.ts.map +1 -1
  57. package/dist/app/i18n/catalogs/zh-CN.js +12 -0
  58. package/dist/app/i18n/catalogs/zh-CN.js.map +1 -1
  59. package/dist/app/i18n/catalogs/zh-TW.d.ts.map +1 -1
  60. package/dist/app/i18n/catalogs/zh-TW.js +12 -0
  61. package/dist/app/i18n/catalogs/zh-TW.js.map +1 -1
  62. package/dist/app/org/OrgSwitcher.d.ts.map +1 -1
  63. package/dist/app/org/OrgSwitcher.js +3 -2
  64. package/dist/app/org/OrgSwitcher.js.map +1 -1
  65. package/dist/app/resources/McpAccessSettings.d.ts +9 -2
  66. package/dist/app/resources/McpAccessSettings.d.ts.map +1 -1
  67. package/dist/app/resources/McpAccessSettings.js +264 -86
  68. package/dist/app/resources/McpAccessSettings.js.map +1 -1
  69. package/dist/app/settings/api-keys/ApiKeyDialogs.d.ts +6 -0
  70. package/dist/app/settings/api-keys/ApiKeyDialogs.d.ts.map +1 -1
  71. package/dist/app/settings/api-keys/ApiKeyDialogs.js +74 -2
  72. package/dist/app/settings/api-keys/ApiKeyDialogs.js.map +1 -1
  73. package/dist/app/settings/api-keys/ApiKeysSettingsPage.d.ts.map +1 -1
  74. package/dist/app/settings/api-keys/ApiKeysSettingsPage.js +23 -9
  75. package/dist/app/settings/api-keys/ApiKeysSettingsPage.js.map +1 -1
  76. package/dist/app/settings/api-keys/api-keys-client.d.ts +10 -1
  77. package/dist/app/settings/api-keys/api-keys-client.d.ts.map +1 -1
  78. package/dist/app/settings/api-keys/api-keys-client.js +19 -1
  79. package/dist/app/settings/api-keys/api-keys-client.js.map +1 -1
  80. package/dist/app/settings/shell/pages/mcp.d.ts +1 -1
  81. package/dist/app/settings/shell/pages/mcp.d.ts.map +1 -1
  82. package/dist/app/settings/shell/pages/mcp.js +26 -20
  83. package/dist/app/settings/shell/pages/mcp.js.map +1 -1
  84. package/dist/app/sharing/ShareButton.d.ts +2 -0
  85. package/dist/app/sharing/ShareButton.d.ts.map +1 -1
  86. package/dist/app/sharing/ShareButton.js +4 -3
  87. package/dist/app/sharing/ShareButton.js.map +1 -1
  88. package/dist/composer/TiptapComposer.js +3 -0
  89. package/dist/composer/TiptapComposer.js.map +1 -1
  90. package/dist/sharing/ShareControls.d.ts +2 -0
  91. package/dist/sharing/ShareControls.d.ts.map +1 -1
  92. package/dist/sharing/ShareControls.js +7 -2
  93. package/dist/sharing/ShareControls.js.map +1 -1
  94. package/dist/ui/index.d.ts +1 -0
  95. package/dist/ui/index.d.ts.map +1 -1
  96. package/dist/ui/index.js +1 -0
  97. package/dist/ui/index.js.map +1 -1
  98. package/dist/ui/numbered-steps.d.ts +14 -0
  99. package/dist/ui/numbered-steps.d.ts.map +1 -0
  100. package/dist/ui/numbered-steps.js +19 -0
  101. package/dist/ui/numbered-steps.js.map +1 -0
  102. package/package.json +4 -4
  103. package/src/app/agent-page/AgentTabFrame.tsx +21 -10
  104. package/src/app/chat/AgentPanel.header.spec.ts +4 -1
  105. package/src/app/chat/AgentPanel.tsx +19 -14
  106. package/src/app/chat/AgentSidebar.spec.tsx +167 -0
  107. package/src/app/chat/AgentSidebar.tsx +170 -101
  108. package/src/app/chat/chat/surface-types.ts +35 -31
  109. package/src/app/extensions/EmbeddedExtension.height.spec.tsx +45 -0
  110. package/src/app/extensions/EmbeddedExtension.tsx +6 -3
  111. package/src/app/extensions/ExtensionViewer.spec.tsx +28 -0
  112. package/src/app/extensions/ExtensionViewer.tsx +6 -2
  113. package/src/app/extensions/InlineExtensionFrame.spec.tsx +23 -0
  114. package/src/app/extensions/InlineExtensionFrame.tsx +23 -15
  115. package/src/app/extensions/use-extension-chat-submission.tsx +101 -0
  116. package/src/app/i18n/catalogs/ar-SA.ts +17 -0
  117. package/src/app/i18n/catalogs/de-DE.ts +15 -0
  118. package/src/app/i18n/catalogs/en-US.ts +13 -0
  119. package/src/app/i18n/catalogs/es-ES.ts +16 -0
  120. package/src/app/i18n/catalogs/fr-FR.ts +16 -0
  121. package/src/app/i18n/catalogs/hi-IN.ts +13 -0
  122. package/src/app/i18n/catalogs/ja-JP.ts +15 -0
  123. package/src/app/i18n/catalogs/ko-KR.ts +14 -0
  124. package/src/app/i18n/catalogs/pt-BR.ts +15 -0
  125. package/src/app/i18n/catalogs/zh-CN.ts +13 -0
  126. package/src/app/i18n/catalogs/zh-TW.ts +13 -0
  127. package/src/app/integrations/IntegrationsPanel.spec.tsx +1 -1
  128. package/src/app/org/OrgSwitcher.spec.tsx +43 -0
  129. package/src/app/org/OrgSwitcher.tsx +29 -24
  130. package/src/app/resources/McpAccessSettings.spec.tsx +354 -278
  131. package/src/app/resources/McpAccessSettings.tsx +1012 -323
  132. package/src/app/settings/api-keys/ApiKeyDialogs.tsx +148 -1
  133. package/src/app/settings/api-keys/ApiKeysSettingsPage.spec.tsx +190 -0
  134. package/src/app/settings/api-keys/ApiKeysSettingsPage.tsx +40 -1
  135. package/src/app/settings/api-keys/api-keys-client.spec.ts +49 -0
  136. package/src/app/settings/api-keys/api-keys-client.ts +32 -0
  137. package/src/app/settings/shell/pages/app-group-pages.spec.tsx +31 -21
  138. package/src/app/settings/shell/pages/mcp.tsx +50 -42
  139. package/src/app/sharing/ShareButton.tsx +10 -3
  140. package/src/composer/TiptapComposer.tsx +2 -0
  141. package/src/composer/TiptapComposer.voice-toolbar.spec.tsx +16 -0
  142. package/src/sharing/ShareControls.tsx +44 -24
  143. package/src/ui/index.ts +1 -0
  144. package/src/ui/numbered-steps.tsx +104 -0
@@ -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":"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"}
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, _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(Button, { type: "button", size: "sm", variant: "default", className: cn("w-8 shrink-0 px-0 shadow-none", 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 })] })] }));
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":"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"}
1
+ {"version":3,"file":"ShareControls.js","sourceRoot":"","sources":["../../src/sharing/ShareControls.tsx"],"names":[],"mappings":"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"}
@@ -32,6 +32,7 @@ export * from "./label.js";
32
32
  export * from "./logo.js";
33
33
  export * from "./menubar.js";
34
34
  export * from "./navigation-menu.js";
35
+ export * from "./numbered-steps.js";
35
36
  export * from "./pagination.js";
36
37
  export * from "./pointer-lock.js";
37
38
  export * from "./popover.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AACvD,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AACvD,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
package/dist/ui/index.js CHANGED
@@ -32,6 +32,7 @@ export * from "./label.js";
32
32
  export * from "./logo.js";
33
33
  export * from "./menubar.js";
34
34
  export * from "./navigation-menu.js";
35
+ export * from "./numbered-steps.js";
35
36
  export * from "./pagination.js";
36
37
  export * from "./pointer-lock.js";
37
38
  export * from "./popover.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AACvD,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AACvD,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { ComponentProps } from "react";
2
+ export declare function NumberedSteps({ className, ...props }: ComponentProps<"ol">): import("react").JSX.Element;
3
+ export declare function NumberedStep({ number, last, showConnector, variant, contentClassName, className, children, ...props }: ComponentProps<"li"> & {
4
+ number: number;
5
+ last?: boolean;
6
+ showConnector?: boolean;
7
+ variant?: "outline" | "secondary";
8
+ contentClassName?: string;
9
+ }): import("react").JSX.Element;
10
+ export declare function NumberedStepTitle({ asChild, className, ...props }: ComponentProps<"h3"> & {
11
+ asChild?: boolean;
12
+ }): import("react").JSX.Element;
13
+ export declare function NumberedStepBody({ className, ...props }: ComponentProps<"div">): import("react").JSX.Element;
14
+ //# sourceMappingURL=numbered-steps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbered-steps.d.ts","sourceRoot":"","sources":["../../src/ui/numbered-steps.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAI5C,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,+BAS1E;AAED,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,IAAY,EACZ,aAAoB,EACpB,OAAmB,EACnB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,+BAyCA;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAe,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,+BAY9C;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,+BAQvB"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Slot } from "@radix-ui/react-slot";
3
+ import { cn } from "../utils.js";
4
+ export function NumberedSteps({ className, ...props }) {
5
+ return (_jsx("ol", { "data-slot": "numbered-steps", role: "list", className: cn("my-6 list-none p-0", className), ...props }));
6
+ }
7
+ export function NumberedStep({ number, last = false, showConnector = true, variant = "outline", contentClassName, className, children, ...props }) {
8
+ return (_jsxs("li", { "data-slot": "numbered-step", className: cn("flex items-stretch gap-4", className), ...props, children: [_jsxs("div", { "data-slot": "numbered-step-aside", className: cn("flex shrink-0 flex-col items-center", variant === "outline" && "pt-0.5"), "aria-hidden": "true", children: [_jsx("span", { "data-slot": "numbered-step-indicator", className: cn("relative z-10 flex size-[26px] shrink-0 items-center justify-center rounded-full text-xs font-semibold leading-none", variant === "secondary"
9
+ ? "bg-secondary text-secondary-foreground"
10
+ : "border-[1.5px] border-primary bg-background text-primary"), children: number }), !last && showConnector && (_jsx("span", { "data-slot": "numbered-step-connector", className: "my-1.5 min-h-6 w-[1.5px] flex-1 bg-border" }))] }), _jsx("div", { "data-slot": "numbered-step-content", className: cn("min-w-0 flex-1", !last && "pb-7", contentClassName), children: children })] }));
11
+ }
12
+ export function NumberedStepTitle({ asChild = false, className, ...props }) {
13
+ const Comp = asChild ? Slot : "h3";
14
+ return (_jsx(Comp, { "data-slot": "numbered-step-title", className: cn("mt-0.5 mb-2 text-sm font-semibold leading-normal text-foreground", className), ...props }));
15
+ }
16
+ export function NumberedStepBody({ className, ...props }) {
17
+ return (_jsx("div", { "data-slot": "numbered-step-body", className: cn("text-sm leading-6 text-muted-foreground", className), ...props }));
18
+ }
19
+ //# sourceMappingURL=numbered-steps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbered-steps.js","sourceRoot":"","sources":["../../src/ui/numbered-steps.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG5C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,UAAU,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAwB;IACzE,OAAO,CACL,0BACY,gBAAgB,EAC1B,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,SAAS,CAAC,KAC1C,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,MAAM,EACN,IAAI,GAAG,KAAK,EACZ,aAAa,GAAG,IAAI,EACpB,OAAO,GAAG,SAAS,EACnB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EAOT;IACC,OAAO,CACL,2BACY,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE,SAAS,CAAC,KAChD,KAAK,aAET,4BACY,qBAAqB,EAC/B,SAAS,EAAE,EAAE,CACX,qCAAqC,EACrC,OAAO,KAAK,SAAS,IAAI,QAAQ,CAClC,iBACW,MAAM,aAElB,4BACY,yBAAyB,EACnC,SAAS,EAAE,EAAE,CACX,qHAAqH,EACrH,OAAO,KAAK,WAAW;4BACrB,CAAC,CAAC,wCAAwC;4BAC1C,CAAC,CAAC,0DAA0D,CAC/D,YAEA,MAAM,GACF,EACN,CAAC,IAAI,IAAI,aAAa,IAAI,CACzB,4BACY,yBAAyB,EACnC,SAAS,EAAC,2CAA2C,GACrD,CACH,IACG,EACN,2BACY,uBAAuB,EACjC,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,IAAI,MAAM,EAAE,gBAAgB,CAAC,YAEjE,QAAQ,GACL,IACH,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,OAAO,GAAG,KAAK,EACf,SAAS,EACT,GAAG,KAAK,EACqC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACnC,OAAO,CACL,KAAC,IAAI,iBACO,qBAAqB,EAC/B,SAAS,EAAE,EAAE,CACX,kEAAkE,EAClE,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,SAAS,EACT,GAAG,KAAK,EACc;IACtB,OAAO,CACL,2BACY,oBAAoB,EAC9B,SAAS,EAAE,EAAE,CAAC,yCAAyC,EAAE,SAAS,CAAC,KAC/D,KAAK,GACT,CACH,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/toolkit",
3
- "version": "0.227.0",
3
+ "version": "0.228.0-nightly-20261111004142",
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.227.0"
719
+ "@agent-native/agentkit": "^0.228.0-nightly-20261111004142"
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.227.0"
743
+ "@agent-native/core": "^0.228.0-nightly-20261111004142"
744
744
  },
745
745
  "peerDependencies": {
746
- "@agent-native/core": ">=0.227.0-0",
746
+ "@agent-native/core": "0.228.0-nightly-20261111004142",
747
747
  "@excalidraw/excalidraw": ">=0.18",
748
748
  "@excalidraw/mermaid-to-excalidraw": ">=2",
749
749
  "@tanstack/react-query": "^5.99.2",
@@ -1,3 +1,4 @@
1
+ import { Button } from "@agent-native/toolkit/ui/button";
1
2
  import { cn } from "@agent-native/toolkit/utils";
2
3
  import { IconHelpCircle } from "@tabler/icons-react";
3
4
  import type { ReactNode } from "react";
@@ -7,6 +8,7 @@ interface AgentTabFrameProps {
7
8
  description: string;
8
9
  helpHref?: string;
9
10
  helpLabel?: string;
11
+ helpIcon?: ReactNode;
10
12
  actions?: ReactNode;
11
13
  children: ReactNode;
12
14
  className?: string;
@@ -18,6 +20,7 @@ export function AgentTabFrame({
18
20
  description,
19
21
  helpHref,
20
22
  helpLabel,
23
+ helpIcon,
21
24
  actions,
22
25
  children,
23
26
  className,
@@ -40,17 +43,25 @@ export function AgentTabFrame({
40
43
  {title}
41
44
  </h2>
42
45
  {helpHref && (
43
- <a
44
- href={helpHref}
45
- target="_blank"
46
- rel="noopener noreferrer"
47
- aria-label={helpLabel ?? `Open ${title} documentation`}
48
- title={helpLabel ?? `Open ${title} documentation`}
49
- className="inline-flex size-6 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground"
46
+ <Button
47
+ asChild
48
+ variant="ghost"
49
+ size="icon-xs"
50
+ className="shrink-0 text-muted-foreground [&_svg]:size-4"
50
51
  >
51
- {/* guard:allow-large-help-icon - heading documentation control */}
52
- <IconHelpCircle className="size-4" />
53
- </a>
52
+ <a
53
+ href={helpHref}
54
+ target="_blank"
55
+ rel="noopener noreferrer"
56
+ aria-label={helpLabel ?? `Open ${title} documentation`}
57
+ title={helpLabel ?? `Open ${title} documentation`}
58
+ >
59
+ {helpIcon ?? (
60
+ // guard:allow-large-help-icon - heading documentation control
61
+ <IconHelpCircle className="size-4" aria-hidden="true" />
62
+ )}
63
+ </a>
64
+ </Button>
54
65
  )}
55
66
  </div>
56
67
  <p className="max-w-2xl text-sm leading-relaxed text-muted-foreground">
@@ -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
- expect(source).toContain("showCollapseButton={showCollapseButton}");
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?: (input: { id: string; active: boolean }) => React.ReactNode;
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?: import("@agent-native/core/client/agent-chat").ChatThreadScope | null;
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}
@@ -588,6 +594,65 @@ describe("AgentSidebar panel", () => {
588
594
  }
589
595
  });
590
596
 
597
+ it("delivers a cold new-tab send after the panel switches to its new tab", async () => {
598
+ mockPanel.resolveImport();
599
+ mockPanel.composer = (
600
+ <div data-agent-chat-reference-target="restored">
601
+ <textarea />
602
+ </div>
603
+ );
604
+ // The panel mounts on the chat it last showed, then opens the send's own
605
+ // tab before the retained send is replayed.
606
+ mockPanel.onReady = (notify) => {
607
+ notify?.("restored", []);
608
+ container!
609
+ .querySelector("textarea")!
610
+ .parentElement!.setAttribute(
611
+ "data-agent-chat-reference-target",
612
+ "automation-tab",
613
+ );
614
+ notify?.("automation-tab", []);
615
+ };
616
+ const chat = await import("@agent-native/core/client/agent-chat");
617
+ const results: unknown[] = [];
618
+ const record = (event: Event) =>
619
+ results.push((event as CustomEvent).detail);
620
+ window.addEventListener(chat.AGENT_CHAT_SUBMIT_RESULT_EVENT, record);
621
+ try {
622
+ renderSidebar(false);
623
+ await act(async () => {
624
+ window.dispatchEvent(
625
+ new MessageEvent("message", {
626
+ origin: window.location.origin,
627
+ data: {
628
+ type: "agentNative.submitChat",
629
+ data: {
630
+ message: "Create an automation that does this: say ok",
631
+ submit: true,
632
+ newTab: true,
633
+ tabId: "automation-tab",
634
+ submitMessageId: "cold-new-tab-send",
635
+ },
636
+ },
637
+ }),
638
+ );
639
+ });
640
+ expect(results).toEqual([]);
641
+ expect(mockPanel.events).toEqual([
642
+ {
643
+ type: "message",
644
+ detail: expect.objectContaining({
645
+ data: expect.objectContaining({
646
+ submitMessageId: "cold-new-tab-send",
647
+ }),
648
+ }),
649
+ },
650
+ ]);
651
+ } finally {
652
+ window.removeEventListener(chat.AGENT_CHAT_SUBMIT_RESULT_EVENT, record);
653
+ }
654
+ });
655
+
591
656
  it.each(["second", "first-again", "missing-marker"])(
592
657
  "binds navigation references at commit before delayed acknowledgement (%s)",
593
658
  async (selection) => {
@@ -2296,6 +2361,108 @@ describe("AgentSidebar panel", () => {
2296
2361
  expect(container?.querySelector("textarea")).toBeTruthy();
2297
2362
  });
2298
2363
 
2364
+ describe("in a host's element", () => {
2365
+ function renderHosted(attached = true) {
2366
+ const host = document.createElement("div");
2367
+ if (attached) document.body.appendChild(host);
2368
+ renderSidebar(
2369
+ true,
2370
+ undefined,
2371
+ false,
2372
+ true,
2373
+ true,
2374
+ false,
2375
+ false,
2376
+ undefined,
2377
+ false,
2378
+ undefined,
2379
+ host,
2380
+ );
2381
+ return host;
2382
+ }
2383
+
2384
+ const press = (init: KeyboardEventInit) =>
2385
+ act(async () => {
2386
+ document.dispatchEvent(
2387
+ new KeyboardEvent("keydown", {
2388
+ bubbles: true,
2389
+ cancelable: true,
2390
+ ...init,
2391
+ }),
2392
+ );
2393
+ });
2394
+
2395
+ it("draws the chat there and keeps it mounted after it closes", async () => {
2396
+ mockPanel.resolveImport();
2397
+ const host = renderHosted();
2398
+ await act(async () => {});
2399
+
2400
+ expect(
2401
+ host.querySelector("[data-agent-sidebar-layout='hosted']"),
2402
+ ).toBeTruthy();
2403
+ expect(container?.querySelector(".agent-sidebar-panel")).toBeNull();
2404
+ expect(host.querySelector("textarea")).toBeTruthy();
2405
+
2406
+ await act(async () => {
2407
+ window.dispatchEvent(new CustomEvent("agent-panel:close"));
2408
+ });
2409
+ expect(
2410
+ host.querySelector("[data-agent-sidebar-state='closed']"),
2411
+ ).toBeTruthy();
2412
+ expect(host.querySelector("textarea")).toBeTruthy();
2413
+ host.remove();
2414
+ });
2415
+
2416
+ it("does not take focus from the tab that opened it", async () => {
2417
+ mockPanel.resolveImport();
2418
+ const host = renderHosted();
2419
+ await act(async () => {});
2420
+
2421
+ expect(mockPanel.composerAutoFocus).toBe(false);
2422
+ host.remove();
2423
+ });
2424
+
2425
+ it("leaves its panel keys to the host", async () => {
2426
+ mockPanel.resolveImport();
2427
+ const host = renderHosted();
2428
+ await act(async () => {});
2429
+ await act(async () => {
2430
+ window.dispatchEvent(new CustomEvent("agent-panel:close"));
2431
+ });
2432
+
2433
+ await press({ code: "Backslash", key: "\\", ctrlKey: true });
2434
+ await press({ key: "i", metaKey: true, shiftKey: true });
2435
+ expect(
2436
+ host.querySelector("[data-agent-sidebar-state='open']"),
2437
+ ).toBeNull();
2438
+
2439
+ await press({ key: "i", metaKey: true });
2440
+ expect(
2441
+ host.querySelector("[data-agent-sidebar-state='open']"),
2442
+ ).toBeTruthy();
2443
+ host.remove();
2444
+ });
2445
+
2446
+ it("answers ⌘\\ itself while the host's element isn't on the page", async () => {
2447
+ mockPanel.resolveImport();
2448
+ const host = renderHosted(false);
2449
+ await act(async () => {});
2450
+ await act(async () => {
2451
+ window.dispatchEvent(new CustomEvent("agent-panel:close"));
2452
+ });
2453
+
2454
+ await press({ key: "i", metaKey: true, shiftKey: true });
2455
+ expect(
2456
+ host.querySelector("[data-agent-sidebar-state='open']"),
2457
+ ).toBeNull();
2458
+
2459
+ await press({ code: "Backslash", key: "\\", ctrlKey: true });
2460
+ expect(
2461
+ host.querySelector("[data-agent-sidebar-state='open']"),
2462
+ ).toBeTruthy();
2463
+ });
2464
+ });
2465
+
2299
2466
  it("pauses screen refresh until the panel is active", () => {
2300
2467
  renderSidebar(false);
2301
2468