@dxos/plugin-client 0.8.4-main.21d9917 → 0.8.4-main.2244d791bb

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 (104) hide show
  1. package/dist/lib/browser/{app-graph-builder-3FGBMLTF.mjs → app-graph-builder-DTETNB5U.mjs} +4 -3
  2. package/dist/lib/browser/app-graph-builder-DTETNB5U.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-F7H2Y3Z2.mjs → chunk-MY6BJCB6.mjs} +4 -4
  4. package/dist/lib/browser/cli/index.mjs +22 -21
  5. package/dist/lib/browser/cli/index.mjs.map +3 -3
  6. package/dist/lib/browser/{client-IX5LMWV4.mjs → client-XOQQ5POJ.mjs} +3 -3
  7. package/dist/lib/browser/client-XOQQ5POJ.mjs.map +7 -0
  8. package/dist/lib/browser/index.mjs +20 -19
  9. package/dist/lib/browser/index.mjs.map +3 -3
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/browser/{migrations-3EBTAW3N.mjs → migrations-YNQ7L5GT.mjs} +4 -4
  12. package/dist/lib/browser/migrations-YNQ7L5GT.mjs.map +7 -0
  13. package/dist/lib/browser/{operation-resolver-2NT3ISVP.mjs → operation-resolver-N4YCJ4KS.mjs} +18 -17
  14. package/dist/lib/browser/operation-resolver-N4YCJ4KS.mjs.map +7 -0
  15. package/dist/lib/browser/{react-context-4UABG3GP.mjs → react-context-FDXHIBZL.mjs} +4 -4
  16. package/dist/lib/browser/react-context-FDXHIBZL.mjs.map +7 -0
  17. package/dist/lib/browser/{react-surface-RSQ74XCT.mjs → react-surface-ZP3FLVRS.mjs} +50 -49
  18. package/dist/lib/browser/react-surface-ZP3FLVRS.mjs.map +7 -0
  19. package/dist/lib/browser/{schema-defs-O7VLP745.mjs → schema-defs-AYXOYD2M.mjs} +6 -5
  20. package/dist/lib/browser/schema-defs-AYXOYD2M.mjs.map +7 -0
  21. package/dist/lib/node-esm/{app-graph-builder-2PIYVUNC.mjs → app-graph-builder-PFKVFRXI.mjs} +4 -3
  22. package/dist/lib/node-esm/app-graph-builder-PFKVFRXI.mjs.map +7 -0
  23. package/dist/lib/node-esm/{chunk-BCELGXRI.mjs → chunk-MUOMX53G.mjs} +4 -4
  24. package/dist/lib/node-esm/cli/index.mjs +22 -21
  25. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  26. package/dist/lib/node-esm/{client-FFPK5UFP.mjs → client-3YIMWKR7.mjs} +3 -3
  27. package/dist/lib/node-esm/client-3YIMWKR7.mjs.map +7 -0
  28. package/dist/lib/node-esm/index.mjs +20 -19
  29. package/dist/lib/node-esm/index.mjs.map +3 -3
  30. package/dist/lib/node-esm/meta.json +1 -1
  31. package/dist/lib/node-esm/{migrations-WSZSFGDK.mjs → migrations-ZH5GNG4U.mjs} +4 -4
  32. package/dist/lib/node-esm/migrations-ZH5GNG4U.mjs.map +7 -0
  33. package/dist/lib/node-esm/{operation-resolver-VW5R2BE4.mjs → operation-resolver-CHGWI5P2.mjs} +18 -17
  34. package/dist/lib/node-esm/operation-resolver-CHGWI5P2.mjs.map +7 -0
  35. package/dist/lib/node-esm/{react-context-UVXMGPW4.mjs → react-context-7Z2TVUTV.mjs} +4 -4
  36. package/dist/lib/node-esm/react-context-7Z2TVUTV.mjs.map +7 -0
  37. package/dist/lib/node-esm/{react-surface-KBHANGGC.mjs → react-surface-BHJMHIMH.mjs} +50 -49
  38. package/dist/lib/node-esm/react-surface-BHJMHIMH.mjs.map +7 -0
  39. package/dist/lib/node-esm/{schema-defs-QLRGBIKY.mjs → schema-defs-TV2SCKSH.mjs} +6 -5
  40. package/dist/lib/node-esm/schema-defs-TV2SCKSH.mjs.map +7 -0
  41. package/dist/types/src/ClientPlugin.d.ts.map +1 -1
  42. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  43. package/dist/types/src/capabilities/client/client.d.ts.map +1 -1
  44. package/dist/types/src/capabilities/client/index.d.ts +1 -0
  45. package/dist/types/src/capabilities/client/index.d.ts.map +1 -1
  46. package/dist/types/src/capabilities/migrations/migrations.d.ts.map +1 -1
  47. package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
  48. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
  49. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
  50. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  51. package/dist/types/src/capabilities/react-context/react-context.d.ts.map +1 -1
  52. package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
  53. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
  54. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
  55. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  56. package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts.map +1 -1
  57. package/dist/types/src/cli/commands/halo/create/create.d.ts.map +1 -1
  58. package/dist/types/src/cli/plugin.d.ts.map +1 -1
  59. package/dist/types/src/components/DevicesContainer.d.ts.map +1 -1
  60. package/dist/types/src/components/DevicesContainer.stories.d.ts +1 -1
  61. package/dist/types/src/components/DevicesContainer.stories.d.ts.map +1 -1
  62. package/dist/types/src/components/ProfileContainer.d.ts.map +1 -1
  63. package/dist/types/src/components/ResetDialog.d.ts.map +1 -1
  64. package/dist/types/src/components/ResetDialog.stories.d.ts +1 -1
  65. package/dist/types/src/components/ResetDialog.stories.d.ts.map +1 -1
  66. package/dist/types/tsconfig.tsbuildinfo +1 -1
  67. package/package.json +35 -34
  68. package/src/ClientPlugin.ts +9 -8
  69. package/src/capabilities/app-graph-builder/app-graph-builder.ts +3 -2
  70. package/src/capabilities/client/client.ts +2 -2
  71. package/src/capabilities/migrations/migrations.ts +3 -3
  72. package/src/capabilities/operation-resolver/operation-resolver.ts +10 -9
  73. package/src/capabilities/react-context/react-context.tsx +3 -3
  74. package/src/capabilities/react-surface/react-surface.tsx +9 -8
  75. package/src/capabilities/schema-defs/schema-defs.ts +5 -4
  76. package/src/cli/commands/halo/create/create.ts +2 -2
  77. package/src/cli/plugin.ts +7 -6
  78. package/src/components/DevicesContainer.stories.tsx +3 -2
  79. package/src/components/DevicesContainer.tsx +26 -36
  80. package/src/components/JoinDialog.tsx +3 -3
  81. package/src/components/ProfileContainer.stories.tsx +1 -1
  82. package/src/components/ProfileContainer.tsx +17 -25
  83. package/src/components/RecoveryCodeDialog.stories.tsx +1 -1
  84. package/src/components/RecoveryCredentialsContainer.stories.tsx +1 -1
  85. package/src/components/RecoveryCredentialsContainer.tsx +14 -14
  86. package/src/components/ResetDialog.stories.tsx +22 -10
  87. package/src/components/ResetDialog.tsx +11 -8
  88. package/src/translations.ts +1 -1
  89. package/dist/lib/browser/app-graph-builder-3FGBMLTF.mjs.map +0 -7
  90. package/dist/lib/browser/client-IX5LMWV4.mjs.map +0 -7
  91. package/dist/lib/browser/migrations-3EBTAW3N.mjs.map +0 -7
  92. package/dist/lib/browser/operation-resolver-2NT3ISVP.mjs.map +0 -7
  93. package/dist/lib/browser/react-context-4UABG3GP.mjs.map +0 -7
  94. package/dist/lib/browser/react-surface-RSQ74XCT.mjs.map +0 -7
  95. package/dist/lib/browser/schema-defs-O7VLP745.mjs.map +0 -7
  96. package/dist/lib/node-esm/app-graph-builder-2PIYVUNC.mjs.map +0 -7
  97. package/dist/lib/node-esm/client-FFPK5UFP.mjs.map +0 -7
  98. package/dist/lib/node-esm/migrations-WSZSFGDK.mjs.map +0 -7
  99. package/dist/lib/node-esm/operation-resolver-VW5R2BE4.mjs.map +0 -7
  100. package/dist/lib/node-esm/react-context-UVXMGPW4.mjs.map +0 -7
  101. package/dist/lib/node-esm/react-surface-KBHANGGC.mjs.map +0 -7
  102. package/dist/lib/node-esm/schema-defs-QLRGBIKY.mjs.map +0 -7
  103. /package/dist/lib/browser/{chunk-F7H2Y3Z2.mjs.map → chunk-MY6BJCB6.mjs.map} +0 -0
  104. /package/dist/lib/node-esm/{chunk-BCELGXRI.mjs.map → chunk-MUOMX53G.mjs.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface/react-surface.tsx", "../../../src/components/DevicesContainer.tsx", "../../../src/components/JoinDialog.tsx", "../../../src/components/ProfileContainer.tsx", "../../../src/components/RecoveryCodeDialog.tsx", "../../../src/components/RecoveryCredentialsContainer.tsx", "../../../src/components/ResetDialog.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface } from '@dxos/app-framework/ui';\nimport { type JoinPanelProps } from '@dxos/shell/react';\n\nimport {\n DevicesContainer,\n JoinDialog,\n ProfileContainer,\n RecoveryCodeDialog,\n type RecoveryCodeDialogProps,\n RecoveryCredentialsContainer,\n ResetDialog,\n type ResetDialogProps,\n} from '../../components';\nimport { JOIN_DIALOG, RECOVERY_CODE_DIALOG, RESET_DIALOG } from '../../constants';\nimport { Account, type ClientPluginOptions } from '../../types';\n\ntype ReactSurfaceOptions = Pick<ClientPluginOptions, 'onReset'> & {\n createInvitationUrl: (invitationCode: string) => string;\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* (props?: ReactSurfaceOptions) {\n const { createInvitationUrl, onReset } = props!;\n const capabilityManager = yield* Capability.Service;\n\n return Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: Account.Profile,\n role: 'article',\n filter: (data): data is any => data.subject === Account.Profile,\n component: () => <ProfileContainer />,\n }),\n Surface.create({\n id: Account.Devices,\n role: 'article',\n filter: (data): data is any => data.subject === Account.Devices,\n component: () => <DevicesContainer createInvitationUrl={createInvitationUrl} />,\n }),\n Surface.create({\n id: Account.Security,\n role: 'article',\n filter: (data): data is any => data.subject === Account.Security,\n component: () => <RecoveryCredentialsContainer />,\n }),\n Surface.create({\n id: JOIN_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: JoinPanelProps } => data.component === JOIN_DIALOG,\n component: ({ data }: { data: any }) => <JoinDialog {...data.props} />,\n }),\n Surface.create({\n id: RECOVERY_CODE_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: RecoveryCodeDialogProps } => data.component === RECOVERY_CODE_DIALOG,\n component: ({ data }: { data: any }) => <RecoveryCodeDialog {...data.props} />,\n }),\n Surface.create({\n id: RESET_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: ResetDialogProps } => data.component === RESET_DIALOG,\n component: ({ data }: { data: any }) => (\n <ResetDialog {...data.props} onReset={onReset} capabilityManager={capabilityManager} />\n ),\n }),\n ]);\n }),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { QR } from 'react-qr-rounded';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { log } from '@dxos/log';\nimport { useClient, useMulticastObservable } from '@dxos/react-client';\nimport { type Device, useDevices } from '@dxos/react-client/halo';\nimport { type CancellableInvitationObservable, Invitation, InvitationEncoder } from '@dxos/react-client/invitations';\nimport { useNetworkStatus } from '@dxos/react-client/mesh';\nimport { Button, Clipboard, Icon, IconButton, List, useId, useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\nimport { AuthCode, Centered, DeviceListItem, Emoji, Viewport, translationKey } from '@dxos/shell/react';\nimport { osTranslations } from '@dxos/ui-theme';\nimport { hexToEmoji } from '@dxos/util';\n\nimport { meta } from '../meta';\nimport { ClientOperation } from '../types';\n\nexport type DevicesContainerProps = {\n createInvitationUrl?: (invitationCode: string) => string;\n};\n\nexport const DevicesContainer = ({ createInvitationUrl }: DevicesContainerProps) => {\n const { t } = useTranslation(translationKey);\n const { invokePromise } = useOperationInvoker();\n const devices = useDevices();\n const { swarm: connectionState } = useNetworkStatus();\n\n const handleResetStorage = useCallback(() => invokePromise(ClientOperation.ResetStorage, {}), [invokePromise]);\n\n const handleRecover = useCallback(\n () => invokePromise(ClientOperation.ResetStorage, { mode: 'recover' }),\n [invokePromise],\n );\n\n const handleJoinNewIdentity = useCallback(\n () => invokePromise(ClientOperation.ResetStorage, { mode: 'join new identity' }),\n [invokePromise],\n );\n\n return (\n <Clipboard.Provider>\n <Settings.Root>\n <Settings.Section\n title={t('devices verbose label', { ns: meta.id })}\n description={t('devices description', { ns: meta.id })}\n >\n <Settings.Frame>\n <Settings.FrameItem title={t('devices label', { ns: meta.id })}>\n <List>\n {devices.map((device: Device) => (\n <DeviceListItem key={device.deviceKey.toHex()} device={device} connectionState={connectionState} />\n ))}\n </List>\n </Settings.FrameItem>\n {createInvitationUrl && (\n <Settings.FrameItem title='Add device'>\n <DeviceInvitation createInvitationUrl={createInvitationUrl} />\n </Settings.FrameItem>\n )}\n </Settings.Frame>\n </Settings.Section>\n <Settings.Section\n title={t('danger zone title', { ns: meta.id })}\n description={t('danger zone description', { ns: meta.id })}\n >\n <Settings.Group>\n <Settings.Item title={t('reset device label')} description={t('reset device description', { ns: meta.id })}>\n <Button variant='destructive' onClick={handleResetStorage} data-testid='devicesContainer.reset'>\n {t('reset device label')}\n </Button>\n </Settings.Item>\n <Settings.Item\n title={t('recover identity label')}\n description={t('recover identity description', { ns: meta.id })}\n >\n <Button variant='destructive' onClick={handleRecover} data-testid='devicesContainer.recover'>\n {t('recover identity label')}\n </Button>\n </Settings.Item>\n <Settings.Item\n title={t('join new identity label')}\n description={t('join new identity description', { ns: meta.id })}\n >\n <Button variant='destructive' onClick={handleJoinNewIdentity} data-testid='devicesContainer.joinExisting'>\n {t('join new identity label')}\n </Button>\n </Settings.Item>\n </Settings.Group>\n </Settings.Section>\n </Settings.Root>\n </Clipboard.Provider>\n );\n};\n\ntype DeviceInvitationProps = {\n invitation?: CancellableInvitationObservable;\n createInvitationUrl: (invitationCode: string) => string;\n onInvitationDone: () => void;\n onInvitationCreate: () => void;\n};\n\nconst DeviceInvitation = (props: Pick<DeviceInvitationProps, 'createInvitationUrl'>) => {\n const client = useClient();\n const [invitation, setInvitation] = useState<CancellableInvitationObservable>();\n\n const onInvitationCreate = useCallback(() => {\n const invitation = client.halo.share();\n if (client.config.values.runtime?.app?.env?.DX_ENVIRONMENT !== 'production') {\n const subscription = invitation.subscribe((invitation: Invitation) => {\n const invitationCode = InvitationEncoder.encode(invitation);\n if (invitation.state === Invitation.State.CONNECTING) {\n log.info(JSON.stringify({ invitationCode, authCode: invitation.authCode }));\n subscription.unsubscribe();\n }\n });\n }\n setInvitation(invitation);\n }, [client]);\n\n const onInvitationDone = useCallback(() => {\n setInvitation(undefined);\n }, []);\n\n if (invitation) {\n return <DeviceInvitationImpl {...props} {...{ invitation, onInvitationCreate, onInvitationDone }} />;\n } else {\n return <InvitationSection {...props} {...{ onInvitationCreate, onInvitationDone }} />;\n }\n};\n\nconst DeviceInvitationImpl = ({\n invitation: invitationObservable,\n createInvitationUrl,\n onInvitationDone,\n onInvitationCreate,\n}: DeviceInvitationProps) => {\n const invitation = useMulticastObservable(invitationObservable!);\n const url = createInvitationUrl(InvitationEncoder.encode(invitation));\n\n useEffect(() => {\n if (invitation.state >= Invitation.State.SUCCESS) {\n onInvitationDone();\n }\n }, [invitation.state]);\n\n return <InvitationSection {...invitation} {...{ url, onInvitationDone, onInvitationCreate }} />;\n};\n\ntype InvitationComponentProps = Partial<\n Pick<Invitation, 'authCode' | 'invitationId'> &\n Pick<DeviceInvitationProps, 'onInvitationDone' | 'onInvitationCreate'> & {\n state: number;\n url: string;\n }\n>;\n\nconst InvitationSection = ({\n state = -1,\n authCode,\n invitationId = 'never',\n url = 'never',\n onInvitationDone = () => {},\n onInvitationCreate = () => {},\n}: InvitationComponentProps) => {\n const { t } = useTranslation(meta.id);\n const activeView =\n state < 0\n ? 'init'\n : state >= Invitation.State.CANCELLED\n ? 'complete'\n : state >= Invitation.State.READY_FOR_AUTHENTICATION && authCode\n ? 'auth-code'\n : 'qr-code';\n return activeView === 'init' ? (\n <>\n <p className='text-description mbe-2'>{t('add device description')}</p>\n <IconButton\n icon='ph--plus--regular'\n label={t('create device invitation label')}\n disabled={state >= 0}\n classNames='is-full'\n data-testid='devicesContainer.createInvitation'\n onClick={onInvitationCreate}\n />\n </>\n ) : (\n <Viewport.Root activeView={activeView}>\n <Viewport.Views>\n <Viewport.View id='init'>\n {/* This view intentionally left blank while conditionally rendering the viewport. */}\n </Viewport.View>\n <Viewport.View id='complete'>\n <InvitationComplete statusValue={state} />\n </Viewport.View>\n <Viewport.View id='auth-code'>\n <InvitationAuthCode id={invitationId} code={authCode ?? 'never'} onCancel={onInvitationDone} />\n </Viewport.View>\n <Viewport.View id='qr-code'>\n <InvitationQR id={invitationId} url={url} onCancel={onInvitationDone} />\n </Viewport.View>\n </Viewport.Views>\n </Viewport.Root>\n );\n};\n\nconst InvitationQR = ({ id, url, onCancel }: { id: string; url: string; onCancel: () => void }) => {\n const { t } = useTranslation(osTranslations);\n const qrLabel = useId('devices-container__qr-code');\n const emoji = hexToEmoji(id);\n return (\n <>\n <p className='text-description'>{t('qr code description', { ns: meta.id })}</p>\n <div role='group' className='grid grid-cols-[1fr_min-content] mlb-2 gap-2'>\n <div role='none' className='is-full aspect-square relative text-description'>\n <QR\n rounding={100}\n backgroundColor='transparent'\n color='currentColor'\n aria-labelledby={qrLabel}\n errorCorrectionLevel='Q'\n cutout={true}\n >\n {url ?? 'never'}\n </QR>\n <Centered>\n <Emoji text={emoji} />\n </Centered>\n </div>\n <span id={qrLabel} className='sr-only'>\n {t('qr label')}\n </span>\n </div>\n {/* TODO(burdon): Factor out button bar */}\n <div className='flex justify-center'>\n <div className='flex gap-2'>\n <Clipboard.Button value={url ?? 'never'} />\n <Button variant='ghost' onClick={onCancel}>\n {t('cancel label')}\n </Button>\n </div>\n </div>\n </>\n );\n};\n\nconst InvitationAuthCode = ({ id, code, onCancel }: { id: string; code: string; onCancel: () => void }) => {\n const { t } = useTranslation(osTranslations);\n const emoji = hexToEmoji(id);\n\n return (\n <>\n <p className='text-description'>{t('auth other device emoji message')}</p>\n {emoji && <Emoji text={emoji} className='mli-auto mlb-2 text-center' />}\n <p className='text-description'>{t('auth code message')}</p>\n <AuthCode code={code} large classNames='mli-auto mlb-2 text-center grow' />\n <Button variant='ghost' onClick={onCancel}>\n {t('cancel label')}\n </Button>\n </>\n );\n};\n\nconst InvitationComplete = ({ statusValue }: { statusValue: number }) => {\n return statusValue > 0 ? (\n <Icon icon='ph--check--regular' size={6} classNames='m-1.5' />\n ) : (\n <Icon icon='ph--x--regular' size={6} classNames='m-1.5' />\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { ObservabilityOperation } from '@dxos/plugin-observability/types';\nimport { type InvitationResult } from '@dxos/react-client/invitations';\nimport { Dialog, useTranslation } from '@dxos/react-ui';\nimport { JoinPanel, type JoinPanelProps } from '@dxos/shell/react';\nimport { osTranslations } from '@dxos/ui-theme';\n\nimport { meta } from '../meta';\nimport { ClientOperation } from '../types';\n\nexport const JoinDialog = (props: JoinPanelProps) => {\n const { invokePromise } = useOperationInvoker();\n const { t } = useTranslation(meta.id);\n\n const handleCancelResetStorage = useCallback(() => invokePromise(ClientOperation.ShareIdentity), [invokePromise]);\n\n const handleDone = useCallback(\n async (result: InvitationResult | null) => {\n if (result?.identityKey) {\n await Promise.all([\n invokePromise(LayoutOperation.UpdateDialog, { state: false }),\n invokePromise(ObservabilityOperation.SendEvent, {\n name: props.initialDisposition === 'recover-identity' ? 'identity.recover' : 'identity.join',\n }),\n ]);\n }\n },\n [invokePromise],\n );\n\n return (\n <Dialog.Content>\n <Dialog.Title classNames='sr-only'>{t('join space label', { ns: osTranslations })}</Dialog.Title>\n <JoinPanel\n mode='halo-only'\n {...props}\n exitActionParent={<Dialog.Close asChild />}\n doneActionParent={<Dialog.Close asChild />}\n onCancelResetStorage={handleCancelResetStorage}\n onDone={handleDone}\n />\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport React, { type ChangeEvent, useCallback, useMemo, useState } from 'react';\n\nimport { debounce } from '@dxos/async';\nimport { useClient } from '@dxos/react-client';\nimport { type Identity, useIdentity } from '@dxos/react-client/halo';\nimport { ButtonGroup, Clipboard, Input, useTranslation } from '@dxos/react-ui';\nimport { Form, type FormFieldMap, type FormUpdateMeta, Settings } from '@dxos/react-ui-form';\nimport { EmojiPickerBlock, HuePicker } from '@dxos/react-ui-pickers';\nimport { hexToEmoji, hexToHue } from '@dxos/util';\n\nimport { meta } from '../meta';\n\n// TOOD(burdon): Factor out?\n// TODO(wittjosiah): Integrate annotations with translations.\nconst UserProfile = Schema.Struct({\n did: Schema.String.annotations({ title: 'DID' }),\n displayName: Schema.String.annotations({ title: 'Display name' }),\n emoji: Schema.String.annotations({ title: 'Avatar' }),\n hue: Schema.String.annotations({ title: 'Color' }),\n});\n\ntype UserProfile = Schema.Schema.Type<typeof UserProfile>;\n\n// TODO(thure): Factor out?\nconst getDefaultHueValue = (identity: Identity | null) => hexToHue(identity?.identityKey.toHex() ?? '0');\nconst getHueValue = (identity: Identity | null) => identity?.profile?.data?.hue || getDefaultHueValue(identity);\nconst getDefaultEmojiValue = (identity: Identity | null) => hexToEmoji(identity?.identityKey.toHex() ?? '0');\nconst getEmojiValue = (identity: Identity | null) => identity?.profile?.data?.emoji || getDefaultEmojiValue(identity);\n\nexport const ProfileContainer = () => {\n const { t } = useTranslation(meta.id);\n const client = useClient();\n const identity = useIdentity();\n const [displayName, setDisplayNameDirectly] = useState(identity?.profile?.displayName ?? '');\n const [emoji, setEmojiDirectly] = useState<string>(getEmojiValue(identity));\n const [hue, setHueDirectly] = useState<string>(getHueValue(identity));\n\n const updateProfile = useMemo(\n () =>\n debounce(\n (profile: Partial<UserProfile>) =>\n client.halo.updateProfile({\n displayName: profile.displayName,\n data: {\n emoji: profile.emoji,\n hue: profile.hue,\n },\n }),\n 2_000,\n ),\n [],\n );\n\n const handleChange = useCallback(\n (profile: Partial<UserProfile>, meta: FormUpdateMeta<UserProfile>) => {\n for (const [path, changed] of Object.entries(meta.changed)) {\n if (changed) {\n switch (path) {\n case 'displayName':\n setDisplayNameDirectly(profile.displayName ?? '');\n break;\n case 'emoji':\n setEmojiDirectly(profile.emoji ?? getDefaultEmojiValue(identity));\n break;\n case 'hue':\n setHueDirectly(profile.hue ?? getDefaultHueValue(identity));\n break;\n default:\n break;\n }\n }\n }\n\n void updateProfile(profile);\n },\n [identity],\n );\n\n const values = useMemo(\n () => ({\n did: identity?.did,\n displayName,\n emoji,\n hue,\n }),\n [identity, displayName, emoji, hue],\n );\n\n // TODO(wittjosiah): Integrate descriptions with the form schema.\n const fieldMap = useMemo<FormFieldMap>(\n () => ({\n displayName: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLInputElement>) => onValueChange(type, value),\n [onValueChange, type],\n );\n\n return (\n <Settings.ItemInput title={label} description={t('display name description')}>\n <Input.TextInput\n value={getValue()}\n onChange={handleChange}\n placeholder={t('display name input placeholder')}\n classNames='min-is-64'\n />\n </Settings.ItemInput>\n );\n },\n emoji: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((nextEmoji: string) => onValueChange(type, nextEmoji), [onValueChange, type]);\n const handleEmojiReset = useCallback(\n () => onValueChange(type, getDefaultEmojiValue(identity)),\n [onValueChange, type],\n );\n\n return (\n <Settings.Item title={label} description={t('icon description')}>\n <EmojiPickerBlock\n triggerVariant='default'\n emoji={getValue()}\n onChangeEmoji={handleChange}\n onClickClear={handleEmojiReset}\n classNames='justify-self-end'\n />\n </Settings.Item>\n );\n },\n hue: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((nextHue: string) => onValueChange(type, nextHue), [onValueChange, type]);\n const handleHueReset = useCallback(\n () => onValueChange(type, getDefaultHueValue(identity)),\n [onValueChange, type],\n );\n\n return (\n <Settings.Item title={label} description={t('hue description')}>\n <div role='none' className='flex justify-self-end'>\n <HuePicker value={getValue()} onChange={handleChange} onReset={handleHueReset} />\n </div>\n </Settings.Item>\n );\n },\n // TODO(wittjosiah): We need text input annotations for disabled and copyable.\n did: ({ label, getValue }) => {\n return (\n <Settings.ItemInput title={label} description={t('did description')}>\n <ButtonGroup classNames='is-full'>\n <Input.TextInput value={getValue()} disabled classNames='min-is-64' />\n <Clipboard.IconButton value={getValue() ?? ''} />\n </ButtonGroup>\n </Settings.ItemInput>\n );\n },\n }),\n [t],\n );\n\n return (\n <Clipboard.Provider>\n <Settings.Root>\n <Settings.Section title={t('profile label')} description={t('profile description')}>\n <Form.Root schema={UserProfile} values={values} fieldMap={fieldMap} onValuesChanged={handleChange}>\n <Form.Content>\n <Form.FieldSet classNames='space-y-trimMd' />\n </Form.Content>\n </Form.Root>\n </Settings.Section>\n </Settings.Root>\n </Clipboard.Provider>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { AlertDialog, Button, Clipboard, Input, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '../meta';\n\nexport type RecoveryCodeDialogProps = {\n code: string;\n};\n\nexport const RecoveryCodeDialog = ({ code }: RecoveryCodeDialogProps) => {\n const { t } = useTranslation(meta.id);\n const [confirmation, setConfirmation] = useState(false);\n\n const handleConfirmation = useCallback((checked: boolean) => setConfirmation(checked), []);\n\n return (\n <AlertDialog.Content classNames='bs-content min-bs-[15rem] max-bs-full md:max-is-[40rem] overflow-hidden'>\n <AlertDialog.Title>{t('recovery code dialog title')}</AlertDialog.Title>\n <p className='plb-4'>{t('recovery code dialog description')}</p>\n <Clipboard.Provider>\n <Code code={code} />\n </Clipboard.Provider>\n <div className='flex flex-col plb-4 gap-2'>\n <p>{t('recovery code dialog warning 1')}</p>\n <p>{t('recovery code dialog warning 2')}</p>\n </div>\n <div className='flex items-center gap-2 pbe-4'>\n <Input.Root>\n <Input.Checkbox\n data-testid='recoveryCode.confirm'\n checked={confirmation}\n onCheckedChange={handleConfirmation}\n />\n <Input.Label>{t('recovery code confirmation label')}</Input.Label>\n </Input.Root>\n </div>\n <div className='flex justify-end'>\n <AlertDialog.Action asChild>\n <Button data-testid='recoveryCode.continue' variant='primary' disabled={!confirmation}>\n {t('continue label')}\n </Button>\n </AlertDialog.Action>\n </div>\n </AlertDialog.Content>\n );\n};\n\nconst Code = ({ code }: { code: string }) => {\n const words = code.split(' ');\n return (\n <div className='relative p-2 border border-separator rounded group'>\n <Clipboard.IconButton value={code} classNames='absolute top-2 right-2 invisible group-hover:visible' />\n <div className='grid grid-cols-4'>\n {words.map((word, i) => (\n <div key={i} className='flex items-center p-2 gap-2'>\n <div className='is-4 text-xs text-center text-subdued'>{i + 1}</div>\n <div className='text-sm'>{word}</div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { useCredentials } from '@dxos/react-client/halo';\nimport { Icon, IconButton, List, ListItem, Message, useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\nimport { ClientOperation } from '../types';\n\nexport const MANAGE_CREDENTIALS_DIALOG = `${meta.id}/ManageCredentialsDialog`;\n\nexport const RecoveryCredentialsContainer = () => {\n const { t } = useTranslation(meta.id);\n const { invokePromise } = useOperationInvoker();\n const credentials = useCredentials();\n const recoveryCredentials = credentials.filter(\n (credential) => credential.subject.assertion['@type'] === 'dxos.halo.credentials.IdentityRecovery',\n );\n\n return (\n <Settings.Root>\n <Settings.Section title={t('recovery setup dialog title')} description={t('recovery setup dialog description')}>\n <Settings.Group>\n <Settings.Item title={t('create passkey label')} description={t('create passkey description')}>\n <IconButton\n label={t('create passkey label')}\n icon='ph--key--duotone'\n variant='primary'\n onClick={() => invokePromise(ClientOperation.CreatePasskey)}\n />\n </Settings.Item>\n <Settings.Item title={t('create recovery code label')} description={t('create recovery code description')}>\n <IconButton\n label={t('create recovery code label')}\n icon='ph--receipt--duotone'\n variant='default'\n onClick={() => invokePromise(ClientOperation.CreateRecoveryCode)}\n />\n </Settings.Item>\n </Settings.Group>\n </Settings.Section>\n <Settings.Section title={t('credentials list label')}>\n {recoveryCredentials.length < 1 ? (\n <Message.Root valence='error' classNames='container-max-width'>\n <Message.Title icon='ph--shield-warning--duotone'>{t('no credentials title')}</Message.Title>\n <Message.Content>{t('no credentials message')}</Message.Content>\n </Message.Root>\n ) : (\n <List classNames='container-max-width pli-2'>\n {recoveryCredentials.map((credential) => (\n <ListItem.Root key={credential.id?.toHex()}>\n <ListItem.Endcap>\n <Icon icon='ph--key--regular' />\n </ListItem.Endcap>\n <ListItem.Heading>{credential.issuanceDate.toLocaleString()}</ListItem.Heading>\n </ListItem.Root>\n ))}\n </List>\n )}\n </Settings.Section>\n </Settings.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React, { useCallback } from 'react';\n\nimport { Capability, type CapabilityManager } from '@dxos/app-framework';\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { useClient } from '@dxos/react-client';\nimport { Dialog, useTranslation } from '@dxos/react-ui';\nimport { ConfirmReset, type ConfirmResetProps } from '@dxos/shell/react';\n\nimport { meta } from '../meta';\nimport { type ClientPluginOptions } from '../types';\n\nexport type ResetDialogProps = Pick<ConfirmResetProps, 'mode'> &\n Pick<ClientPluginOptions, 'onReset'> & {\n capabilityManager: CapabilityManager.CapabilityManager;\n };\n\nexport const ResetDialog = ({ mode, onReset, capabilityManager }: ResetDialogProps) => {\n const { t } = useTranslation(meta.id);\n const { invokePromise } = useOperationInvoker();\n const client = useClient();\n\n const handleReset = useCallback(async () => {\n await client.reset();\n const target =\n mode === 'join new identity' ? 'deviceInvitation' : mode === 'recover' ? 'recoverIdentity' : undefined;\n if (onReset) {\n await runAndForwardErrors(onReset({ target }).pipe(Effect.provideService(Capability.Service, capabilityManager)));\n }\n }, [client, mode, onReset, capabilityManager]);\n\n const handleCancel = useCallback(() => {\n void invokePromise(LayoutOperation.UpdateDialog, { state: false });\n }, [invokePromise]);\n\n // TODO(wittjosiah): Add the sr-only translations.\n // TODO(wittjosiah): Add missing descriptions to other dialogs.\n return (\n <>\n <Dialog.Content>\n <Dialog.Title classNames='sr-only'>{t('reset dialog title')}</Dialog.Title>\n <Dialog.Description classNames='sr-only'>{t('reset dialog description')}</Dialog.Description>\n <ConfirmReset active mode={mode} onConfirm={handleReset} onCancel={handleCancel} />\n </Dialog.Content>\n </>\n );\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;AAIA,YAAYA,aAAY;AACxB,OAAOC,YAAW;AAElB,SAASC,cAAcC,cAAAA,mBAAkB;AACzC,SAASC,eAAe;;;ACJxB,OAAOC,SAASC,aAAaC,WAAWC,gBAAgB;AACxD,SAASC,UAAU;AAEnB,SAASC,2BAA2B;AACpC,SAASC,WAAW;AACpB,SAASC,WAAWC,8BAA8B;AAClD,SAAsBC,kBAAkB;AACxC,SAA+CC,YAAYC,yBAAyB;AACpF,SAASC,wBAAwB;AACjC,SAASC,QAAQC,WAAWC,MAAMC,YAAYC,MAAMC,OAAOC,sBAAsB;AACjF,SAASC,gBAAgB;AACzB,SAASC,UAAUC,UAAUC,gBAAgBC,OAAOC,UAAUC,sBAAsB;AACpF,SAASC,sBAAsB;AAC/B,SAASC,kBAAkB;;AASpB,IAAMC,mBAAmB,CAAC,EAAEC,oBAAmB,MAAyB;AAC7E,QAAM,EAAEC,EAAC,IAAKC,eAAeC,cAAAA;AAC7B,QAAM,EAAEC,cAAa,IAAKC,oBAAAA;AAC1B,QAAMC,UAAUC,WAAAA;AAChB,QAAM,EAAEC,OAAOC,gBAAe,IAAKC,iBAAAA;AAEnC,QAAMC,qBAAqBC,YAAY,MAAMR,cAAcS,gBAAgBC,cAAc,CAAC,CAAA,GAAI;IAACV;GAAc;AAE7G,QAAMW,gBAAgBH,YACpB,MAAMR,cAAcS,gBAAgBC,cAAc;IAAEE,MAAM;EAAU,CAAA,GACpE;IAACZ;GAAc;AAGjB,QAAMa,wBAAwBL,YAC5B,MAAMR,cAAcS,gBAAgBC,cAAc;IAAEE,MAAM;EAAoB,CAAA,GAC9E;IAACZ;GAAc;AAGjB,SACE,sBAAA,cAACc,UAAUC,UAAQ,MACjB,sBAAA,cAACC,SAASC,MAAI,MACZ,sBAAA,cAACD,SAASE,SAAO;IACfC,OAAOtB,EAAE,yBAAyB;MAAEuB,IAAIC,KAAKC;IAAG,CAAA;IAChDC,aAAa1B,EAAE,uBAAuB;MAAEuB,IAAIC,KAAKC;IAAG,CAAA;KAEpD,sBAAA,cAACN,SAASQ,OAAK,MACb,sBAAA,cAACR,SAASS,WAAS;IAACN,OAAOtB,EAAE,iBAAiB;MAAEuB,IAAIC,KAAKC;IAAG,CAAA;KAC1D,sBAAA,cAACI,MAAAA,MACExB,QAAQyB,IAAI,CAACC,WACZ,sBAAA,cAACC,gBAAAA;IAAeC,KAAKF,OAAOG,UAAUC,MAAK;IAAIJ;IAAgBvB;SAIpET,uBACC,sBAAA,cAACoB,SAASS,WAAS;IAACN,OAAM;KACxB,sBAAA,cAACc,kBAAAA;IAAiBrC;SAK1B,sBAAA,cAACoB,SAASE,SAAO;IACfC,OAAOtB,EAAE,qBAAqB;MAAEuB,IAAIC,KAAKC;IAAG,CAAA;IAC5CC,aAAa1B,EAAE,2BAA2B;MAAEuB,IAAIC,KAAKC;IAAG,CAAA;KAExD,sBAAA,cAACN,SAASkB,OAAK,MACb,sBAAA,cAAClB,SAASmB,MAAI;IAAChB,OAAOtB,EAAE,oBAAA;IAAuB0B,aAAa1B,EAAE,4BAA4B;MAAEuB,IAAIC,KAAKC;IAAG,CAAA;KACtG,sBAAA,cAACc,QAAAA;IAAOC,SAAQ;IAAcC,SAAS/B;IAAoBgC,eAAY;KACpE1C,EAAE,oBAAA,CAAA,CAAA,GAGP,sBAAA,cAACmB,SAASmB,MAAI;IACZhB,OAAOtB,EAAE,wBAAA;IACT0B,aAAa1B,EAAE,gCAAgC;MAAEuB,IAAIC,KAAKC;IAAG,CAAA;KAE7D,sBAAA,cAACc,QAAAA;IAAOC,SAAQ;IAAcC,SAAS3B;IAAe4B,eAAY;KAC/D1C,EAAE,wBAAA,CAAA,CAAA,GAGP,sBAAA,cAACmB,SAASmB,MAAI;IACZhB,OAAOtB,EAAE,yBAAA;IACT0B,aAAa1B,EAAE,iCAAiC;MAAEuB,IAAIC,KAAKC;IAAG,CAAA;KAE9D,sBAAA,cAACc,QAAAA;IAAOC,SAAQ;IAAcC,SAASzB;IAAuB0B,eAAY;KACvE1C,EAAE,yBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAQnB;AASA,IAAMoC,mBAAmB,CAACO,UAAAA;AACxB,QAAMC,SAASC,UAAAA;AACf,QAAM,CAACC,YAAYC,aAAAA,IAAiBC,SAAAA;AAEpC,QAAMC,qBAAqBtC,YAAY,MAAA;AACrC,UAAMmC,cAAaF,OAAOM,KAAKC,MAAK;AACpC,QAAIP,OAAOQ,OAAOC,OAAOC,SAASC,KAAKC,KAAKC,mBAAmB,cAAc;AAC3E,YAAMC,eAAeZ,YAAWa,UAAU,CAACb,gBAAAA;AACzC,cAAMc,iBAAiBC,kBAAkBC,OAAOhB,WAAAA;AAChD,YAAIA,YAAWiB,UAAUC,WAAWC,MAAMC,YAAY;AACpDC,cAAIC,KAAKC,KAAKC,UAAU;YAAEV;YAAgBW,UAAUzB,YAAWyB;UAAS,CAAA,GAAA,QAAA;;;;;;AACxEb,uBAAac,YAAW;QAC1B;MACF,CAAA;IACF;AACAzB,kBAAcD,WAAAA;EAChB,GAAG;IAACF;GAAO;AAEX,QAAM6B,mBAAmB9D,YAAY,MAAA;AACnCoC,kBAAc2B,MAAAA;EAChB,GAAG,CAAA,CAAE;AAEL,MAAI5B,YAAY;AACd,WAAO,sBAAA,cAAC6B,sBAAAA;MAAsB,GAAGhC;MAAaG;MAAYG;MAAoBwB;;EAChF,OAAO;AACL,WAAO,sBAAA,cAACG,mBAAAA;MAAmB,GAAGjC;MAAaM;MAAoBwB;;EACjE;AACF;AAEA,IAAME,uBAAuB,CAAC,EAC5B7B,YAAY+B,sBACZ9E,qBACA0E,kBACAxB,mBAAkB,MACI;AACtB,QAAMH,aAAagC,uBAAuBD,oBAAAA;AAC1C,QAAME,MAAMhF,oBAAoB8D,kBAAkBC,OAAOhB,UAAAA,CAAAA;AAEzDkC,YAAU,MAAA;AACR,QAAIlC,WAAWiB,SAASC,WAAWC,MAAMgB,SAAS;AAChDR,uBAAAA;IACF;EACF,GAAG;IAAC3B,WAAWiB;GAAM;AAErB,SAAO,sBAAA,cAACa,mBAAAA;IAAmB,GAAG9B;IAAkBiC;IAAKN;IAAkBxB;;AACzE;AAUA,IAAM2B,oBAAoB,CAAC,EACzBb,QAAQ,IACRQ,UACAW,eAAe,SACfH,MAAM,SACNN,mBAAmB,MAAA;AAAO,GAC1BxB,qBAAqB,MAAA;AAAO,EAAC,MACJ;AACzB,QAAM,EAAEjD,EAAC,IAAKC,eAAeuB,KAAKC,EAAE;AACpC,QAAM0D,aACJpB,QAAQ,IACJ,SACAA,SAASC,WAAWC,MAAMmB,YACxB,aACArB,SAASC,WAAWC,MAAMoB,4BAA4Bd,WACpD,cACA;AACV,SAAOY,eAAe,SACpB,sBAAA,cAAA,MAAA,UAAA,MACE,sBAAA,cAACG,KAAAA;IAAEC,WAAU;KAA0BvF,EAAE,wBAAA,CAAA,GACzC,sBAAA,cAACwF,YAAAA;IACCC,MAAK;IACLC,OAAO1F,EAAE,gCAAA;IACT2F,UAAU5B,SAAS;IACnB6B,YAAW;IACXlD,eAAY;IACZD,SAASQ;QAIb,sBAAA,cAAC4C,SAASzE,MAAI;IAAC+D;KACb,sBAAA,cAACU,SAASC,OAAK,MACb,sBAAA,cAACD,SAASE,MAAI;IAACtE,IAAG;MAGlB,sBAAA,cAACoE,SAASE,MAAI;IAACtE,IAAG;KAChB,sBAAA,cAACuE,oBAAAA;IAAmBC,aAAalC;OAEnC,sBAAA,cAAC8B,SAASE,MAAI;IAACtE,IAAG;KAChB,sBAAA,cAACyE,oBAAAA;IAAmBzE,IAAIyD;IAAciB,MAAM5B,YAAY;IAAS6B,UAAU3B;OAE7E,sBAAA,cAACoB,SAASE,MAAI;IAACtE,IAAG;KAChB,sBAAA,cAAC4E,cAAAA;IAAa5E,IAAIyD;IAAcH;IAAUqB,UAAU3B;;AAK9D;AAEA,IAAM4B,eAAe,CAAC,EAAE5E,IAAIsD,KAAKqB,SAAQ,MAAqD;AAC5F,QAAM,EAAEpG,EAAC,IAAKC,eAAeqG,cAAAA;AAC7B,QAAMC,UAAUC,MAAM,4BAAA;AACtB,QAAMC,QAAQC,WAAWjF,EAAAA;AACzB,SACE,sBAAA,cAAA,MAAA,UAAA,MACE,sBAAA,cAAC6D,KAAAA;IAAEC,WAAU;KAAoBvF,EAAE,uBAAuB;IAAEuB,IAAIC,KAAKC;EAAG,CAAA,CAAA,GACxE,sBAAA,cAACkF,OAAAA;IAAIC,MAAK;IAAQrB,WAAU;KAC1B,sBAAA,cAACoB,OAAAA;IAAIC,MAAK;IAAOrB,WAAU;KACzB,sBAAA,cAACsB,IAAAA;IACCC,UAAU;IACVC,iBAAgB;IAChBC,OAAM;IACNC,mBAAiBV;IACjBW,sBAAqB;IACrBC,QAAQ;KAEPpC,OAAO,OAAA,GAEV,sBAAA,cAACqC,UAAAA,MACC,sBAAA,cAACC,OAAAA;IAAMC,MAAMb;QAGjB,sBAAA,cAACc,QAAAA;IAAK9F,IAAI8E;IAAShB,WAAU;KAC1BvF,EAAE,UAAA,CAAA,CAAA,GAIP,sBAAA,cAAC2G,OAAAA;IAAIpB,WAAU;KACb,sBAAA,cAACoB,OAAAA;IAAIpB,WAAU;KACb,sBAAA,cAACtE,UAAUsB,QAAM;IAACiF,OAAOzC,OAAO;MAChC,sBAAA,cAACxC,QAAAA;IAAOC,SAAQ;IAAQC,SAAS2D;KAC9BpG,EAAE,cAAA,CAAA,CAAA,CAAA,CAAA;AAMf;AAEA,IAAMkG,qBAAqB,CAAC,EAAEzE,IAAI0E,MAAMC,SAAQ,MAAsD;AACpG,QAAM,EAAEpG,EAAC,IAAKC,eAAeqG,cAAAA;AAC7B,QAAMG,QAAQC,WAAWjF,EAAAA;AAEzB,SACE,sBAAA,cAAA,MAAA,UAAA,MACE,sBAAA,cAAC6D,KAAAA;IAAEC,WAAU;KAAoBvF,EAAE,iCAAA,CAAA,GAClCyG,SAAS,sBAAA,cAACY,OAAAA;IAAMC,MAAMb;IAAOlB,WAAU;MACxC,sBAAA,cAACD,KAAAA;IAAEC,WAAU;KAAoBvF,EAAE,mBAAA,CAAA,GACnC,sBAAA,cAACyH,UAAAA;IAAStB;IAAYuB,OAAAA;IAAM9B,YAAW;MACvC,sBAAA,cAACrD,QAAAA;IAAOC,SAAQ;IAAQC,SAAS2D;KAC9BpG,EAAE,cAAA,CAAA,CAAA;AAIX;AAEA,IAAMgG,qBAAqB,CAAC,EAAEC,YAAW,MAA2B;AAClE,SAAOA,cAAc,IACnB,sBAAA,cAAC0B,MAAAA;IAAKlC,MAAK;IAAqBmC,MAAM;IAAGhC,YAAW;OAEpD,sBAAA,cAAC+B,MAAAA;IAAKlC,MAAK;IAAiBmC,MAAM;IAAGhC,YAAW;;AAEpD;;;AC7QA,OAAOiC,UAASC,eAAAA,oBAAmB;AAEnC,SAASC,uBAAAA,4BAA2B;AACpC,SAASC,uBAAuB;AAChC,SAASC,8BAA8B;AAEvC,SAASC,QAAQC,kBAAAA,uBAAsB;AACvC,SAASC,iBAAsC;AAC/C,SAASC,kBAAAA,uBAAsB;AAKxB,IAAMC,aAAa,CAACC,UAAAA;AACzB,QAAM,EAAEC,cAAa,IAAKC,qBAAAA;AAC1B,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AAEpC,QAAMC,2BAA2BC,aAAY,MAAMP,cAAcQ,gBAAgBC,aAAa,GAAG;IAACT;GAAc;AAEhH,QAAMU,aAAaH,aACjB,OAAOI,WAAAA;AACL,QAAIA,QAAQC,aAAa;AACvB,YAAMC,QAAQC,IAAI;QAChBd,cAAce,gBAAgBC,cAAc;UAAEC,OAAO;QAAM,CAAA;QAC3DjB,cAAckB,uBAAuBC,WAAW;UAC9CC,MAAMrB,MAAMsB,uBAAuB,qBAAqB,qBAAqB;QAC/E,CAAA;OACD;IACH;EACF,GACA;IAACrB;GAAc;AAGjB,SACE,gBAAAsB,OAAA,cAACC,OAAOC,SAAO,MACb,gBAAAF,OAAA,cAACC,OAAOE,OAAK;IAACC,YAAW;KAAWxB,EAAE,oBAAoB;IAAEyB,IAAIC;EAAe,CAAA,CAAA,GAC/E,gBAAAN,OAAA,cAACO,WAAAA;IACCC,MAAK;IACJ,GAAG/B;IACJgC,kBAAkB,gBAAAT,OAAA,cAACC,OAAOS,OAAK;MAACC,SAAAA;;IAChCC,kBAAkB,gBAAAZ,OAAA,cAACC,OAAOS,OAAK;MAACC,SAAAA;;IAChCE,sBAAsB7B;IACtB8B,QAAQ1B;;AAIhB;;;AC9CA,YAAY2B,YAAY;AACxB,OAAOC,UAA2BC,eAAAA,cAAaC,SAASC,YAAAA,iBAAgB;AAExE,SAASC,gBAAgB;AACzB,SAASC,aAAAA,kBAAiB;AAC1B,SAAwBC,mBAAmB;AAC3C,SAASC,aAAaC,aAAAA,YAAWC,OAAOC,kBAAAA,uBAAsB;AAC9D,SAASC,MAA8CC,YAAAA,iBAAgB;AACvE,SAASC,kBAAkBC,iBAAiB;AAC5C,SAASC,cAAAA,aAAYC,gBAAgB;AAMrC,IAAMC,cAAqBC,cAAO;EAChCC,KAAYC,cAAOC,YAAY;IAAEC,OAAO;EAAM,CAAA;EAC9CC,aAAoBH,cAAOC,YAAY;IAAEC,OAAO;EAAe,CAAA;EAC/DE,OAAcJ,cAAOC,YAAY;IAAEC,OAAO;EAAS,CAAA;EACnDG,KAAYL,cAAOC,YAAY;IAAEC,OAAO;EAAQ,CAAA;AAClD,CAAA;AAKA,IAAMI,qBAAqB,CAACC,aAA8BC,SAASD,UAAUE,YAAYC,MAAAA,KAAW,GAAA;AACpG,IAAMC,cAAc,CAACJ,aAA8BA,UAAUK,SAASC,MAAMR,OAAOC,mBAAmBC,QAAAA;AACtG,IAAMO,uBAAuB,CAACP,aAA8BQ,YAAWR,UAAUE,YAAYC,MAAAA,KAAW,GAAA;AACxG,IAAMM,gBAAgB,CAACT,aAA8BA,UAAUK,SAASC,MAAMT,SAASU,qBAAqBP,QAAAA;AAErG,IAAMU,mBAAmB,MAAA;AAC9B,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AACpC,QAAMC,SAASC,WAAAA;AACf,QAAMhB,WAAWiB,YAAAA;AACjB,QAAM,CAACrB,aAAasB,sBAAAA,IAA0BC,UAASnB,UAAUK,SAAST,eAAe,EAAA;AACzF,QAAM,CAACC,OAAOuB,gBAAAA,IAAoBD,UAAiBV,cAAcT,QAAAA,CAAAA;AACjE,QAAM,CAACF,KAAKuB,cAAAA,IAAkBF,UAAiBf,YAAYJ,QAAAA,CAAAA;AAE3D,QAAMsB,gBAAgBC,QACpB,MACEC,SACE,CAACnB,YACCU,OAAOU,KAAKH,cAAc;IACxB1B,aAAaS,QAAQT;IACrBU,MAAM;MACJT,OAAOQ,QAAQR;MACfC,KAAKO,QAAQP;IACf;EACF,CAAA,GACF,GAAA,GAEJ,CAAA,CAAE;AAGJ,QAAM4B,eAAeC,aACnB,CAACtB,SAA+BQ,UAAAA;AAC9B,eAAW,CAACe,MAAMC,OAAAA,KAAYC,OAAOC,QAAQlB,MAAKgB,OAAO,GAAG;AAC1D,UAAIA,SAAS;AACX,gBAAQD,MAAAA;UACN,KAAK;AACHV,mCAAuBb,QAAQT,eAAe,EAAA;AAC9C;UACF,KAAK;AACHwB,6BAAiBf,QAAQR,SAASU,qBAAqBP,QAAAA,CAAAA;AACvD;UACF,KAAK;AACHqB,2BAAehB,QAAQP,OAAOC,mBAAmBC,QAAAA,CAAAA;AACjD;UACF;AACE;QACJ;MACF;IACF;AAEA,SAAKsB,cAAcjB,OAAAA;EACrB,GACA;IAACL;GAAS;AAGZ,QAAMgC,SAAST,QACb,OAAO;IACL/B,KAAKQ,UAAUR;IACfI;IACAC;IACAC;EACF,IACA;IAACE;IAAUJ;IAAaC;IAAOC;GAAI;AAIrC,QAAMmC,WAAWV,QACf,OAAO;IACL3B,aAAa,CAAC,EAAEsC,MAAMC,OAAOC,UAAUC,cAAa,MAAE;AACpD,YAAMX,gBAAeC,aACnB,CAAC,EAAEW,QAAQ,EAAEC,MAAK,EAAE,MAAsCF,cAAcH,MAAMK,KAAAA,GAC9E;QAACF;QAAeH;OAAK;AAGvB,aACE,gBAAAM,OAAA,cAACC,UAASC,WAAS;QAAC/C,OAAOwC;QAAOQ,aAAahC,EAAE,0BAAA;SAC/C,gBAAA6B,OAAA,cAACI,MAAMC,WAAS;QACdN,OAAOH,SAAAA;QACPU,UAAUpB;QACVqB,aAAapC,EAAE,gCAAA;QACfqC,YAAW;;IAInB;IACAnD,OAAO,CAAC,EAAEqC,MAAMC,OAAOC,UAAUC,cAAa,MAAE;AAC9C,YAAMX,gBAAeC,aAAY,CAACsB,cAAsBZ,cAAcH,MAAMe,SAAAA,GAAY;QAACZ;QAAeH;OAAK;AAC7G,YAAMgB,mBAAmBvB,aACvB,MAAMU,cAAcH,MAAM3B,qBAAqBP,QAAAA,CAAAA,GAC/C;QAACqC;QAAeH;OAAK;AAGvB,aACE,gBAAAM,OAAA,cAACC,UAASU,MAAI;QAACxD,OAAOwC;QAAOQ,aAAahC,EAAE,kBAAA;SAC1C,gBAAA6B,OAAA,cAACY,kBAAAA;QACCC,gBAAe;QACfxD,OAAOuC,SAAAA;QACPkB,eAAe5B;QACf6B,cAAcL;QACdF,YAAW;;IAInB;IACAlD,KAAK,CAAC,EAAEoC,MAAMC,OAAOC,UAAUC,cAAa,MAAE;AAC5C,YAAMX,gBAAeC,aAAY,CAAC6B,YAAoBnB,cAAcH,MAAMsB,OAAAA,GAAU;QAACnB;QAAeH;OAAK;AACzG,YAAMuB,iBAAiB9B,aACrB,MAAMU,cAAcH,MAAMnC,mBAAmBC,QAAAA,CAAAA,GAC7C;QAACqC;QAAeH;OAAK;AAGvB,aACE,gBAAAM,OAAA,cAACC,UAASU,MAAI;QAACxD,OAAOwC;QAAOQ,aAAahC,EAAE,iBAAA;SAC1C,gBAAA6B,OAAA,cAACkB,OAAAA;QAAIC,MAAK;QAAOC,WAAU;SACzB,gBAAApB,OAAA,cAACqB,WAAAA;QAAUtB,OAAOH,SAAAA;QAAYU,UAAUpB;QAAcoC,SAASL;;IAIvE;;IAEAjE,KAAK,CAAC,EAAE2C,OAAOC,SAAQ,MAAE;AACvB,aACE,gBAAAI,OAAA,cAACC,UAASC,WAAS;QAAC/C,OAAOwC;QAAOQ,aAAahC,EAAE,iBAAA;SAC/C,gBAAA6B,OAAA,cAACuB,aAAAA;QAAYf,YAAW;SACtB,gBAAAR,OAAA,cAACI,MAAMC,WAAS;QAACN,OAAOH,SAAAA;QAAY4B,UAAAA;QAAShB,YAAW;UACxD,gBAAAR,OAAA,cAACyB,WAAUC,YAAU;QAAC3B,OAAOH,SAAAA,KAAc;;IAInD;EACF,IACA;IAACzB;GAAE;AAGL,SACE,gBAAA6B,OAAA,cAACyB,WAAUE,UAAQ,MACjB,gBAAA3B,OAAA,cAACC,UAAS2B,MAAI,MACZ,gBAAA5B,OAAA,cAACC,UAAS4B,SAAO;IAAC1E,OAAOgB,EAAE,eAAA;IAAkBgC,aAAahC,EAAE,qBAAA;KAC1D,gBAAA6B,OAAA,cAAC8B,KAAKF,MAAI;IAACG,QAAQjF;IAAa0C;IAAgBC;IAAoBuC,iBAAiB9C;KACnF,gBAAAc,OAAA,cAAC8B,KAAKG,SAAO,MACX,gBAAAjC,OAAA,cAAC8B,KAAKI,UAAQ;IAAC1B,YAAW;;AAOxC;;;AC3KA,OAAO2B,UAASC,eAAAA,cAAaC,YAAAA,iBAAgB;AAE7C,SAASC,aAAaC,UAAAA,SAAQC,aAAAA,YAAWC,SAAAA,QAAOC,kBAAAA,uBAAsB;AAQ/D,IAAMC,qBAAqB,CAAC,EAAEC,KAAI,MAA2B;AAClE,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AACpC,QAAM,CAACC,cAAcC,eAAAA,IAAmBC,UAAS,KAAA;AAEjD,QAAMC,qBAAqBC,aAAY,CAACC,YAAqBJ,gBAAgBI,OAAAA,GAAU,CAAA,CAAE;AAEzF,SACE,gBAAAC,OAAA,cAACC,YAAYC,SAAO;IAACC,YAAW;KAC9B,gBAAAH,OAAA,cAACC,YAAYG,OAAK,MAAEd,EAAE,4BAAA,CAAA,GACtB,gBAAAU,OAAA,cAACK,KAAAA;IAAEC,WAAU;KAAShB,EAAE,kCAAA,CAAA,GACxB,gBAAAU,OAAA,cAACO,WAAUC,UAAQ,MACjB,gBAAAR,OAAA,cAACS,MAAAA;IAAKpB;OAER,gBAAAW,OAAA,cAACU,OAAAA;IAAIJ,WAAU;KACb,gBAAAN,OAAA,cAACK,KAAAA,MAAGf,EAAE,gCAAA,CAAA,GACN,gBAAAU,OAAA,cAACK,KAAAA,MAAGf,EAAE,gCAAA,CAAA,CAAA,GAER,gBAAAU,OAAA,cAACU,OAAAA;IAAIJ,WAAU;KACb,gBAAAN,OAAA,cAACW,OAAMC,MAAI,MACT,gBAAAZ,OAAA,cAACW,OAAME,UAAQ;IACbC,eAAY;IACZf,SAASL;IACTqB,iBAAiBlB;MAEnB,gBAAAG,OAAA,cAACW,OAAMK,OAAK,MAAE1B,EAAE,kCAAA,CAAA,CAAA,CAAA,GAGpB,gBAAAU,OAAA,cAACU,OAAAA;IAAIJ,WAAU;KACb,gBAAAN,OAAA,cAACC,YAAYgB,QAAM;IAACC,SAAAA;KAClB,gBAAAlB,OAAA,cAACmB,SAAAA;IAAOL,eAAY;IAAwBM,SAAQ;IAAUC,UAAU,CAAC3B;KACtEJ,EAAE,gBAAA,CAAA,CAAA,CAAA,CAAA;AAMf;AAEA,IAAMmB,OAAO,CAAC,EAAEpB,KAAI,MAAoB;AACtC,QAAMiC,QAAQjC,KAAKkC,MAAM,GAAA;AACzB,SACE,gBAAAvB,OAAA,cAACU,OAAAA;IAAIJ,WAAU;KACb,gBAAAN,OAAA,cAACO,WAAUiB,YAAU;IAACC,OAAOpC;IAAMc,YAAW;MAC9C,gBAAAH,OAAA,cAACU,OAAAA;IAAIJ,WAAU;KACZgB,MAAMI,IAAI,CAACC,MAAMC,MAChB,gBAAA5B,OAAA,cAACU,OAAAA;IAAImB,KAAKD;IAAGtB,WAAU;KACrB,gBAAAN,OAAA,cAACU,OAAAA;IAAIJ,WAAU;KAAyCsB,IAAI,CAAA,GAC5D,gBAAA5B,OAAA,cAACU,OAAAA;IAAIJ,WAAU;KAAWqB,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAMtC;;;AC/DA,OAAOG,YAAW;AAElB,SAASC,uBAAAA,4BAA2B;AACpC,SAASC,sBAAsB;AAC/B,SAASC,QAAAA,OAAMC,cAAAA,aAAYC,QAAAA,OAAMC,UAAUC,SAASC,kBAAAA,uBAAsB;AAC1E,SAASC,YAAAA,iBAAgB;AAKlB,IAAMC,4BAA4B,GAAGC,KAAKC,EAAE;AAE5C,IAAMC,+BAA+B,MAAA;AAC1C,QAAM,EAAEC,EAAC,IAAKC,gBAAeJ,KAAKC,EAAE;AACpC,QAAM,EAAEI,cAAa,IAAKC,qBAAAA;AAC1B,QAAMC,cAAcC,eAAAA;AACpB,QAAMC,sBAAsBF,YAAYG,OACtC,CAACC,eAAeA,WAAWC,QAAQC,UAAU,OAAA,MAAa,wCAAA;AAG5D,SACE,gBAAAC,OAAA,cAACC,UAASC,MAAI,MACZ,gBAAAF,OAAA,cAACC,UAASE,SAAO;IAACC,OAAOf,EAAE,6BAAA;IAAgCgB,aAAahB,EAAE,mCAAA;KACxE,gBAAAW,OAAA,cAACC,UAASK,OAAK,MACb,gBAAAN,OAAA,cAACC,UAASM,MAAI;IAACH,OAAOf,EAAE,sBAAA;IAAyBgB,aAAahB,EAAE,4BAAA;KAC9D,gBAAAW,OAAA,cAACQ,aAAAA;IACCC,OAAOpB,EAAE,sBAAA;IACTqB,MAAK;IACLC,SAAQ;IACRC,SAAS,MAAMrB,cAAcsB,gBAAgBC,aAAa;OAG9D,gBAAAd,OAAA,cAACC,UAASM,MAAI;IAACH,OAAOf,EAAE,4BAAA;IAA+BgB,aAAahB,EAAE,kCAAA;KACpE,gBAAAW,OAAA,cAACQ,aAAAA;IACCC,OAAOpB,EAAE,4BAAA;IACTqB,MAAK;IACLC,SAAQ;IACRC,SAAS,MAAMrB,cAAcsB,gBAAgBE,kBAAkB;SAKvE,gBAAAf,OAAA,cAACC,UAASE,SAAO;IAACC,OAAOf,EAAE,wBAAA;KACxBM,oBAAoBqB,SAAS,IAC5B,gBAAAhB,OAAA,cAACiB,QAAQf,MAAI;IAACgB,SAAQ;IAAQC,YAAW;KACvC,gBAAAnB,OAAA,cAACiB,QAAQG,OAAK;IAACV,MAAK;KAA+BrB,EAAE,sBAAA,CAAA,GACrD,gBAAAW,OAAA,cAACiB,QAAQI,SAAO,MAAEhC,EAAE,wBAAA,CAAA,CAAA,IAGtB,gBAAAW,OAAA,cAACsB,OAAAA;IAAKH,YAAW;KACdxB,oBAAoB4B,IAAI,CAAC1B,eACxB,gBAAAG,OAAA,cAACwB,SAAStB,MAAI;IAACuB,KAAK5B,WAAWV,IAAIuC,MAAAA;KACjC,gBAAA1B,OAAA,cAACwB,SAASG,QAAM,MACd,gBAAA3B,OAAA,cAAC4B,OAAAA;IAAKlB,MAAK;OAEb,gBAAAV,OAAA,cAACwB,SAASK,SAAO,MAAEhC,WAAWiC,aAAaC,eAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAQzE;;;AC/DA,YAAYC,YAAY;AACxB,OAAOC,UAASC,eAAAA,oBAAmB;AAEnC,SAASC,kBAA0C;AACnD,SAASC,uBAAAA,4BAA2B;AACpC,SAASC,mBAAAA,wBAAuB;AAChC,SAASC,2BAA2B;AACpC,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,UAAAA,SAAQC,kBAAAA,uBAAsB;AACvC,SAASC,oBAA4C;AAU9C,IAAMC,cAAc,CAAC,EAAEC,MAAMC,SAASC,kBAAiB,MAAoB;AAChF,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AACpC,QAAM,EAAEC,cAAa,IAAKC,qBAAAA;AAC1B,QAAMC,SAASC,WAAAA;AAEf,QAAMC,cAAcC,aAAY,YAAA;AAC9B,UAAMH,OAAOI,MAAK;AAClB,UAAMC,SACJd,SAAS,sBAAsB,qBAAqBA,SAAS,YAAY,oBAAoBe;AAC/F,QAAId,SAAS;AACX,YAAMe,oBAAoBf,QAAQ;QAAEa;MAAO,CAAA,EAAGG,KAAYC,sBAAeC,WAAWC,SAASlB,iBAAAA,CAAAA,CAAAA;IAC/F;EACF,GAAG;IAACO;IAAQT;IAAMC;IAASC;GAAkB;AAE7C,QAAMmB,eAAeT,aAAY,MAAA;AAC/B,SAAKL,cAAce,iBAAgBC,cAAc;MAAEC,OAAO;IAAM,CAAA;EAClE,GAAG;IAACjB;GAAc;AAIlB,SACE,gBAAAkB,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACC,QAAOC,SAAO,MACb,gBAAAF,OAAA,cAACC,QAAOE,OAAK;IAACC,YAAW;KAAW1B,EAAE,oBAAA,CAAA,GACtC,gBAAAsB,OAAA,cAACC,QAAOI,aAAW;IAACD,YAAW;KAAW1B,EAAE,0BAAA,CAAA,GAC5C,gBAAAsB,OAAA,cAACM,cAAAA;IAAaC,QAAAA;IAAOhC;IAAYiC,WAAWtB;IAAauB,UAAUb;;AAI3E;;;ANxBA,IAAA,wBAAec,YAAWC,WACjBC,mBAAW,WAAWC,OAA2B;AACtD,QAAM,EAAEC,qBAAqBC,QAAO,IAAKF;AACzC,QAAMG,oBAAoB,OAAON,YAAWO;AAE5C,SAAOP,YAAWQ,YAAYC,aAAaC,cAAc;IACvDC,QAAQC,OAAO;MACbC,IAAIC,QAAQC;MACZC,MAAM;MACNC,QAAQ,CAACC,SAAsBA,KAAKC,YAAYL,QAAQC;MACxDK,WAAW,MAAM,gBAAAC,OAAA,cAACC,kBAAAA,IAAAA;IACpB,CAAA;IACAX,QAAQC,OAAO;MACbC,IAAIC,QAAQS;MACZP,MAAM;MACNC,QAAQ,CAACC,SAAsBA,KAAKC,YAAYL,QAAQS;MACxDH,WAAW,MAAM,gBAAAC,OAAA,cAACG,kBAAAA;QAAiBpB;;IACrC,CAAA;IACAO,QAAQC,OAAO;MACbC,IAAIC,QAAQW;MACZT,MAAM;MACNC,QAAQ,CAACC,SAAsBA,KAAKC,YAAYL,QAAQW;MACxDL,WAAW,MAAM,gBAAAC,OAAA,cAACK,8BAAAA,IAAAA;IACpB,CAAA;IACAf,QAAQC,OAAO;MACbC,IAAIc;MACJX,MAAM;MACNC,QAAQ,CAACC,SAA4CA,KAAKE,cAAcO;MACxEP,WAAW,CAAC,EAAEF,KAAI,MAAsB,gBAAAG,OAAA,cAACO,YAAeV,KAAKf,KAAK;IACpE,CAAA;IACAQ,QAAQC,OAAO;MACbC,IAAIgB;MACJb,MAAM;MACNC,QAAQ,CAACC,SAAqDA,KAAKE,cAAcS;MACjFT,WAAW,CAAC,EAAEF,KAAI,MAAsB,gBAAAG,OAAA,cAACS,oBAAuBZ,KAAKf,KAAK;IAC5E,CAAA;IACAQ,QAAQC,OAAO;MACbC,IAAIkB;MACJf,MAAM;MACNC,QAAQ,CAACC,SAA8CA,KAAKE,cAAcW;MAC1EX,WAAW,CAAC,EAAEF,KAAI,MAChB,gBAAAG,OAAA,cAACW,aAAAA;QAAa,GAAGd,KAAKf;QAAOE;QAAkBC;;IAEnD,CAAA;GACD;AACH,CAAA,CAAA;",
6
+ "names": ["Effect", "React", "Capabilities", "Capability", "Surface", "React", "useCallback", "useEffect", "useState", "QR", "useOperationInvoker", "log", "useClient", "useMulticastObservable", "useDevices", "Invitation", "InvitationEncoder", "useNetworkStatus", "Button", "Clipboard", "Icon", "IconButton", "List", "useId", "useTranslation", "Settings", "AuthCode", "Centered", "DeviceListItem", "Emoji", "Viewport", "translationKey", "osTranslations", "hexToEmoji", "DevicesContainer", "createInvitationUrl", "t", "useTranslation", "translationKey", "invokePromise", "useOperationInvoker", "devices", "useDevices", "swarm", "connectionState", "useNetworkStatus", "handleResetStorage", "useCallback", "ClientOperation", "ResetStorage", "handleRecover", "mode", "handleJoinNewIdentity", "Clipboard", "Provider", "Settings", "Root", "Section", "title", "ns", "meta", "id", "description", "Frame", "FrameItem", "List", "map", "device", "DeviceListItem", "key", "deviceKey", "toHex", "DeviceInvitation", "Group", "Item", "Button", "variant", "onClick", "data-testid", "props", "client", "useClient", "invitation", "setInvitation", "useState", "onInvitationCreate", "halo", "share", "config", "values", "runtime", "app", "env", "DX_ENVIRONMENT", "subscription", "subscribe", "invitationCode", "InvitationEncoder", "encode", "state", "Invitation", "State", "CONNECTING", "log", "info", "JSON", "stringify", "authCode", "unsubscribe", "onInvitationDone", "undefined", "DeviceInvitationImpl", "InvitationSection", "invitationObservable", "useMulticastObservable", "url", "useEffect", "SUCCESS", "invitationId", "activeView", "CANCELLED", "READY_FOR_AUTHENTICATION", "p", "className", "IconButton", "icon", "label", "disabled", "classNames", "Viewport", "Views", "View", "InvitationComplete", "statusValue", "InvitationAuthCode", "code", "onCancel", "InvitationQR", "osTranslations", "qrLabel", "useId", "emoji", "hexToEmoji", "div", "role", "QR", "rounding", "backgroundColor", "color", "aria-labelledby", "errorCorrectionLevel", "cutout", "Centered", "Emoji", "text", "span", "value", "AuthCode", "large", "Icon", "size", "React", "useCallback", "useOperationInvoker", "LayoutOperation", "ObservabilityOperation", "Dialog", "useTranslation", "JoinPanel", "osTranslations", "JoinDialog", "props", "invokePromise", "useOperationInvoker", "t", "useTranslation", "meta", "id", "handleCancelResetStorage", "useCallback", "ClientOperation", "ShareIdentity", "handleDone", "result", "identityKey", "Promise", "all", "LayoutOperation", "UpdateDialog", "state", "ObservabilityOperation", "SendEvent", "name", "initialDisposition", "React", "Dialog", "Content", "Title", "classNames", "ns", "osTranslations", "JoinPanel", "mode", "exitActionParent", "Close", "asChild", "doneActionParent", "onCancelResetStorage", "onDone", "Schema", "React", "useCallback", "useMemo", "useState", "debounce", "useClient", "useIdentity", "ButtonGroup", "Clipboard", "Input", "useTranslation", "Form", "Settings", "EmojiPickerBlock", "HuePicker", "hexToEmoji", "hexToHue", "UserProfile", "Struct", "did", "String", "annotations", "title", "displayName", "emoji", "hue", "getDefaultHueValue", "identity", "hexToHue", "identityKey", "toHex", "getHueValue", "profile", "data", "getDefaultEmojiValue", "hexToEmoji", "getEmojiValue", "ProfileContainer", "t", "useTranslation", "meta", "id", "client", "useClient", "useIdentity", "setDisplayNameDirectly", "useState", "setEmojiDirectly", "setHueDirectly", "updateProfile", "useMemo", "debounce", "halo", "handleChange", "useCallback", "path", "changed", "Object", "entries", "values", "fieldMap", "type", "label", "getValue", "onValueChange", "target", "value", "React", "Settings", "ItemInput", "description", "Input", "TextInput", "onChange", "placeholder", "classNames", "nextEmoji", "handleEmojiReset", "Item", "EmojiPickerBlock", "triggerVariant", "onChangeEmoji", "onClickClear", "nextHue", "handleHueReset", "div", "role", "className", "HuePicker", "onReset", "ButtonGroup", "disabled", "Clipboard", "IconButton", "Provider", "Root", "Section", "Form", "schema", "onValuesChanged", "Content", "FieldSet", "React", "useCallback", "useState", "AlertDialog", "Button", "Clipboard", "Input", "useTranslation", "RecoveryCodeDialog", "code", "t", "useTranslation", "meta", "id", "confirmation", "setConfirmation", "useState", "handleConfirmation", "useCallback", "checked", "React", "AlertDialog", "Content", "classNames", "Title", "p", "className", "Clipboard", "Provider", "Code", "div", "Input", "Root", "Checkbox", "data-testid", "onCheckedChange", "Label", "Action", "asChild", "Button", "variant", "disabled", "words", "split", "IconButton", "value", "map", "word", "i", "key", "React", "useOperationInvoker", "useCredentials", "Icon", "IconButton", "List", "ListItem", "Message", "useTranslation", "Settings", "MANAGE_CREDENTIALS_DIALOG", "meta", "id", "RecoveryCredentialsContainer", "t", "useTranslation", "invokePromise", "useOperationInvoker", "credentials", "useCredentials", "recoveryCredentials", "filter", "credential", "subject", "assertion", "React", "Settings", "Root", "Section", "title", "description", "Group", "Item", "IconButton", "label", "icon", "variant", "onClick", "ClientOperation", "CreatePasskey", "CreateRecoveryCode", "length", "Message", "valence", "classNames", "Title", "Content", "List", "map", "ListItem", "key", "toHex", "Endcap", "Icon", "Heading", "issuanceDate", "toLocaleString", "Effect", "React", "useCallback", "Capability", "useOperationInvoker", "LayoutOperation", "runAndForwardErrors", "useClient", "Dialog", "useTranslation", "ConfirmReset", "ResetDialog", "mode", "onReset", "capabilityManager", "t", "useTranslation", "meta", "id", "invokePromise", "useOperationInvoker", "client", "useClient", "handleReset", "useCallback", "reset", "target", "undefined", "runAndForwardErrors", "pipe", "provideService", "Capability", "Service", "handleCancel", "LayoutOperation", "UpdateDialog", "state", "React", "Dialog", "Content", "Title", "classNames", "Description", "ConfirmReset", "active", "onConfirm", "onCancel", "Capability", "makeModule", "fnUntraced", "props", "createInvitationUrl", "onReset", "capabilityManager", "Service", "contributes", "Capabilities", "ReactSurface", "Surface", "create", "id", "Account", "Profile", "role", "filter", "data", "subject", "component", "React", "ProfileContainer", "Devices", "DevicesContainer", "Security", "RecoveryCredentialsContainer", "JOIN_DIALOG", "JoinDialog", "RECOVERY_CODE_DIALOG", "RecoveryCodeDialog", "RESET_DIALOG", "ResetDialog"]
7
+ }
@@ -4,11 +4,12 @@ import {
4
4
 
5
5
  // src/capabilities/schema-defs/schema-defs.ts
6
6
  import * as Effect from "effect/Effect";
7
- import { Capability, Common } from "@dxos/app-framework";
7
+ import { Capabilities, Capability } from "@dxos/app-framework";
8
+ import { AppCapabilities } from "@dxos/app-toolkit";
8
9
  var schema_defs_default = Capability.makeModule(Effect.fnUntraced(function* () {
9
- const registry = yield* Capability.get(Common.Capability.AtomRegistry);
10
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
10
11
  const client = yield* Capability.get(ClientCapabilities.Client);
11
- const schemasAtom = yield* Capability.atom(Common.Capability.Schema);
12
+ const schemasAtom = yield* Capability.atom(AppCapabilities.Schema);
12
13
  let previous = [];
13
14
  const cancel = registry.subscribe(schemasAtom, async (_schemas) => {
14
15
  const schemas = Array.from(new Set(_schemas.flat()));
@@ -18,9 +19,9 @@ var schema_defs_default = Capability.makeModule(Effect.fnUntraced(function* () {
18
19
  }, {
19
20
  immediate: true
20
21
  });
21
- return Capability.contributes(Common.Capability.Null, null, () => Effect.sync(() => cancel()));
22
+ return Capability.contributes(Capabilities.Null, null, () => Effect.sync(() => cancel()));
22
23
  }));
23
24
  export {
24
25
  schema_defs_default as default
25
26
  };
26
- //# sourceMappingURL=schema-defs-O7VLP745.mjs.map
27
+ //# sourceMappingURL=schema-defs-AYXOYD2M.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/schema-defs/schema-defs.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { type Type } from '@dxos/echo';\n\nimport { ClientCapabilities } from '../../types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const client = yield* Capability.get(ClientCapabilities.Client);\n const schemasAtom = yield* Capability.atom(AppCapabilities.Schema);\n\n // TODO(wittjosiah): Unregister schemas when they are disabled.\n let previous: Type.Entity.Any[] = [];\n const cancel = registry.subscribe(\n schemasAtom,\n async (_schemas: any[]) => {\n // TODO(wittjosiah): This doesn't seem to de-dupe schemas as expected.\n const schemas = Array.from(new Set(_schemas.flat())) as Type.Entity.Any[];\n // TODO(wittjosiah): Filter out schemas which the client has already registered.\n const newSchemas = schemas.filter((schema) => !previous.includes(schema));\n previous = schemas;\n await client.addTypes(newSchemas);\n },\n { immediate: true },\n );\n\n return Capability.contributes(Capabilities.Null, null, () => Effect.sync(() => cancel()));\n }),\n);\n"],
5
+ "mappings": ";;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,uBAAuB;AAKhC,IAAA,sBAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,WAAW,OAAOH,WAAWI,IAAIC,aAAaC,YAAY;AAChE,QAAMC,SAAS,OAAOP,WAAWI,IAAII,mBAAmBC,MAAM;AAC9D,QAAMC,cAAc,OAAOV,WAAWW,KAAKC,gBAAgBC,MAAM;AAGjE,MAAIC,WAA8B,CAAA;AAClC,QAAMC,SAASZ,SAASa,UACtBN,aACA,OAAOO,aAAAA;AAEL,UAAMC,UAAUC,MAAMC,KAAK,IAAIC,IAAIJ,SAASK,KAAI,CAAA,CAAA;AAEhD,UAAMC,aAAaL,QAAQM,OAAO,CAACC,WAAW,CAACX,SAASY,SAASD,MAAAA,CAAAA;AACjEX,eAAWI;AACX,UAAMX,OAAOoB,SAASJ,UAAAA;EACxB,GACA;IAAEK,WAAW;EAAK,CAAA;AAGpB,SAAO5B,WAAW6B,YAAYxB,aAAayB,MAAM,MAAM,MAAaC,YAAK,MAAMhB,OAAAA,CAAAA,CAAAA;AACjF,CAAA,CAAA;",
6
+ "names": ["Effect", "Capabilities", "Capability", "AppCapabilities", "Capability", "makeModule", "fnUntraced", "registry", "get", "Capabilities", "AtomRegistry", "client", "ClientCapabilities", "Client", "schemasAtom", "atom", "AppCapabilities", "Schema", "previous", "cancel", "subscribe", "_schemas", "schemas", "Array", "from", "Set", "flat", "newSchemas", "filter", "schema", "includes", "addTypes", "immediate", "contributes", "Null", "sync"]
7
+ }
@@ -8,7 +8,8 @@ import {
8
8
 
9
9
  // src/capabilities/app-graph-builder/app-graph-builder.ts
10
10
  import * as Effect from "effect/Effect";
11
- import { Capability, Common } from "@dxos/app-framework";
11
+ import { Capability } from "@dxos/app-framework";
12
+ import { AppCapabilities } from "@dxos/app-toolkit";
12
13
  import { Operation } from "@dxos/operation";
13
14
  import { CreateAtom, GraphBuilder, NodeMatcher } from "@dxos/plugin-graph";
14
15
  import { ConnectionState } from "@dxos/react-client/mesh";
@@ -111,9 +112,9 @@ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function
111
112
  ];
112
113
  })
113
114
  });
114
- return Capability.contributes(Common.Capability.AppGraphBuilder, extensions);
115
+ return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);
115
116
  }));
