@dxos/shell 0.6.1-main.e05b43b → 0.6.1-main.fac53f5

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 (49) hide show
  1. package/dist/bundle/shell.mjs +198 -121
  2. package/dist/bundle/shell.mjs.map +1 -1
  3. package/dist/bundle/shell.umd.js +5 -5
  4. package/dist/bundle/shell.umd.js.map +1 -1
  5. package/dist/bundle/style.css +1 -1
  6. package/dist/lib/browser/meta.json +1 -1
  7. package/dist/lib/browser/react.mjs +171 -115
  8. package/dist/lib/browser/react.mjs.map +3 -3
  9. package/dist/types/src/components/AgentConfig.d.ts +1 -1
  10. package/dist/types/src/components/AgentConfig.d.ts.map +1 -1
  11. package/dist/types/src/components/AgentConfig.js +36 -24
  12. package/dist/types/src/components/AgentConfig.js.map +1 -1
  13. package/dist/types/src/components/DeviceList/DeviceList.d.ts +2 -2
  14. package/dist/types/src/components/DeviceList/DeviceList.d.ts.map +1 -1
  15. package/dist/types/src/components/DeviceList/DeviceList.js +2 -2
  16. package/dist/types/src/components/DeviceList/DeviceList.js.map +1 -1
  17. package/dist/types/src/components/DeviceList/DeviceListItem.d.ts +2 -2
  18. package/dist/types/src/components/DeviceList/DeviceListItem.d.ts.map +1 -1
  19. package/dist/types/src/components/DeviceList/DeviceListItem.js +11 -5
  20. package/dist/types/src/components/DeviceList/DeviceListItem.js.map +1 -1
  21. package/dist/types/src/components/DeviceList/DeviceListProps.d.ts +6 -7
  22. package/dist/types/src/components/DeviceList/DeviceListProps.d.ts.map +1 -1
  23. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -1
  24. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +2 -5
  25. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -1
  26. package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts +0 -1
  27. package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts.map +1 -1
  28. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts +1 -1
  29. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts.map +1 -1
  30. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js +5 -5
  31. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js.map +1 -1
  32. package/dist/types/src/panels/IdentityPanel/useAgentHandlers.d.ts +2 -7
  33. package/dist/types/src/panels/IdentityPanel/useAgentHandlers.d.ts.map +1 -1
  34. package/dist/types/src/panels/IdentityPanel/useAgentHandlers.js +78 -43
  35. package/dist/types/src/panels/IdentityPanel/useAgentHandlers.js.map +1 -1
  36. package/dist/types/src/translations/locales/en-US.d.ts +5 -0
  37. package/dist/types/src/translations/locales/en-US.d.ts.map +1 -1
  38. package/dist/types/src/translations/locales/en-US.js +5 -0
  39. package/dist/types/src/translations/locales/en-US.js.map +1 -1
  40. package/package.json +23 -23
  41. package/src/components/AgentConfig.tsx +100 -48
  42. package/src/components/DeviceList/DeviceList.tsx +4 -3
  43. package/src/components/DeviceList/DeviceListItem.tsx +66 -28
  44. package/src/components/DeviceList/DeviceListProps.ts +6 -7
  45. package/src/panels/IdentityPanel/IdentityPanel.tsx +2 -5
  46. package/src/panels/IdentityPanel/IdentityPanelProps.ts +0 -1
  47. package/src/panels/IdentityPanel/steps/IdentityActionChooser.tsx +7 -15
  48. package/src/panels/IdentityPanel/useAgentHandlers.ts +77 -41
  49. package/src/translations/locales/en-US.ts +6 -0
@@ -11,7 +11,7 @@ import * as React from "react";
11
11
  import React__default, { createContext, useContext, createElement, isValidElement, cloneElement, useState, useRef, useEffect, useMemo, useCallback, forwardRef, Children, Fragment, useLayoutEffect, useReducer, Suspense, StrictMode } from "react";
12
12
  import * as $7SXl2$reactdom from "react-dom";
13
13
  import $7SXl2$reactdom__default, { flushSync } from "react-dom";
14
- import { CaretDown, CaretRight, Minus, Check, Database, Power, Plus, Copy, UserCircle, Palette, Compass, Desktop, Robot, DeviceMobile, Devices, DotsThree, ShareFat, X, Placeholder, Warning, Key, PlugsConnected, Plugs, QrCode, Textbox, UserPlus, UsersThree, Planet } from "@phosphor-icons/react";
14
+ import { CaretDown, CaretRight, Minus, Check, Database, Power, Plus, ArrowsClockwise, Copy, UserCircle, Palette, Compass, Desktop, Robot, DeviceMobile, Devices, DotsThree, ShareFat, X, Placeholder, Warning, Key, PlugsConnected, Plugs, QrCode, Textbox, UserPlus, UsersThree, Planet } from "@phosphor-icons/react";
15
15
  import { SpaceMember as SpaceMember$1, useMembers, useSpaceInvitations, useSpace } from "@dxos/react-client/echo";
