@dxos/plugin-debug 0.8.4-main.ae835ea → 0.8.4-main.bc674ce

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 (116) hide show
  1. package/dist/lib/browser/DebugGraph-6VMEOKEV.mjs +15 -0
  2. package/dist/lib/browser/DebugGraph-6VMEOKEV.mjs.map +7 -0
  3. package/dist/lib/browser/DevtoolsOverviewContainer-77PKFLYV.mjs +19 -0
  4. package/dist/lib/browser/DevtoolsOverviewContainer-77PKFLYV.mjs.map +7 -0
  5. package/dist/lib/browser/{SpaceGenerator-7Q7CX64P.mjs → SpaceGenerator-H33AEFGC.mjs} +226 -233
  6. package/dist/lib/browser/SpaceGenerator-H33AEFGC.mjs.map +7 -0
  7. package/dist/lib/browser/app-graph-builder-LV73R7HR.mjs +598 -0
  8. package/dist/lib/browser/app-graph-builder-LV73R7HR.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-SRV2AIGJ.mjs → chunk-4UFQXPP7.mjs} +11 -1
  10. package/dist/lib/browser/chunk-4UFQXPP7.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-WZFZ4ESO.mjs → chunk-A5H5GRV6.mjs} +1 -1
  12. package/dist/lib/browser/chunk-A5H5GRV6.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +34 -39
  14. package/dist/lib/browser/index.mjs.map +4 -4
  15. package/dist/lib/browser/meta.json +1 -1
  16. package/dist/lib/browser/react-context-FSWBT3MH.mjs +17 -0
  17. package/dist/lib/browser/react-context-FSWBT3MH.mjs.map +7 -0
  18. package/dist/lib/browser/react-surface-2N6CPSHR.mjs +757 -0
  19. package/dist/lib/browser/react-surface-2N6CPSHR.mjs.map +7 -0
  20. package/dist/lib/browser/settings-KA4GN73K.mjs +31 -0
  21. package/dist/lib/browser/settings-KA4GN73K.mjs.map +7 -0
  22. package/dist/types/src/DebugPlugin.d.ts +2 -1
  23. package/dist/types/src/DebugPlugin.d.ts.map +1 -1
  24. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  25. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  26. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  27. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  28. package/dist/types/src/capabilities/index.d.ts +4 -8
  29. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  30. package/dist/types/src/capabilities/react-context/index.d.ts +7 -0
  31. package/dist/types/src/capabilities/react-context/index.d.ts.map +1 -0
  32. package/dist/types/src/capabilities/react-context/react-context.d.ts +10 -0
  33. package/dist/types/src/capabilities/react-context/react-context.d.ts.map +1 -0
  34. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  35. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  36. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  37. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  38. package/dist/types/src/capabilities/settings/index.d.ts +3 -0
  39. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  40. package/dist/types/src/capabilities/settings/settings.d.ts +5 -0
  41. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  42. package/dist/types/src/components/DebugGraph.d.ts +5 -4
  43. package/dist/types/src/components/DebugGraph.d.ts.map +1 -1
  44. package/dist/types/src/components/DebugObjectPanel.d.ts +1 -1
  45. package/dist/types/src/components/DebugObjectPanel.d.ts.map +1 -1
  46. package/dist/types/src/components/DebugSettings.d.ts +4 -2
  47. package/dist/types/src/components/DebugSettings.d.ts.map +1 -1
  48. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts +5 -5
  49. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -1
  50. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts +2 -2
  51. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts.map +1 -1
  52. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts.map +1 -1
  53. package/dist/types/src/components/SpaceGenerator/presets.d.ts +2 -5
  54. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
  55. package/dist/types/src/components/Wireframe.d.ts +2 -2
  56. package/dist/types/src/components/Wireframe.d.ts.map +1 -1
  57. package/dist/types/src/components/index.d.ts +4 -4
  58. package/dist/types/src/components/index.d.ts.map +1 -1
  59. package/dist/types/src/meta.d.ts +2 -2
  60. package/dist/types/src/meta.d.ts.map +1 -1
  61. package/dist/types/src/translations.d.ts +1 -1
  62. package/dist/types/src/types.d.ts +5 -0
  63. package/dist/types/src/types.d.ts.map +1 -1
  64. package/dist/types/tsconfig.tsbuildinfo +1 -1
  65. package/package.json +76 -70
  66. package/src/DebugPlugin.tsx +16 -31
  67. package/src/capabilities/app-graph-builder/app-graph-builder.ts +420 -0
  68. package/src/capabilities/app-graph-builder/index.ts +7 -0
  69. package/src/capabilities/index.ts +4 -6
  70. package/src/capabilities/react-context/index.ts +7 -0
  71. package/src/capabilities/react-context/react-context.tsx +20 -0
  72. package/src/capabilities/react-surface/index.ts +7 -0
  73. package/src/capabilities/react-surface/react-surface.tsx +409 -0
  74. package/src/capabilities/settings/index.ts +7 -0
  75. package/src/capabilities/settings/settings.ts +30 -0
  76. package/src/components/DebugGraph.tsx +4 -3
  77. package/src/components/DebugObjectPanel.tsx +4 -4
  78. package/src/components/DebugSettings.tsx +44 -18
  79. package/src/components/DevtoolsOverviewContainer.tsx +1 -1
  80. package/src/components/SpaceGenerator/ObjectGenerator.tsx +18 -19
  81. package/src/components/SpaceGenerator/SchemaTable.tsx +2 -2
  82. package/src/components/SpaceGenerator/SpaceGenerator.stories.tsx +7 -5
  83. package/src/components/SpaceGenerator/SpaceGenerator.tsx +18 -13
  84. package/src/components/SpaceGenerator/presets.ts +217 -100
  85. package/src/components/Wireframe.tsx +4 -5
  86. package/src/components/index.ts +4 -1
  87. package/src/meta.ts +2 -2
  88. package/src/translations.ts +1 -1
  89. package/src/types.ts +8 -0
  90. package/dist/lib/browser/DebugGraph-EDOH6R2G.mjs +0 -20
  91. package/dist/lib/browser/DebugGraph-EDOH6R2G.mjs.map +0 -7
  92. package/dist/lib/browser/DevtoolsOverviewContainer-EPD6EWT5.mjs +0 -25
  93. package/dist/lib/browser/DevtoolsOverviewContainer-EPD6EWT5.mjs.map +0 -7
  94. package/dist/lib/browser/SpaceGenerator-7Q7CX64P.mjs.map +0 -7
  95. package/dist/lib/browser/app-graph-builder-RXWTHLEW.mjs +0 -588
  96. package/dist/lib/browser/app-graph-builder-RXWTHLEW.mjs.map +0 -7
  97. package/dist/lib/browser/chunk-SRV2AIGJ.mjs.map +0 -7
  98. package/dist/lib/browser/chunk-WZFZ4ESO.mjs.map +0 -7
  99. package/dist/lib/browser/react-context-P2YDWEWI.mjs +0 -16
  100. package/dist/lib/browser/react-context-P2YDWEWI.mjs.map +0 -7
  101. package/dist/lib/browser/react-surface-4XGZUT3Z.mjs +0 -772
  102. package/dist/lib/browser/react-surface-4XGZUT3Z.mjs.map +0 -7
  103. package/dist/lib/browser/settings-SQXR3OAH.mjs +0 -22
  104. package/dist/lib/browser/settings-SQXR3OAH.mjs.map +0 -7
  105. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  106. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  107. package/dist/types/src/capabilities/react-context.d.ts +0 -8
  108. package/dist/types/src/capabilities/react-context.d.ts.map +0 -1
  109. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  110. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  111. package/dist/types/src/capabilities/settings.d.ts +0 -4
  112. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  113. package/src/capabilities/app-graph-builder.ts +0 -431
  114. package/src/capabilities/react-context.tsx +0 -16
  115. package/src/capabilities/react-surface.tsx +0 -399
  116. package/src/capabilities/settings.ts +0 -19
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/index.ts", "../../../src/components/DebugObjectPanel.tsx", "../../../src/components/DebugSettings.tsx", "../../../src/components/DebugStatus.tsx", "../../../src/components/Wireframe.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Function from 'effect/Function';\nimport React, { useCallback } from 'react';\n\nimport {\n Capabilities,\n LayoutAction,\n type PluginContext,\n chain,\n contributes,\n createIntent,\n createSurface,\n useCapability,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport {\n AutomergePanel,\n ConfigPanel,\n CredentialsPanel,\n DeviceListPanel,\n DiagnosticsPanel,\n EdgeDashboardPanel,\n FeedsPanel,\n IdentityPanel,\n InvocationTraceContainer,\n KeyringPanel,\n LoggingPanel,\n MembersPanel,\n MetadataPanel,\n NetworkPanel,\n ObjectsPanel,\n QueuesPanel,\n SchemaPanel,\n SignalPanel,\n SpaceInfoPanel,\n SpaceListPanel,\n StoragePanel,\n SwarmPanel,\n TestingPanel,\n TracingPanel,\n WorkflowPanel,\n} from '@dxos/devtools';\nimport { Obj } from '@dxos/echo';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { Graph } from '@dxos/plugin-graph';\nimport { ScriptAction } from '@dxos/plugin-script/types';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { type Space, SpaceState, isSpace, parseId } from '@dxos/react-client/echo';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { DataType } from '@dxos/schema';\n\nimport {\n DebugGraph,\n DebugObjectPanel,\n DebugSettings,\n DebugStatus,\n DevtoolsOverviewContainer,\n SpaceGenerator,\n Wireframe,\n} from '../components';\nimport { meta } from '../meta';\nimport { type DebugSettingsProps, Devtools } from '../types';\n\ntype SpaceDebug = {\n type: string;\n space: Space;\n};\n\ntype GraphDebug = {\n graph: Graph;\n root: string;\n};\n\nconst isSpaceDebug = (data: any): data is SpaceDebug => data?.type === `${meta.id}/space` && isSpace(data.space);\nconst isGraphDebug = (data: any): data is GraphDebug => data?.graph instanceof Graph && typeof data?.root === 'string';\n\n// TODO(wittjosiah): Factor out?\nconst useCurrentSpace = () => {\n const layout = useCapability(Capabilities.Layout);\n const client = useCapability(ClientCapabilities.Client);\n const { spaceId } = parseId(layout.workspace);\n const space = spaceId ? client.spaces.get(spaceId) : undefined;\n return space;\n};\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${meta.id}/plugin-settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<DebugSettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === meta.id,\n component: ({ data: { subject } }) => <DebugSettings settings={subject.value} />,\n }),\n createSurface({\n id: `${meta.id}/space`,\n role: 'article',\n filter: (data): data is { subject: SpaceDebug } => isSpaceDebug(data.subject),\n component: ({ data }) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const handleCreateObject = useCallback(\n (objects: Obj.Any[]) => {\n if (!isSpace(data.subject.space)) {\n return;\n }\n\n const collection =\n data.subject.space.state.get() === SpaceState.SPACE_READY &&\n data.subject.space.properties[DataType.Collection.typename]?.target;\n if (!Obj.instanceOf(DataType.Collection, collection)) {\n return;\n }\n\n objects.forEach((object) => {\n void dispatch(createIntent(SpaceAction.AddObject, { target: collection, object }));\n });\n },\n [data.subject.space],\n );\n\n return (\n <StackItem.Content>\n <SpaceGenerator space={data.subject.space} onCreateObjects={handleCreateObject} />\n </StackItem.Content>\n );\n },\n }),\n createSurface({\n id: `${meta.id}/app-graph`,\n role: 'article',\n filter: (data): data is { subject: GraphDebug } => isGraphDebug(data.subject),\n component: ({ data }) => <DebugGraph graph={data.subject.graph} root={data.subject.root} />,\n }),\n createSurface({\n id: `${meta.id}/wireframe`,\n role: ['article', 'section'],\n position: 'hoist',\n filter: (data): data is { subject: Obj.Any } => {\n const settings = context.getCapability(Capabilities.SettingsStore).getStore<DebugSettingsProps>(meta.id)!.value;\n return Obj.isObject(data.subject) && !!settings.wireframe;\n },\n component: ({ data, role }) => (\n <Wireframe label={`${role}:${name}`} object={data.subject} classNames='row-span-2 overflow-hidden' />\n ),\n }),\n createSurface({\n id: `${meta.id}/object-debug`,\n role: 'article',\n filter: (data): data is { companionTo: Obj.Any } => data.subject === 'debug' && Obj.isObject(data.companionTo),\n component: ({ data }) => <DebugObjectPanel object={data.companionTo} />,\n }),\n createSurface({\n id: `${meta.id}/devtools-overview`,\n role: 'deck-companion--devtools',\n component: () => <DevtoolsOverviewContainer />,\n }),\n createSurface({\n id: `${meta.id}/status`,\n role: 'status',\n component: () => <DebugStatus />,\n }),\n\n //\n // Devtools\n //\n\n createSurface({\n id: `${meta.id}/client/config`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Client.Config,\n component: () => <ConfigPanel vaultSelector={false} />,\n }),\n createSurface({\n id: `${meta.id}/client/storage`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Client.Storage,\n component: () => <StoragePanel />,\n }),\n createSurface({\n id: `${meta.id}/client/logs`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Client.Logs,\n component: () => <LoggingPanel />,\n }),\n createSurface({\n id: `${meta.id}/client/diagnostics`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Client.Diagnostics,\n component: () => <DiagnosticsPanel />,\n }),\n createSurface({\n id: `${meta.id}/client/tracing`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Client.Tracing,\n component: () => <TracingPanel />,\n }),\n createSurface({\n id: `${meta.id}/halo/identity`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Halo.Identity,\n component: () => <IdentityPanel />,\n }),\n createSurface({\n id: `${meta.id}/halo/devices`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Halo.Devices,\n component: () => <DeviceListPanel />,\n }),\n createSurface({\n id: `${meta.id}/halo/keyring`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Halo.Keyring,\n component: () => <KeyringPanel />,\n }),\n createSurface({\n id: `${meta.id}/halo/credentials`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Halo.Credentials,\n component: () => {\n const space = useCurrentSpace();\n return <CredentialsPanel space={space} />;\n },\n }),\n createSurface({\n id: `${meta.id}/echo/spaces`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Spaces,\n component: () => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const handleSelect = useCallback(\n () => dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [Devtools.Echo.Space] })),\n [dispatch],\n );\n return <SpaceListPanel onSelect={handleSelect} />;\n },\n }),\n createSurface({\n id: `${meta.id}/echo/space`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Space,\n component: () => {\n const space = useCurrentSpace();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const handleSelect = useCallback(\n () => dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [Devtools.Echo.Feeds] })),\n [dispatch],\n );\n return <SpaceInfoPanel space={space} onSelectFeed={handleSelect} onSelectPipeline={handleSelect} />;\n },\n }),\n createSurface({\n id: `${meta.id}/echo/feeds`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Feeds,\n component: () => {\n const space = useCurrentSpace();\n return <FeedsPanel space={space} />;\n },\n }),\n createSurface({\n id: `${meta.id}/echo/objects`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Objects,\n component: () => {\n const space = useCurrentSpace();\n return <ObjectsPanel space={space} />;\n },\n }),\n createSurface({\n id: `${meta.id}/echo/schema`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Schema,\n component: () => {\n const space = useCurrentSpace();\n return <SchemaPanel space={space} />;\n },\n }),\n createSurface({\n id: `${meta.id}/echo/automerge`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Automerge,\n component: () => {\n const space = useCurrentSpace();\n return <AutomergePanel space={space} />;\n },\n }),\n createSurface({\n id: `${meta.id}/echo/queues`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Queues,\n component: () => <QueuesPanel />,\n }),\n createSurface({\n id: `${meta.id}/echo/members`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Members,\n component: () => {\n const space = useCurrentSpace();\n return <MembersPanel space={space} />;\n },\n }),\n createSurface({\n id: `${meta.id}/echo/metadata`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Metadata,\n component: () => <MetadataPanel />,\n }),\n createSurface({\n id: `${meta.id}/mesh/signal`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Mesh.Signal,\n component: () => <SignalPanel />,\n }),\n createSurface({\n id: `${meta.id}/mesh/swarm`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Mesh.Swarm,\n component: () => <SwarmPanel />,\n }),\n createSurface({\n id: `${meta.id}/mesh/network`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Mesh.Network,\n component: () => {\n const space = useCurrentSpace();\n return <NetworkPanel space={space} />;\n },\n }),\n // TODO(wittjosiah): Remove?\n // createSurface({\n // id: `${meta.id}/agent/dashboard`,\n // role: 'article',\n // filter: (data): data is any => data.subject === Devtools.Agent.Dashboard,\n // component: () => <DashboardPanel />,\n // }),\n createSurface({\n id: `${meta.id}/edge/dashboard`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Edge.Dashboard,\n component: () => <EdgeDashboardPanel />,\n }),\n createSurface({\n id: `${meta.id}/edge/workflows`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Edge.Workflows,\n component: () => {\n const space = useCurrentSpace();\n return <WorkflowPanel space={space} />;\n },\n }),\n createSurface({\n id: `${meta.id}/edge/traces`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Edge.Traces,\n component: () => {\n const space = useCurrentSpace();\n return <InvocationTraceContainer space={space} detailAxis='block' />;\n },\n }),\n createSurface({\n id: `${meta.id}/edge/testing`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Edge.Testing,\n component: () => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const onSpaceCreate = useCallback(\n async (space: Space) => {\n await space.waitUntilReady();\n await dispatch(createIntent(SpaceAction.Migrate, { space }));\n await space.db.flush();\n },\n [dispatch],\n );\n const onScriptPluginOpen = useCallback(\n async (space: Space) => {\n await space.waitUntilReady();\n const result = await dispatch(\n Function.pipe(\n createIntent(ScriptAction.CreateScript, { space }),\n chain(SpaceAction.AddObject, { target: space }),\n ),\n );\n log.info('script created', { result });\n await dispatch(\n createIntent(LayoutAction.Open, { part: 'main', subject: [`${space.id}:${result.data?.object.id}`] }),\n );\n },\n [dispatch],\n );\n return <TestingPanel onSpaceCreate={onSpaceCreate} onScriptPluginOpen={onScriptPluginOpen} />;\n },\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport const DebugGraph = lazy(() => import('./DebugGraph'));\nexport const DevtoolsOverviewContainer = lazy(() => import('./DevtoolsOverviewContainer'));\nexport const SpaceGenerator = lazy(() => import('./SpaceGenerator'));\n\nexport * from './DebugObjectPanel';\nexport * from './DebugSettings';\nexport * from './DebugStatus';\nexport * from './Wireframe';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Obj } from '@dxos/echo';\nimport { Clipboard, Input, Toolbar } from '@dxos/react-ui';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\n\nexport type DebugObjectPanelProps = {\n object: Obj.Any;\n};\n\n// TODO(burdon): Get schema and traverse references.\nexport const DebugObjectPanel = ({ object }: DebugObjectPanelProps) => {\n const dxn = `dxn:echo:@:${object.id}`;\n\n return (\n <Clipboard.Provider>\n <StackItem.Content toolbar>\n <Toolbar.Root>\n <Input.Root>\n <Input.TextInput disabled value={dxn} />\n <Clipboard.IconButton value={dxn} />\n </Input.Root>\n </Toolbar.Root>\n <Json data={object} />\n </StackItem.Content>\n </Clipboard.Provider>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { Capabilities, useCapabilities } from '@dxos/app-framework';\nimport { type ConfigProto, SaveConfig, Storage, defs } from '@dxos/config';\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { Button, Icon, Input, Select, Toast, useFileDownload, useTranslation } from '@dxos/react-ui';\nimport { ControlGroup, ControlItemInput, ControlPage, ControlSection } from '@dxos/react-ui-form';\nimport { setDeep } from '@dxos/util';\n\nimport { meta } from '../meta';\nimport { type DebugSettingsProps } from '../types';\n\ntype Toast = {\n title: string;\n description?: string;\n};\n\nconst StorageAdapters = {\n opfs: defs.Runtime.Client.Storage.StorageDriver.WEBFS,\n idb: defs.Runtime.Client.Storage.StorageDriver.IDB,\n} as const;\n\nexport const DebugSettings = ({ settings }: { settings: DebugSettingsProps }) => {\n const { t } = useTranslation(meta.id);\n const [toast, setToast] = useState<Toast>();\n const client = useClient();\n const download = useFileDownload();\n // TODO(mykola): Get updates from other places that change Config.\n const [storageConfig, setStorageConfig] = useState<ConfigProto>({});\n const [upload] = useCapabilities(Capabilities.FileUploader);\n\n useEffect(() => {\n void Storage().then((config) => setStorageConfig(config));\n }, []);\n\n const handleToast = (toast: Toast) => {\n setToast(toast);\n const t = setTimeout(() => setToast(undefined), 5_000);\n return () => clearTimeout(t);\n };\n\n const handleDownload = async () => {\n const data = await client.diagnostics();\n const file = new Blob([JSON.stringify(data, undefined, 2)], { type: 'text/plain' });\n const fileName = `composer-${new Date().toISOString().replace(/\\W/g, '-')}.json`;\n download(file, fileName);\n\n if (upload) {\n const info = await upload(client.spaces.default, new File([file], fileName));\n if (!info) {\n log.error('diagnostics failed to upload to IPFS');\n return;\n }\n handleToast({ title: t('settings uploaded'), description: t('settings uploaded to clipboard') });\n\n // TODO(nf): move to IpfsPlugin?\n const url = client.config.values.runtime!.services!.ipfs!.gateway + '/' + info.cid;\n void navigator.clipboard.writeText(url);\n handleToast({ title: t('settings uploaded'), description: t('settings uploaded to clipboard') });\n log.info('diagnostics', { url });\n }\n };\n\n const handleRepair = async () => {\n try {\n const info = await client.repair();\n setStorageConfig(await Storage());\n handleToast({ title: t('settings repair success'), description: JSON.stringify(info, undefined, 2) });\n } catch (err: any) {\n handleToast({ title: t('settings repair failed'), description: err.message });\n }\n };\n\n return (\n <ControlPage>\n <ControlSection title={t('settings title', { ns: meta.id })}>\n <ControlGroup>\n <ControlItemInput title={t('settings wireframe')}>\n <Input.Switch\n checked={settings.wireframe}\n onCheckedChange={(checked) => (settings.wireframe = !!checked)}\n />\n </ControlItemInput>\n <ControlItemInput title={t('settings download diagnostics')}>\n <Button onClick={handleDownload}>\n <Icon icon='ph--download-simple--regular' size={5} />\n </Button>\n </ControlItemInput>\n <ControlItemInput title={t('settings repair')}>\n <Button onClick={handleRepair}>\n <Icon icon='ph--first-aid-kit--regular' size={5} />\n </Button>\n </ControlItemInput>\n\n {/* TODO(burdon): Move to layout? */}\n {toast && (\n <Toast.Root>\n <Toast.Body>\n <Toast.Title>\n <Icon icon='ph--gift--duotone' size={5} classNames='inline mr-1' />\n <span>{toast.title}</span>\n </Toast.Title>\n {toast.description && <Toast.Description>{toast.description}</Toast.Description>}\n </Toast.Body>\n </Toast.Root>\n )}\n\n <ControlItemInput title={t('settings choose storage adaptor')}>\n <Select.Root\n value={\n Object.entries(StorageAdapters).find(\n ([name, value]) => value === storageConfig?.runtime?.client?.storage?.dataStore,\n )?.[0]\n }\n onValueChange={(value) => {\n if (confirm(t('settings storage adapter changed alert'))) {\n updateConfig(\n storageConfig,\n setStorageConfig,\n ['runtime', 'client', 'storage', 'dataStore'],\n StorageAdapters[value as keyof typeof StorageAdapters],\n );\n }\n }}\n >\n <Select.TriggerButton placeholder={t('settings data store label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {Object.keys(StorageAdapters).map((key) => (\n <Select.Option key={key} value={key}>\n {t(`settings storage adaptor ${key} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </ControlItemInput>\n </ControlGroup>\n </ControlSection>\n </ControlPage>\n );\n};\n\nconst updateConfig = (config: ConfigProto, setConfig: (newConfig: ConfigProto) => void, path: string[], value: any) => {\n const storageConfigCopy = JSON.parse(JSON.stringify(config ?? {}));\n setDeep(storageConfigCopy, path, value);\n setConfig(storageConfigCopy);\n queueMicrotask(async () => {\n await SaveConfig(storageConfigCopy);\n });\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { TimeoutError } from '@dxos/async';\nimport { useActiveSpace } from '@dxos/plugin-space';\nimport { StatusBar } from '@dxos/plugin-status-bar';\nimport { ConnectionState } from '@dxos/protocols/proto/dxos/client/services';\nimport { useNetworkStatus } from '@dxos/react-client/mesh';\nimport { Icon } from '@dxos/react-ui';\n\nconst styles = {\n success: 'text-sky-300 dark:text-green-700',\n warning: 'text-orange-300 dark:text-orange-600',\n error: 'text-red-300 dark:text-red-600',\n};\n\n// TODO(burdon): Move out of debug plugin.\n// TODO(burdon): Make pluggable (move indicators to relevant plugins).\n// TODO(burdon): Vault heartbeat indicator (global scope)?\n\n/**\n * Ensure light doesn't flicker immediately after start.\n */\n// TODO(burdon): Move to @dxos/async (debounce?)\nconst _timer = (cb: (err?: Error) => void, options?: { min?: number; max?: number }) => {\n const min = options?.min ?? 500;\n let start: number;\n let pending: NodeJS.Timeout;\n let timeout: NodeJS.Timeout;\n return {\n start: () => {\n start = Date.now();\n clearTimeout(pending);\n if (options?.max) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n cb(new TimeoutError(options.max));\n }, options.max);\n }\n },\n stop: () => {\n clearTimeout(timeout);\n const delta = Date.now() - start;\n if (delta < min) {\n pending = setTimeout(() => {\n cb();\n }, min - delta);\n }\n },\n };\n};\n\n/**\n * Global error handler.\n */\n// TODO(burdon): Integrate with Sentry?\nconst ErrorIndicator = () => {\n const [, forceUpdate] = useState({});\n const errorRef = useRef<Error>(null);\n useEffect(() => {\n const errorListener = (event: any) => {\n const error: Error = event.error ?? event.reason;\n if (errorRef.current !== error) {\n errorRef.current = error;\n forceUpdate({});\n }\n };\n\n // TODO(burdon): Register globally?\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/error_event\n window.addEventListener('error', errorListener);\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/unhandledrejection_event\n window.addEventListener('unhandledrejection', errorListener);\n\n return () => {\n window.removeEventListener('error', errorListener);\n window.removeEventListener('unhandledrejection', errorListener);\n };\n }, []);\n\n const handleReset = () => {\n errorRef.current = null;\n forceUpdate({});\n };\n\n if (errorRef.current) {\n return (\n <StatusBar.Button title={errorRef.current.message} onClick={handleReset}>\n <Icon icon='ph--warning-circle--duotone' size={4} classNames={styles.error} />\n </StatusBar.Button>\n );\n } else {\n return (\n <StatusBar.Item title='No errors.'>\n <Icon icon='ph--check--regular' size={4} />\n </StatusBar.Item>\n );\n }\n};\n\n/**\n * Swarm connection handler.\n */\nconst SwarmIndicator = () => {\n const [state, setState] = useState(0);\n const { swarm } = useNetworkStatus();\n useEffect(() => {\n setState(swarm === ConnectionState.ONLINE ? 0 : 1);\n }, [swarm]);\n\n if (state === 0) {\n return (\n <StatusBar.Item title='Connected to swarm.'>\n <Icon icon='ph--lightning--regular' size={4} />\n </StatusBar.Item>\n );\n } else {\n return (\n <StatusBar.Item title='Disconnected from swarm.'>\n <Icon icon='ph--lightning-slash--regular' size={4} classNames={styles.warning} />\n </StatusBar.Item>\n );\n }\n};\n\n/**\n * Data saving indicator.\n */\n// TODO(burdon): Merge with SaveStatus.\nconst SavingIndicator = () => {\n const [state, _setState] = useState(0);\n const _space = useActiveSpace();\n // TODO(dmaretskyi): Fix this when we have save status for automerge.\n // useEffect(() => {\n // if (!space) {\n // return;\n // }\n // const { start, stop } = timer(() => setState(0), { min: 250 });\n // return space.db.pendingBatch.on(({ duration, error }) => {\n // if (error) {\n // setState(2);\n // stop();\n // } else if (duration === undefined) {\n // setState(1);\n // start();\n // } else {\n // stop();\n // }\n // });\n // }, [space]);\n\n switch (state) {\n case 2:\n return (\n <StatusBar.Item title='Edit not saved.'>\n <Icon icon='ph--circle--duotone' size={4} classNames={styles.warning} />\n </StatusBar.Item>\n );\n case 1:\n return (\n <StatusBar.Item title='Saving...'>\n <Icon icon='ph--circle--duotone' size={4} classNames={styles.success} />\n </StatusBar.Item>\n );\n case 0:\n default:\n return (\n <StatusBar.Item title='Modified indicator.'>\n <Icon icon='ph--circle--duotone' size={4} />\n </StatusBar.Item>\n );\n }\n};\n\nconst indicators = [SavingIndicator, SwarmIndicator, ErrorIndicator];\n\nexport const DebugStatus = () => {\n return (\n <>\n {indicators.map((Indicator) => (\n <Indicator key={Indicator.name} />\n ))}\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\nimport { useResizeDetector } from 'react-resize-detector';\n\nimport { type Obj } from '@dxos/echo';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { useAttentionAttributes } from '@dxos/react-ui-attention';\nimport { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/react-ui-theme';\n\n// TODO(burdon): Create generic container with wireframe mode.\nexport type WireframeProps = ThemedClassName<{\n label?: string;\n object: Obj.Any;\n}>;\n\n// TODO(burdon): Make focusable and attendable with input.\nexport const Wireframe = ({ classNames, label, object }: WireframeProps) => {\n const attentionAttrs = useAttentionAttributes(fullyQualifiedId(object));\n const { width, height, ref } = useResizeDetector();\n\n return (\n <div ref={ref} className={mx('relative grow min-bs-96', classNames)} {...attentionAttrs}>\n <div className='absolute inset-2 flex flex-col gap-2 overflow-hidden font-mono'>\n <div className='flex justify-between'>\n <div>{label}</div>\n <div>{`[${width}x${height}]`}</div>\n </div>\n {object && (\n <SyntaxHighlighter language='json' classNames='text-xs opacity-75 rounded'>\n {JSON.stringify(object, undefined, 2)}\n </SyntaxHighlighter>\n )}\n </div>\n <svg width={width} height={height} className='bg-transparent *:text-subdued'>\n <rect x={0} y={0} width={width} height={height} strokeWidth={1} fill='none' />\n <line x1={0} y1={0} x2={width} y2={height} strokeWidth={1} />\n <line x1={0} y1={height} x2={width} y2={0} strokeWidth={1} />\n </svg>\n </div>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["Function", "React", "useCallback", "Capabilities", "LayoutAction", "chain", "contributes", "createIntent", "createSurface", "useCapability", "useIntentDispatcher", "AutomergePanel", "ConfigPanel", "CredentialsPanel", "DeviceListPanel", "DiagnosticsPanel", "EdgeDashboardPanel", "FeedsPanel", "IdentityPanel", "InvocationTraceContainer", "KeyringPanel", "LoggingPanel", "MembersPanel", "MetadataPanel", "NetworkPanel", "ObjectsPanel", "QueuesPanel", "SchemaPanel", "SignalPanel", "SpaceInfoPanel", "SpaceListPanel", "StoragePanel", "SwarmPanel", "TestingPanel", "TracingPanel", "WorkflowPanel", "Obj", "SettingsStore", "log", "ClientCapabilities", "Graph", "ScriptAction", "SpaceAction", "SpaceState", "isSpace", "parseId", "StackItem", "DataType", "lazy", "React", "Clipboard", "Input", "Toolbar", "StackItem", "Json", "DebugObjectPanel", "object", "dxn", "id", "Clipboard", "Provider", "StackItem", "Content", "toolbar", "Toolbar", "Root", "Input", "TextInput", "disabled", "value", "IconButton", "Json", "data", "React", "useEffect", "useState", "Capabilities", "useCapabilities", "SaveConfig", "Storage", "defs", "log", "useClient", "Button", "Icon", "Input", "Select", "Toast", "useFileDownload", "useTranslation", "ControlGroup", "ControlItemInput", "ControlPage", "ControlSection", "setDeep", "StorageAdapters", "opfs", "defs", "Runtime", "Client", "Storage", "StorageDriver", "WEBFS", "idb", "IDB", "DebugSettings", "settings", "t", "useTranslation", "meta", "id", "toast", "setToast", "useState", "client", "useClient", "download", "useFileDownload", "storageConfig", "setStorageConfig", "upload", "useCapabilities", "Capabilities", "FileUploader", "useEffect", "then", "config", "handleToast", "setTimeout", "undefined", "clearTimeout", "handleDownload", "data", "diagnostics", "file", "Blob", "JSON", "stringify", "type", "fileName", "Date", "toISOString", "replace", "info", "spaces", "default", "File", "log", "error", "title", "description", "url", "values", "runtime", "services", "ipfs", "gateway", "cid", "navigator", "clipboard", "writeText", "handleRepair", "repair", "err", "message", "React", "ControlPage", "ControlSection", "ns", "ControlGroup", "ControlItemInput", "Input", "Switch", "checked", "wireframe", "onCheckedChange", "Button", "onClick", "Icon", "icon", "size", "Toast", "Root", "Body", "Title", "classNames", "span", "Description", "Select", "value", "Object", "entries", "find", "name", "storage", "dataStore", "onValueChange", "confirm", "updateConfig", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "keys", "map", "key", "Option", "Arrow", "setConfig", "path", "storageConfigCopy", "parse", "setDeep", "queueMicrotask", "SaveConfig", "React", "useEffect", "useRef", "useState", "TimeoutError", "useActiveSpace", "StatusBar", "ConnectionState", "useNetworkStatus", "Icon", "styles", "success", "warning", "error", "ErrorIndicator", "forceUpdate", "useState", "errorRef", "useRef", "useEffect", "errorListener", "event", "error", "reason", "current", "window", "addEventListener", "removeEventListener", "handleReset", "React", "StatusBar", "Button", "title", "message", "onClick", "Icon", "icon", "size", "classNames", "styles", "Item", "SwarmIndicator", "state", "setState", "swarm", "useNetworkStatus", "ConnectionState", "ONLINE", "warning", "SavingIndicator", "_setState", "_space", "useActiveSpace", "success", "indicators", "DebugStatus", "map", "Indicator", "key", "name", "React", "useResizeDetector", "fullyQualifiedId", "useAttentionAttributes", "SyntaxHighlighter", "mx", "Wireframe", "classNames", "label", "object", "attentionAttrs", "useAttentionAttributes", "fullyQualifiedId", "width", "height", "ref", "useResizeDetector", "React", "div", "className", "mx", "SyntaxHighlighter", "language", "JSON", "stringify", "undefined", "svg", "rect", "x", "y", "strokeWidth", "fill", "line", "x1", "y1", "x2", "y2", "DebugGraph", "lazy", "DevtoolsOverviewContainer", "SpaceGenerator", "isSpaceDebug", "data", "type", "meta", "id", "isSpace", "space", "isGraphDebug", "graph", "Graph", "root", "useCurrentSpace", "layout", "useCapability", "Capabilities", "Layout", "client", "ClientCapabilities", "Client", "spaceId", "parseId", "workspace", "spaces", "get", "undefined", "context", "contributes", "ReactSurface", "createSurface", "role", "filter", "subject", "SettingsStore", "prefix", "component", "React", "DebugSettings", "settings", "value", "dispatchPromise", "dispatch", "useIntentDispatcher", "handleCreateObject", "useCallback", "objects", "collection", "state", "SpaceState", "SPACE_READY", "properties", "DataType", "Collection", "typename", "target", "Obj", "instanceOf", "forEach", "object", "createIntent", "SpaceAction", "AddObject", "StackItem", "Content", "SpaceGenerator", "onCreateObjects", "DebugGraph", "position", "getCapability", "getStore", "isObject", "wireframe", "Wireframe", "label", "name", "classNames", "companionTo", "DebugObjectPanel", "DevtoolsOverviewContainer", "DebugStatus", "Devtools", "Config", "ConfigPanel", "vaultSelector", "Storage", "StoragePanel", "Logs", "LoggingPanel", "Diagnostics", "DiagnosticsPanel", "Tracing", "TracingPanel", "Halo", "Identity", "IdentityPanel", "Devices", "DeviceListPanel", "Keyring", "KeyringPanel", "Credentials", "CredentialsPanel", "Echo", "Spaces", "handleSelect", "LayoutAction", "Open", "part", "Space", "SpaceListPanel", "onSelect", "Feeds", "SpaceInfoPanel", "onSelectFeed", "onSelectPipeline", "FeedsPanel", "Objects", "ObjectsPanel", "Schema", "SchemaPanel", "Automerge", "AutomergePanel", "Queues", "QueuesPanel", "Members", "MembersPanel", "Metadata", "MetadataPanel", "Mesh", "Signal", "SignalPanel", "Swarm", "SwarmPanel", "Network", "NetworkPanel", "Edge", "Dashboard", "EdgeDashboardPanel", "Workflows", "WorkflowPanel", "Traces", "InvocationTraceContainer", "detailAxis", "Testing", "onSpaceCreate", "waitUntilReady", "Migrate", "db", "flush", "onScriptPluginOpen", "result", "pipe", "ScriptAction", "CreateScript", "chain", "log", "info", "TestingPanel"]
7
- }
@@ -1,22 +0,0 @@
1
- import {
2
- DebugSettingsSchema
3
- } from "./chunk-SRV2AIGJ.mjs";
4
- import {
5
- meta
6
- } from "./chunk-WZFZ4ESO.mjs";
7
-
8
- // src/capabilities/settings.ts
9
- import { Capabilities, contributes } from "@dxos/app-framework";
10
- import { live } from "@dxos/live-object";
11
- var settings_default = (() => {
12
- const settings = live({});
13
- return contributes(Capabilities.Settings, {
14
- prefix: meta.id,
15
- schema: DebugSettingsSchema,
16
- value: settings
17
- });
18
- });
19
- export {
20
- settings_default as default
21
- };
22
- //# sourceMappingURL=settings-SQXR3OAH.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/settings.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { live } from '@dxos/live-object';\n\nimport { meta } from '../meta';\nimport { type DebugSettingsProps, DebugSettingsSchema } from '../types';\n\nexport default () => {\n const settings = live<DebugSettingsProps>({});\n\n return contributes(Capabilities.Settings, {\n prefix: meta.id,\n schema: DebugSettingsSchema,\n value: settings,\n });\n};\n"],
5
- "mappings": ";;;;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,YAAY;AAKrB,IAAA,oBAAe,MAAA;AACb,QAAMC,WAAWC,KAAyB,CAAC,CAAA;AAE3C,SAAOC,YAAYC,aAAaC,UAAU;IACxCC,QAAQC,KAAKC;IACbC,QAAQC;IACRC,OAAOV;EACT,CAAA;AACF;",
6
- "names": ["Capabilities", "contributes", "live", "settings", "live", "contributes", "Capabilities", "Settings", "prefix", "meta", "id", "schema", "DebugSettingsSchema", "value"]
7
- }
@@ -1,4 +0,0 @@
1
- import { type PluginContext } from '@dxos/app-framework';
2
- declare const _default: (context: PluginContext) => import("@dxos/app-framework").Capability<import("@dxos/app-framework").InterfaceDef<import("@dxos/app-graph").BuilderExtensions>>;
3
- export default _default;
4
- //# sourceMappingURL=app-graph-builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/app-graph-builder.ts"],"names":[],"mappings":"AAQA,OAAO,EAAgB,KAAK,aAAa,EAAe,MAAM,qBAAqB,CAAC;yBAWpE,SAAS,aAAa;AAAtC,wBA2ZK"}
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- declare const _default: () => import("@dxos/app-framework").Capability<import("@dxos/app-framework").InterfaceDef<Readonly<{
3
- id: string;
4
- dependsOn?: string[];
5
- context: React.FC<React.PropsWithChildren>;
6
- }>>>;
7
- export default _default;
8
- //# sourceMappingURL=react-context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-context.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-context.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;;;;;;AAO1B,wBAIK"}
@@ -1,4 +0,0 @@
1
- import { Capabilities, type PluginContext } from '@dxos/app-framework';
2
- declare const _default: (context: PluginContext) => import("@dxos/app-framework").Capability<import("@dxos/app-framework").InterfaceDef<Capabilities.ReactSurface>>;
3
- export default _default;
4
- //# sourceMappingURL=react-surface.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-surface.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,YAAY,EAEZ,KAAK,aAAa,EAOnB,MAAM,qBAAqB,CAAC;yBAyEb,SAAS,aAAa;AAAtC,wBAoTK"}
@@ -1,4 +0,0 @@
1
- import { Capabilities } from '@dxos/app-framework';
2
- declare const _default: () => import("@dxos/app-framework").Capability<import("@dxos/app-framework").InterfaceDef<Capabilities.Settings>>;
3
- export default _default;
4
- //# sourceMappingURL=settings.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/settings.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAe,MAAM,qBAAqB,CAAC;;AAMhE,wBAQE"}
@@ -1,431 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Rx } from '@effect-rx/rx-react';
6
- import * as Function from 'effect/Function';
7
- import * as Option from 'effect/Option';
8
-
9
- import { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';
10
- import { Obj } from '@dxos/echo';
11
- import { ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
12
- import { ROOT_ID, createExtension, rxFromSignal } from '@dxos/plugin-graph';
13
- import { getActiveSpace, meta as spaceMeta } from '@dxos/plugin-space';
14
-
15
- import { meta } from '../meta';
16
- import { Devtools } from '../types';
17
-
18
- const DEVTOOLS_TYPE = `${meta.id}/devtools`;
19
-
20
- export default (context: PluginContext) =>
21
- contributes(Capabilities.AppGraphBuilder, [
22
- // Devtools node.
23
- createExtension({
24
- id: `${meta.id}/devtools`,
25
- connector: (node) =>
26
- Rx.make((get) =>
27
- Function.pipe(
28
- get(node),
29
- Option.flatMap((node) =>
30
- node.id === ROOT_ID || node.type === `${spaceMeta.id}/settings` ? Option.some(node) : Option.none(),
31
- ),
32
- Option.map((node) => {
33
- const space = get(rxFromSignal(() => getActiveSpace(context)));
34
- const [graph] = get(context.capabilities(Capabilities.AppGraph));
35
-
36
- return [
37
- {
38
- id: `${Devtools.id}-${node.id}`,
39
- data: null,
40
- type: DEVTOOLS_TYPE,
41
- properties: {
42
- label: ['devtools label', { ns: meta.id }],
43
- icon: 'ph--hammer--regular',
44
- disposition: 'pin-end',
45
- position: 'fallback',
46
- },
47
- nodes: [
48
- ...(space && node.type === `${spaceMeta.id}/settings`
49
- ? [
50
- {
51
- id: `debug-${node.id}`,
52
- type: `${meta.id}/space`,
53
- data: { space, type: `${meta.id}/space` },
54
- properties: {
55
- label: ['debug label', { ns: meta.id }],
56
- icon: 'ph--bug--regular',
57
- },
58
- },
59
- ]
60
- : []),
61
- {
62
- id: `app-graph-${node.id}`,
63
- type: `${meta.id}/app-graph`,
64
- data: { graph: graph?.graph, root: space ? space.id : ROOT_ID },
65
- properties: {
66
- label: ['debug app graph label', { ns: meta.id }],
67
- icon: 'ph--graph--regular',
68
- },
69
- },
70
- {
71
- id: `${Devtools.Client.id}-${node.id}`,
72
- data: null,
73
- type: DEVTOOLS_TYPE,
74
- properties: {
75
- label: ['client label', { ns: meta.id }],
76
- icon: 'ph--users--regular',
77
- },
78
- nodes: [
79
- {
80
- id: `${Devtools.Client.Config}-${node.id}`,
81
- data: Devtools.Client.Config,
82
- type: DEVTOOLS_TYPE,
83
- properties: {
84
- label: ['config label', { ns: meta.id }],
85
- icon: 'ph--gear--regular',
86
- },
87
- },
88
- {
89
- id: `${Devtools.Client.Storage}-${node.id}`,
90
- data: Devtools.Client.Storage,
91
- type: DEVTOOLS_TYPE,
92
- properties: {
93
- label: ['storage label', { ns: meta.id }],
94
- icon: 'ph--hard-drives--regular',
95
- },
96
- },
97
- {
98
- id: `${Devtools.Client.Logs}-${node.id}`,
99
- data: Devtools.Client.Logs,
100
- type: DEVTOOLS_TYPE,
101
- properties: {
102
- label: ['logs label', { ns: meta.id }],
103
- icon: 'ph--file-text--regular',
104
- },
105
- },
106
- {
107
- id: `${Devtools.Client.Diagnostics}-${node.id}`,
108
- data: Devtools.Client.Diagnostics,
109
- type: DEVTOOLS_TYPE,
110
- properties: {
111
- label: ['diagnostics label', { ns: meta.id }],
112
- icon: 'ph--chart-line--regular',
113
- },
114
- },
115
- {
116
- id: `${Devtools.Client.Tracing}-${node.id}`,
117
- data: Devtools.Client.Tracing,
118
- type: DEVTOOLS_TYPE,
119
- properties: {
120
- label: ['tracing label', { ns: meta.id }],
121
- icon: 'ph--fire--regular',
122
- },
123
- },
124
- ],
125
- },
126
- {
127
- id: `${Devtools.Halo.id}-${node.id}`,
128
- data: null,
129
- type: DEVTOOLS_TYPE,
130
- properties: {
131
- label: ['halo label', { ns: meta.id }],
132
- icon: 'ph--identification-badge--regular',
133
- },
134
- nodes: [
135
- {
136
- id: `${Devtools.Halo.Identity}-${node.id}`,
137
- data: Devtools.Halo.Identity,
138
- type: DEVTOOLS_TYPE,
139
- properties: {
140
- label: ['identity label', { ns: meta.id }],
141
- icon: 'ph--identification-badge--regular',
142
- },
143
- },
144
- {
145
- id: `${Devtools.Halo.Devices}-${node.id}`,
146
- data: Devtools.Halo.Devices,
147
- type: DEVTOOLS_TYPE,
148
- properties: {
149
- label: ['devices label', { ns: meta.id }],
150
- icon: 'ph--devices--regular',
151
- },
152
- },
153
- {
154
- id: `${Devtools.Halo.Keyring}-${node.id}`,
155
- data: Devtools.Halo.Keyring,
156
- type: DEVTOOLS_TYPE,
157
- properties: {
158
- label: ['keyring label', { ns: meta.id }],
159
- icon: 'ph--key--regular',
160
- },
161
- },
162
- {
163
- id: `${Devtools.Halo.Credentials}-${node.id}`,
164
- data: Devtools.Halo.Credentials,
165
- type: DEVTOOLS_TYPE,
166
- properties: {
167
- label: ['credentials label', { ns: meta.id }],
168
- icon: 'ph--credit-card--regular',
169
- },
170
- },
171
- ],
172
- },
173
- {
174
- id: `${Devtools.Echo.id}-${node.id}`,
175
- data: null,
176
- type: DEVTOOLS_TYPE,
177
- properties: {
178
- label: ['echo label', { ns: meta.id }],
179
- icon: 'ph--database--regular',
180
- },
181
- nodes: [
182
- {
183
- id: `${Devtools.Echo.Spaces}-${node.id}`,
184
- data: Devtools.Echo.Spaces,
185
- type: DEVTOOLS_TYPE,
186
- properties: {
187
- label: ['spaces label', { ns: meta.id }],
188
- icon: 'ph--graph--regular',
189
- },
190
- },
191
- {
192
- id: `${Devtools.Echo.Space}-${node.id}`,
193
- data: Devtools.Echo.Space,
194
- type: DEVTOOLS_TYPE,
195
- properties: {
196
- label: ['space label', { ns: meta.id }],
197
- icon: 'ph--planet--regular',
198
- },
199
- },
200
- {
201
- id: `${Devtools.Echo.Feeds}-${node.id}`,
202
- data: Devtools.Echo.Feeds,
203
- type: DEVTOOLS_TYPE,
204
- properties: {
205
- label: ['feeds label', { ns: meta.id }],
206
- icon: 'ph--list-bullets--regular',
207
- },
208
- },
209
- {
210
- id: `${Devtools.Echo.Objects}-${node.id}`,
211
- data: Devtools.Echo.Objects,
212
- type: DEVTOOLS_TYPE,
213
- properties: {
214
- label: ['objects label', { ns: meta.id }],
215
- icon: 'ph--cube--regular',
216
- },
217
- },
218
- {
219
- id: `${Devtools.Echo.Schema}-${node.id}`,
220
- data: Devtools.Echo.Schema,
221
- type: DEVTOOLS_TYPE,
222
- properties: {
223
- label: ['schema label', { ns: meta.id }],
224
- icon: 'ph--database--regular',
225
- },
226
- },
227
- {
228
- id: `${Devtools.Echo.Automerge}-${node.id}`,
229
- data: Devtools.Echo.Automerge,
230
- type: DEVTOOLS_TYPE,
231
- properties: {
232
- label: ['automerge label', { ns: meta.id }],
233
- icon: 'ph--gear-six--regular',
234
- },
235
- },
236
- {
237
- id: `${Devtools.Echo.Queues}-${node.id}`,
238
- data: Devtools.Echo.Queues,
239
- type: DEVTOOLS_TYPE,
240
- properties: {
241
- label: ['queues label', { ns: meta.id }],
242
- icon: 'ph--queue--regular',
243
- },
244
- },
245
- {
246
- id: `${Devtools.Echo.Members}-${node.id}`,
247
- data: Devtools.Echo.Members,
248
- type: DEVTOOLS_TYPE,
249
- properties: {
250
- label: ['members label', { ns: meta.id }],
251
- icon: 'ph--users--regular',
252
- },
253
- },
254
- {
255
- id: `${Devtools.Echo.Metadata}-${node.id}`,
256
- data: Devtools.Echo.Metadata,
257
- type: DEVTOOLS_TYPE,
258
- properties: {
259
- label: ['metadata label', { ns: meta.id }],
260
- icon: 'ph--hard-drive--regular',
261
- },
262
- },
263
- ],
264
- },
265
- {
266
- id: `${Devtools.Mesh.id}-${node.id}`,
267
- data: null,
268
- type: DEVTOOLS_TYPE,
269
- properties: {
270
- label: ['mesh label', { ns: meta.id }],
271
- icon: 'ph--graph--regular',
272
- },
273
- nodes: [
274
- {
275
- id: `${Devtools.Mesh.Signal}-${node.id}`,
276
- data: Devtools.Mesh.Signal,
277
- type: DEVTOOLS_TYPE,
278
- properties: {
279
- label: ['signal label', { ns: meta.id }],
280
- icon: 'ph--wifi-high--regular',
281
- },
282
- },
283
- {
284
- id: `${Devtools.Mesh.Swarm}-${node.id}`,
285
- data: Devtools.Mesh.Swarm,
286
- type: DEVTOOLS_TYPE,
287
- properties: {
288
- label: ['swarm label', { ns: meta.id }],
289
- icon: 'ph--users-three--regular',
290
- },
291
- },
292
- {
293
- id: `${Devtools.Mesh.Network}-${node.id}`,
294
- data: Devtools.Mesh.Network,
295
- type: DEVTOOLS_TYPE,
296
- properties: {
297
- label: ['network label', { ns: meta.id }],
298
- icon: 'ph--polygon--regular',
299
- },
300
- },
301
- ],
302
- },
303
- // TODO(wittjosiah): Remove?
304
- // {
305
- // id: `${prefix}-${Devtools.Agent.id}`,
306
- // data: null,
307
- // type: DEVTOOLS_TYPE,
308
- // properties: {
309
- // label: ['agent label', { ns: meta.id }],
310
- // icon: 'ph--robot--regular',
311
- // },
312
- // nodes: [
313
- // {
314
- // id: `${prefix}-${Devtools.Agent.Dashboard}`,
315
- // data: Devtools.Agent.Dashboard,
316
- // type: DEVTOOLS_TYPE,
317
- // properties: {
318
- // label: ['dashboard label', { ns: meta.id }],
319
- // icon: 'ph--computer-tower--regular',
320
- // },
321
- // },
322
- // ],
323
- // },
324
- {
325
- id: `${Devtools.Edge.id}-${node.id}`,
326
- data: null,
327
- type: DEVTOOLS_TYPE,
328
- properties: {
329
- label: ['edge label', { ns: meta.id }],
330
- icon: 'ph--cloud--regular',
331
- },
332
- nodes: [
333
- {
334
- id: `${Devtools.Edge.Dashboard}-${node.id}`,
335
- data: Devtools.Edge.Dashboard,
336
- type: DEVTOOLS_TYPE,
337
- properties: {
338
- label: ['dashboard label', { ns: meta.id }],
339
- icon: 'ph--computer-tower--regular',
340
- },
341
- },
342
- {
343
- id: `${Devtools.Edge.Workflows}-${node.id}`,
344
- data: Devtools.Edge.Workflows,
345
- type: DEVTOOLS_TYPE,
346
- properties: {
347
- label: ['workflows label', { ns: meta.id }],
348
- icon: 'ph--function--regular',
349
- },
350
- },
351
- {
352
- id: `${Devtools.Edge.Traces}-${node.id}`,
353
- data: Devtools.Edge.Traces,
354
- type: DEVTOOLS_TYPE,
355
- properties: {
356
- label: ['traces label', { ns: meta.id }],
357
- icon: 'ph--line-segments--regular',
358
- },
359
- },
360
- {
361
- id: `${Devtools.Edge.Testing}-${node.id}`,
362
- data: Devtools.Edge.Testing,
363
- type: DEVTOOLS_TYPE,
364
- properties: {
365
- label: ['testing label', { ns: meta.id }],
366
- icon: 'ph--flask--regular',
367
- },
368
- },
369
- ],
370
- },
371
- ],
372
- },
373
- ];
374
- }),
375
- Option.getOrElse(() => []),
376
- ),
377
- ),
378
- }),
379
-
380
- // Debug object companion.
381
- createExtension({
382
- id: `${meta.id}/debug-object`,
383
- connector: (node) =>
384
- Rx.make((get) =>
385
- Function.pipe(
386
- get(node),
387
- Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),
388
- Option.map((node) => [
389
- {
390
- id: [node.id, 'debug'].join(ATTENDABLE_PATH_SEPARATOR),
391
- type: PLANK_COMPANION_TYPE,
392
- data: 'debug',
393
- properties: {
394
- label: ['debug label', { ns: meta.id }],
395
- icon: 'ph--bug--regular',
396
- disposition: 'hidden',
397
- position: 'fallback',
398
- },
399
- },
400
- ]),
401
- Option.getOrElse(() => []),
402
- ),
403
- ),
404
- }),
405
-
406
- // Devtools deck companion.
407
- createExtension({
408
- id: `${meta.id}/devtools-overview`,
409
- connector: (node) =>
410
- Rx.make((get) =>
411
- Function.pipe(
412
- get(node),
413
- Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
414
- Option.map((node) => [
415
- {
416
- id: [node.id, 'devtools'].join(ATTENDABLE_PATH_SEPARATOR),
417
- type: DECK_COMPANION_TYPE,
418
- data: null,
419
- properties: {
420
- label: ['devtools overview label', { ns: meta.id }],
421
- icon: 'ph--equalizer--regular',
422
- disposition: 'hidden',
423
- position: 'fallback',
424
- },
425
- },
426
- ]),
427
- Option.getOrElse(() => []),
428
- ),
429
- ),
430
- }),
431
- ]);