116
117
  export {
117
118
  app_graph_builder_default as default
118
119
  };
119
- //# sourceMappingURL=app-graph-builder-2PIYVUNC.mjs.map
120
+ //# sourceMappingURL=app-graph-builder-PFKVFRXI.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/operation';\nimport { CreateAtom, GraphBuilder, NodeMatcher } from '@dxos/plugin-graph';\nimport { ConnectionState } from '@dxos/react-client/mesh';\n\nimport { meta } from '../../meta';\nimport { Account, ClientCapabilities, ClientOperation } from '../../types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const extensions = yield* GraphBuilder.createExtension({\n id: meta.id,\n match: NodeMatcher.whenRoot,\n actions: () =>\n Effect.succeed([\n {\n id: `${meta.id}/open-user-account`,\n data: () => Operation.invoke(ClientOperation.ShareIdentity),\n properties: {\n label: ['open user account label', { ns: meta.id }],\n icon: 'ph--user--regular',\n disposition: 'menu',\n keyBinding: {\n macos: 'meta+shift+.',\n // TODO(wittjosiah): Test on windows to see if it behaves the same as linux.\n windows: 'alt+shift+.',\n linux: 'alt+shift+>',\n },\n },\n },\n ]),\n connector: Effect.fnUntraced(function* (node, get) {\n const client = yield* Capability.get(ClientCapabilities.Client);\n const identity = get(CreateAtom.fromObservable(client.halo.identity));\n const status = get(CreateAtom.fromObservable(client.mesh.networkStatus));\n\n return [\n {\n id: Account.id,\n type: meta.id,\n properties: {\n label: ['account label', { ns: meta.id }],\n icon: 'ph--user--regular',\n disposition: 'user-account',\n testId: 'clientPlugin.account',\n // NOTE: This currently needs to be the identity key because the fallback is generated from hex.\n userId: identity?.identityKey.toHex(),\n hue: identity?.profile?.data?.hue,\n emoji: identity?.profile?.data?.emoji,\n status: status.swarm === ConnectionState.OFFLINE ? 'error' : 'active',\n },\n nodes: [\n {\n id: Account.Profile,\n data: Account.Profile,\n type: meta.id,\n properties: {\n label: ['profile label', { ns: meta.id }],\n icon: 'ph--user--regular',\n },\n },\n {\n id: Account.Devices,\n data: Account.Devices,\n type: meta.id,\n properties: {\n label: ['devices label', { ns: meta.id }],\n icon: 'ph--devices--regular',\n testId: 'clientPlugin.devices',\n },\n },\n {\n id: Account.Security,\n data: Account.Security,\n type: meta.id,\n properties: {\n label: ['security label', { ns: meta.id }],\n icon: 'ph--key--regular',\n },\n },\n ],\n },\n ];\n }),\n });\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
5
+ "mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAChC,SAASC,iBAAiB;AAC1B,SAASC,YAAYC,cAAcC,mBAAmB;AACtD,SAASC,uBAAuB;AAKhC,IAAA,4BAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,aAAa,OAAOC,aAAaC,gBAAgB;IACrDC,IAAIC,KAAKD;IACTE,OAAOC,YAAYC;IACnBC,SAAS,MACAC,eAAQ;MACb;QACEN,IAAI,GAAGC,KAAKD,EAAE;QACdO,MAAM,MAAMC,UAAUC,OAAOC,gBAAgBC,aAAa;QAC1DC,YAAY;UACVC,OAAO;YAAC;YAA2B;cAAEC,IAAIb,KAAKD;YAAG;;UACjDe,MAAM;UACNC,aAAa;UACbC,YAAY;YACVC,OAAO;;YAEPC,SAAS;YACTC,OAAO;UACT;QACF;MACF;KACD;IACHC,WAAkBzB,kBAAW,WAAW0B,MAAMC,KAAG;AAC/C,YAAMC,SAAS,OAAO9B,WAAW6B,IAAIE,mBAAmBC,MAAM;AAC9D,YAAMC,WAAWJ,IAAIK,WAAWC,eAAeL,OAAOM,KAAKH,QAAQ,CAAA;AACnE,YAAMI,SAASR,IAAIK,WAAWC,eAAeL,OAAOQ,KAAKC,aAAa,CAAA;AAEtE,aAAO;QACL;UACEjC,IAAIkC,QAAQlC;UACZmC,MAAMlC,KAAKD;UACXY,YAAY;YACVC,OAAO;cAAC;cAAiB;gBAAEC,IAAIb,KAAKD;cAAG;;YACvCe,MAAM;YACNC,aAAa;YACboB,QAAQ;;YAERC,QAAQV,UAAUW,YAAYC,MAAAA;YAC9BC,KAAKb,UAAUc,SAASlC,MAAMiC;YAC9BE,OAAOf,UAAUc,SAASlC,MAAMmC;YAChCX,QAAQA,OAAOY,UAAUC,gBAAgBC,UAAU,UAAU;UAC/D;UACAC,OAAO;YACL;cACE9C,IAAIkC,QAAQa;cACZxC,MAAM2B,QAAQa;cACdZ,MAAMlC,KAAKD;cACXY,YAAY;gBACVC,OAAO;kBAAC;kBAAiB;oBAAEC,IAAIb,KAAKD;kBAAG;;gBACvCe,MAAM;cACR;YACF;YACA;cACEf,IAAIkC,QAAQc;cACZzC,MAAM2B,QAAQc;cACdb,MAAMlC,KAAKD;cACXY,YAAY;gBACVC,OAAO;kBAAC;kBAAiB;oBAAEC,IAAIb,KAAKD;kBAAG;;gBACvCe,MAAM;gBACNqB,QAAQ;cACV;YACF;YACA;cACEpC,IAAIkC,QAAQe;cACZ1C,MAAM2B,QAAQe;cACdd,MAAMlC,KAAKD;cACXY,YAAY;gBACVC,OAAO;kBAAC;kBAAkB;oBAAEC,IAAIb,KAAKD;kBAAG;;gBACxCe,MAAM;cACR;YACF;;QAEJ;;IAEJ,CAAA;EACF,CAAA;AAEA,SAAOrB,WAAWwD,YAAYC,gBAAgBC,iBAAiBvD,UAAAA;AACjE,CAAA,CAAA;",
6
+ "names": ["Effect", "Capability", "AppCapabilities", "Operation", "CreateAtom", "GraphBuilder", "NodeMatcher", "ConnectionState", "Capability", "makeModule", "fnUntraced", "extensions", "GraphBuilder", "createExtension", "id", "meta", "match", "NodeMatcher", "whenRoot", "actions", "succeed", "data", "Operation", "invoke", "ClientOperation", "ShareIdentity", "properties", "label", "ns", "icon", "disposition", "keyBinding", "macos", "windows", "linux", "connector", "node", "get", "client", "ClientCapabilities", "Client", "identity", "CreateAtom", "fromObservable", "halo", "status", "mesh", "networkStatus", "Account", "type", "testId", "userId", "identityKey", "toHex", "hue", "profile", "emoji", "swarm", "ConnectionState", "OFFLINE", "nodes", "Profile", "Devices", "Security", "contributes", "AppCapabilities", "AppGraphBuilder"]
7
+ }
@@ -2,19 +2,19 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
 