16
16
  import { useClient, useAgentHostingClient, AlreadyJoinedError, useMulticastObservable, useConfig, ShellLayout as ShellLayout$1, ShellDisplay as ShellDisplay$1, ClientServicesProxy, Client, ClientContext, SystemStatus as SystemStatus$1, AgentHostingProvider, Config } from "@dxos/react-client";
17
17
  import { DeviceKind as DeviceKind$1, Device as Device$1, DeviceType, useHaloInvitations, useDevices, useIdentity } from "@dxos/react-client/halo";
@@ -25857,39 +25857,66 @@ var hueTheme = {
25857
25857
  const q = get$1(_, $);
25858
25858
  return typeof q == "function" ? q(j, ...U) : I;
25859
25859
  }, defaultTx = bindTheme(defaultTheme);
25860
- const AgentConfig = ({ agentActive: _, agentStatus: $, onAgentDestroy: I, onAgentCreate: j }) => {
25861
- const { t: U } = useTranslation("os");
25862
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("h2", { className: mx(descriptionText, "text-center mbs-4") }, U("agent heading")), _ ? /* @__PURE__ */ React__default.createElement("div", { role: "group", className: "flex gap-2 items-center" }, /* @__PURE__ */ React__default.createElement(Avatar.Root, { status: $ ? "active" : "inactive", variant: "square" }, /* @__PURE__ */ React__default.createElement(Avatar.Frame, { classNames: "place-self-center" }, /* @__PURE__ */ React__default.createElement(Database, { weight: "duotone", width: 24, height: 24, x: 8, y: 8 })), /* @__PURE__ */ React__default.createElement(Avatar.Label, { classNames: "flex-1 text-sm truncate" }, U("agent device label"))), /* @__PURE__ */ React__default.createElement(Tooltip.Root, null, /* @__PURE__ */ React__default.createElement(Tooltip.Trigger, { asChild: !0 }, /* @__PURE__ */ React__default.createElement(
25863
- Button,
25860
+ const AgentConfig = ({
25861
+ agentStatus: _,
25862
+ validationMessage: $,
25863
+ onAgentDestroy: I,
25864
+ onAgentCreate: j,
25865
+ onAgentRefresh: U
25866
+ }) => {
25867
+ const { t: q } = useTranslation("os");
25868
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("h2", { className: mx(descriptionText, "text-center mbs-4") }, q("agent heading")), $ && /* @__PURE__ */ React__default.createElement("p", { role: "alert", className: mx(valenceColorText("error"), "mlb-2") }, $), _ === "created" || _ === "creating" || _ === "getting" || _ === "destroying" ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
25869
+ "div",
25864
25870
  {
25865
- variant: "ghost",
25866
- classNames: "pli-0 is-[--rail-action] bs-[--rail-action]",
25867
- "data-testid": "agent.destroy",
25868
- onClick: I
25871
+ role: "group",
25872
+ className: "mlb-2 flex gap-2 items-center",
25873
+ "aria-describedby": "devices-panel.create-agent.description"
25869
25874
  },
25870
- /* @__PURE__ */ React__default.createElement("span", { className: "sr-only" }, U("destroy agent label")),
25871
- /* @__PURE__ */ React__default.createElement(Power, { className: getSize(5) })
25872
- )), /* @__PURE__ */ React__default.createElement(Tooltip.Portal, null, /* @__PURE__ */ React__default.createElement(Tooltip.Content, { side: "bottom", classNames: "z-50" }, U("destroy agent label"))))) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
25875
+ /* @__PURE__ */ React__default.createElement(Avatar.Root, { status: _ === "created" ? "warning" : "inactive", variant: "square" }, /* @__PURE__ */ React__default.createElement(Avatar.Frame, { classNames: "place-self-center" }, /* @__PURE__ */ React__default.createElement(
25876
+ Database,
25877
+ {
25878
+ weight: "duotone",
25879
+ width: 24,
25880
+ height: 24,
25881
+ x: 8,
25882
+ y: 8,
25883
+ ..._ !== "created" && { className: "opacity-50" }
25884
+ }
25885
+ )), /* @__PURE__ */ React__default.createElement(Avatar.Label, { classNames: "flex-1 text-sm truncate" }, q(
25886
+ _ === "created" ? "agent requested label" : _ === "creating" ? "creating agent label" : _ === "destroying" ? "destroying agent label" : "getting agent label"
25887
+ ))),
25888
+ _ === "created" && /* @__PURE__ */ React__default.createElement(Tooltip.Root, null, /* @__PURE__ */ React__default.createElement(Tooltip.Trigger, { asChild: !0 }, /* @__PURE__ */ React__default.createElement(
25889
+ Button,
25890
+ {
25891
+ variant: "ghost",
25892
+ classNames: "pli-0 is-[--rail-action] bs-[--rail-action]",
25893
+ "data-testid": "agent.destroy",
25894
+ onClick: I
25895
+ },
25896
+ /* @__PURE__ */ React__default.createElement("span", { className: "sr-only" }, q("destroy agent label")),
25897
+ /* @__PURE__ */ React__default.createElement(Power, { className: getSize(5) })
25898
+ )), /* @__PURE__ */ React__default.createElement(Tooltip.Portal, null, /* @__PURE__ */ React__default.createElement(Tooltip.Content, { side: "bottom", classNames: "z-50" }, q("destroy agent label"))))
25899
+ ), _ === "created" && /* @__PURE__ */ React__default.createElement("p", { id: "devices-panel.create-agent.description", className: mx(descriptionText, "mlb-2") }, q("agent requested description"))) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
25873
25900
  Button,
