@dxos/plugin-devtools 0.12.0-next-73daef452f1464b62efdbca75fb0067c1066f264 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/PLUGIN.mdl +144 -57
  2. package/dist/lib/Devtools.mjs +9 -1
  3. package/dist/lib/Devtools.mjs.map +1 -1
  4. package/dist/lib/capabilities.browser.mjs +45 -0
  5. package/dist/lib/capabilities.browser.mjs.map +1 -0
  6. package/dist/lib/capabilities.mjs +9 -7
  7. package/dist/lib/capabilities.mjs.map +1 -1
  8. package/dist/lib/capabilities.node.mjs +7 -3
  9. package/dist/lib/capabilities.node.mjs.map +1 -1
  10. package/dist/lib/capabilities.tauri.mjs +45 -0
  11. package/dist/lib/capabilities.tauri.mjs.map +1 -0
  12. package/dist/lib/capabilities.workerd.mjs +2 -2
  13. package/dist/lib/capabilities.workerd.mjs.map +1 -1
  14. package/dist/lib/{chunk-CliPanel.mjs → chunk-CliArticle.mjs} +28 -24
  15. package/dist/lib/chunk-CliArticle.mjs.map +1 -0
  16. package/dist/lib/chunk-DebugGraph.mjs +12 -8
  17. package/dist/lib/chunk-DebugGraph.mjs.map +1 -1
  18. package/dist/lib/chunk-DevtoolsCards.mjs +108 -0
  19. package/dist/lib/chunk-DevtoolsCards.mjs.map +1 -0
  20. package/dist/lib/chunk-DevtoolsOverviewContainer.mjs +59 -22
  21. package/dist/lib/chunk-DevtoolsOverviewContainer.mjs.map +1 -1
  22. package/dist/lib/chunk-GithubPanel.mjs +13 -10
  23. package/dist/lib/chunk-GithubPanel.mjs.map +1 -1
  24. package/dist/lib/chunk-PLUGIN.mjs +6 -0
  25. package/dist/lib/chunk-PLUGIN.mjs.map +1 -0
  26. package/dist/lib/{chunk-RegistryPanel.mjs → chunk-RegistryArticle.mjs} +26 -25
  27. package/dist/lib/chunk-RegistryArticle.mjs.map +1 -0
  28. package/dist/lib/chunk-ToolsExplorerContainer.mjs +7 -3
  29. package/dist/lib/chunk-ToolsExplorerContainer.mjs.map +1 -1
  30. package/dist/lib/chunk-app-graph-builder.mjs +323 -312
  31. package/dist/lib/chunk-app-graph-builder.mjs.map +1 -1
  32. package/dist/lib/chunk-react-context.mjs +1 -1
  33. package/dist/lib/chunk-react-context.mjs.map +1 -1
  34. package/dist/lib/chunk-react-surface.mjs +244 -88
  35. package/dist/lib/chunk-react-surface.mjs.map +1 -1
  36. package/dist/lib/containers.mjs +3 -3
  37. package/dist/lib/containers.mjs.map +1 -1
  38. package/dist/lib/index.mjs +0 -1
  39. package/dist/lib/meta.mjs +2 -2
  40. package/dist/lib/meta.mjs.map +1 -1
  41. package/dist/lib/translations.mjs +55 -49
  42. package/dist/lib/translations.mjs.map +1 -1
  43. package/dist/types/src/capabilities/DevtoolsCards.d.ts +28 -0
  44. package/dist/types/src/capabilities/DevtoolsCards.d.ts.map +1 -0
  45. package/dist/types/src/capabilities/DevtoolsSurfaces.d.ts +19 -6
  46. package/dist/types/src/capabilities/DevtoolsSurfaces.d.ts.map +1 -1
  47. package/dist/types/src/capabilities/app-graph-builder.d.ts +19 -0
  48. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  49. package/dist/types/src/capabilities/app-graph-builder.test.d.ts +2 -0
  50. package/dist/types/src/capabilities/app-graph-builder.test.d.ts.map +1 -0
  51. package/dist/types/src/capabilities/gen/browser.d.ts +8 -0
  52. package/dist/types/src/capabilities/gen/browser.d.ts.map +1 -0
  53. package/dist/types/src/capabilities/gen/tauri.d.ts +8 -0
  54. package/dist/types/src/capabilities/gen/tauri.d.ts.map +1 -0
  55. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  56. package/dist/types/src/containers/CliArticle/CliArticle.d.ts +8 -0
  57. package/dist/types/src/containers/CliArticle/CliArticle.d.ts.map +1 -0
  58. package/dist/types/src/containers/{CliPanel/CliPanel.stories.d.ts → CliArticle/CliArticle.stories.d.ts} +33 -5
  59. package/dist/types/src/containers/CliArticle/CliArticle.stories.d.ts.map +1 -0
  60. package/dist/types/src/containers/CliArticle/index.d.ts +2 -0
  61. package/dist/types/src/containers/CliArticle/index.d.ts.map +1 -0
  62. package/dist/types/src/containers/{CliPanel → CliArticle}/useCliApp.d.ts +1 -1
  63. package/dist/types/src/containers/CliArticle/useCliApp.d.ts.map +1 -0
  64. package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts +2 -1
  65. package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts.map +1 -1
  66. package/dist/types/src/containers/DebugGraph/index.d.ts +1 -1
  67. package/dist/types/src/containers/DebugGraph/index.d.ts.map +1 -1
  68. package/dist/types/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.d.ts.map +1 -1
  69. package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts +1 -1
  70. package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts.map +1 -1
  71. package/dist/types/src/containers/GithubPanel/GithubComponent.d.ts.map +1 -1
  72. package/dist/types/src/containers/GithubPanel/GithubComponent.stories.d.ts +30 -2
  73. package/dist/types/src/containers/GithubPanel/GithubComponent.stories.d.ts.map +1 -1
  74. package/dist/types/src/containers/GithubPanel/index.d.ts +1 -1
  75. package/dist/types/src/containers/GithubPanel/index.d.ts.map +1 -1
  76. package/dist/types/src/containers/RegistryArticle/RegistryArticle.d.ts +8 -0
  77. package/dist/types/src/containers/RegistryArticle/RegistryArticle.d.ts.map +1 -0
  78. package/dist/types/src/containers/RegistryArticle/index.d.ts +2 -0
  79. package/dist/types/src/containers/RegistryArticle/index.d.ts.map +1 -0
  80. package/dist/types/src/containers/ToolsExplorerContainer/ToolsExplorerContainer.d.ts +3 -1
  81. package/dist/types/src/containers/ToolsExplorerContainer/ToolsExplorerContainer.d.ts.map +1 -1
  82. package/dist/types/src/containers/ToolsExplorerContainer/index.d.ts +1 -1
  83. package/dist/types/src/containers/ToolsExplorerContainer/index.d.ts.map +1 -1
  84. package/dist/types/src/containers/index.d.ts +2 -2
  85. package/dist/types/src/containers/index.d.ts.map +1 -1
  86. package/dist/types/src/index.d.ts +1 -2
  87. package/dist/types/src/index.d.ts.map +1 -1
  88. package/dist/types/src/translations.d.ts +30 -2
  89. package/dist/types/src/translations.d.ts.map +1 -1
  90. package/dist/types/src/types/Devtools.d.ts +6 -0
  91. package/dist/types/src/types/Devtools.d.ts.map +1 -1
  92. package/dist/types/src/types/index.d.ts +2 -2
  93. package/dist/types/src/types/index.d.ts.map +1 -1
  94. package/dist/types/tsconfig.tsbuildinfo +1 -1
  95. package/dx.config.ts +2 -2
  96. package/package.json +43 -39
  97. package/src/capabilities/DevtoolsCards.tsx +140 -0
  98. package/src/capabilities/DevtoolsSurfaces.tsx +32 -38
  99. package/src/capabilities/app-graph-builder.test.ts +75 -0
  100. package/src/capabilities/app-graph-builder.ts +324 -313
  101. package/src/capabilities/gen/browser.ts +61 -0
  102. package/src/capabilities/gen/node.ts +4 -4
  103. package/src/capabilities/gen/tauri.ts +61 -0
  104. package/src/capabilities/gen/workerd.ts +2 -2
  105. package/src/capabilities/index.ts +7 -7
  106. package/src/capabilities/react-context.tsx +1 -1
  107. package/src/capabilities/react-surface.ts +222 -79
  108. package/src/containers/{CliPanel/CliPanel.stories.tsx → CliArticle/CliArticle.stories.tsx} +9 -10
  109. package/src/containers/{CliPanel/CliPanel.tsx → CliArticle/CliArticle.tsx} +7 -7
  110. package/src/containers/CliArticle/index.ts +5 -0
  111. package/src/containers/{CliPanel → CliArticle}/useCliApp.ts +17 -12
  112. package/src/containers/DebugGraph/DebugGraph.tsx +7 -6
  113. package/src/containers/DebugGraph/index.ts +1 -1
  114. package/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.tsx +72 -32
  115. package/src/containers/DevtoolsOverviewContainer/index.ts +1 -1
  116. package/src/containers/GithubPanel/GithubComponent.stories.tsx +2 -2
  117. package/src/containers/GithubPanel/GithubComponent.tsx +14 -11
  118. package/src/containers/GithubPanel/GithubPanel.tsx +2 -2
  119. package/src/containers/GithubPanel/index.ts +1 -1
  120. package/src/containers/{RegistryPanel/RegistryPanel.tsx → RegistryArticle/RegistryArticle.tsx} +11 -10
  121. package/src/containers/RegistryArticle/index.ts +5 -0
  122. package/src/containers/ToolsExplorerContainer/ToolsExplorerContainer.tsx +10 -3
  123. package/src/containers/ToolsExplorerContainer/index.ts +1 -1
  124. package/src/containers/index.ts +6 -6
  125. package/src/index.ts +1 -2
  126. package/src/meta.ts +1 -1
  127. package/src/plugin.test.ts +2 -2
  128. package/src/translations.ts +7 -3
  129. package/src/types/Devtools.ts +10 -0
  130. package/src/types/index.ts +2 -2
  131. package/dist/lib/chunk-CliPanel.mjs.map +0 -1
  132. package/dist/lib/chunk-RegistryPanel.mjs.map +0 -1
  133. package/dist/types/src/containers/CliPanel/CliPanel.d.ts +0 -6
  134. package/dist/types/src/containers/CliPanel/CliPanel.d.ts.map +0 -1
  135. package/dist/types/src/containers/CliPanel/CliPanel.stories.d.ts.map +0 -1
  136. package/dist/types/src/containers/CliPanel/index.d.ts +0 -2
  137. package/dist/types/src/containers/CliPanel/index.d.ts.map +0 -1
  138. package/dist/types/src/containers/CliPanel/useCliApp.d.ts.map +0 -1
  139. package/dist/types/src/containers/RegistryPanel/RegistryPanel.d.ts +0 -6
  140. package/dist/types/src/containers/RegistryPanel/RegistryPanel.d.ts.map +0 -1
  141. package/dist/types/src/containers/RegistryPanel/index.d.ts +0 -2
  142. package/dist/types/src/containers/RegistryPanel/index.d.ts.map +0 -1
  143. package/src/containers/CliPanel/index.ts +0 -5
  144. package/src/containers/RegistryPanel/index.ts +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-react-surface.mjs","names":[],"sources":["../../src/capabilities/DevtoolsSurfaces.tsx","../../src/capabilities/react-surface.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\n// Surface components that cannot be expressed as a `props` mapper, because they call hooks.\n\nimport React, { type ComponentType, useCallback } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport * as GraphPath from '@dxos/app-toolkit/GraphPath';\nimport * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';\nimport { useActiveSpace } from '@dxos/app-toolkit/ui';\nimport { InvocationTraceContainer, SpaceInfoPanel, SpaceListPanel, TestingPanel } from '@dxos/devtools';\nimport { Feed } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport * as ScriptOperation from '@dxos/plugin-script/ScriptOperation';\nimport * as SpaceOperation from '@dxos/plugin-space/SpaceOperation';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { Devtools } from '#types';\n\nexport type ActiveSpacePanelProps = {\n /** Stable module-level panel component; the surface passes it through its `props` mapper. */\n Panel: ComponentType<{ space: Space }>;\n};\n\n/**\n * Most devtools panels take the active space and render nothing without one. A mapper cannot read\n * the active space (it is a hook) nor decline to render, so they share this wrapper.\n */\nexport const ActiveSpacePanel = ({ Panel }: ActiveSpacePanelProps) => {\n const space = useActiveSpace();\n\n return space ? <Panel space={space} /> : null;\n};\n\nexport const SpaceListSurface = () => {\n const { invokePromise } = useOperationInvoker();\n const handleSelect = useCallback(\n () => invokePromise(LayoutOperation.Open, { subject: [Devtools.Echo.Space] }),\n [invokePromise],\n );\n\n return <SpaceListPanel onSelect={handleSelect} />;\n};\n\nexport const SpaceInfoSurface = () => {\n const space = useActiveSpace();\n const { invokePromise } = useOperationInvoker();\n const handleSelect = useCallback(\n () => invokePromise(LayoutOperation.Open, { subject: [Devtools.Echo.Feeds] }),\n [invokePromise],\n );\n if (!space) {\n return null;\n }\n\n return <SpaceInfoPanel space={space} onSelectFeed={handleSelect} onSelectPipeline={handleSelect} />;\n};\n\nexport const EdgeTracesSurface = () => {\n const space = useActiveSpace();\n if (!space) {\n return null;\n }\n\n const feed = space.properties.invocationTraceFeed?.target;\n const feedDXN = feed ? Feed.getFeedUri(feed) : undefined;\n\n return <InvocationTraceContainer db={space.db} feedDXN={feedDXN} detailAxis='block' />;\n};\n\nexport const EdgeTestingSurface = () => {\n const { invokePromise } = useOperationInvoker();\n const onSpaceCreate = useCallback(\n async (space: Space) => {\n await space.waitUntilReady();\n await invokePromise(SpaceOperation.Migrate, { space });\n await space.db.flush();\n },\n [invokePromise],\n );\n const onScriptPluginOpen = useCallback(\n async (space: Space) => {\n await space.waitUntilReady();\n const createResult = await invokePromise(ScriptOperation.CreateScript, { db: space.db });\n if (createResult.data?.object) {\n await invokePromise(\n SpaceOperation.AddObject,\n { object: createResult.data.object },\n { spaceId: space.db.spaceId },\n );\n }\n log.info('script created', { result: createResult });\n if (createResult.data?.object) {\n await invokePromise(LayoutOperation.Open, {\n subject: [GraphPath.getObjectPathFromObject(createResult.data.object)],\n });\n }\n },\n [invokePromise],\n );\n\n return <TestingPanel onSpaceCreate={onSpaceCreate} onScriptPluginOpen={onScriptPluginOpen} />;\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as Capabilities from '@dxos/app-framework/Capabilities';\nimport * as Capability from '@dxos/app-framework/Capability';\nimport { Surface } from '@dxos/app-framework/ui';\nimport type * as AppGraph from '@dxos/app-graph/AppGraph';\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport {\n AutomergePanel,\n ConfigPanel,\n CredentialsPanel,\n DeviceListPanel,\n DiagnosticsPanel,\n EdgeDashboardPanel,\n FeedsPanel,\n IdentityPanel,\n KeyringPanel,\n LoggingPanel,\n MembersPanel,\n MetadataPanel,\n NetworkPanel,\n ObjectsPanel,\n QueuesPanel,\n SchemaPanel,\n SignalPanel,\n SqlitePanel,\n StoragePanel,\n SwarmPanel,\n WorkflowPanel,\n} from '@dxos/devtools';\n\nimport { CliPanel, DebugGraph, DevtoolsOverviewContainer, RegistryPanel, ToolsExplorerContainer } from '#containers';\nimport { Devtools } from '#types';\n\nimport {\n ActiveSpacePanel,\n EdgeTestingSurface,\n EdgeTracesSurface,\n SpaceInfoSurface,\n SpaceListSurface,\n} from './DevtoolsSurfaces';\n\ntype GraphDebug = {\n graph: AppGraph.Graph;\n root: string;\n};\n\nconst isGraphDebug = (data: unknown): data is GraphDebug => {\n if (typeof data !== 'object' || data === null || !('graph' in data) || !('root' in data)) {\n return false;\n }\n\n const { graph, root } = data;\n return (\n typeof graph === 'object' &&\n graph !== null &&\n 'json' in graph &&\n typeof graph.json === 'function' &&\n typeof root === 'string'\n );\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n return Capability.contribute(Capabilities.ReactSurface, [\n Surface.create({\n id: 'appGraph',\n filter: AppSurface.subject(AppSurface.Article, isGraphDebug),\n component: DebugGraph,\n props: ({ data: { subject } }) => ({ graph: subject.graph, root: subject.root }),\n }),\n Surface.create({\n id: 'toolsExplorer',\n filter: AppSurface.literal(AppSurface.Article, Devtools.ToolsExplorer),\n component: ToolsExplorerContainer,\n }),\n Surface.create({\n id: 'cli',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Cli),\n component: CliPanel,\n }),\n Surface.create({\n id: 'registry',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Registry),\n component: RegistryPanel,\n }),\n Surface.create({\n id: 'devtoolsOverview',\n filter: Surface.makeFilter(AppSurface.deckCompanion('devtoolsOverview')),\n component: DevtoolsOverviewContainer,\n }),\n\n //\n // Devtools\n //\n\n Surface.create({\n id: 'client.config',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Client.Config),\n component: ConfigPanel,\n props: () => ({ vaultSelector: false }),\n }),\n Surface.create({\n id: 'client.storage',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Client.Storage),\n component: StoragePanel,\n }),\n Surface.create({\n id: 'client.sqlite',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Client.Sqlite),\n component: SqlitePanel,\n }),\n Surface.create({\n id: 'client.logs',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Client.Logs),\n component: LoggingPanel,\n }),\n Surface.create({\n id: 'client.diagnostics',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Client.Diagnostics),\n component: DiagnosticsPanel,\n }),\n Surface.create({\n id: 'halo.identity',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Halo.Identity),\n component: IdentityPanel,\n }),\n Surface.create({\n id: 'halo.devices',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Halo.Devices),\n component: DeviceListPanel,\n }),\n Surface.create({\n id: 'halo.keyring',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Halo.Keyring),\n component: KeyringPanel,\n }),\n Surface.create({\n id: 'halo.credentials',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Halo.Credentials),\n component: ActiveSpacePanel,\n props: () => ({ Panel: CredentialsPanel }),\n }),\n Surface.create({\n id: 'echo.spaces',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Spaces),\n component: SpaceListSurface,\n }),\n Surface.create({\n id: 'echo.space',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Space),\n component: SpaceInfoSurface,\n }),\n Surface.create({\n id: 'echo.feeds',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Feeds),\n component: ActiveSpacePanel,\n props: () => ({ Panel: FeedsPanel }),\n }),\n Surface.create({\n id: 'echo.objects',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Objects),\n component: ActiveSpacePanel,\n props: () => ({ Panel: ObjectsPanel }),\n }),\n Surface.create({\n id: 'echo.schema',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Schema),\n component: ActiveSpacePanel,\n props: () => ({ Panel: SchemaPanel }),\n }),\n Surface.create({\n id: 'echo.automerge',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Automerge),\n component: ActiveSpacePanel,\n props: () => ({ Panel: AutomergePanel }),\n }),\n Surface.create({\n id: 'echo.queues',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Queues),\n component: QueuesPanel,\n }),\n Surface.create({\n id: 'echo.members',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Members),\n component: ActiveSpacePanel,\n props: () => ({ Panel: MembersPanel }),\n }),\n Surface.create({\n id: 'echo.metadata',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Metadata),\n component: MetadataPanel,\n }),\n Surface.create({\n id: 'mesh.signal',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Mesh.Signal),\n component: SignalPanel,\n }),\n Surface.create({\n id: 'mesh.swarm',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Mesh.Swarm),\n component: SwarmPanel,\n }),\n Surface.create({\n id: 'mesh.network',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Mesh.Network),\n component: ActiveSpacePanel,\n props: () => ({ Panel: NetworkPanel }),\n }),\n Surface.create({\n id: 'edge.dashboard',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Edge.Dashboard),\n component: EdgeDashboardPanel,\n }),\n Surface.create({\n id: 'edge.workflows',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Edge.Workflows),\n component: ActiveSpacePanel,\n props: () => ({ Panel: WorkflowPanel }),\n }),\n Surface.create({\n id: 'edge.traces',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Edge.Traces),\n component: EdgeTracesSurface,\n }),\n Surface.create({\n id: 'edge.testing',\n filter: AppSurface.literal(AppSurface.Article, Devtools.Edge.Testing),\n component: EdgeTestingSurface,\n }),\n ]);\n }),\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"chunk-react-surface.mjs","names":[],"sources":["../../src/capabilities/DevtoolsSurfaces.tsx","../../src/capabilities/react-surface.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\n// Surface components that cannot be expressed as a `props` mapper, because they call hooks.\n\nimport React, { type ComponentType, useCallback } from 'react';\n\nimport * as Hooks from '@dxos/app-framework/Hooks';\nimport * as GraphPath from '@dxos/app-toolkit/GraphPath';\nimport * as ToolkitHooks from '@dxos/app-toolkit/Hooks';\nimport * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';\nimport { InvocationTraceContainer, SpaceInfoArticle, SpaceListArticle, TestingArticle } from '@dxos/devtools';\nimport { Feed } from '@dxos/echo';\nimport { useResolveRef } from '@dxos/echo-react';\nimport { log } from '@dxos/log';\nimport * as DebugSurface from '@dxos/plugin-debug/DebugSurface';\nimport * as ScriptOperation from '@dxos/plugin-script/ScriptOperation';\nimport * as SpaceOperation from '@dxos/plugin-space/SpaceOperation';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { Devtools } from '#types';\n\nexport type ActiveSpacePanelProps = {\n role?: string;\n /** Stable module-level article component; the surface passes it through its `props` mapper. */\n Panel: ComponentType<{ role?: string; space: Space }>;\n};\n\n/**\n * Most devtools panels take the active space and render nothing without one. A mapper cannot read\n * the active space (it is a hook) nor decline to render, so they share this wrapper.\n */\nexport const ActiveSpacePanel = ({ role, Panel }: ActiveSpacePanelProps) => {\n const space = ToolkitHooks.useActiveSpace();\n\n return space ? <Panel role={role} space={space} /> : null;\n};\n\nexport type NavigableSurfaceProps = {\n role?: string;\n onNavigate: DebugSurface.PageData['onNavigate'];\n};\n\n/** The space list; selecting a space shows its page in the debug panel. */\nexport const SpaceListSurface = ({ role, onNavigate }: NavigableSurfaceProps) => {\n const handleSelect = useCallback(() => onNavigate(Devtools.getNodePath(Devtools.Echo.Space)), [onNavigate]);\n\n return <SpaceListArticle role={role} onSelect={handleSelect} />;\n};\n\n/** The active space; selecting a feed or pipeline shows the feeds page in the debug panel. */\nexport const SpaceInfoSurface = ({ role, onNavigate }: NavigableSurfaceProps) => {\n const space = ToolkitHooks.useActiveSpace();\n const handleSelect = useCallback(() => onNavigate(Devtools.getNodePath(Devtools.Echo.Feeds)), [onNavigate]);\n if (!space) {\n return null;\n }\n\n return <SpaceInfoArticle role={role} space={space} onSelectFeed={handleSelect} onSelectPipeline={handleSelect} />;\n};\n\nexport const EdgeTracesSurface = ({ role }: { role?: string }) => {\n const space = ToolkitHooks.useActiveSpace();\n const feed = useResolveRef(space?.properties.invocationTraceFeed);\n if (!space) {\n return null;\n }\n\n const feedDXN = feed ? Feed.getFeedUri(feed) : undefined;\n\n return <InvocationTraceContainer role={role} db={space.db} feedDXN={feedDXN} detailAxis='block' />;\n};\n\nexport const EdgeTestingSurface = ({ role }: { role?: string }) => {\n const { invokePromise } = Hooks.useOperationInvoker();\n const onScriptPluginOpen = useCallback(\n async (space: Space) => {\n await space.waitUntilReady();\n const createResult = await invokePromise(ScriptOperation.CreateScript, { db: space.db });\n if (createResult.data?.object) {\n await invokePromise(\n SpaceOperation.AddObject,\n { object: createResult.data.object },\n { spaceId: space.db.spaceId },\n );\n }\n log.info('script created', { result: createResult });\n if (createResult.data?.object) {\n await invokePromise(LayoutOperation.Open, {\n subject: [GraphPath.getObjectPathFromObject(createResult.data.object)],\n });\n }\n },\n [invokePromise],\n );\n\n return <TestingArticle role={role} onScriptPluginOpen={onScriptPluginOpen} />;\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as Capabilities from '@dxos/app-framework/Capabilities';\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as Surface from '@dxos/app-framework/Surface';\nimport type * as AppGraph from '@dxos/app-graph/AppGraph';\nimport * as AppSurface from '@dxos/app-toolkit/AppSurface';\nimport {\n AutomergeArticle,\n ConfigArticle,\n CredentialsArticle,\n DatabaseCard,\n DeviceListArticle,\n DiagnosticsArticle,\n EdgeDashboardArticle,\n FeedsArticle,\n IdentityArticle,\n KeyringArticle,\n LoggingArticle,\n MembersArticle,\n MemoryCard,\n MetadataArticle,\n NetworkArticle,\n NetworkCard,\n ObjectsArticle,\n PerformanceCard,\n QueriesArticle,\n QueuesArticle,\n ReplicatorCard,\n ReplicatorMessagesCard,\n SchemaArticle,\n SignalArticle,\n SqliteArticle,\n StorageArticle,\n SwarmArticle,\n TimeSeriesCard,\n WorkflowArticle,\n} from '@dxos/devtools';\nimport * as DebugSurface from '@dxos/plugin-debug/DebugSurface';\n\nimport {\n CliArticle,\n DebugGraph,\n DevtoolsOverviewContainer,\n RegistryArticle,\n ToolsExplorerContainer,\n} from '#containers';\nimport { Devtools } from '#types';\n\nimport {\n EdgeCardSurface,\n IndexerCardSurface,\n QueriesCardSurface,\n SurfaceProfilerCardSurface,\n SwarmTraceCardSurface,\n SyncCardSurface,\n devtoolsCard,\n} from './DevtoolsCards.tsx';\nimport {\n ActiveSpacePanel,\n EdgeTestingSurface,\n EdgeTracesSurface,\n SpaceInfoSurface,\n SpaceListSurface,\n} from './DevtoolsSurfaces.tsx';\n\ntype GraphDebug = {\n graph: AppGraph.Graph;\n root: string;\n};\n\nconst isGraphDebug = (data: unknown): data is GraphDebug => {\n if (typeof data !== 'object' || data === null || !('graph' in data) || !('root' in data)) {\n return false;\n }\n\n const { graph, root } = data;\n return (\n typeof graph === 'object' &&\n graph !== null &&\n 'json' in graph &&\n typeof graph.json === 'function' &&\n typeof root === 'string'\n );\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n return Capability.contribute(Capabilities.ReactSurface, [\n Surface.create({\n id: 'appGraph',\n filter: AppSurface.subject(DebugSurface.Page, isGraphDebug),\n component: DebugGraph,\n props: ({ role, data: { subject } }) => ({ role, graph: subject.graph, root: subject.root }),\n }),\n Surface.create({\n id: 'toolsExplorer',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.ToolsExplorer),\n component: ToolsExplorerContainer,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'cli',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Cli),\n component: CliArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'registry',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Registry),\n component: RegistryArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'devtoolsOverview',\n filter: Surface.makeFilter(AppSurface.deckCompanion('devtoolsOverview')),\n component: DevtoolsOverviewContainer,\n }),\n\n //\n // Stats cards, in stack order.\n //\n\n Surface.create({\n id: 'card.memory',\n filter: devtoolsCard,\n position: 0,\n component: MemoryCard,\n props: ({ data: { stats } }) => ({ memory: stats.memory }),\n }),\n Surface.create({\n id: 'card.network',\n filter: devtoolsCard,\n position: 1,\n component: NetworkCard,\n props: ({ data: { stats } }) => ({ network: stats.network }),\n }),\n Surface.create({\n id: 'card.edge',\n filter: devtoolsCard,\n position: 2,\n component: EdgeCardSurface,\n props: ({ data: { stats } }) => ({ stats }),\n }),\n Surface.create({\n id: 'card.performance',\n filter: devtoolsCard,\n position: 3,\n component: PerformanceCard,\n props: ({ data: { stats } }) => ({ entries: stats.performanceEntries }),\n }),\n Surface.create({\n id: 'card.swarmTrace',\n filter: devtoolsCard,\n position: 4,\n component: SwarmTraceCardSurface,\n }),\n Surface.create({\n id: 'card.surfaceProfiler',\n filter: devtoolsCard,\n position: 5,\n component: SurfaceProfilerCardSurface,\n props: ({ data: { surfaceProfilerStats, onClearSurfaceProfiler } }) => ({\n surfaceProfilerStats,\n onClearSurfaceProfiler,\n }),\n }),\n Surface.create({\n id: 'card.database',\n filter: devtoolsCard,\n position: 6,\n component: DatabaseCard,\n props: ({ data: { stats } }) => ({ database: stats.database }),\n }),\n Surface.create({\n id: 'card.replicator',\n filter: devtoolsCard,\n position: 7,\n component: ReplicatorCard,\n props: ({ data: { stats } }) => ({ database: stats.database }),\n }),\n Surface.create({\n id: 'card.replicatorMessages',\n filter: devtoolsCard,\n position: 8,\n component: ReplicatorMessagesCard,\n props: ({ data: { stats } }) => ({ database: stats.database }),\n }),\n Surface.create({\n id: 'card.queries',\n filter: devtoolsCard,\n position: 9,\n component: QueriesCardSurface,\n }),\n Surface.create({\n id: 'card.sync',\n filter: devtoolsCard,\n position: 11,\n component: SyncCardSurface,\n }),\n Surface.create({\n id: 'card.indexer',\n filter: devtoolsCard,\n position: 12,\n component: IndexerCardSurface,\n }),\n Surface.create({\n id: 'card.timeSeries',\n filter: devtoolsCard,\n position: 13,\n component: TimeSeriesCard,\n }),\n\n //\n // Devtools\n //\n\n Surface.create({\n id: 'client.config',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Client.Config),\n component: ConfigArticle,\n props: ({ role }) => ({ role, vaultSelector: false }),\n }),\n Surface.create({\n id: 'client.storage',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Client.Storage),\n component: StorageArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'client.sqlite',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Client.Sqlite),\n component: SqliteArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'client.logs',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Client.Logs),\n component: LoggingArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'client.diagnostics',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Client.Diagnostics),\n component: DiagnosticsArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'halo.identity',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Halo.Identity),\n component: IdentityArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'halo.devices',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Halo.Devices),\n component: DeviceListArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'halo.keyring',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Halo.Keyring),\n component: KeyringArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'halo.credentials',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Halo.Credentials),\n component: ActiveSpacePanel,\n props: ({ role }) => ({ role, Panel: CredentialsArticle }),\n }),\n Surface.create({\n id: 'echo.spaces',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Spaces),\n component: SpaceListSurface,\n props: ({ role, data: { onNavigate } }) => ({ role, onNavigate }),\n }),\n Surface.create({\n id: 'echo.space',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Space),\n component: SpaceInfoSurface,\n props: ({ role, data: { onNavigate } }) => ({ role, onNavigate }),\n }),\n Surface.create({\n id: 'echo.feeds',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Feeds),\n component: ActiveSpacePanel,\n props: ({ role }) => ({ role, Panel: FeedsArticle }),\n }),\n Surface.create({\n id: 'echo.objects',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Objects),\n component: ActiveSpacePanel,\n props: ({ role }) => ({ role, Panel: ObjectsArticle }),\n }),\n Surface.create({\n id: 'echo.queries',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Queries),\n component: QueriesArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'echo.schema',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Schema),\n component: ActiveSpacePanel,\n props: ({ role }) => ({ role, Panel: SchemaArticle }),\n }),\n Surface.create({\n id: 'echo.automerge',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Automerge),\n component: ActiveSpacePanel,\n props: ({ role }) => ({ role, Panel: AutomergeArticle }),\n }),\n Surface.create({\n id: 'echo.queues',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Queues),\n component: QueuesArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'echo.members',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Members),\n component: ActiveSpacePanel,\n props: ({ role }) => ({ role, Panel: MembersArticle }),\n }),\n Surface.create({\n id: 'echo.metadata',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Metadata),\n component: MetadataArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'mesh.signal',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Mesh.Signal),\n component: SignalArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'mesh.swarm',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Mesh.Swarm),\n component: SwarmArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'mesh.network',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Mesh.Network),\n component: ActiveSpacePanel,\n props: ({ role }) => ({ role, Panel: NetworkArticle }),\n }),\n Surface.create({\n id: 'edge.dashboard',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Edge.Dashboard),\n component: EdgeDashboardArticle,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'edge.workflows',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Edge.Workflows),\n component: ActiveSpacePanel,\n props: ({ role }) => ({ role, Panel: WorkflowArticle }),\n }),\n Surface.create({\n id: 'edge.traces',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Edge.Traces),\n component: EdgeTracesSurface,\n props: ({ role }) => ({ role }),\n }),\n Surface.create({\n id: 'edge.testing',\n filter: AppSurface.literal(DebugSurface.Page, Devtools.Edge.Testing),\n component: EdgeTestingSurface,\n props: ({ role }) => ({ role }),\n }),\n ]);\n }),\n);\n"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { lazy } from "react";