3
3
  // src/capabilities/client/index.ts
4
4
  import { Capability } from "@dxos/app-framework";
5
- var Client = Capability.lazy("Client", () => import("./client-FFPK5UFP.mjs"));
5
+ var Client = Capability.lazy("Client", () => import("./client-3YIMWKR7.mjs"));
6
6
 
7
7
  // src/capabilities/operation-resolver/index.ts
8
8
  import { Capability as Capability2 } from "@dxos/app-framework";
9
- var OperationResolver = Capability2.lazy("OperationResolver", () => import("./operation-resolver-VW5R2BE4.mjs"));
9
+ var OperationResolver = Capability2.lazy("OperationResolver", () => import("./operation-resolver-CHGWI5P2.mjs"));
10
10
 
11
11
  // src/capabilities/schema-defs/index.ts
12
12
  import { Capability as Capability3 } from "@dxos/app-framework";
13
- var SchemaDefs = Capability3.lazy("SchemaDefs", () => import("./schema-defs-QLRGBIKY.mjs"));
13
+ var SchemaDefs = Capability3.lazy("SchemaDefs", () => import("./schema-defs-TV2SCKSH.mjs"));
14
14
 
15
15
  export {
16
16
  Client,
17
17
  OperationResolver,
18
18
  SchemaDefs
19
19
  };