25874
25901
  {
25875
25902
  variant: "ghost",
25876
25903
  classNames: "mlb-2 is-full justify-start gap-2 !pis-0 !pie-3",
25877
- "data-testid": "devices-panel.create-agent",
25878
- onClick: j,
25904
+ "data-testid": _ === "creatable" ? "devices-panel.create-agent" : "devices-panel.agent-error",
25905
+ onClick: _ === "creatable" ? j : U,
25879
25906
  "aria-describedby": "devices-panel.create-agent.description"
25880
25907
  },
25881
- /* @__PURE__ */ React__default.createElement("div", { role: "img", className: mx(getSize(8), "m-1 rounded-sm surface-input grid place-items-center") }, /* @__PURE__ */ React__default.createElement(Plus, { weight: "light", className: getSize(6) })),
25882
- /* @__PURE__ */ React__default.createElement("span", { className: "grow font-medium text-start" }, U("create agent label"))
25883
- ), /* @__PURE__ */ React__default.createElement("p", { id: "devices-panel.create-agent.clickwrap-message", className: mx(descriptionText, "mbe-2") }, /* @__PURE__ */ React__default.createElement(
25908
+ /* @__PURE__ */ React__default.createElement("div", { role: "img", className: mx(getSize(8), "m-1 rounded-sm surface-input grid place-items-center") }, _ === "creatable" ? /* @__PURE__ */ React__default.createElement(Plus, { weight: "light", className: getSize(6) }) : /* @__PURE__ */ React__default.createElement(ArrowsClockwise, { weight: "light", className: getSize(6) })),
25909
+ /* @__PURE__ */ React__default.createElement("span", { className: "grow font-medium text-start" }, q(_ === "creatable" ? "create agent label" : ""))
25910
+ ), _ === "creatable" && /* @__PURE__ */ React__default.createElement("div", { role: "none", className: "space-y-2", id: "devices-panel.create-agent.description" }, /* @__PURE__ */ React__default.createElement("p", { className: descriptionText }, /* @__PURE__ */ React__default.createElement(
25884
25911
  Trans,
25885
25912
  {
25886
- t: U,
25913
+ t: q,
25887
25914
  i18nKey: "create agent clickwrap",
25888
25915
  components: {
25889
25916
  tosLink: /* @__PURE__ */ React__default.createElement(Link, { target: "_blank", rel: "noreferrer" })
25890
25917
  }
25891
25918
  }
25892
- )), /* @__PURE__ */ React__default.createElement("p", { id: "devices-panel.create-agent.description", className: descriptionText }, U("create agent description"))));
25919
+ )), /* @__PURE__ */ React__default.createElement("p", { className: descriptionText }, q("create agent description")))));
25893
25920
  }, ClipboardContext = createContext({
25894
25921
  textValue: "",
25895
25922
  setTextValue: async (_) => {
@@ -69864,39 +69891,67 @@ const IdentityListItem = forwardRef(({ identity: _, presence: $, onClick: I, cla
69864
69891
  x: 8,
69865
69892
  y: 8
69866
69893
  }, DeviceListItem = forwardRef(
69867
- ({ device: _, onClickAdd: $, onClickEdit: I, onClickReset: j, onClickJoinExisting: U, classNames: q, connectionState: G, ...K }, Y) => {
69868
- var re;
69869
- const { t: J } = useTranslation("os"), Z = keyToFallback(_.deviceKey), Q = useId("identityListItem__label"), ee = _.profile ? J("device name placeholder", { os: _.profile.os, platform: _.profile.platform }) : generateName(_.deviceKey.toHex()), te = _.kind === DeviceKind$1.CURRENT;
69894
+ ({
69895
+ device: _,
69896
+ onClickAdd: $,
69897
+ onClickEdit: I,
69898
+ onClickReset: j,
69899
+ onClickJoinExisting: U,
69900
+ classNames: q,
69901
+ connectionState: G,
69902
+ onAgentDestroy: K,
69903
+ ...Y
69904
+ }, J) => {
69905
+ var ae, se;
69906
+ const { t: Z } = useTranslation("os"), Q = keyToFallback(_.deviceKey), ee = useId("identityListItem__label"), te = _.profile ? Z("device name placeholder", { os: _.profile.os, platform: _.profile.platform }) : generateName(_.deviceKey.toHex()), re = _.kind === DeviceKind$1.CURRENT;
69870
69907
  return /* @__PURE__ */ React__default.createElement(
69871
69908
  ListItem.Root,
69872
69909
  {
69873
- ...K,
69910
+ ...Y,
69874
69911
  classNames: ["flex gap-2 items-center mlb-2", q],
69875
- "data-testid": `device-list-item${te ? "-current" : ""}`,
69876
- labelId: Q,
69877
- ref: Y
69912
+ "data-testid": `device-list-item${re ? "-current" : ""}`,
69913
+ labelId: ee,
69914
+ ref: J
69878
69915
  },
69879
69916
  /* @__PURE__ */ React__default.createElement(
69880
69917
  Avatar.Root,
69881
69918
  {
69882
- status: te && G === ConnectionState$1.OFFLINE ? "error" : _.presence === Device$1.PresenceState.ONLINE ? "active" : "inactive",
69883
- labelId: Q,
69884
- hue: Z.hue,
69919
+ status: re && G === ConnectionState$1.OFFLINE ? "error" : _.presence === Device$1.PresenceState.ONLINE ? "active" : "inactive",
69920
+ labelId: ee,
69921
+ hue: Q.hue,
69885
69922
  variant: "square"
69886
69923
  },
69887
- /* @__PURE__ */ React__default.createElement(Avatar.Frame, { classNames: "place-self-center" }, (re = _.profile) != null && re.type ? _.profile.type === DeviceType.BROWSER ? /* @__PURE__ */ React__default.createElement(Compass, { ...iconProps }) : _.profile.type === DeviceType.NATIVE ? /* @__PURE__ */ React__default.createElement(Desktop, { ...iconProps }) : [DeviceType.AGENT, DeviceType.AGENT_MANAGED].includes(_.profile.type) ? /* @__PURE__ */ React__default.createElement(Robot, { ...iconProps }) : _.profile.type === DeviceType.MOBILE ? /* @__PURE__ */ React__default.createElement(DeviceMobile, { ...iconProps }) : /* @__PURE__ */ React__default.createElement(Devices, { ...iconProps }) : /* @__PURE__ */ React__default.createElement(Avatar.Fallback, { text: Z.emoji })),
69888
- /* @__PURE__ */ React__default.createElement(Avatar.Label, { classNames: "flex-1 text-sm truncate" }, ee),
69889
- te && /* @__PURE__ */ React__default.createElement(Tag, { color: "primary" }, J("current device tag label")),
69890
- _.kind === DeviceKind$1.CURRENT && /* @__PURE__ */ React__default.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React__default.createElement(DropdownMenu2.Trigger, { asChild: !0 }, /* @__PURE__ */ React__default.createElement(
69924
+ /* @__PURE__ */ React__default.createElement(Avatar.Frame, { classNames: "place-self-center" }, (ae = _.profile) != null && ae.type ? _.profile.type === DeviceType.AGENT_MANAGED ? /* @__PURE__ */ React__default.createElement(Database, { ...iconProps }) : _.profile.type === DeviceType.BROWSER ? /* @__PURE__ */ React__default.createElement(Compass, { ...iconProps }) : _.profile.type === DeviceType.NATIVE ? /* @__PURE__ */ React__default.createElement(Desktop, { ...iconProps }) : [DeviceType.AGENT, DeviceType.AGENT_MANAGED].includes(_.profile.type) ? /* @__PURE__ */ React__default.createElement(Robot, { ...iconProps }) : _.profile.type === DeviceType.MOBILE ? /* @__PURE__ */ React__default.createElement(DeviceMobile, { ...iconProps }) : /* @__PURE__ */ React__default.createElement(Devices, { ...iconProps }) : /* @__PURE__ */ React__default.createElement(Avatar.Fallback, { text: Q.emoji })),
69925
+ /* @__PURE__ */ React__default.createElement(Avatar.Label, { classNames: "flex-1 text-sm truncate" }, te),
69926
+ re && /* @__PURE__ */ React__default.createElement(Tag, { color: "primary" }, Z("current device tag label")),
69927
+ ((se = _.profile) == null ? void 0 : se.type) === DeviceType.AGENT_MANAGED ? /* @__PURE__ */ React__default.createElement(Tooltip.Root, null, /* @__PURE__ */ React__default.createElement(Tooltip.Trigger, { asChild: !0 }, /* @__PURE__ */ React__default.createElement(
69928
+ Button,
69929
+ {
69930
+ variant: "ghost",
69931
+ classNames: "pli-0 is-[--rail-action] bs-[--rail-action]",
69932
+ "data-testid": "agent.destroy",
69933
+ onClick: K
69934
+ },
69935
+ /* @__PURE__ */ React__default.createElement("span", { className: "sr-only" }, Z("destroy agent label")),
69936
+ /* @__PURE__ */ React__default.createElement(Power, { className: getSize(5) })
69937
+ )), /* @__PURE__ */ React__default.createElement(Tooltip.Portal, null, /* @__PURE__ */ React__default.createElement(Tooltip.Content, { side: "bottom", classNames: "z-50" }, Z("destroy agent label")))) : _.kind === DeviceKind$1.CURRENT && /* @__PURE__ */ React__default.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React__default.createElement(DropdownMenu2.Trigger, { asChild: !0 }, /* @__PURE__ */ React__default.createElement(
69891
69938
  Button,
69892
69939
  {
69893
69940
  variant: "ghost",
69894
69941
  classNames: "pli-0 is-[--rail-action] bs-[--rail-action]",
69895
- "data-testid": `device-list-item${te ? "-current" : ""}.options`
69942
+ "data-testid": `device-list-item${re ? "-current" : ""}.options`
69896
69943
  },
69897
- /* @__PURE__ */ React__default.createElement("span", { className: "sr-only" }, J("more options label")),
69944
+ /* @__PURE__ */ React__default.createElement("span", { className: "sr-only" }, Z("more options label")),
69898
69945
  /* @__PURE__ */ React__default.createElement(DotsThree, { className: getSize(5) })
69899
- )), /* @__PURE__ */ React__default.createElement(DropdownMenu2.Content, null, /* @__PURE__ */ React__default.createElement(DropdownMenu2.Viewport, null, /* @__PURE__ */ React__default.createElement(DropdownMenu2.Item, { "data-testid": "device-list-item-current.join-existing", onClick: U }, /* @__PURE__ */ React__default.createElement(ShareFat, { className: getSize(5) }), J("choose join new identity label")), /* @__PURE__ */ React__default.createElement(DropdownMenu2.Item, { "data-testid": "device-list-item-current.reset", onClick: j }, /* @__PURE__ */ React__default.createElement(Power, { className: getSize(5) }), J("reset device label")))))
69946
+ )), /* @__PURE__ */ React__default.createElement(DropdownMenu2.Content, null, /* @__PURE__ */ React__default.createElement(DropdownMenu2.Viewport, null, /* @__PURE__ */ React__default.createElement(
69947
+ DropdownMenu2.Item,
69948
+ {
69949
+ "data-testid": "device-list-item-current.join-existing",
69950
+ onClick: U
69951
+ },
69952
+ /* @__PURE__ */ React__default.createElement(ShareFat, { className: getSize(5) }),
69953
+ Z("choose join new identity label")
69954
+ ), /* @__PURE__ */ React__default.createElement(DropdownMenu2.Item, { "data-testid": "device-list-item-current.reset", onClick: j }, /* @__PURE__ */ React__default.createElement(Power, { className: getSize(5) }), Z("reset device label")))))
69900
69955
  )
69901
69956
  );
69902
69957
  }
@@ -69906,18 +69961,20 @@ const IdentityListItem = forwardRef(({ identity: _, presence: $, onClick: I, cla
69906
69961
  onClickAdd: I,
69907
69962
  onClickEdit: j,
69908
69963
  onClickReset: U,
69909
- onClickJoinExisting: q
69964
+ onClickJoinExisting: q,
69965
+ onAgentDestroy: G
69910
69966
  }) => {
69911
- const { t: G } = useTranslation("os");
69912
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("h2", { className: mx(descriptionText, "text-center mbs-4") }, G("devices heading")), _.length > 0 && /* @__PURE__ */ React__default.createElement(List, null, _.map((K) => /* @__PURE__ */ React__default.createElement(
69967
+ const { t: K } = useTranslation("os");
69968
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("h2", { className: mx(descriptionText, "text-center mbs-4") }, K("devices heading")), _.length > 0 && /* @__PURE__ */ React__default.createElement(List, null, _.map((Y) => /* @__PURE__ */ React__default.createElement(
69913
69969
  DeviceListItem,
69914
69970
  {
69915
- key: K.deviceKey.toHex(),
69916
- device: K,
69917
- onClickEdit: () => j == null ? void 0 : j(K),
69971
+ key: Y.deviceKey.toHex(),
69972
+ device: Y,
69973
+ onClickEdit: () => j == null ? void 0 : j(Y),
69918
69974
  onClickReset: U,
69919
69975
  onClickJoinExisting: q,
69920
- connectionState: $
69976
+ connectionState: $,
69977
+ onAgentDestroy: G
69921
69978
  }
69922
69979
  ))), /* @__PURE__ */ React__default.createElement(
69923
69980
  Button,
@@ -69928,7 +69985,7 @@ const IdentityListItem = forwardRef(({ identity: _, presence: $, onClick: I, cla
69928
69985
  onClick: I
69929
69986
  },
69930
69987
  /* @__PURE__ */ React__default.createElement("div", { role: "img", className: mx(getSize(8), "m-1 rounded-sm surface-input grid place-items-center") }, /* @__PURE__ */ React__default.createElement(Plus, { weight: "light", className: getSize(6) })),
69931
- /* @__PURE__ */ React__default.createElement("span", { className: "grow font-medium text-start" }, G("choose add device label")),
69988
+ /* @__PURE__ */ React__default.createElement("span", { className: "grow font-medium text-start" }, K("choose add device label")),
69932
69989
  /* @__PURE__ */ React__default.createElement(CaretRight, { weight: "bold", className: getSize(4) })
69933
69990
  ));
69934
69991
  }, minutesInMonth = 43200, minutesInDay = 1440;
@@ -70034,16 +70091,6 @@ function formatDistance(_, $, I) {
70034
70091
  function formatDistanceToNow(_, $) {
70035
70092
  return formatDistance(_, Date.now(), $);
70036
70093
  }
70037
- var LogLevel;
70038
- (function(_) {
70039
- _[_.TRACE = 5] = "TRACE", _[_.DEBUG = 10] = "DEBUG", _[_.INFO = 11] = "INFO", _[_.WARN = 12] = "WARN", _[_.ERROR = 13] = "ERROR";
70040
- })(LogLevel || (LogLevel = {}));
70041
- var QueryLogsRequest;
70042
- (function(_) {
70043
- (function($) {
70044
- $[$.INCLUSIVE = 1] = "INCLUSIVE", $[$.EXPLICIT = 2] = "EXPLICIT";
70045
- })(_.MatchingOptions || (_.MatchingOptions = {}));
70046
- })(QueryLogsRequest || (QueryLogsRequest = {}));
70047
70094
  var SystemStatus;
70048
70095
  (function(_) {
70049
70096
  _[_.ACTIVE = 0] = "ACTIVE", _[_.INACTIVE = 1] = "INACTIVE";
@@ -70110,6 +70157,16 @@ var ConnectionState;
70110
70157
  (function(_) {
70111
70158
  _[_.OFFLINE = 0] = "OFFLINE", _[_.ONLINE = 1] = "ONLINE";
70112
70159
  })(ConnectionState || (ConnectionState = {}));
70160
+ var LogLevel;
70161
+ (function(_) {
70162
+ _[_.TRACE = 5] = "TRACE", _[_.DEBUG = 10] = "DEBUG", _[_.INFO = 11] = "INFO", _[_.WARN = 12] = "WARN", _[_.ERROR = 13] = "ERROR";
70163
+ })(LogLevel || (LogLevel = {}));
70164
+ var QueryLogsRequest;
70165
+ (function(_) {
70166
+ (function($) {
70167
+ $[$.INCLUSIVE = 1] = "INCLUSIVE", $[$.EXPLICIT = 2] = "EXPLICIT";
70168
+ })(_.MatchingOptions || (_.MatchingOptions = {}));
70169
+ })(QueryLogsRequest || (QueryLogsRequest = {}));
70113
70170
  var ContextDisposedError = class extends Error {
70114
70171
  constructor() {
70115
70172
  super("Context disposed.");
@@ -79262,80 +79319,98 @@ const identityMachine = createMachine(
79262
79319
  }))
79263
79320
  }
79264
79321
  }), IdentityActionChooser = (_) => {
79265
- const { send: $ } = _, I = useClient(), j = useHaloInvitations(), U = useAgentHostingClient(), q = useCallback((K) => {
79266
- const Y = InvitationEncoder.encode(K);
79267
- K.state === Invitation.State.CONNECTING && log$2.info(JSON.stringify({ invitationCode: Y, authCode: K.authCode }));
79268
- }, []), G = () => {
79269
- j.forEach((Y) => Y.cancel());
79270
- const K = I.halo.share();
79271
- process.env.NODE_ENV !== "production" && K.subscribe(q), $ == null || $({ type: "selectInvitation", invitation: K });
79322
+ const { send: $ } = _, I = useClient(), j = useHaloInvitations(), U = useCallback((G) => {
79323
+ const K = InvitationEncoder.encode(G);
79324
+ G.state === Invitation.State.CONNECTING && log$2.info(JSON.stringify({ invitationCode: K, authCode: G.authCode }));
79325
+ }, []), q = () => {
79326
+ j.forEach((K) => K.cancel());
79327
+ const G = I.halo.share();
79328
+ process.env.NODE_ENV !== "production" && G.subscribe(U), $ == null || $({ type: "selectInvitation", invitation: G });
79272
79329
  };
79273
- return /* @__PURE__ */ React__default.createElement(
79274
- IdentityActionChooserImpl,
79275
- {
79276
- ..._,
79277
- onCreateInvitationClick: G,
79278
- agentHostingEnabled: !!U
79279
- }
79280
- );
79330
+ return /* @__PURE__ */ React__default.createElement(IdentityActionChooserImpl, { ..._, onCreateInvitationClick: q });
79281
79331
  }, IdentityActionChooserImpl = ({
79282
79332
  send: _,
79283
79333
  onCreateInvitationClick: $,
79284
79334
  devices: I,
79285
79335
  connectionState: j,
79286
- onAgentDestroy: U,
79287
- onAgentCreate: q,
79288
- agentStatus: G,
79289
- agentActive: K,
79290
- agentHostingEnabled: Y
79291
- }) => /* @__PURE__ */ React__default.createElement("div", { role: "none", className: "bs-40 grow overflow-y-auto overflow-x-hidden" }, /* @__PURE__ */ React__default.createElement(
79292
- DeviceList,
79293
- {
79294
- devices: I,
79295
- connectionState: j,
79296
- onClickAdd: $,
79297
- onClickJoinExisting: () => _ == null ? void 0 : _({ type: "chooseJoinNewIdentity" }),
79298
- onClickReset: () => _ == null ? void 0 : _({ type: "chooseResetStorage" })
79299
- }
79300
- ), Y && /* @__PURE__ */ React__default.createElement(AgentConfig, { agentActive: K, agentStatus: G, onAgentDestroy: U, onAgentCreate: q })), useAgentHandlers = ({
79336
+ agentHostingEnabled: U,
79337
+ ...q
79338
+ }) => {
79339
+ const G = I.find((K) => {
79340
+ var Y;
79341
+ return ((Y = K.profile) == null ? void 0 : Y.type) === DeviceType.AGENT_MANAGED;
79342
+ });
79343
+ return /* @__PURE__ */ React__default.createElement("div", { role: "none", className: "bs-40 grow overflow-y-auto overflow-x-hidden" }, /* @__PURE__ */ React__default.createElement(
79344
+ DeviceList,
79345
+ {
79346
+ devices: I,
79347
+ connectionState: j,
79348
+ onClickAdd: $,
79349
+ onClickJoinExisting: () => _ == null ? void 0 : _({ type: "chooseJoinNewIdentity" }),
79350
+ onClickReset: () => _ == null ? void 0 : _({ type: "chooseResetStorage" }),
79351
+ onAgentDestroy: q.onAgentDestroy
79352
+ }
79353
+ ), !G && U && /* @__PURE__ */ React__default.createElement(AgentConfig, { ...q }));
79354
+ }, useAgentHandlers = ({
79301
79355
  invitations: _,
79302
79356
  identity: $
79303
79357
  }) => {
79304
- const [I, j] = useState(""), [U, q] = useState(""), [G, K] = useState(!1), Y = useAgentHostingClient(), J = useClient();
79305
- useEffect(() => {
79306
- (async () => {
79307
- if (Y) {
79308
- const re = await (Y == null ? void 0 : Y.getAgent(($ == null ? void 0 : $.identityKey.truncate()) ?? "foo"));
79309
- re ? (K(!0), q(re)) : (K(!1), j("No agent deployed via provider."));
79310
- } else
79311
- j("No agent provider configured.");
79312
- })();
79313
- }, []);
79314
- const Z = useCallback(async (te) => {
79315
- const re = InvitationEncoder.encode(te);
79316
- if (te.state === Invitation.State.CONNECTING && (log$2.info(JSON.stringify({ invitationCode: re, authCode: te.authCode })), invariant($, "Identity not found"), Y))
79358
+ const [I, j] = useState(""), [U, q] = useState("getting"), G = useAgentHostingClient(), K = useClient(), Y = async () => {
79359
+ if (G) {
79360
+ q("getting");
79361
+ try {
79362
+ const re = await (G == null ? void 0 : G.getAgent(($ == null ? void 0 : $.identityKey.truncate()) ?? "never"));
79363
+ q(re ? "created" : "creatable");
79364
+ } catch (re) {
79365
+ q("error"), j(`Couldn’t check agent status: ${re.message}`);
79366
+ }
79367
+ } else
79368
+ q("error"), j("No agent provider configured.");
79369
+ }, J = async (re) => {
79370
+ if (invariant($, "Identity not found"), G) {
79371
+ q("creating"), j("");
79317
79372
  try {
79318
- const ae = await (Y == null ? void 0 : Y.createAgent(re, $.identityKey.truncate()));
79319
- q(ae), K(!0), j("");
79373
+ await (G == null ? void 0 : G.createAgent(re, $.identityKey.truncate())) ? q("created") : (q("creatable"), j("Error creating agent."));
79320
79374
  } catch (ae) {
79321
- j(`error creating agent: ${ae.message}`);
79375
+ return j(`Error creating agent: ${ae.message}`), Y();
79322
79376
  }
79377
+ } else
79378
+ q("error"), j("No agent provider configured.");
79379
+ }, Z = async () => {
79380
+ if (invariant($, "Identity not found"), G) {
79381
+ q("destroying"), j("");
79382
+ try {
79383
+ await (G == null ? void 0 : G.destroyAgent($.identityKey.truncate())), q("creatable");
79384
+ } catch (re) {
79385
+ return j(`Error destroying agent: ${re.message}`), Y();
79386
+ }
79387
+ } else
79388
+ q("error"), j("No agent provider configured.");
79389
+ };
79390
+ useEffect(() => {
79391
+ Y();
79323
79392
  }, []);
79324
- return { onAgentCreate: async () => {
79325
- _.forEach((re) => re.cancel()), J.halo.share({
79326
- type: Invitation.Type.INTERACTIVE,
79327
- authMethod: Invitation.AuthMethod.NONE,
79328
- multiUse: !0
79329
- }).subscribe(Z);
79330
- }, onAgentDestroy: async () => {
79331
- const te = J.halo.identity.get();
79332
- invariant(te, "Identity not found");
79333
- try {
79334
- await (Y == null ? void 0 : Y.destroyAgent(te.identityKey.truncate())), j("No agent deployed via provider."), q(""), K(!1);
79335
- } catch (re) {
79336
- j(`error destroying agent: ${re.message}`);
79337
- }
79338
- }, validationMessage: I, agentStatus: U, agentActive: G };
79393
+ const Q = useCallback(async (re) => {
79394
+ const ae = InvitationEncoder.encode(re);
79395
+ if (re.state === Invitation.State.CONNECTING)
79396
+ return log$2.info(JSON.stringify({ invitationCode: ae, authCode: re.authCode })), J(ae);
79397
+ }, []);
79398
+ return {
79399
+ onAgentCreate: async () => {
79400
+ _.forEach((ae) => ae.cancel()), K.halo.share({
79401
+ type: Invitation.Type.INTERACTIVE,
79402
+ authMethod: Invitation.AuthMethod.NONE,
79403
+ multiUse: !0
79404
+ }).subscribe(Q);
79405
+ },
79406
+ onAgentDestroy: Z,
79407
+ onAgentRefresh: async () => {
79408
+ j(""), await Y();
79409
+ },
79410
+ validationMessage: I,
79411
+ agentStatus: U,
79412
+ agentHostingEnabled: !!G
79413
+ };
79339
79414
  };
79340
79415
  var qrcode = { exports: {} };
79341
79416
  (function(_, $) {
@@ -80632,7 +80707,7 @@ const invitationStatusValue = /* @__PURE__ */ new Map([
80632
80707
  )), /* @__PURE__ */ React__default.createElement(Toolbar.Root, { classNames: "flex justify-center items-center gap-1 pt-3" }, /* @__PURE__ */ React__default.createElement(EmojiPickerToolbarButton, { emoji: Q, onChangeEmoji: le, classNames: "bs-[--rail-action]" }), /* @__PURE__ */ React__default.createElement(HuePickerToolbarButton, { hue: te, onChangeHue: de, classNames: "bs-[--rail-action]" }), /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(Tooltip.Root, null, /* @__PURE__ */ React__default.createElement(Tooltip.Trigger, { asChild: !0 }, /* @__PURE__ */ React__default.createElement(
80633
80708
  Toolbar.Button,
80634
80709
  {
80635
- classNames: "bs-[--rail-action] justify-self-start",
80710
+ classNames: "bs-[--rail-action]",
80636
80711
  "data-testid": "update-profile-form-copy-key",
80637
80712
  onClick: () => se(fe)
80638
80713
  },
@@ -80641,10 +80716,7 @@ const invitationStatusValue = /* @__PURE__ */ new Map([
80641
80716
  )), /* @__PURE__ */ React__default.createElement(Tooltip.Portal, null, /* @__PURE__ */ React__default.createElement(Tooltip.Content, { side: "bottom", classNames: "z-50" }, Y(oe ? "copy success label" : "copy self public key label"), /* @__PURE__ */ React__default.createElement(Tooltip.Arrow, null))), /* @__PURE__ */ React__default.createElement(Tooltip.Root, null, /* @__PURE__ */ React__default.createElement(Tooltip.Trigger, { asChild: !0 }, /* @__PURE__ */ React__default.createElement(
80642
80717
  Toolbar.Button,
80643
80718
  {
80644
- classNames: [
80645
- "bs-[--rail-action] is-[--rail-action] justify-self-end",
80646
- !he && "text-error-500"
80647
- ],
80719
+ classNames: ["bs-[--rail-action]", !he && "text-error-500"],
80648
80720
  onClick: () => G == null ? void 0 : G(he ? ConnectionState$1.OFFLINE : ConnectionState$1.ONLINE)
80649
80721
  },
80650
80722
  /* @__PURE__ */ React__default.createElement("span", { className: "sr-only" }, Y(he ? "disconnect label" : "connect label")),
@@ -88290,7 +88362,12 @@ const os = {
88290
88362
  "create agent label": "Start an agent",
88291
88363
  "destroy agent label": "Shut down agent",
88292
88364
  "agent device label": "Your agent",
88293
- "shell fallback title": "Shell failed to connect"
88365
+ "shell fallback title": "Shell failed to connect",
88366
+ "creating agent label": "Starting agent…",
88367
+ "destroying agent label": "Stopping agent…",
88368
+ "getting agent label": "Checking agent status…",
88369
+ "agent requested label": "Agent requested",
88370
+ "agent requested description": "The agent service is creating an agent for you. Once the agent connects, it will display in the devices list."
88294
88371
  }, enUS = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
88295
88372
  __proto__: null,
88296
88373
  os