@blade-hq/agent-react 2612.0.0-beta.76 → 2612.0.0-beta.78

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 (62) hide show
  1. package/README.md +15 -1
  2. package/dist/SessionPluginConfigForm-7LJ5SUNY.js +9 -0
  3. package/dist/SessionPluginConfigForm-7LJ5SUNY.js.map +1 -0
  4. package/dist/chat/LiteMessageList.d.ts +4 -0
  5. package/dist/chat/TurnNavRail.d.ts +1 -4
  6. package/dist/chat/index.d.ts +2 -1
  7. package/dist/chat/turn-locate-channel.d.ts +53 -0
  8. package/dist/{chunk-XP6T6SHZ.js → chunk-66JXSDLB.js} +1186 -1038
  9. package/dist/chunk-66JXSDLB.js.map +1 -0
  10. package/dist/{chunk-XJ6ZA6LN.js → chunk-C3LBNHVM.js} +12 -10
  11. package/dist/{chunk-XJ6ZA6LN.js.map → chunk-C3LBNHVM.js.map} +1 -1
  12. package/dist/chunk-F4MWGSKX.js +1308 -0
  13. package/dist/chunk-F4MWGSKX.js.map +1 -0
  14. package/dist/{chunk-7MCGQH34.js → chunk-FBGCDXRK.js} +116 -114
  15. package/dist/chunk-FBGCDXRK.js.map +1 -0
  16. package/dist/{chunk-HCW7SI5Q.js → chunk-FDB3J5QF.js} +8 -6
  17. package/dist/{chunk-HCW7SI5Q.js.map → chunk-FDB3J5QF.js.map} +1 -1
  18. package/dist/{chunk-J72ZLILV.js → chunk-FH5HA3GW.js} +554 -455
  19. package/dist/chunk-FH5HA3GW.js.map +1 -0
  20. package/dist/chunk-KHJEIHMJ.js +973 -0
  21. package/dist/chunk-KHJEIHMJ.js.map +1 -0
  22. package/dist/{chunk-QIR73CES.js → chunk-MWILWSPG.js} +7396 -5684
  23. package/dist/chunk-MWILWSPG.js.map +1 -0
  24. package/dist/{chunk-WRIMPZPN.js → chunk-NRYLAO3X.js} +102 -155
  25. package/dist/chunk-NRYLAO3X.js.map +1 -0
  26. package/dist/{chunk-2DPLLZOU.js → chunk-SK43YNRX.js} +151 -1442
  27. package/dist/chunk-SK43YNRX.js.map +1 -0
  28. package/dist/components/AccountConnectorRules.d.ts +7 -0
  29. package/dist/components/BrowserConnectionDialog.d.ts +3 -2
  30. package/dist/components/ConfigConnection.d.ts +16 -0
  31. package/dist/components/ConnectorDetail.d.ts +46 -0
  32. package/dist/components/ConnectorRulesPanel.d.ts +10 -0
  33. package/dist/components/ConnectorRuntimeDiagnostics.d.ts +2 -2
  34. package/dist/components/DeviceConnection.d.ts +3 -1
  35. package/dist/components/FeishuPermissionStatus.d.ts +3 -1
  36. package/dist/components/ManagedConnection.d.ts +5 -2
  37. package/dist/components/PackEventNotice.d.ts +3 -0
  38. package/dist/components/SessionPluginConfigForm.d.ts +2 -1
  39. package/dist/connectors.d.ts +4 -0
  40. package/dist/connectors.js +10 -2
  41. package/dist/embed/entry.d.ts +4 -0
  42. package/dist/hooks/use-turn-navigation.d.ts +19 -0
  43. package/dist/index.d.ts +4 -0
  44. package/dist/index.js +16 -7
  45. package/dist/internal.d.ts +1 -1
  46. package/dist/internal.js +18 -9
  47. package/dist/internal.js.map +1 -1
  48. package/dist/questions.js +8 -6
  49. package/dist/questions.js.map +1 -1
  50. package/dist/rich-input.js +32 -13
  51. package/dist/rich-input.js.map +1 -1
  52. package/dist/style.full.css +1 -1
  53. package/dist/tool-details.js +5 -4
  54. package/dist/tool-details.js.map +1 -1
  55. package/package.json +2 -2
  56. package/public-api.md +46 -2
  57. package/dist/chunk-2DPLLZOU.js.map +0 -1
  58. package/dist/chunk-7MCGQH34.js.map +0 -1
  59. package/dist/chunk-J72ZLILV.js.map +0 -1
  60. package/dist/chunk-QIR73CES.js.map +0 -1
  61. package/dist/chunk-WRIMPZPN.js.map +0 -1
  62. package/dist/chunk-XP6T6SHZ.js.map +0 -1