20
- //# sourceMappingURL=chunk-BCELGXRI.mjs.map
20
+ //# sourceMappingURL=chunk-MUOMX53G.mjs.map
@@ -3,7 +3,7 @@ import {
3
3
  Client,
4
4
  OperationResolver,
5
5
  SchemaDefs
6
- } from "../chunk-BCELGXRI.mjs";
6
+ } from "../chunk-MUOMX53G.mjs";
7
7
  import {
8
8
  ClientEvents,
9
9
  ClientOperation,
@@ -11,7 +11,8 @@ import {
11
11
  } from "../chunk-JAF64TFQ.mjs";
12
12
 
13
13
  // src/cli/plugin.ts
14
- import { Capability, Common as Common3, Plugin as Plugin2 } from "@dxos/app-framework";
14
+ import { ActivationEvents, Capability, Plugin as Plugin2 } from "@dxos/app-framework";
15
+ import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
15
16
 
16
17
  // src/cli/commands/config/index.ts
17
18
  import * as Command2 from "@effect/cli/Command";
@@ -244,7 +245,7 @@ import * as Options2 from "@effect/cli/Options";
244
245
  import * as Console6 from "effect/Console";
245
246
  import * as Effect6 from "effect/Effect";
246
247
  import * as Option2 from "effect/Option";
247
- import { Common, Plugin } from "@dxos/app-framework";
248
+ import { Capabilities, Plugin } from "@dxos/app-framework";
248
249
  import { CommandConfig as CommandConfig6, flushAndSync, spaceLayer } from "@dxos/cli-util";
249
250
  import { print as print3 } from "@dxos/cli-util";
250
251
  import { ClientService as ClientService5 } from "@dxos/client";
@@ -271,7 +272,7 @@ var handler4 = Effect6.fn(function* ({ agent, displayName }) {
271
272
  ]
272
273
  });