2
2
  //#region src/containers/index.ts
3
- var CliPanel = lazy(() => import("./chunk-CliPanel.mjs"));
3
+ var CliArticle = lazy(() => import("./chunk-CliArticle.mjs"));
4
4
  var DebugGraph = lazy(() => import("./chunk-DebugGraph.mjs"));
5
5
  var DevtoolsOverviewContainer = lazy(() => import("./chunk-DevtoolsOverviewContainer.mjs"));
6
6
  var GithubPanel = lazy(() => import("./chunk-GithubPanel.mjs"));
7
- var RegistryPanel = lazy(() => import("./chunk-RegistryPanel.mjs"));
7
+ var RegistryArticle = lazy(() => import("./chunk-RegistryArticle.mjs"));
8
8
  var ToolsExplorerContainer = lazy(() => import("./chunk-ToolsExplorerContainer.mjs"));
9
9
  //#endregion
10
- export { CliPanel, DebugGraph, DevtoolsOverviewContainer, GithubPanel, RegistryPanel, ToolsExplorerContainer };
10
+ export { CliArticle, DebugGraph, DevtoolsOverviewContainer, GithubPanel, RegistryArticle, ToolsExplorerContainer };
11
11
 
12
12
  //# sourceMappingURL=containers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"containers.mjs","names":[],"sources":["../../src/containers/index.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport const CliPanel: ComponentType<any> = lazy(() => import('./CliPanel'));\nexport const DebugGraph: ComponentType<any> = lazy(() => import('./DebugGraph'));\nexport const DevtoolsOverviewContainer: ComponentType<any> = lazy(() => import('./DevtoolsOverviewContainer'));\nexport const GithubPanel: ComponentType<any> = lazy(() => import('./GithubPanel'));\nexport const RegistryPanel: ComponentType<any> = lazy(() => import('./RegistryPanel'));\nexport const ToolsExplorerContainer: ComponentType<any> = lazy(() => import('./ToolsExplorerContainer'));\n"],"mappings":";;AAMA,IAAa,WAA+B,WAAW,OAAO,uBAAa;AAC3E,IAAa,aAAiC,WAAW,OAAO,yBAAe;AAC/E,IAAa,4BAAgD,WAAW,OAAO,wCAA8B;AAC7G,IAAa,cAAkC,WAAW,OAAO,0BAAgB;AACjF,IAAa,gBAAoC,WAAW,OAAO,4BAAkB;AACrF,IAAa,yBAA6C,WAAW,OAAO,qCAA2B"}