@@ -1,17 +1,19 @@
1
+ import {
2
+ ConfigConnection,
3
+ ConnectorRulesPanel,
4
+ Dialog,
5
+ DialogContent,
6
+ DialogTitle,
7
+ clsx
8
+ } from "./chunk-MWILWSPG.js";
1
9
  import {
2
10
  Check,
3
11
  ChevronDown,
4
12
  Circle,
5
13
  CircleDot,
6
14
  ListChecks,
7
- LoaderCircle,
8
- X,
9
- clsx,
10
- cn,
11
- dist_exports3 as dist_exports,
12
- loopTabInShadowRoot,
13
- useOverlayRoot
14
- } from "./chunk-QIR73CES.js";
15
+ LoaderCircle
16
+ } from "./chunk-KHJEIHMJ.js";
15
17
 
16
18
  // src/context.tsx
17
19
  import { createContext, useContext } from "react";
@@ -3435,7 +3437,7 @@ var getDefaultConfig = () => {
3435
3437
  var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
3436
3438
 
3437
3439
  // src/lib/utils.ts
3438
- function cn2(...inputs) {
3440
+ function cn(...inputs) {
3439
3441
  return twMerge(clsx(inputs));
3440
3442
  }
3441
3443
  async function copyToClipboard(text) {
@@ -3556,7 +3558,7 @@ function PlanUpdateBlock({
3556
3558
  const completed = data.plan.filter((item) => item.status === "completed").length;
3557
3559
  const currentStep = pickCurrentPlanStep(data.plan);
3558
3560
  const pausedAtCurrentStep = !running && currentStep?.status === "in_progress";
3559
- return /* @__PURE__ */ jsxs("section", { part: "plan-block", className: cn2("blade-chat-plan-block overflow-hidden", className), children: [
3561
+ return /* @__PURE__ */ jsxs("section", { part: "plan-block", className: cn("blade-chat-plan-block overflow-hidden", className), children: [
3560
3562
  /* @__PURE__ */ jsxs(
3561
3563
  "button",
3562
3564
  {
@@ -3569,7 +3571,7 @@ function PlanUpdateBlock({
3569
3571
  }
3570
3572
  setCollapsed((value) => !value);
3571
3573
  },
3572
- className: cn2(
3574
+ className: cn(
3573
3575
  "flex w-full items-center gap-2 px-3 py-2 text-left transition-colors hover:bg-[hsl(var(--muted)/0.3)]",
3574
3576
  !collapsed && "border-b border-[hsl(var(--border))]"
3575
3577
  ),
@@ -3592,7 +3594,7 @@ function PlanUpdateBlock({
3592
3594
  ChevronDown,
3593
3595
  {
3594
3596
  size: 14,
3595
- className: cn2(
3597
+ className: cn(
3596
3598
  "shrink-0 text-[hsl(var(--muted-foreground))] transition-transform duration-300 ease-out motion-reduce:transition-none",
3597
3599
  !collapsed && "rotate-180"
3598
3600
  )
@@ -3605,7 +3607,7 @@ function PlanUpdateBlock({
3605
3607
  "div",
3606
3608
  {
3607
3609
  "aria-hidden": collapsed,
3608
- className: cn2(
3610
+ className: cn(
3609
3611
  "grid transition-[grid-template-rows,opacity] duration-300 ease-out motion-reduce:transition-none",
3610
3612
  collapsed ? "grid-rows-[0fr] opacity-0" : "grid-rows-[1fr] opacity-100"
3611
3613
  ),
@@ -3614,7 +3616,7 @@ function PlanUpdateBlock({
3614
3616
  /* @__PURE__ */ jsx2(
3615
3617
  "span",
3616
3618
  {
3617
- className: cn2(
3619
+ className: cn(
3618
3620
  "min-w-0 flex-1 break-words text-[13px] leading-5",
3619
3621
  item.status === "completed" ? "text-[hsl(var(--muted-foreground))]" : item.status === "in_progress" ? "font-medium text-[hsl(var(--foreground))]" : "text-[hsl(var(--muted-foreground))]"
3620
3622
  ),
@@ -3627,46 +3629,91 @@ function PlanUpdateBlock({
3627
3629
  ] });
3628
3630
  }
3629
3631
 
3632
+ // src/components/AccountConnectorRules.tsx
3633
+ import { useCallback } from "react";
3634
+ import { jsx as jsx3 } from "react/jsx-runtime";
3635
+ function AccountConnectorRules({ client, name, refresh = 0 }) {
3636
+ const read = useCallback(() => client.connectors.rules(name), [client, name]);
3637
+ const update = useCallback((set) => client.connectors.updateRules(name, set), [client, name]);
3638
+ return /* @__PURE__ */ jsx3(ConnectorRulesPanel, { compact: true, read, update, refresh }, name);
3639
+ }
3640
+
3630
3641
  // src/components/BrowserConnectionDialog.tsx
3631
- import { useEffect as useEffect2, useRef as useRef2 } from "react";
3632
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
3633
- function BrowserConnectionDialog({ client, name, label = "\u4E1A\u52A1\u8D26\u53F7", onClose }) {
3634
- const dialog = useRef2(null);
3635
- const frame = useRef2(null);
3636
- const url = new URL(client.connectors.browserAuthorizationUrl(name), window.location.href);
3637
- url.searchParams.set("embedded", "1");
3638
- const origin = url.origin;
3642
+ import { useEffect as useEffect2, useRef as useRef2, useState as useState2 } from "react";
3643
+ import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
3644
+ function BrowserConnectionDialog({ client, name, label = "\u4E1A\u52A1\u8D26\u53F7", connector, onClose }) {
3645
+ const [connection, setConnection] = useState2(connector?.connection);
3646
+ const [editing, setEditing] = useState2(false);
3647
+ const [refresh, setRefresh] = useState2(0);
3648
+ const [frame, setFrame] = useState2(null);
3649
+ const alive = useRef2(false);
3639
3650
  useEffect2(() => {
3640
- const element = dialog.current;
3641
- element?.showModal();
3642
- return () => element?.close();
3651
+ alive.current = true;
3652
+ return () => {
3653
+ alive.current = false;
3654
+ };
3643
3655
  }, []);
3656
+ const status = connection?.status ?? "disconnected";
3657
+ const showLogin = status !== "connected" || editing;
3658
+ const url = new URL(client.connectors.browserAuthorizationUrl(name), window.location.href);
3659
+ const origin = url.origin;
3644
3660
  useEffect2(() => {
3645
- if (!frame.current) return;
3646
- return client.connectors.bindBrowserAuthorizationFrame(frame.current, name);
3647
- }, [client, name]);
3661
+ if (!showLogin || !frame) return;
3662
+ return client.connectors.bindBrowserAuthorizationFrame(frame, name);
3663
+ }, [client, name, showLogin, frame]);
3648
3664
  useEffect2(() => {
3649
3665
  const receive = (event) => {
3650
- if (event.origin === origin && event.source === frame.current?.contentWindow && event.data?.type === "blade:connector-auth-close") onClose();
3666
+ if (event.origin === origin && event.source === frame?.contentWindow && event.data?.type === "blade:connector-auth-close") onClose();
3651
3667
  };
3652
3668
  window.addEventListener("message", receive);
3653
3669
  return () => window.removeEventListener("message", receive);
3654
- }, [origin, onClose]);
3655
- return /* @__PURE__ */ jsx3("dialog", { ref: dialog, "aria-label": `\u8FDE\u63A5 ${label}`, onCancel: (event) => {
3656
- event.preventDefault();
3657
- onClose();
3658
- }, className: "fixed inset-0 m-auto h-[min(820px,90dvh)] max-h-none w-[min(960px,calc(100%_-_32px))] max-w-none overflow-hidden rounded-2xl border border-[hsl(var(--border))] bg-[hsl(var(--background))] p-0 text-[hsl(var(--foreground))] shadow-xl backdrop:bg-black/45", children: /* @__PURE__ */ jsxs2("div", { className: "flex h-full min-h-0 flex-col", children: [
3659
- /* @__PURE__ */ jsxs2("header", { className: "flex shrink-0 items-center justify-between gap-3 border-b border-[hsl(var(--border))] px-4 py-3", children: [
3660
- /* @__PURE__ */ jsxs2("h2", { className: "text-sm font-medium", children: [
3661
- "\u8FDE\u63A5 ",
3662
- label
3663
- ] }),
3664
- /* @__PURE__ */ jsxs2("button", { type: "button", className: "inline-flex h-8 shrink-0 items-center justify-center gap-1.5 rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--background))] px-3 text-xs font-medium hover:bg-[hsl(var(--accent))]", onClick: onClose, children: [
3665
- /* @__PURE__ */ jsx3(X, { size: 14, "aria-hidden": "true" }),
3666
- "\u8FD4\u56DE\u8FDE\u63A5\u5668"
3667
- ] })
3670
+ }, [origin, onClose, frame]);
3671
+ const login = /* @__PURE__ */ jsxs2("div", { className: "space-y-3", children: [
3672
+ /* @__PURE__ */ jsx4("p", { className: "text-xs opacity-70", children: "\u5728\u4E0B\u65B9\u9875\u9762\u5B8C\u6210\u767B\u5F55\u6216\u626B\u7801\uFF0C\u7136\u540E\u786E\u8BA4\u767B\u5F55\u3002\u9700\u8981\u9000\u51FA\u65F6\u53EF\u8FD4\u56DE\u8FDE\u63A5\u5668\u3002" }),
3673
+ /* @__PURE__ */ jsx4("iframe", { ref: setFrame, title: `${label}\u767B\u5F55\u9875\u9762`, className: "h-[min(560px,60dvh)] w-full border-0" })
3674
+ ] });
3675
+ return /* @__PURE__ */ jsx4(Dialog, { open: true, onOpenChange: (open) => {
3676
+ if (!open) onClose();
3677
+ }, children: /* @__PURE__ */ jsxs2(DialogContent, { "aria-describedby": void 0, className: "max-h-[90dvh] overflow-y-auto sm:max-w-[800px]", children: [
3678
+ /* @__PURE__ */ jsxs2(DialogTitle, { className: "sr-only", children: [
3679
+ "\u8FDE\u63A5 ",
3680
+ label
3668
3681
  ] }),
3669
- /* @__PURE__ */ jsx3("iframe", { ref: frame, title: `${label}\u767B\u5F55\u9875\u9762`, className: "min-h-0 w-full flex-1 border-0" })
3682
+ /* @__PURE__ */ jsx4(
3683
+ ConfigConnection,
3684
+ {
3685
+ editDescription: "\u91CD\u65B0\u767B\u5F55\u4E1A\u52A1\u8D26\u53F7",
3686
+ detail: { title: label, rules: /* @__PURE__ */ jsx4(AccountConnectorRules, { client, name, refresh }) },
3687
+ status,
3688
+ account: connection?.account_label,
3689
+ verifiedAt: connection?.verified_at,
3690
+ onEdit: () => setEditing(true),
3691
+ connection: login,
3692
+ onDisconnect: async () => {
3693
+ const view = await client.connectors.disconnect(name);
3694
+ if (alive.current) {
3695
+ setConnection(view.connection);
3696
+ setEditing(false);
3697
+ setRefresh((value) => value + 1);
3698
+ }
3699
+ },
3700
+ onVerify: async () => {
3701
+ const view = await client.connectors.verify(name);
3702
+ if (alive.current) {
3703
+ setConnection(view.connection);
3704
+ setRefresh((value) => value + 1);
3705
+ }
3706
+ }
3707
+ }
3708
+ ),
3709
+ editing && status === "connected" && /* @__PURE__ */ jsx4(Dialog, { open: true, onOpenChange: (open) => {
3710
+ if (!open) setEditing(false);
3711
+ }, children: /* @__PURE__ */ jsxs2(DialogContent, { "aria-describedby": void 0, className: "max-h-[90dvh] overflow-y-auto sm:max-w-[800px]", children: [
3712
+ /* @__PURE__ */ jsx4(DialogTitle, { children: "\u66F4\u6362\u8D26\u53F7" }),
3713
+ /* @__PURE__ */ jsx4("p", { children: "\u5B8C\u6210\u767B\u5F55\u5E76\u9A8C\u8BC1\u540E\u66FF\u6362\u5F53\u524D\u8D26\u53F7\uFF0C\u4F7F\u7528\u89C4\u5219\u4FDD\u7559\u3002" }),
3714
+ login
3715
+ ] }) }),
3716
+ /* @__PURE__ */ jsx4("button", { type: "button", className: "min-h-10 rounded-lg border px-4 text-sm", onClick: onClose, children: "\u8FD4\u56DE\u8FDE\u63A5\u5668" })
3670
3717
  ] }) });
3671
3718
  }
3672
3719
 
@@ -3679,10 +3726,10 @@ import {
3679
3726
  useLayoutEffect,
3680
3727
  useMemo,
3681
3728
  useRef as useRef3,
3682
- useState as useState2,
3729
+ useState as useState3,
3683
3730
  useSyncExternalStore
3684
3731
  } from "react";
3685
- import { jsx as jsx4 } from "react/jsx-runtime";
3732
+ import { jsx as jsx5 } from "react/jsx-runtime";
3686
3733
  var EMPTY_SOURCE = {
3687
3734
  subscribe: () => () => {
3688
3735
  },
@@ -3692,7 +3739,7 @@ var EMPTY_SOURCE = {
3692
3739
  };
3693
3740
  var SessionSourceContext = createContext2(EMPTY_SOURCE);
3694
3741
  function SessionSourceProvider({ source, children }) {
3695
- return /* @__PURE__ */ jsx4(SessionSourceContext.Provider, { value: source, children });
3742
+ return /* @__PURE__ */ jsx5(SessionSourceContext.Provider, { value: source, children });
3696
3743
  }
3697
3744
  function useSessionSource() {
3698
3745
  return useContext2(SessionSourceContext);
@@ -3737,7 +3784,7 @@ var SingleSessionSource = class {
3737
3784
  }
3738
3785
  };
3739
3786
  function useSingleSessionSource(session, loading) {
3740
- const [source] = useState2(() => new SingleSessionSource());
3787
+ const [source] = useState3(() => new SingleSessionSource());
3741
3788
  useLayoutEffect(() => {
3742
3789
  source.update(session, loading);
3743
3790
  }, [source, session, loading]);
@@ -3799,7 +3846,7 @@ function usePlanRevealRevision(sessionId) {
3799
3846
  }
3800
3847
  var CurrentChatSessionContext = createContext2(null);
3801
3848
  function CurrentChatSessionProvider({ sessionId, children }) {
3802
- return /* @__PURE__ */ jsx4(CurrentChatSessionContext.Provider, { value: sessionId, children });
3849
+ return /* @__PURE__ */ jsx5(CurrentChatSessionContext.Provider, { value: sessionId, children });
3803
3850
  }
3804
3851
  function useCurrentChatSessionId() {
3805
3852
  return useContext2(CurrentChatSessionContext);
@@ -3807,11 +3854,11 @@ function useCurrentChatSessionId() {
3807
3854
 
3808
3855
  // src/chat/runtime/environment.tsx
3809
3856
  import { createContext as createContext3, useContext as useContext3, useMemo as useMemo2 } from "react";
3810
- import { jsx as jsx5 } from "react/jsx-runtime";
3857
+ import { jsx as jsx6 } from "react/jsx-runtime";
3811
3858
  var EMPTY_ENVIRONMENT = {};
3812
3859
  var ChatEnvironmentContext = createContext3(EMPTY_ENVIRONMENT);
3813
3860
  function ChatEnvironmentProvider({ value, children }) {
3814
- return /* @__PURE__ */ jsx5(ChatEnvironmentContext.Provider, { value, children });
3861
+ return /* @__PURE__ */ jsx6(ChatEnvironmentContext.Provider, { value, children });
3815
3862
  }
3816
3863
  function useChatEnvironment() {
3817
3864
  return useContext3(ChatEnvironmentContext);
@@ -3886,108 +3933,12 @@ function useChatVirtualizer(options) {
3886
3933
  return { virtualizer, enabled: Boolean(injected) };
3887
3934
  }
3888
3935
 
3889
- // ../ui/src/components/dialog.tsx
3890
- import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
3891
- function Dialog({
3892
- ...props
3893
- }) {
3894
- return /* @__PURE__ */ jsx6(dist_exports.Root, { "data-slot": "dialog", ...props });
3895
- }
3896
- function DialogClose({
3897
- ...props
3898
- }) {
3899
- return /* @__PURE__ */ jsx6(dist_exports.Close, { "data-slot": "dialog-close", ...props });
3900
- }
3901
-
3902
- // ../ui/src/composites/dialog.tsx
3903
- import { forwardRef } from "react";
3904
- import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
3905
- var DialogOverlay = forwardRef(function DialogOverlay2({ className, ...props }, ref) {
3906
- return /* @__PURE__ */ jsx7(
3907
- dist_exports.Overlay,
3908
- {
3909
- ref,
3910
- "data-slot": "dialog-overlay",
3911
- className: cn(
3912
- "fixed inset-0 z-50 bg-black/45 backdrop-blur-sm duration-(--motion-duration-fast) data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0",
3913
- className
3914
- ),
3915
- ...props
3916
- }
3917
- );
3918
- });
3919
- function DialogContent({
3920
- className,
3921
- children,
3922
- onKeyDown,
3923
- showCloseButton = true,
3924
- overlayClassName,
3925
- ...props
3926
- }) {
3927
- const overlayRoot = useOverlayRoot();
3928
- return /* @__PURE__ */ jsxs4(dist_exports.Portal, { "data-slot": "dialog-portal", container: overlayRoot, children: [
3929
- /* @__PURE__ */ jsx7(DialogOverlay, { className: overlayClassName }),
3930
- /* @__PURE__ */ jsxs4(
3931
- dist_exports.Content,
3932
- {
3933
- onKeyDown: (event) => {
3934
- onKeyDown?.(event);
3935
- loopTabInShadowRoot(event);
3936
- },
3937
- "data-slot": "dialog-content",
3938
- className: cn(
3939
- "fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-[12px] border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-6 shadow-[var(--swf-shadow-overlay)] duration-(--motion-duration-fast) data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
3940
- className
3941
- ),
3942
- ...props,
3943
- children: [
3944
- children,
3945
- showCloseButton && /* @__PURE__ */ jsxs4(
3946
- dist_exports.Close,
3947
- {
3948
- "data-slot": "dialog-close",
3949
- className: "absolute top-4 right-4 rounded-[8px] p-2 text-[hsl(var(--muted-foreground))] opacity-90 transition-colors hover:bg-[hsl(var(--accent))] hover:opacity-100 focus:outline-none disabled:pointer-events-none",
3950
- children: [
3951
- /* @__PURE__ */ jsx7(X, { size: 16 }),
3952
- /* @__PURE__ */ jsx7("span", { className: "sr-only", children: "\u5173\u95ED" })
3953
- ]
3954
- }
3955
- )
3956
- ]
3957
- }
3958
- )
3959
- ] });
3960
- }
3961
- function DialogTitle({ className, ...props }) {
3962
- return /* @__PURE__ */ jsx7(
3963
- dist_exports.Title,
3964
- {
3965
- "data-slot": "dialog-title",
3966
- className: cn("text-lg font-semibold text-[hsl(var(--foreground))]", className),
3967
- ...props
3968
- }
3969
- );
3970
- }
3971
- function DialogDescription({
3972
- className,
3973
- ...props
3974
- }) {
3975
- return /* @__PURE__ */ jsx7(
3976
- dist_exports.Description,
3977
- {
3978
- "data-slot": "dialog-description",
3979
- className: cn("text-sm text-[hsl(var(--muted-foreground))]", className),
3980
- ...props
3981
- }
3982
- );
3983
- }
3984
-
3985
3936
  export {
3986
3937
  BladeProvider,
3987
3938
  useBladeClient,
3988
3939
  useOptionalBladeClient,
3989
3940
  useBladeHost,
3990
- cn2 as cn,
3941
+ cn,
3991
3942
  copyToClipboard,
3992
3943
  getToolDescription,
3993
3944
  formatToolFileName,
@@ -4021,11 +3972,7 @@ export {
4021
3972
  notifyChat,
4022
3973
  useComposerBridge,
4023
3974
  useChatVirtualizer,
4024
- BrowserConnectionDialog,
4025
- Dialog,
4026
- DialogClose,
4027
- DialogContent,
4028
- DialogTitle,
4029
- DialogDescription
3975
+ AccountConnectorRules,
3976
+ BrowserConnectionDialog
4030
3977
  };
4031
- //# sourceMappingURL=chunk-WRIMPZPN.js.map
3978
+ //# sourceMappingURL=chunk-NRYLAO3X.js.map