273
274
  const manager = yield* Plugin.Service;
274
- const { invoke } = manager.capabilities.get(Common.Capability.OperationInvoker);
275
+ const { invoke } = manager.capabilities.get(Capabilities.OperationInvoker);
275
276
  const identity2 = yield* invoke(ClientOperation.CreateIdentity, {
276
277
  displayName: Option2.getOrUndefined(displayName)
277
278
  });
@@ -396,7 +397,7 @@ import * as Console8 from "effect/Console";
396
397
  import * as Duration from "effect/Duration";
397
398
  import * as Effect8 from "effect/Effect";
398
399
  import * as Option4 from "effect/Option";
399
- import { CommandConfig as CommandConfig8, Common as Common2, FormBuilder as FormBuilder3, getSpace, printList as printList2, spaceIdWithDefault } from "@dxos/cli-util";
400
+ import { CommandConfig as CommandConfig8, Common, FormBuilder as FormBuilder3, getSpace, printList as printList2, spaceIdWithDefault } from "@dxos/cli-util";
400
401
  import { ClientService as ClientService7 } from "@dxos/client";
401
402
  var mapCredentials = (credentials) => {
402
403
  return credentials.map((credential2) => ({
@@ -457,7 +458,7 @@ var handler6 = Effect8.fn(function* ({ type, spaceId, timeout: timeout2, delay }
457
458
  });
458
459
  var list2 = Command11.make("list", {
459
460
  type: Options3.text("type").pipe(Options3.withDescription("Filter by credential type."), Options3.optional),
460
- spaceId: Common2.spaceId.pipe(Options3.withDescription("Space ID to show credentials from."), Options3.optional),
461
+ spaceId: Common.spaceId.pipe(Options3.withDescription("Space ID to show credentials from."), Options3.optional),
461
462
  timeout: Options3.integer("timeout").pipe(Options3.withDescription("Time in milliseconds to wait for at least one credential before listing."), Options3.withDefault(500)),
462
463
  delay: Options3.integer("delay").pipe(Options3.withDescription("Delay in milliseconds before listing."), Options3.withDefault(250))
463
464
  }, handler6).pipe(Command11.withDescription("List HALO credentials."));
@@ -1013,9 +1014,22 @@ var profile = Command25.make("profile").pipe(Command25.withDescription("Profile
1013
1014
 
1014
1015
  // src/cli/plugin.ts
1015
1016
  var ClientPlugin = Plugin2.define(meta).pipe(
1017
+ // TODO(wittjosiah): Could some of these commands make use of operations?
1018
+ AppPlugin.addCommandModule({
1019
+ commands: [
1020
+ config,
1021
+ device,
1022
+ edge,
1023
+ halo,
1024
+ profile
1025
+ ]
1026
+ }),
1027
+ AppPlugin.addOperationResolverModule({
1028
+ activate: () => OperationResolver()
1029
+ }),
1016
1030
  Plugin2.addModule((options) => ({
1017
1031
  id: Capability.getModuleTag(Client),
1018
- activatesOn: Common3.ActivationEvent.Startup,
1032
+ activatesOn: ActivationEvents.Startup,
1019
1033
  activatesAfter: [
1020
1034
  ClientEvents.ClientReady
1021
1035
  ],
@@ -1024,23 +1038,10 @@ var ClientPlugin = Plugin2.define(meta).pipe(
1024
1038
  Plugin2.addModule({
1025
1039
  activatesOn: ClientEvents.ClientReady,
1026
1040
  activatesBefore: [
1027
- Common3.ActivationEvent.SetupSchema
1041
+ AppActivationEvents.SetupSchema
1028
1042
  ],
1029
1043
  activate: SchemaDefs
1030
1044
  }),
1031
- // TODO(wittjosiah): Could some of these commands make use of operations?
1032
- Common3.Plugin.addCommandModule({
1033
- commands: [
1034
- config,
1035
- device,
1036
- edge,
1037
- halo,
1038
- profile
1039
- ]
1040
- }),
1041
- Common3.Plugin.addOperationResolverModule({
1042
- activate: () => OperationResolver()
1043
- }),
1044
1045
  Plugin2.make
1045
1046
  );
1046
1047
  export {