1
+ {"version":3,"file":"containers.mjs","names":[],"sources":["../../src/containers/index.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport const CliArticle: ComponentType<any> = lazy(() => import('./CliArticle/index.ts'));\nexport const DebugGraph: ComponentType<any> = lazy(() => import('./DebugGraph/index.ts'));\nexport const DevtoolsOverviewContainer: ComponentType<any> = lazy(() => import('./DevtoolsOverviewContainer/index.ts'));\nexport const GithubPanel: ComponentType<any> = lazy(() => import('./GithubPanel/index.ts'));\nexport const RegistryArticle: ComponentType<any> = lazy(() => import('./RegistryArticle/index.ts'));\nexport const ToolsExplorerContainer: ComponentType<any> = lazy(() => import('./ToolsExplorerContainer/index.ts'));\n"],"mappings":";;AAMA,IAAa,aAAiC,WAAW,OAAO,yBAAwB;AACxF,IAAa,aAAiC,WAAW,OAAO,yBAAwB;AACxF,IAAa,4BAAgD,WAAW,OAAO,wCAAuC;AACtH,IAAa,cAAkC,WAAW,OAAO,0BAAyB;AAC1F,IAAa,kBAAsC,WAAW,OAAO,8BAA6B;AAClG,IAAa,yBAA6C,WAAW,OAAO,qCAAoC"}
@@ -1,4 +1,3 @@
1
1
  import { t as DevtoolsPlugin_exports } from "./DevtoolsPlugin.mjs";
2
- export * from "#meta";
3
2
  export * from "#types";
4
3
  export { DevtoolsPlugin_exports as DevtoolsPlugin };
package/dist/lib/meta.mjs CHANGED
@@ -7,8 +7,8 @@ var dx_config_default = Config2.make({ plugin: {
7
7
  name: "Devtools",
8
8
  author: "DXOS",
9
9
  description: trim`
10
- DevtoolsPlugin is the developer inspector for DXOS Composer. It adds a structured Devtools node
11
- to the navigation graph — grouped into Client, HALO, ECHO, Mesh, and EDGE sub-sections —
10
+ DevtoolsPlugin is the developer inspector for DXOS Composer. It adds a structured DevTools tree
11
+ to the floating debug panel — grouped into Client, HALO, ECHO, Mesh, and EDGE sub-sections —
12
12
  exposing panel views for config, storage, logs, diagnostics, identity, devices, feeds,
13
13
  objects, schemas, automerge internals, network topology, EDGE workflows, and invocation
14
14
  traces, all driven by the @dxos/devtools component library.
@@ -1 +1 @@
1
- {"version":3,"file":"meta.mjs","names":[],"sources":["../../dx.config.ts","../../src/meta.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Config2 } from '@dxos/app-framework/config';\nimport { trim } from '@dxos/util';\n\nexport default Config2.make({\n plugin: {\n key: 'org.dxos.plugin.devtools',\n name: 'Devtools',\n author: 'DXOS',\n description: trim`\n DevtoolsPlugin is the developer inspector for DXOS Composer. It adds a structured Devtools node\n to the navigation graph — grouped into Client, HALO, ECHO, Mesh, and EDGE sub-sections —\n exposing panel views for config, storage, logs, diagnostics, identity, devices, feeds,\n objects, schemas, automerge internals, network topology, EDGE workflows, and invocation\n traces, all driven by the @dxos/devtools component library.\n\n Additional utilities include an app-graph inspector, a ToolsExplorer connected to the DXOS MCP\n introspect service, and a globalThis helper for manual storage-version testing.\n `,\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-devtools',\n icon: { key: 'ph--toolbox--regular' },\n spec: 'PLUGIN.mdl',\n tags: ['labs'],\n },\n});\n","//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Plugin from '@dxos/app-framework/Plugin';\n\nimport config from '../dx.config';\n\nexport const meta = Plugin.getMetaFromConfig(config);\n"],"mappings":";;;;AAOA,IAAA,oBAAe,QAAQ,KAAK,EAC1B,QAAQ;CACN,KAAK;CACL,MAAM;CACN,QAAQ;CACR,aAAa,IAAI;;;;;;;;;;CAUjB,QAAQ;CACR,MAAM,EAAE,KAAK,uBAAuB;CACpC,MAAM;CACN,MAAM,CAAC,MAAM;AACf,EACF,CAAC;;;ACnBD,IAAa,OAAO,OAAO,kBAAkB,iBAAM"}
1
+ {"version":3,"file":"meta.mjs","names":[],"sources":["../../dx.config.ts","../../src/meta.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Config2 } from '@dxos/app-framework/config';\nimport { trim } from '@dxos/util';\n\nexport default Config2.make({\n plugin: {\n key: 'org.dxos.plugin.devtools',\n name: 'Devtools',\n author: 'DXOS',\n description: trim`\n DevtoolsPlugin is the developer inspector for DXOS Composer. It adds a structured DevTools tree\n to the floating debug panel — grouped into Client, HALO, ECHO, Mesh, and EDGE sub-sections —\n exposing panel views for config, storage, logs, diagnostics, identity, devices, feeds,\n objects, schemas, automerge internals, network topology, EDGE workflows, and invocation\n traces, all driven by the @dxos/devtools component library.\n\n Additional utilities include an app-graph inspector, a ToolsExplorer connected to the DXOS MCP\n introspect service, and a globalThis helper for manual storage-version testing.\n `,\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-devtools',\n icon: { key: 'ph--toolbox--regular' },\n spec: 'PLUGIN.mdl',\n tags: ['labs'],\n },\n});\n","//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Plugin from '@dxos/app-framework/Plugin';\n\nimport config from '../dx.config.ts';\n\nexport const meta = Plugin.getMetaFromConfig(config);\n"],"mappings":";;;;AAOA,IAAA,oBAAe,QAAQ,KAAK,EAC1B,QAAQ;CACN,KAAK;CACL,MAAM;CACN,QAAQ;CACR,aAAa,IAAI;;;;;;;;;;CAUjB,QAAQ;CACR,MAAM,EAAE,KAAK,uBAAuB;CACpC,MAAM;CACN,MAAM,CAAC,MAAM;AACf,EACF,CAAC;;;ACnBD,IAAa,OAAO,OAAO,kBAAkB,iBAAM"}
@@ -1,55 +1,61 @@
1
1
  import { meta } from "#meta";
2
2
  import { translations as translations$1 } from "@dxos/react-ui-introspect/translations";
3
+ import { translations as translations$2 } from "@dxos/react-ui-table/translations";
3
4
  //#region src/translations.ts
4
- var translations = [...translations$1, { "en-US": { [meta.profile.key]: {
5
- "plugin.name": "Devtools",
6
- "open-devtools.label": "Open DevTools",
7
- "devtools.label": "DevTools",
8
- "devtools-overview.label": "Stats",
9
- "debug-app-graph.label": "App Graph",
10
- "debug-tools-explorer.label": "SDK Explorer",
11
- "cli.label": "CLI",
12
- "reset-data.label": "Reset data (ERASES ALL DATA)",
13
- "client.label": "Client",
14
- "config.label": "Config",
15
- "storage.label": "Storage",
16
- "sqlite.label": "SQLite",
17
- "logging.label": "Logging",
18
- "diagnostics.label": "Diagnostics",
19
- "tracing.label": "Tracing",
20
- "halo.label": "HALO",
21
- "identity.label": "Identity",
22
- "devices.label": "Devices",
23
- "keyring.label": "Keyring",
24
- "credentials.label": "Credentials",
25
- "echo.label": "ECHO",
26
- "spaces.label": "Spaces",
27
- "space.label": "Space",
28
- "feeds.label": "Feeds",
29
- "objects.label": "Objects",
30
- "schema.label": "Schema",
31
- "registry.label": "Registry",
32
- "automerge.label": "Automerge",
33
- "queues.label": "Queues",
34
- "members.label": "Members",
35
- "metadata.label": "Metadata",
36
- "mesh.label": "MESH",
37
- "signal.label": "Signal",
38
- "swarm.label": "Swarm",
39
- "network.label": "Network",
40
- "agent.label": "Agent",
41
- "dashboard.label": "Dashboard",
42
- "search.label": "Search",
43
- "edge.label": "EDGE",
44
- "workflows.label": "Workflows",
45
- "traces.label": "Traces",
46
- "testing.label": "Testing",
47
- "github-loading.message": "Loading…",
48
- "github-unavailable.message": "GitHub feed unavailable.",
49
- "recent-prs.label_one": "{{count}} recent PR",
50
- "recent-prs.label_other": "{{count}} recent PRs",
51
- "view-on-github.button": "View on GitHub"
52
- } } }];
5
+ var translations = [
6
+ ...translations$1,
7
+ ...translations$2,
8
+ { "en-US": { [meta.profile.key]: {
9
+ "plugin.name": "Devtools",
10
+ "open-devtools.label": "Open DevTools",
11
+ "devtools.label": "DevTools",
12
+ "devtools-overview.label": "Stats",
13
+ "debug-app-graph.label": "App Graph",
14
+ "debug-tools-explorer.label": "SDK Explorer",
15
+ "cli.label": "CLI",
16
+ "reset-data.label": "Reset data (ERASES ALL DATA)",
17
+ "client.label": "Client",
18
+ "config.label": "Config",
19
+ "storage.label": "Storage",
20
+ "sqlite.label": "SQLite",
21
+ "logging.label": "Logs",
22
+ "diagnostics.label": "Diagnostics",
23
+ "tracing.label": "Tracing",
24
+ "halo.label": "HALO",
25
+ "identity.label": "Identity",
26
+ "devices.label": "Devices",
27
+ "keyring.label": "Keyring",
28
+ "credentials.label": "Credentials",
29
+ "echo.label": "ECHO",
30
+ "spaces.label": "Spaces",
31
+ "space.label": "Space",
32
+ "feeds.label": "Feeds",
33
+ "objects.label": "Objects",
34
+ "queries.label": "Queries",
35
+ "schema.label": "Schema",
36
+ "registry.label": "Registry",
37
+ "automerge.label": "Automerge",
38
+ "queues.label": "Queues",
39
+ "members.label": "Members",
40
+ "metadata.label": "Metadata",
41
+ "mesh.label": "MESH",
42
+ "signal.label": "Signal",
43
+ "swarm.label": "Swarm",
44
+ "network.label": "Network",
45
+ "agent.label": "Agent",
46
+ "dashboard.label": "Dashboard",
47
+ "search.label": "Search",
48
+ "edge.label": "EDGE",
49
+ "workflows.label": "Workflows",
50
+ "traces.label": "Traces",
51
+ "testing.label": "Testing",
52
+ "github-loading.message": "Loading…",
53
+ "github-unavailable.message": "GitHub feed unavailable.",
54
+ "recent-prs.label_one": "{{count}} recent PR",
55
+ "recent-prs.label_other": "{{count}} recent PRs",
56
+ "view-on-github.button": "View on GitHub"
57
+ } } }
58
+ ];
53
59
  //#endregion
54
60
  export { translations };
55
61
 
@@ -1 +1 @@
1
- {"version":3,"file":"translations.mjs","names":[],"sources":["../../src/translations.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\nimport { translations as introspectTranslations } from '@dxos/react-ui-introspect/translations';\n\nimport { meta } from '#meta';\n\nexport const translations = [\n ...introspectTranslations,\n {\n 'en-US': {\n [meta.profile.key]: {\n 'plugin.name': 'Devtools',\n 'open-devtools.label': 'Open DevTools',\n 'devtools.label': 'DevTools',\n 'devtools-overview.label': 'Stats',\n 'debug-app-graph.label': 'App Graph',\n 'debug-tools-explorer.label': 'SDK Explorer',\n 'cli.label': 'CLI',\n\n 'reset-data.label': 'Reset data (ERASES ALL DATA)',\n 'client.label': 'Client',\n 'config.label': 'Config',\n 'storage.label': 'Storage',\n 'sqlite.label': 'SQLite',\n 'logging.label': 'Logging',\n 'diagnostics.label': 'Diagnostics',\n 'tracing.label': 'Tracing',\n 'halo.label': 'HALO',\n 'identity.label': 'Identity',\n 'devices.label': 'Devices',\n 'keyring.label': 'Keyring',\n 'credentials.label': 'Credentials',\n 'echo.label': 'ECHO',\n 'spaces.label': 'Spaces',\n 'space.label': 'Space',\n 'feeds.label': 'Feeds',\n 'objects.label': 'Objects',\n 'schema.label': 'Schema',\n 'registry.label': 'Registry',\n 'automerge.label': 'Automerge',\n 'queues.label': 'Queues',\n 'members.label': 'Members',\n 'metadata.label': 'Metadata',\n 'mesh.label': 'MESH',\n 'signal.label': 'Signal',\n 'swarm.label': 'Swarm',\n 'network.label': 'Network',\n 'agent.label': 'Agent',\n 'dashboard.label': 'Dashboard',\n 'search.label': 'Search',\n 'edge.label': 'EDGE',\n 'workflows.label': 'Workflows',\n 'traces.label': 'Traces',\n 'testing.label': 'Testing',\n // GitHub (deck-companion--github surface).\n 'github-loading.message': 'Loading…',\n 'github-unavailable.message': 'GitHub feed unavailable.',\n 'recent-prs.label_one': '{{count}} recent PR',\n 'recent-prs.label_other': '{{count}} recent PRs',\n 'view-on-github.button': 'View on GitHub',\n },\n },\n },\n] as const satisfies Resource[];\n"],"mappings":";;;AASA,IAAa,eAAe,CAC1B,GAAG,gBACH,EACE,SAAS,GACN,KAAK,QAAQ,MAAM;CAClB,eAAe;CACf,uBAAuB;CACvB,kBAAkB;CAClB,2BAA2B;CAC3B,yBAAyB;CACzB,8BAA8B;CAC9B,aAAa;CAEb,oBAAoB;CACpB,gBAAgB;CAChB,gBAAgB;CAChB,iBAAiB;CACjB,gBAAgB;CAChB,iBAAiB;CACjB,qBAAqB;CACrB,iBAAiB;CACjB,cAAc;CACd,kBAAkB;CAClB,iBAAiB;CACjB,iBAAiB;CACjB,qBAAqB;CACrB,cAAc;CACd,gBAAgB;CAChB,eAAe;CACf,eAAe;CACf,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CAClB,mBAAmB;CACnB,gBAAgB;CAChB,iBAAiB;CACjB,kBAAkB;CAClB,cAAc;CACd,gBAAgB;CAChB,eAAe;CACf,iBAAiB;CACjB,eAAe;CACf,mBAAmB;CACnB,gBAAgB;CAChB,cAAc;CACd,mBAAmB;CACnB,gBAAgB;CAChB,iBAAiB;CAEjB,0BAA0B;CAC1B,8BAA8B;CAC9B,wBAAwB;CACxB,0BAA0B;CAC1B,yBAAyB;AAC3B,EACF,EACF,CACF"}
1
+ {"version":3,"file":"translations.mjs","names":[],"sources":["../../src/translations.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport { translations as introspectTranslations } from '@dxos/react-ui-introspect/translations';\nimport { translations as tableTranslations } from '@dxos/react-ui-table/translations';\nimport type * as Theme from '@dxos/react-ui/Theme';\n\nimport { meta } from '#meta';\n\nexport const translations = [\n ...introspectTranslations,\n // The panels' tables (credentials, feeds, …) read their column menus from react-ui-table.\n ...tableTranslations,\n {\n 'en-US': {\n [meta.profile.key]: {\n 'plugin.name': 'Devtools',\n 'open-devtools.label': 'Open DevTools',\n 'devtools.label': 'DevTools',\n 'devtools-overview.label': 'Stats',\n 'debug-app-graph.label': 'App Graph',\n 'debug-tools-explorer.label': 'SDK Explorer',\n 'cli.label': 'CLI',\n\n 'reset-data.label': 'Reset data (ERASES ALL DATA)',\n 'client.label': 'Client',\n 'config.label': 'Config',\n 'storage.label': 'Storage',\n 'sqlite.label': 'SQLite',\n 'logging.label': 'Logs',\n 'diagnostics.label': 'Diagnostics',\n 'tracing.label': 'Tracing',\n 'halo.label': 'HALO',\n 'identity.label': 'Identity',\n 'devices.label': 'Devices',\n 'keyring.label': 'Keyring',\n 'credentials.label': 'Credentials',\n 'echo.label': 'ECHO',\n 'spaces.label': 'Spaces',\n 'space.label': 'Space',\n 'feeds.label': 'Feeds',\n 'objects.label': 'Objects',\n 'queries.label': 'Queries',\n 'schema.label': 'Schema',\n 'registry.label': 'Registry',\n 'automerge.label': 'Automerge',\n 'queues.label': 'Queues',\n 'members.label': 'Members',\n 'metadata.label': 'Metadata',\n 'mesh.label': 'MESH',\n 'signal.label': 'Signal',\n 'swarm.label': 'Swarm',\n 'network.label': 'Network',\n 'agent.label': 'Agent',\n 'dashboard.label': 'Dashboard',\n 'search.label': 'Search',\n 'edge.label': 'EDGE',\n 'workflows.label': 'Workflows',\n 'traces.label': 'Traces',\n 'testing.label': 'Testing',\n // GitHub (deck-companion--github surface).\n 'github-loading.message': 'Loading…',\n 'github-unavailable.message': 'GitHub feed unavailable.',\n 'recent-prs.label_one': '{{count}} recent PR',\n 'recent-prs.label_other': '{{count}} recent PRs',\n 'view-on-github.button': 'View on GitHub',\n },\n },\n },\n] as const satisfies Theme.Resource[];\n"],"mappings":";;;;AAUA,IAAa,eAAe;CAC1B,GAAG;CAEH,GAAG;CACH,EACE,SAAS,GACN,KAAK,QAAQ,MAAM;EAClB,eAAe;EACf,uBAAuB;EACvB,kBAAkB;EAClB,2BAA2B;EAC3B,yBAAyB;EACzB,8BAA8B;EAC9B,aAAa;EAEb,oBAAoB;EACpB,gBAAgB;EAChB,gBAAgB;EAChB,iBAAiB;EACjB,gBAAgB;EAChB,iBAAiB;EACjB,qBAAqB;EACrB,iBAAiB;EACjB,cAAc;EACd,kBAAkB;EAClB,iBAAiB;EACjB,iBAAiB;EACjB,qBAAqB;EACrB,cAAc;EACd,gBAAgB;EAChB,eAAe;EACf,eAAe;EACf,iBAAiB;EACjB,iBAAiB;EACjB,gBAAgB;EAChB,kBAAkB;EAClB,mBAAmB;EACnB,gBAAgB;EAChB,iBAAiB;EACjB,kBAAkB;EAClB,cAAc;EACd,gBAAgB;EAChB,eAAe;EACf,iBAAiB;EACjB,eAAe;EACf,mBAAmB;EACnB,gBAAgB;EAChB,cAAc;EACd,mBAAmB;EACnB,gBAAgB;EAChB,iBAAiB;EAEjB,0BAA0B;EAC1B,8BAA8B;EAC9B,wBAAwB;EACxB,0BAA0B;EAC1B,yBAAyB;CAC3B,EACF,EACF;AACF"}
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import * as Surface from '@dxos/app-framework/Surface';
3
+ import { type Stats, type SurfaceProfilerStats } from '@dxos/devtools';
4
+ /** Whether a mounted surface is part of the debug tooling rather than the app being inspected. */
5
+ export declare const isDebugSurface: ({ id, role, ancestors }: Surface.Mounted) => boolean;
6
+ /** Data the stats stack passes to every `AppSurface.DevtoolsOverview` card. */
7
+ export type DevtoolsCardData = {
8
+ stats: Stats;
9
+ surfaceProfilerStats: SurfaceProfilerStats[];
10
+ onClearSurfaceProfiler?: () => void;
11
+ };
12
+ export declare const isDevtoolsCardData: (data: unknown) => data is DevtoolsCardData;
13
+ /**
14
+ * The card role narrowed to the stack's data. `Surface.makeFilter` types its data by the token, so
15
+ * the binding is built directly, as `AppSurface.subject` does.
16
+ */
17
+ export declare const devtoolsCard: Surface.Filter<DevtoolsCardData>;
18
+ export type EdgeCardSurfaceProps = Pick<DevtoolsCardData, 'stats'>;
19
+ export declare const EdgeCardSurface: ({ stats }: EdgeCardSurfaceProps) => React.JSX.Element;
20
+ export type SurfaceProfilerCardSurfaceProps = Pick<DevtoolsCardData, 'surfaceProfilerStats' | 'onClearSurfaceProfiler'>;
21
+ /** The profiler card with the surface highlight overlay's flag, which lives on `window`, mirrored in state. */
22
+ export declare const SurfaceProfilerCardSurface: ({ surfaceProfilerStats, onClearSurfaceProfiler, }: SurfaceProfilerCardSurfaceProps) => React.JSX.Element;
23
+ export declare const SwarmTraceCardSurface: () => React.JSX.Element;
24
+ export declare const SyncCardSurface: () => React.JSX.Element;
25
+ export declare const IndexerCardSurface: () => React.JSX.Element;
26
+ /** The slowest queries; the header button shows every query on the devtools Queries page. */
27
+ export declare const QueriesCardSurface: () => React.JSX.Element;
28
+ //# sourceMappingURL=DevtoolsCards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevtoolsCards.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/DevtoolsCards.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAG9D,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAIL,KAAK,KAAK,EAEV,KAAK,oBAAoB,EAQ1B,MAAM,gBAAgB,CAAC;AASxB,kGAAkG;AAClG,eAAO,MAAM,cAAc,4BAA6B,OAAO,CAAC,OAAO,KAAG,OAGjB,CAAC;AAE1D,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,oBAAoB,EAAE,oBAAoB,EAAE,CAAC;IAC7C,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,kBAAkB,SAAU,OAAO,KAAG,IAAI,IAAI,gBACqC,CAAC;AAEjG;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAEzD,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAEnE,eAAO,MAAM,eAAe,cAAe,oBAAoB,sBAc9D,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,wBAAwB,CAAC,CAAC;AAExH,+GAA+G;AAC/G,eAAO,MAAM,0BAA0B,sDAGpC,+BAA+B,sBA+BjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,yBAGjC,CAAC;AAEF,eAAO,MAAM,eAAe,yBAG3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,yBAG9B,CAAC;AAEF,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,yBAQ9B,CAAC"}
@@ -1,8 +1,11 @@
1
1
  import React, { type ComponentType } from 'react';
2
+ import * as DebugSurface from '@dxos/plugin-debug/DebugSurface';
2
3
  import { type Space } from '@dxos/react-client/echo';
3
4
  export type ActiveSpacePanelProps = {
4
- /** Stable module-level panel component; the surface passes it through its `props` mapper. */
5
+ role?: string;
6
+ /** Stable module-level article component; the surface passes it through its `props` mapper. */
5
7
  Panel: ComponentType<{
8
+ role?: string;
6
9
  space: Space;
7
10
  }>;
8
11
  };
@@ -10,9 +13,19 @@ export type ActiveSpacePanelProps = {
10
13
  * Most devtools panels take the active space and render nothing without one. A mapper cannot read
11
14
  * the active space (it is a hook) nor decline to render, so they share this wrapper.
12
15
  */
13
- export declare const ActiveSpacePanel: ({ Panel }: ActiveSpacePanelProps) => React.JSX.Element | null;
14
- export declare const SpaceListSurface: () => React.JSX.Element;
15
- export declare const SpaceInfoSurface: () => React.JSX.Element | null;
16
- export declare const EdgeTracesSurface: () => React.JSX.Element | null;
17
- export declare const EdgeTestingSurface: () => React.JSX.Element;
16
+ export declare const ActiveSpacePanel: ({ role, Panel }: ActiveSpacePanelProps) => React.JSX.Element | null;
17
+ export type NavigableSurfaceProps = {
18
+ role?: string;
19
+ onNavigate: DebugSurface.PageData['onNavigate'];
20
+ };
21
+ /** The space list; selecting a space shows its page in the debug panel. */
22
+ export declare const SpaceListSurface: ({ role, onNavigate }: NavigableSurfaceProps) => React.JSX.Element;
23
+ /** The active space; selecting a feed or pipeline shows the feeds page in the debug panel. */
24
+ export declare const SpaceInfoSurface: ({ role, onNavigate }: NavigableSurfaceProps) => React.JSX.Element | null;
25
+ export declare const EdgeTracesSurface: ({ role }: {
26
+ role?: string;
27
+ }) => React.JSX.Element | null;
28
+ export declare const EdgeTestingSurface: ({ role }: {
29
+ role?: string;
30
+ }) => React.JSX.Element;
18
31
  //# sourceMappingURL=DevtoolsSurfaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DevtoolsSurfaces.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/DevtoolsSurfaces.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,EAAE,KAAK,aAAa,EAAe,MAAM,OAAO,CAAC;AAW/D,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAIrD,MAAM,MAAM,qBAAqB,GAAG;IAClC,6FAA6F;IAC7F,KAAK,EAAE,aAAa,CAAC;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;CACxC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,cAAe,qBAAqB,6BAIhE,CAAC;AAEF,eAAO,MAAM,gBAAgB,yBAQ5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,gCAY5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,gCAU7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,yBAgC9B,CAAC"}
1
+ {"version":3,"file":"DevtoolsSurfaces.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/DevtoolsSurfaces.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,EAAE,KAAK,aAAa,EAAe,MAAM,OAAO,CAAC;AAU/D,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAGhE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAIrD,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+FAA+F;IAC/F,KAAK,EAAE,aAAa,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;CACvD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,oBAAqB,qBAAqB,6BAItE,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;CACjD,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,yBAA0B,qBAAqB,sBAI3E,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,gBAAgB,yBAA0B,qBAAqB,6BAQ3E,CAAC;AAEF,eAAO,MAAM,iBAAiB,aAAc;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,6BAU5D,CAAC;AAEF,eAAO,MAAM,kBAAkB,aAAc;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,sBAwB7D,CAAC"}
@@ -1,5 +1,24 @@
1
1
  import * as Effect from 'effect/Effect';
2
+ import type * as Atom from 'effect/reactivity/Atom';
2
3
  import * as Capability from '@dxos/app-framework/Capability';
4
+ import * as AppGraphBuilder from '@dxos/app-graph/AppGraphBuilder';
5
+ import * as AppGraphNode from '@dxos/app-graph/AppGraphNode';
6
+ import * as AppCapabilities from '@dxos/app-toolkit/AppCapabilities';
7
+ import * as Position from '@dxos/util/Position';
3
8
  declare const _default: (props: void) => Effect.Effect<Capability.Contribution<Capability.CapabilityIdentifier<"org.dxos.app-framework.capability.appGraphBuilder", "multi">>, never, import("effect/Scope").Scope | Capability.Service>;
4
9
  export default _default;
10
+ /** The devtools tree: a container under the debug category with one page per tool, grouped by subsystem. */
11
+ export declare const createDevtoolsExtension: (appGraphAtom: Atom.Atom<AppCapabilities.AppGraph[]>) => Effect.Effect<Readonly<{
12
+ id: string;
13
+ position?: Position.Position;
14
+ relation?: AppGraphNode.RelationInput | undefined;
15
+ meta?: AppGraphBuilder.UrlBinding | undefined;
16
+ connector?: import("@dxos/graph/GraphBuilder").Connector<Readonly<{
17
+ id: string;
18
+ type: string;
19
+ cacheable?: string[];
20
+ properties: Readonly<Record<string, any>>;
21
+ data: any;
22
+ }>, AppGraphNode.NodeArg<any, Record<string, any>>> | undefined;
23
+ }>[], never, never>;
5
24
  //# sourceMappingURL=app-graph-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/app-graph-builder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/app-graph-builder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,IAAI,MAAM,wBAAwB,CAAC;AAEpD,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AAC7D,OAAO,KAAK,eAAe,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,YAAY,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,eAAe,MAAM,mCAAmC,CAAC;AAKrE,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;;;AAwDhD,4GAA4G;AAC5G,eAAO,MAAM,uBAAuB,iBAAkB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;;;;;;;;;;;;mBA6VvF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=app-graph-builder.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-graph-builder.test.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/app-graph-builder.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import * as Capability from '@dxos/app-framework/Capability';
2
+ export declare const AppGraphBuilder: Capability.Module<void>;
3
+ export declare const ReactContext: Capability.Module<void>;
4
+ export declare const ReactSurface: Capability.Module<void>;
5
+ export declare const SetupDevtools: Capability.Module<void>;
6
+ export declare const Translations: Capability.Module<void>;
7
+ export declare const PluginAsset: Capability.Module<void>;
8
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/gen/browser.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AA6B7D,eAAO,MAAM,eAAe,yBAG1B,CAAC;AAEH,eAAO,MAAM,YAAY,yBAAmE,CAAC;AAE7F,eAAO,MAAM,YAAY,yBAEvB,CAAC;AAEH,eAAO,MAAM,aAAa,yBAEzB,CAAC;AAEF,eAAO,MAAM,YAAY,yBAA2C,CAAC;AAErE,eAAO,MAAM,WAAW,yBAKtB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import * as Capability from '@dxos/app-framework/Capability';
2
+ export declare const AppGraphBuilder: Capability.Module<void>;
3
+ export declare const ReactContext: Capability.Module<void>;
4
+ export declare const ReactSurface: Capability.Module<void>;
5
+ export declare const SetupDevtools: Capability.Module<void>;
6
+ export declare const Translations: Capability.Module<void>;
7
+ export declare const PluginAsset: Capability.Module<void>;
8
+ //# sourceMappingURL=tauri.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tauri.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/gen/tauri.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AA6B7D,eAAO,MAAM,eAAe,yBAG1B,CAAC;AAEH,eAAO,MAAM,YAAY,yBAAmE,CAAC;AAE7F,eAAO,MAAM,YAAY,yBAEvB,CAAC;AAEH,eAAO,MAAM,aAAa,yBAEzB,CAAC;AAEF,eAAO,MAAM,YAAY,yBAA2C,CAAC;AAErE,eAAO,MAAM,WAAW,yBAKtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AAY7D,eAAO,MAAM,eAAe,yBAG1B,CAAC;AACH,eAAO,MAAM,YAAY,yBAA8D,CAAC;AACxF,eAAO,MAAM,YAAY,yBAEvB,CAAC;AACH,eAAO,MAAM,aAAa,yBAEzB,CAAC;AACF,eAAO,MAAM,YAAY,yBAA2C,CAAC;AACrE,eAAO,MAAM,WAAW,yBAKtB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AAY7D,eAAO,MAAM,eAAe,yBAG1B,CAAC;AACH,eAAO,MAAM,YAAY,yBAAkE,CAAC;AAC5F,eAAO,MAAM,YAAY,yBAEvB,CAAC;AACH,eAAO,MAAM,aAAa,yBAEzB,CAAC;AACF,eAAO,MAAM,YAAY,yBAA2C,CAAC;AACrE,eAAO,MAAM,WAAW,yBAKtB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export declare function CliArticle({ role }: {
3
+ role?: string;
4
+ }): React.JSX.Element;
5
+ export declare namespace CliArticle {
6
+ var displayName: string;
7
+ }
8
+ //# sourceMappingURL=CliArticle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CliArticle.d.ts","sourceRoot":"","sources":["../../../../../src/containers/CliArticle/CliArticle.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;mCAsBC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE"}
@@ -1,8 +1,8 @@
1
1
  import { type StoryObj } from '@storybook/react-vite';
2
- import { CliPanel } from './CliPanel';
2
+ import { CliArticle } from './CliArticle.tsx';
3
3
  declare const meta: {
4
4
  title: string;
5
- component: typeof CliPanel;
5
+ component: typeof CliArticle;
6
6
  decorators: import("@storybook/react").Decorator[];
7
7
  parameters: {
8
8
  layout: string;
@@ -22,7 +22,34 @@ declare const meta: {
22
22
  readonly 'filter-results.placeholder': 'Filter results…';
23
23
  readonly 'connection-failed.title': 'MCP Server connection failed';
24
24
  readonly 'not-configured.title': 'MCP Server is not configured';
25
- readonly 'not-configured.message': 'Set the introspect endpoint (runtime.services.edgeServices) to browse tools.';
25
+ readonly 'not-configured.message': 'Set the EDGE endpoint (runtime.services.edge.url) to browse tools.';
26
+ };
27
+ };
28
+ }, {
29
+ readonly 'en-US': {
30
+ readonly "@dxos/react-ui-table": {
31
+ readonly 'object.placeholder': 'New table';
32
+ readonly 'create-object.label': 'Create table';
33
+ readonly 'table-name.placeholder': 'Table name';
34
+ readonly 'table-schema.label': 'Type';
35
+ readonly 'continue.label': 'Continue';
36
+ readonly 'create-stack-section.label': 'Create table';
37
+ readonly 'add-row.label': 'Add row';
38
+ readonly 'column-action-sort-descending.menu': 'Sort Descending';
39
+ readonly 'column-action-sort-ascending.menu': 'Sort Ascending';
40
+ readonly 'column-action-clear-sorting.menu': 'Clear Sorting';
41
+ readonly 'column-action-settings.menu': 'Column Settings';
42
+ readonly 'column-action-delete.menu': 'Delete Column';
43
+ readonly 'delete-row.label': 'Delete row';
44
+ readonly 'bulk-delete-row.label': 'Delete selected rows';
45
+ readonly 'column-deleted.label': 'Column deleted';
46
+ readonly 'new-column-button.label': 'Create column';
47
+ readonly 'create-new-object.label': 'Create new object “{{text}}”';
48
+ readonly 'save-view.label': 'Save changes to view';
49
+ readonly 'export-rows.menu': 'Export';
50
+ readonly 'export-rows-csv.menu': 'CSV';
51
+ readonly 'export-rows-json.menu': 'JSON (.dx.json)';
52
+ readonly 'export-rows-xml.menu': 'XML';
26
53
  };
27
54
  };
28
55
  }, {
@@ -40,7 +67,7 @@ declare const meta: {
40
67
  readonly 'config.label': 'Config';
41
68
  readonly 'storage.label': 'Storage';
42
69
  readonly 'sqlite.label': 'SQLite';
43
- readonly 'logging.label': 'Logging';
70
+ readonly 'logging.label': 'Logs';
44
71
  readonly 'diagnostics.label': 'Diagnostics';
45
72
  readonly 'tracing.label': 'Tracing';
46
73
  readonly 'halo.label': 'HALO';
@@ -53,6 +80,7 @@ declare const meta: {
53
80
  readonly 'space.label': 'Space';
54
81
  readonly 'feeds.label': 'Feeds';
55
82
  readonly 'objects.label': 'Objects';
83
+ readonly 'queries.label': 'Queries';
56
84
  readonly 'schema.label': 'Schema';
57
85
  readonly 'registry.label': 'Registry';
58
86
  readonly 'automerge.label': 'Automerge';
@@ -88,4 +116,4 @@ export declare const Default: Story;
88
116
  * and the client surfaces here rather than in the app.
89
117
  */
90
118
  export declare const Spec: Story;
91
- //# sourceMappingURL=CliPanel.stories.d.ts.map
119
+ //# sourceMappingURL=CliArticle.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CliArticle.stories.d.ts","sourceRoot":"","sources":["../../../../../src/containers/CliArticle/CliArticle.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAcjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,QAAA,MAAM,IAAI;;;;;;;YAqBM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGY,CAAC;eAErB,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,KAiBlB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { CliArticle, CliArticle as default } from './CliArticle.tsx';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/containers/CliArticle/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,5 +1,5 @@
1
+ import * as Command from 'effect/cli/Command';
1
2
  import * as Layer from 'effect/Layer';
2
- import * as Command from 'effect/unstable/cli/Command';
3
3
  import { type Client } from '@dxos/client';
4
4
  /**
5
5
  * Builds the `dx` command tree and the services its handlers need.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCliApp.d.ts","sourceRoot":"","sources":["../../../../../src/containers/CliArticle/useCliApp.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAG9C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAUtC,OAAO,EAAE,KAAK,MAAM,EAA0B,MAAM,cAAc,CAAC;AAgBnE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,WAAY,MAAM;;;;;;;;;aA2DvC,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import React from 'react';
2
2
  import * as AppGraph from '@dxos/app-graph/AppGraph';
3
3
  export type DebugGraphProps = {
4
+ role?: string;
4
5
  graph: AppGraph.Graph;
5
6
  root: string;
6
7
  };
7
- export declare function DebugGraph({ graph, root }: DebugGraphProps): React.JSX.Element;
8
+ export declare function DebugGraph({ role, graph, root }: DebugGraphProps): React.JSX.Element;
8
9
  export declare namespace DebugGraph {
9
10
  var displayName: string;
10
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DebugGraph.d.ts","sourceRoot":"","sources":["../../../../../src/containers/DebugGraph/DebugGraph.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAC;AAIrD,MAAM,MAAM,eAAe,GAAG;IAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;mCAE3C,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,eAAe"}
1
+ {"version":3,"file":"DebugGraph.d.ts","sourceRoot":"","sources":["../../../../../src/containers/DebugGraph/DebugGraph.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAC;AAKrD,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;mCAE1D,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,eAAe"}
@@ -1,2 +1,2 @@
1
- export { DebugGraph as default } from './DebugGraph';
1
+ export { DebugGraph as default } from './DebugGraph.tsx';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/containers/DebugGraph/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/containers/DebugGraph/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevtoolsOverviewContainer.d.ts","sourceRoot":"","sources":["../../../../../src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA+B,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"DevtoolsOverviewContainer.d.ts","sourceRoot":"","sources":["../../../../../src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAoD,MAAM,OAAO,CAAC"}