@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-app-graph-builder.mjs","names":[],"sources":["../../src/capabilities/app-graph-builder.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as AppGraphBuilder from '@dxos/app-graph/AppGraphBuilder';\nimport * as AppGraphNode from '@dxos/app-graph/AppGraphNode';\nimport * as AppCapabilities from '@dxos/app-toolkit/AppCapabilities';\nimport * as AppNode from '@dxos/app-toolkit/AppNode';\nimport * as AppNodeMatcher from '@dxos/app-toolkit/AppNodeMatcher';\nimport * as GraphPath from '@dxos/app-toolkit/GraphPath';\nimport * as GraphNode from '@dxos/graph/GraphNode';\nimport * as GraphNodeMatcher from '@dxos/graph/GraphNodeMatcher';\nimport { type Space } from '@dxos/react-client/echo';\nimport { Position } from '@dxos/util';\n\nimport { meta } from '#meta';\nimport { Devtools } from '#types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n // Read the app graph through its atom so the extension establishes a reactive dependency\n // and re-evaluates once the capability lands (dependency modules contribute individually,\n // not batched per wave).\n const appGraphAtom = yield* Capability.atom(AppCapabilities.AppGraph);\n\n const extensions = yield* Effect.all([\n AppGraphBuilder.createExtension({\n id: 'root',\n match: GraphNodeMatcher.whenRoot,\n actions: () =>\n Effect.succeed([\n AppGraphNode.makeAction({\n id: 'resetData',\n data: () =>\n Effect.sync(() => {\n window.location.href = '/reset.html';\n }),\n properties: {\n label: ['reset-data.label', { ns: meta.profile.key }],\n icon: 'ph--warning--regular',\n },\n }),\n ]),\n }),\n\n AppGraphBuilder.createExtension({\n id: 'devtools',\n match: GraphNodeMatcher.whenAny(\n GraphNodeMatcher.whenRoot,\n AppNodeMatcher.whenNavTreeGroup(GraphPath.GroupTypes.system),\n ),\n connector: (_nodeOrSpace: AppGraphNode.Node | Space, get) =>\n Effect.gen(function* () {\n const [graph] = get(appGraphAtom);\n\n return [\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.id),\n data: null,\n type: Devtools.id,\n properties: {\n label: ['devtools.label', { ns: meta.profile.key }],\n icon: 'ph--toolbox--regular',\n position: Position.last,\n },\n nodes: [\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.AppGraph),\n type: `${meta.profile.key}.app-graph`,\n data: { graph: graph?.graph, root: GraphNode.RootId },\n properties: {\n label: ['debug-app-graph.label', { ns: meta.profile.key }],\n icon: 'ph--graph--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.ToolsExplorer),\n data: Devtools.ToolsExplorer,\n type: Devtools.id,\n properties: {\n label: ['debug-tools-explorer.label', { ns: meta.profile.key }],\n icon: 'ph--toolbox--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Cli),\n data: Devtools.Cli,\n type: Devtools.id,\n properties: {\n label: ['cli.label', { ns: meta.profile.key }],\n icon: 'ph--terminal-window--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Client.id),\n data: null,\n type: Devtools.id,\n properties: {\n label: ['client.label', { ns: meta.profile.key }],\n icon: 'ph--users--regular',\n },\n nodes: [\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Client.Config),\n data: Devtools.Client.Config,\n type: Devtools.id,\n properties: {\n label: ['config.label', { ns: meta.profile.key }],\n icon: 'ph--gear--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Client.Storage),\n data: Devtools.Client.Storage,\n type: Devtools.id,\n properties: {\n label: ['storage.label', { ns: meta.profile.key }],\n icon: 'ph--hard-drives--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Client.Sqlite),\n data: Devtools.Client.Sqlite,\n type: Devtools.id,\n properties: {\n label: ['sqlite.label', { ns: meta.profile.key }],\n icon: 'ph--database--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Client.Logs),\n data: Devtools.Client.Logs,\n type: Devtools.id,\n properties: {\n label: ['logging.label', { ns: meta.profile.key }],\n icon: 'ph--file-text--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Client.Diagnostics),\n data: Devtools.Client.Diagnostics,\n type: Devtools.id,\n properties: {\n label: ['diagnostics.label', { ns: meta.profile.key }],\n icon: 'ph--chart-line--regular',\n },\n }),\n ],\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Halo.id),\n data: null,\n type: Devtools.id,\n properties: {\n label: ['halo.label', { ns: meta.profile.key }],\n icon: 'ph--identification-badge--regular',\n },\n nodes: [\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Halo.Identity),\n data: Devtools.Halo.Identity,\n type: Devtools.id,\n properties: {\n label: ['identity.label', { ns: meta.profile.key }],\n icon: 'ph--identification-badge--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Halo.Devices),\n data: Devtools.Halo.Devices,\n type: Devtools.id,\n properties: {\n label: ['devices.label', { ns: meta.profile.key }],\n icon: 'ph--devices--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Halo.Keyring),\n data: Devtools.Halo.Keyring,\n type: Devtools.id,\n properties: {\n label: ['keyring.label', { ns: meta.profile.key }],\n icon: 'ph--key--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Halo.Credentials),\n data: Devtools.Halo.Credentials,\n type: Devtools.id,\n properties: {\n label: ['credentials.label', { ns: meta.profile.key }],\n icon: 'ph--credit-card--regular',\n },\n }),\n ],\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.id),\n data: null,\n type: Devtools.id,\n properties: {\n label: ['echo.label', { ns: meta.profile.key }],\n icon: 'ph--database--regular',\n },\n nodes: [\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Spaces),\n data: Devtools.Echo.Spaces,\n type: Devtools.id,\n properties: {\n label: ['spaces.label', { ns: meta.profile.key }],\n icon: 'ph--graph--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Space),\n data: Devtools.Echo.Space,\n type: Devtools.id,\n properties: {\n label: ['space.label', { ns: meta.profile.key }],\n icon: 'ph--planet--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Feeds),\n data: Devtools.Echo.Feeds,\n type: Devtools.id,\n properties: {\n label: ['feeds.label', { ns: meta.profile.key }],\n icon: 'ph--list-bullets--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Objects),\n data: Devtools.Echo.Objects,\n type: Devtools.id,\n properties: {\n label: ['objects.label', { ns: meta.profile.key }],\n icon: 'ph--cube--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Schema),\n data: Devtools.Echo.Schema,\n type: Devtools.id,\n properties: {\n label: ['schema.label', { ns: meta.profile.key }],\n icon: 'ph--database--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Registry),\n data: Devtools.Echo.Registry,\n type: Devtools.id,\n properties: {\n label: ['registry.label', { ns: meta.profile.key }],\n icon: 'ph--books--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Automerge),\n data: Devtools.Echo.Automerge,\n type: Devtools.id,\n properties: {\n label: ['automerge.label', { ns: meta.profile.key }],\n icon: 'ph--gear-six--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Queues),\n data: Devtools.Echo.Queues,\n type: Devtools.id,\n properties: {\n label: ['queues.label', { ns: meta.profile.key }],\n icon: 'ph--queue--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Members),\n data: Devtools.Echo.Members,\n type: Devtools.id,\n properties: {\n label: ['members.label', { ns: meta.profile.key }],\n icon: 'ph--users--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Metadata),\n data: Devtools.Echo.Metadata,\n type: Devtools.id,\n properties: {\n label: ['metadata.label', { ns: meta.profile.key }],\n icon: 'ph--hard-drive--regular',\n },\n }),\n ],\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Mesh.id),\n data: null,\n type: Devtools.id,\n properties: {\n label: ['mesh.label', { ns: meta.profile.key }],\n icon: 'ph--graph--regular',\n },\n nodes: [\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Mesh.Signal),\n data: Devtools.Mesh.Signal,\n type: Devtools.id,\n properties: {\n label: ['signal.label', { ns: meta.profile.key }],\n icon: 'ph--wifi-high--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Mesh.Swarm),\n data: Devtools.Mesh.Swarm,\n type: Devtools.id,\n properties: {\n label: ['swarm.label', { ns: meta.profile.key }],\n icon: 'ph--users-three--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Mesh.Network),\n data: Devtools.Mesh.Network,\n type: Devtools.id,\n properties: {\n label: ['network.label', { ns: meta.profile.key }],\n icon: 'ph--polygon--regular',\n },\n }),\n ],\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Edge.id),\n data: null,\n type: Devtools.id,\n properties: {\n label: ['edge.label', { ns: meta.profile.key }],\n icon: 'ph--cloud--regular',\n },\n nodes: [\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Edge.Dashboard),\n data: Devtools.Edge.Dashboard,\n type: Devtools.id,\n properties: {\n label: ['dashboard.label', { ns: meta.profile.key }],\n icon: 'ph--computer-tower--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Edge.Workflows),\n data: Devtools.Edge.Workflows,\n type: Devtools.id,\n properties: {\n label: ['workflows.label', { ns: meta.profile.key }],\n icon: 'ph--function--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Edge.Traces),\n data: Devtools.Edge.Traces,\n type: Devtools.id,\n properties: {\n label: ['traces.label', { ns: meta.profile.key }],\n icon: 'ph--line-segments--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Edge.Testing),\n data: Devtools.Edge.Testing,\n type: Devtools.id,\n properties: {\n label: ['testing.label', { ns: meta.profile.key }],\n icon: 'ph--flask--regular',\n },\n }),\n ],\n }),\n ],\n }),\n ];\n }),\n }),\n\n // Devtools deck companion.\n AppGraphBuilder.createExtension({\n id: 'devtoolsOverview',\n match: GraphNodeMatcher.whenRoot,\n connector: () =>\n Effect.succeed([\n AppNode.makeDeckCompanion({\n id: 'devtoolsOverview',\n label: ['devtools-overview.label', { ns: meta.profile.key }],\n icon: 'ph--equalizer--regular',\n data: 'devtoolsOverview' as const,\n position: Position.last,\n }),\n ]),\n }),\n ]);\n\n return Capability.contribute(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"chunk-app-graph-builder.mjs","names":[],"sources":["../../src/capabilities/app-graph-builder.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport type * as Atom from 'effect/reactivity/Atom';\n\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as AppGraphBuilder from '@dxos/app-graph/AppGraphBuilder';\nimport * as AppGraphNode from '@dxos/app-graph/AppGraphNode';\nimport * as AppCapabilities from '@dxos/app-toolkit/AppCapabilities';\nimport * as AppNode from '@dxos/app-toolkit/AppNode';\nimport * as AppNodeMatcher from '@dxos/app-toolkit/AppNodeMatcher';\nimport * as GraphNode from '@dxos/graph/GraphNode';\nimport * as GraphNodeMatcher from '@dxos/graph/GraphNodeMatcher';\nimport * as Position from '@dxos/util/Position';\n\nimport { meta } from '#meta';\nimport { Devtools } from '#types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n // Read the app graph through its atom so the extension establishes a reactive dependency\n // and re-evaluates once the capability lands (dependency modules contribute individually,\n // not batched per wave).\n const appGraphAtom = yield* Capability.atom(AppCapabilities.AppGraph);\n\n const extensions = yield* Effect.all([\n AppGraphBuilder.createExtension({\n id: 'root',\n match: GraphNodeMatcher.whenRoot,\n actions: () =>\n Effect.succeed([\n AppGraphNode.makeAction({\n id: 'resetData',\n data: () =>\n Effect.sync(() => {\n window.location.href = '/reset.html';\n }),\n properties: {\n label: ['reset-data.label', { ns: meta.profile.key }],\n icon: 'ph--warning--regular',\n },\n }),\n ]),\n }),\n\n createDevtoolsExtension(appGraphAtom),\n\n // Devtools deck companion.\n AppGraphBuilder.createExtension({\n id: 'devtoolsOverview',\n relation: AppNode.companion,\n match: GraphNodeMatcher.whenRoot,\n connector: () =>\n Effect.succeed([\n AppNode.makeDeckCompanion({\n id: 'devtoolsOverview',\n label: ['devtools-overview.label', { ns: meta.profile.key }],\n icon: 'ph--equalizer--regular',\n data: 'devtoolsOverview' as const,\n position: Position.last,\n }),\n ]),\n }),\n ]);\n\n return Capability.contribute(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n\n/** The devtools tree: a container under the debug category with one page per tool, grouped by subsystem. */\nexport const createDevtoolsExtension = (appGraphAtom: Atom.Atom<AppCapabilities.AppGraph[]>) =>\n AppGraphBuilder.createExtension({\n id: 'devtools',\n match: AppNodeMatcher.whenDebugGroup,\n connector: (_node, get) =>\n Effect.gen(function* () {\n const [graph] = get(appGraphAtom);\n\n return [\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.id),\n data: null,\n type: Devtools.id,\n properties: {\n label: ['devtools.label', { ns: meta.profile.key }],\n icon: 'ph--toolbox--regular',\n // After Debug (0), whichever plugin registers first.\n position: 10,\n },\n nodes: [\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.AppGraph),\n type: `${meta.profile.key}.app-graph`,\n data: { graph: graph?.graph, root: GraphNode.RootId },\n properties: {\n label: ['debug-app-graph.label', { ns: meta.profile.key }],\n icon: 'ph--graph--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.ToolsExplorer),\n data: Devtools.ToolsExplorer,\n type: Devtools.id,\n properties: {\n label: ['debug-tools-explorer.label', { ns: meta.profile.key }],\n icon: 'ph--toolbox--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Cli),\n data: Devtools.Cli,\n type: Devtools.id,\n properties: {\n label: ['cli.label', { ns: meta.profile.key }],\n icon: 'ph--terminal-window--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Client.id),\n data: null,\n type: Devtools.id,\n properties: {\n label: ['client.label', { ns: meta.profile.key }],\n icon: 'ph--users--regular',\n },\n nodes: [\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Client.Config),\n data: Devtools.Client.Config,\n type: Devtools.id,\n properties: {\n label: ['config.label', { ns: meta.profile.key }],\n icon: 'ph--gear--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Client.Storage),\n data: Devtools.Client.Storage,\n type: Devtools.id,\n properties: {\n label: ['storage.label', { ns: meta.profile.key }],\n icon: 'ph--hard-drives--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Client.Sqlite),\n data: Devtools.Client.Sqlite,\n type: Devtools.id,\n properties: {\n label: ['sqlite.label', { ns: meta.profile.key }],\n icon: 'ph--database--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Client.Logs),\n data: Devtools.Client.Logs,\n type: Devtools.id,\n properties: {\n label: ['logging.label', { ns: meta.profile.key }],\n icon: 'ph--file-text--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Client.Diagnostics),\n data: Devtools.Client.Diagnostics,\n type: Devtools.id,\n properties: {\n label: ['diagnostics.label', { ns: meta.profile.key }],\n icon: 'ph--chart-line--regular',\n },\n }),\n ],\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Halo.id),\n data: null,\n type: Devtools.id,\n properties: {\n label: ['halo.label', { ns: meta.profile.key }],\n icon: 'ph--identification-badge--regular',\n },\n nodes: [\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Halo.Identity),\n data: Devtools.Halo.Identity,\n type: Devtools.id,\n properties: {\n label: ['identity.label', { ns: meta.profile.key }],\n icon: 'ph--identification-badge--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Halo.Devices),\n data: Devtools.Halo.Devices,\n type: Devtools.id,\n properties: {\n label: ['devices.label', { ns: meta.profile.key }],\n icon: 'ph--devices--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Halo.Keyring),\n data: Devtools.Halo.Keyring,\n type: Devtools.id,\n properties: {\n label: ['keyring.label', { ns: meta.profile.key }],\n icon: 'ph--key--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Halo.Credentials),\n data: Devtools.Halo.Credentials,\n type: Devtools.id,\n properties: {\n label: ['credentials.label', { ns: meta.profile.key }],\n icon: 'ph--credit-card--regular',\n },\n }),\n ],\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.id),\n data: null,\n type: Devtools.id,\n properties: {\n label: ['echo.label', { ns: meta.profile.key }],\n icon: 'ph--database--regular',\n },\n nodes: [\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Spaces),\n data: Devtools.Echo.Spaces,\n type: Devtools.id,\n properties: {\n label: ['spaces.label', { ns: meta.profile.key }],\n icon: 'ph--graph--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Space),\n data: Devtools.Echo.Space,\n type: Devtools.id,\n properties: {\n label: ['space.label', { ns: meta.profile.key }],\n icon: 'ph--planet--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Feeds),\n data: Devtools.Echo.Feeds,\n type: Devtools.id,\n properties: {\n label: ['feeds.label', { ns: meta.profile.key }],\n icon: 'ph--list-bullets--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Objects),\n data: Devtools.Echo.Objects,\n type: Devtools.id,\n properties: {\n label: ['objects.label', { ns: meta.profile.key }],\n icon: 'ph--cube--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Queries),\n data: Devtools.Echo.Queries,\n type: Devtools.id,\n properties: {\n label: ['queries.label', { ns: meta.profile.key }],\n icon: 'ph--tree-view--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Schema),\n data: Devtools.Echo.Schema,\n type: Devtools.id,\n properties: {\n label: ['schema.label', { ns: meta.profile.key }],\n icon: 'ph--database--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Registry),\n data: Devtools.Echo.Registry,\n type: Devtools.id,\n properties: {\n label: ['registry.label', { ns: meta.profile.key }],\n icon: 'ph--books--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Automerge),\n data: Devtools.Echo.Automerge,\n type: Devtools.id,\n properties: {\n label: ['automerge.label', { ns: meta.profile.key }],\n icon: 'ph--gear-six--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Queues),\n data: Devtools.Echo.Queues,\n type: Devtools.id,\n properties: {\n label: ['queues.label', { ns: meta.profile.key }],\n icon: 'ph--queue--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Members),\n data: Devtools.Echo.Members,\n type: Devtools.id,\n properties: {\n label: ['members.label', { ns: meta.profile.key }],\n icon: 'ph--users--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Echo.Metadata),\n data: Devtools.Echo.Metadata,\n type: Devtools.id,\n properties: {\n label: ['metadata.label', { ns: meta.profile.key }],\n icon: 'ph--hard-drive--regular',\n },\n }),\n ],\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Mesh.id),\n data: null,\n type: Devtools.id,\n properties: {\n label: ['mesh.label', { ns: meta.profile.key }],\n icon: 'ph--graph--regular',\n },\n nodes: [\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Mesh.Signal),\n data: Devtools.Mesh.Signal,\n type: Devtools.id,\n properties: {\n label: ['signal.label', { ns: meta.profile.key }],\n icon: 'ph--wifi-high--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Mesh.Swarm),\n data: Devtools.Mesh.Swarm,\n type: Devtools.id,\n properties: {\n label: ['swarm.label', { ns: meta.profile.key }],\n icon: 'ph--users-three--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Mesh.Network),\n data: Devtools.Mesh.Network,\n type: Devtools.id,\n properties: {\n label: ['network.label', { ns: meta.profile.key }],\n icon: 'ph--polygon--regular',\n },\n }),\n ],\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Edge.id),\n data: null,\n type: Devtools.id,\n properties: {\n label: ['edge.label', { ns: meta.profile.key }],\n icon: 'ph--cloud--regular',\n },\n nodes: [\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Edge.Dashboard),\n data: Devtools.Edge.Dashboard,\n type: Devtools.id,\n properties: {\n label: ['dashboard.label', { ns: meta.profile.key }],\n icon: 'ph--computer-tower--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Edge.Workflows),\n data: Devtools.Edge.Workflows,\n type: Devtools.id,\n properties: {\n label: ['workflows.label', { ns: meta.profile.key }],\n icon: 'ph--function--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Edge.Traces),\n data: Devtools.Edge.Traces,\n type: Devtools.id,\n properties: {\n label: ['traces.label', { ns: meta.profile.key }],\n icon: 'ph--line-segments--regular',\n },\n }),\n AppGraphNode.make({\n id: Devtools.nodeId(Devtools.Edge.Testing),\n data: Devtools.Edge.Testing,\n type: Devtools.id,\n properties: {\n label: ['testing.label', { ns: meta.profile.key }],\n icon: 'ph--flask--regular',\n },\n }),\n ],\n }),\n ],\n }),\n ];\n }),\n });\n"],"mappings":"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"}
@@ -3,7 +3,7 @@ import * as Capability from "@dxos/app-framework/Capability";
3
3
  import { meta } from "#meta";
4
4
  import "react";
5
5
  import * as Capabilities from "@dxos/app-framework/Capabilities";
6
- import { Surface } from "@dxos/app-framework/ui";
6
+ import * as Surface from "@dxos/app-framework/Surface";
7
7
  import { DevtoolsContextProvider } from "@dxos/devtools";
8
8
  import { jsx } from "react/jsx-runtime";
9
9
  //#region src/capabilities/react-context.tsx
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-react-context.mjs","names":[],"sources":["../../src/capabilities/react-context.tsx"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React from 'react';\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 { DevtoolsContextProvider } from '@dxos/devtools';\n\nimport { meta } from '#meta';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contribute(Capabilities.ReactContext, {\n id: meta.profile.key,\n context: ({ children }) => (\n <Surface.ProfilerProvider>\n <DevtoolsContextProvider>{children}</DevtoolsContextProvider>\n </Surface.ProfilerProvider>\n ),\n }),\n ),\n);\n"],"mappings":";;;;;;;;;AAcA,IAAA,wBAAe,WAAW,iBACxB,OAAO,QACL,WAAW,WAAW,aAAa,cAAc;CAC/C,IAAI,KAAK,QAAQ;CACjB,UAAU,EAAE,eACV,oBAAC,QAAQ,kBAAT,EAAA,UACE,oBAAC,yBAAD,EAA0B,SAAkC,CAAA,EACpC,CAAA;AAE9B,CAAC,CACH,CACF"}
1
+ {"version":3,"file":"chunk-react-context.mjs","names":[],"sources":["../../src/capabilities/react-context.tsx"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React from 'react';\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 { DevtoolsContextProvider } from '@dxos/devtools';\n\nimport { meta } from '#meta';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contribute(Capabilities.ReactContext, {\n id: meta.profile.key,\n context: ({ children }) => (\n <Surface.ProfilerProvider>\n <DevtoolsContextProvider>{children}</DevtoolsContextProvider>\n </Surface.ProfilerProvider>\n ),\n }),\n ),\n);\n"],"mappings":";;;;;;;;;AAcA,IAAA,wBAAe,WAAW,iBACxB,OAAO,QACL,WAAW,WAAW,aAAa,cAAc;CAC/C,IAAI,KAAK,QAAQ;CACjB,UAAU,EAAE,eACV,oBAAC,QAAQ,kBAAT,EAAA,UACE,oBAAC,yBAAD,EAA0B,SAAkC,CAAA,EACpC,CAAA;AAE9B,CAAC,CACH,CACF"}
@@ -1,16 +1,21 @@
1
+ import { a as SwarmTraceCardSurface, i as SurfaceProfilerCardSurface, n as IndexerCardSurface, o as SyncCardSurface, r as QueriesCardSurface, s as devtoolsCard, t as EdgeCardSurface } from "./chunk-DevtoolsCards.mjs";
1
2
  import * as Effect from "effect/Effect";
2
3
  import * as Capability from "@dxos/app-framework/Capability";
3
4
  import { Devtools } from "#types";
4
5
  import { useCallback } from "react";
5
6
  import * as GraphPath from "@dxos/app-toolkit/GraphPath";
6
7
  import * as Capabilities from "@dxos/app-framework/Capabilities";
7
- import { Surface, useOperationInvoker } from "@dxos/app-framework/ui";
8
- import { AutomergePanel, ConfigPanel, CredentialsPanel, DeviceListPanel, DiagnosticsPanel, EdgeDashboardPanel, FeedsPanel, IdentityPanel, InvocationTraceContainer, KeyringPanel, LoggingPanel, MembersPanel, MetadataPanel, NetworkPanel, ObjectsPanel, QueuesPanel, SchemaPanel, SignalPanel, SpaceInfoPanel, SpaceListPanel, SqlitePanel, StoragePanel, SwarmPanel, TestingPanel, WorkflowPanel } from "@dxos/devtools";
8
+ import * as Surface from "@dxos/app-framework/Surface";
9
+ import { AutomergeArticle, ConfigArticle, CredentialsArticle, DatabaseCard, DeviceListArticle, DiagnosticsArticle, EdgeDashboardArticle, FeedsArticle, IdentityArticle, InvocationTraceContainer, KeyringArticle, LoggingArticle, MembersArticle, MemoryCard, MetadataArticle, NetworkArticle, NetworkCard, ObjectsArticle, PerformanceCard, QueriesArticle, QueuesArticle, ReplicatorCard, ReplicatorMessagesCard, SchemaArticle, SignalArticle, SpaceInfoArticle, SpaceListArticle, SqliteArticle, StorageArticle, SwarmArticle, TestingArticle, TimeSeriesCard, WorkflowArticle } from "@dxos/devtools";
9
10
  import { jsx } from "react/jsx-runtime";
10
- import { AppSurface, useActiveSpace } from "@dxos/app-toolkit/ui";
11
- import { CliPanel, DebugGraph, DevtoolsOverviewContainer, RegistryPanel, ToolsExplorerContainer } from "#containers";
11
+ import * as AppSurface from "@dxos/app-toolkit/AppSurface";
12
+ import * as DebugSurface from "@dxos/plugin-debug/DebugSurface";
13
+ import { CliArticle, DebugGraph, DevtoolsOverviewContainer, RegistryArticle, ToolsExplorerContainer } from "#containers";
14
+ import * as Hooks from "@dxos/app-framework/Hooks";
15
+ import * as ToolkitHooks from "@dxos/app-toolkit/Hooks";
12
16
  import * as LayoutOperation from "@dxos/app-toolkit/LayoutOperation";
13
17
  import { Feed } from "@dxos/echo";
18
+ import { useResolveRef } from "@dxos/echo-react";
14
19
  import { log } from "@dxos/log";
15
20
  import * as ScriptOperation from "@dxos/plugin-script/ScriptOperation";
16
21
  import * as SpaceOperation from "@dxos/plugin-space/SpaceOperation";
@@ -20,44 +25,47 @@ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-devtools/src/capabili
20
25
  * Most devtools panels take the active space and render nothing without one. A mapper cannot read
21
26
  * the active space (it is a hook) nor decline to render, so they share this wrapper.
22
27
  */
23
- var ActiveSpacePanel = ({ Panel }) => {
24
- const space = useActiveSpace();
25
- return space ? /* @__PURE__ */ jsx(Panel, { space }) : null;
28
+ var ActiveSpacePanel = ({ role, Panel }) => {
29
+ const space = ToolkitHooks.useActiveSpace();
30
+ return space ? /* @__PURE__ */ jsx(Panel, {
31
+ role,
32
+ space
33
+ }) : null;
26
34
  };
27
- var SpaceListSurface = () => {
28
- const { invokePromise } = useOperationInvoker();
29
- const handleSelect = useCallback(() => invokePromise(LayoutOperation.Open, { subject: [Devtools.Echo.Space] }), [invokePromise]);
30
- return /* @__PURE__ */ jsx(SpaceListPanel, { onSelect: handleSelect });
35
+ /** The space list; selecting a space shows its page in the debug panel. */
36
+ var SpaceListSurface = ({ role, onNavigate }) => {
37
+ const handleSelect = useCallback(() => onNavigate(Devtools.getNodePath(Devtools.Echo.Space)), [onNavigate]);
38
+ return /* @__PURE__ */ jsx(SpaceListArticle, {
39
+ role,
40
+ onSelect: handleSelect
41
+ });
31
42
  };
32
- var SpaceInfoSurface = () => {
33
- const space = useActiveSpace();
34
- const { invokePromise } = useOperationInvoker();
35
- const handleSelect = useCallback(() => invokePromise(LayoutOperation.Open, { subject: [Devtools.Echo.Feeds] }), [invokePromise]);
43
+ /** The active space; selecting a feed or pipeline shows the feeds page in the debug panel. */
44
+ var SpaceInfoSurface = ({ role, onNavigate }) => {
45
+ const space = ToolkitHooks.useActiveSpace();
46
+ const handleSelect = useCallback(() => onNavigate(Devtools.getNodePath(Devtools.Echo.Feeds)), [onNavigate]);
36
47
  if (!space) return null;
37
- return /* @__PURE__ */ jsx(SpaceInfoPanel, {
48
+ return /* @__PURE__ */ jsx(SpaceInfoArticle, {
49
+ role,
38
50
  space,
39
51
  onSelectFeed: handleSelect,
40
52
  onSelectPipeline: handleSelect
41
53
  });
42
54
  };
43
- var EdgeTracesSurface = () => {
44
- const space = useActiveSpace();
55
+ var EdgeTracesSurface = ({ role }) => {
56
+ const space = ToolkitHooks.useActiveSpace();
57
+ const feed = useResolveRef(space?.properties.invocationTraceFeed);
45
58
  if (!space) return null;
46
- const feed = space.properties.invocationTraceFeed?.target;
47
59
  const feedDXN = feed ? Feed.getFeedUri(feed) : void 0;
48
60
  return /* @__PURE__ */ jsx(InvocationTraceContainer, {
61
+ role,
49
62
  db: space.db,
50
63
  feedDXN,
51
64
  detailAxis: "block"
52
65
  });
53
66
  };
54
- var EdgeTestingSurface = () => {
55
- const { invokePromise } = useOperationInvoker();
56
- const onSpaceCreate = useCallback(async (space) => {
57
- await space.waitUntilReady();
58
- await invokePromise(SpaceOperation.Migrate, { space });
59
- await space.db.flush();
60
- }, [invokePromise]);
67
+ var EdgeTestingSurface = ({ role }) => {
68
+ const { invokePromise } = Hooks.useOperationInvoker();
61
69
  const onScriptPluginOpen = useCallback(async (space) => {
62
70
  await space.waitUntilReady();
63
71
  const createResult = await invokePromise(ScriptOperation.CreateScript, { db: space.db });
@@ -65,13 +73,13 @@ var EdgeTestingSurface = () => {
65
73
  log.info("script created", { result: createResult }, {
66
74
  "~LogMeta": "~LogMeta",
67
75
  F: __dxlog_file,
68
- L: 94,
76
+ L: 88,
69
77
  S: void 0
70
78
  });
71
79
  if (createResult.data?.object) await invokePromise(LayoutOperation.Open, { subject: [GraphPath.getObjectPathFromObject(createResult.data.object)] });
72
80
  }, [invokePromise]);
73
- return /* @__PURE__ */ jsx(TestingPanel, {
74
- onSpaceCreate,
81
+ return /* @__PURE__ */ jsx(TestingArticle, {
82
+ role,
75
83
  onScriptPluginOpen
76
84
  });
77
85
  };
@@ -86,166 +94,314 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ()
86
94
  return Capability.contribute(Capabilities.ReactSurface, [
87
95
  Surface.create({
88
96
  id: "appGraph",
89
- filter: AppSurface.subject(AppSurface.Article, isGraphDebug),
97
+ filter: AppSurface.subject(DebugSurface.Page, isGraphDebug),
90
98
  component: DebugGraph,
91
- props: ({ data: { subject } }) => ({
99
+ props: ({ role, data: { subject } }) => ({
100
+ role,
92
101
  graph: subject.graph,
93
102
  root: subject.root
94
103
  })
95
104
  }),
96
105
  Surface.create({
97
106
  id: "toolsExplorer",
98
- filter: AppSurface.literal(AppSurface.Article, Devtools.ToolsExplorer),
99
- component: ToolsExplorerContainer
107
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.ToolsExplorer),
108
+ component: ToolsExplorerContainer,
109
+ props: ({ role }) => ({ role })
100
110
  }),
101
111
  Surface.create({
102
112
  id: "cli",
103
- filter: AppSurface.literal(AppSurface.Article, Devtools.Cli),
104
- component: CliPanel
113
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Cli),
114
+ component: CliArticle,
115
+ props: ({ role }) => ({ role })
105
116
  }),
106
117
  Surface.create({
107
118
  id: "registry",
108
- filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Registry),
109
- component: RegistryPanel
119
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Registry),
120
+ component: RegistryArticle,
121
+ props: ({ role }) => ({ role })
110
122
  }),
111
123
  Surface.create({
112
124
  id: "devtoolsOverview",
113
125
  filter: Surface.makeFilter(AppSurface.deckCompanion("devtoolsOverview")),
114
126
  component: DevtoolsOverviewContainer
115
127
  }),
128
+ Surface.create({
129
+ id: "card.memory",
130
+ filter: devtoolsCard,
131
+ position: 0,
132
+ component: MemoryCard,
133
+ props: ({ data: { stats } }) => ({ memory: stats.memory })
134
+ }),
135
+ Surface.create({
136
+ id: "card.network",
137
+ filter: devtoolsCard,
138
+ position: 1,
139
+ component: NetworkCard,
140
+ props: ({ data: { stats } }) => ({ network: stats.network })
141
+ }),
142
+ Surface.create({
143
+ id: "card.edge",
144
+ filter: devtoolsCard,
145
+ position: 2,
146
+ component: EdgeCardSurface,
147
+ props: ({ data: { stats } }) => ({ stats })
148
+ }),
149
+ Surface.create({
150
+ id: "card.performance",
151
+ filter: devtoolsCard,
152
+ position: 3,
153
+ component: PerformanceCard,
154
+ props: ({ data: { stats } }) => ({ entries: stats.performanceEntries })
155
+ }),
156
+ Surface.create({
157
+ id: "card.swarmTrace",
158
+ filter: devtoolsCard,
159
+ position: 4,
160
+ component: SwarmTraceCardSurface
161
+ }),
162
+ Surface.create({
163
+ id: "card.surfaceProfiler",
164
+ filter: devtoolsCard,
165
+ position: 5,
166
+ component: SurfaceProfilerCardSurface,
167
+ props: ({ data: { surfaceProfilerStats, onClearSurfaceProfiler } }) => ({
168
+ surfaceProfilerStats,
169
+ onClearSurfaceProfiler
170
+ })
171
+ }),
172
+ Surface.create({
173
+ id: "card.database",
174
+ filter: devtoolsCard,
175
+ position: 6,
176
+ component: DatabaseCard,
177
+ props: ({ data: { stats } }) => ({ database: stats.database })
178
+ }),
179
+ Surface.create({
180
+ id: "card.replicator",
181
+ filter: devtoolsCard,
182
+ position: 7,
183
+ component: ReplicatorCard,
184
+ props: ({ data: { stats } }) => ({ database: stats.database })
185
+ }),
186
+ Surface.create({
187
+ id: "card.replicatorMessages",
188
+ filter: devtoolsCard,
189
+ position: 8,
190
+ component: ReplicatorMessagesCard,
191
+ props: ({ data: { stats } }) => ({ database: stats.database })
192
+ }),
193
+ Surface.create({
194
+ id: "card.queries",
195
+ filter: devtoolsCard,
196
+ position: 9,
197
+ component: QueriesCardSurface
198
+ }),
199
+ Surface.create({
200
+ id: "card.sync",
201
+ filter: devtoolsCard,
202
+ position: 11,
203
+ component: SyncCardSurface
204
+ }),
205
+ Surface.create({
206
+ id: "card.indexer",
207
+ filter: devtoolsCard,
208
+ position: 12,
209
+ component: IndexerCardSurface
210
+ }),
211
+ Surface.create({
212
+ id: "card.timeSeries",
213
+ filter: devtoolsCard,
214
+ position: 13,
215
+ component: TimeSeriesCard
216
+ }),
116
217
  Surface.create({
117
218
  id: "client.config",
118
- filter: AppSurface.literal(AppSurface.Article, Devtools.Client.Config),
119
- component: ConfigPanel,
120
- props: () => ({ vaultSelector: false })
219
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Client.Config),
220
+ component: ConfigArticle,
221
+ props: ({ role }) => ({
222
+ role,
223
+ vaultSelector: false
224
+ })
121
225
  }),
122
226
  Surface.create({
123
227
  id: "client.storage",
124
- filter: AppSurface.literal(AppSurface.Article, Devtools.Client.Storage),
125
- component: StoragePanel
228
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Client.Storage),
229
+ component: StorageArticle,
230
+ props: ({ role }) => ({ role })
126
231
  }),
127
232
  Surface.create({
128
233
  id: "client.sqlite",
129
- filter: AppSurface.literal(AppSurface.Article, Devtools.Client.Sqlite),
130
- component: SqlitePanel
234
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Client.Sqlite),
235
+ component: SqliteArticle,
236
+ props: ({ role }) => ({ role })
131
237
  }),
132
238
  Surface.create({
133
239
  id: "client.logs",
134
- filter: AppSurface.literal(AppSurface.Article, Devtools.Client.Logs),
135
- component: LoggingPanel
240
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Client.Logs),
241
+ component: LoggingArticle,
242
+ props: ({ role }) => ({ role })
136
243
  }),
137
244
  Surface.create({
138
245
  id: "client.diagnostics",
139
- filter: AppSurface.literal(AppSurface.Article, Devtools.Client.Diagnostics),
140
- component: DiagnosticsPanel
246
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Client.Diagnostics),
247
+ component: DiagnosticsArticle,
248
+ props: ({ role }) => ({ role })
141
249
  }),
142
250
  Surface.create({
143
251
  id: "halo.identity",
144
- filter: AppSurface.literal(AppSurface.Article, Devtools.Halo.Identity),
145
- component: IdentityPanel
252
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Halo.Identity),
253
+ component: IdentityArticle,
254
+ props: ({ role }) => ({ role })
146
255
  }),
147
256
  Surface.create({
148
257
  id: "halo.devices",
149
- filter: AppSurface.literal(AppSurface.Article, Devtools.Halo.Devices),
150
- component: DeviceListPanel
258
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Halo.Devices),
259
+ component: DeviceListArticle,
260
+ props: ({ role }) => ({ role })
151
261
  }),
152
262
  Surface.create({
153
263
  id: "halo.keyring",
154
- filter: AppSurface.literal(AppSurface.Article, Devtools.Halo.Keyring),
155
- component: KeyringPanel
264
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Halo.Keyring),
265
+ component: KeyringArticle,
266
+ props: ({ role }) => ({ role })
156
267
  }),
157
268
  Surface.create({
158
269
  id: "halo.credentials",
159
- filter: AppSurface.literal(AppSurface.Article, Devtools.Halo.Credentials),
270
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Halo.Credentials),
160
271
  component: ActiveSpacePanel,
161
- props: () => ({ Panel: CredentialsPanel })
272
+ props: ({ role }) => ({
273
+ role,
274
+ Panel: CredentialsArticle
275
+ })
162
276
  }),
163
277
  Surface.create({
164
278
  id: "echo.spaces",
165
- filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Spaces),
166
- component: SpaceListSurface
279
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Spaces),
280
+ component: SpaceListSurface,
281
+ props: ({ role, data: { onNavigate } }) => ({
282
+ role,
283
+ onNavigate
284
+ })
167
285
  }),
168
286
  Surface.create({
169
287
  id: "echo.space",
170
- filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Space),
171
- component: SpaceInfoSurface
288
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Space),
289
+ component: SpaceInfoSurface,
290
+ props: ({ role, data: { onNavigate } }) => ({
291
+ role,
292
+ onNavigate
293
+ })
172
294
  }),
173
295
  Surface.create({
174
296
  id: "echo.feeds",
175
- filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Feeds),
297
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Feeds),
176
298
  component: ActiveSpacePanel,
177
- props: () => ({ Panel: FeedsPanel })
299
+ props: ({ role }) => ({
300
+ role,
301
+ Panel: FeedsArticle
302
+ })
178
303
  }),
179
304
  Surface.create({
180
305
  id: "echo.objects",
181
- filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Objects),
306
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Objects),
182
307
  component: ActiveSpacePanel,
183
- props: () => ({ Panel: ObjectsPanel })
308
+ props: ({ role }) => ({
309
+ role,
310
+ Panel: ObjectsArticle
311
+ })
312
+ }),
313
+ Surface.create({
314
+ id: "echo.queries",
315
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Queries),
316
+ component: QueriesArticle,
317
+ props: ({ role }) => ({ role })
184
318
  }),
185
319
  Surface.create({
186
320
  id: "echo.schema",
187
- filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Schema),
321
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Schema),
188
322
  component: ActiveSpacePanel,
189
- props: () => ({ Panel: SchemaPanel })
323
+ props: ({ role }) => ({
324
+ role,
325
+ Panel: SchemaArticle
326
+ })
190
327
  }),
191
328
  Surface.create({
192
329
  id: "echo.automerge",
193
- filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Automerge),
330
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Automerge),
194
331
  component: ActiveSpacePanel,
195
- props: () => ({ Panel: AutomergePanel })
332
+ props: ({ role }) => ({
333
+ role,
334
+ Panel: AutomergeArticle
335
+ })
196
336
  }),
197
337
  Surface.create({
198
338
  id: "echo.queues",
199
- filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Queues),
200
- component: QueuesPanel
339
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Queues),
340
+ component: QueuesArticle,
341
+ props: ({ role }) => ({ role })
201
342
  }),
202
343
  Surface.create({
203
344
  id: "echo.members",
204
- filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Members),
345
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Members),
205
346
  component: ActiveSpacePanel,
206
- props: () => ({ Panel: MembersPanel })
347
+ props: ({ role }) => ({
348
+ role,
349
+ Panel: MembersArticle
350
+ })
207
351
  }),
208
352
  Surface.create({
209
353
  id: "echo.metadata",
210
- filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Metadata),
211
- component: MetadataPanel
354
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Echo.Metadata),
355
+ component: MetadataArticle,
356
+ props: ({ role }) => ({ role })
212
357
  }),
213
358
  Surface.create({
214
359
  id: "mesh.signal",
215
- filter: AppSurface.literal(AppSurface.Article, Devtools.Mesh.Signal),
216
- component: SignalPanel
360
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Mesh.Signal),
361
+ component: SignalArticle,
362
+ props: ({ role }) => ({ role })
217
363
  }),
218
364
  Surface.create({
219
365
  id: "mesh.swarm",
220
- filter: AppSurface.literal(AppSurface.Article, Devtools.Mesh.Swarm),
221
- component: SwarmPanel
366
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Mesh.Swarm),
367
+ component: SwarmArticle,
368
+ props: ({ role }) => ({ role })
222
369
  }),
223
370
  Surface.create({
224
371
  id: "mesh.network",
225
- filter: AppSurface.literal(AppSurface.Article, Devtools.Mesh.Network),
372
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Mesh.Network),
226
373
  component: ActiveSpacePanel,
227
- props: () => ({ Panel: NetworkPanel })
374
+ props: ({ role }) => ({
375
+ role,
376
+ Panel: NetworkArticle
377
+ })
228
378
  }),
229
379
  Surface.create({
230
380
  id: "edge.dashboard",
231
- filter: AppSurface.literal(AppSurface.Article, Devtools.Edge.Dashboard),
232
- component: EdgeDashboardPanel
381
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Edge.Dashboard),
382
+ component: EdgeDashboardArticle,
383
+ props: ({ role }) => ({ role })
233
384
  }),
234
385
  Surface.create({
235
386
  id: "edge.workflows",
236
- filter: AppSurface.literal(AppSurface.Article, Devtools.Edge.Workflows),
387
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Edge.Workflows),
237
388
  component: ActiveSpacePanel,
238
- props: () => ({ Panel: WorkflowPanel })
389
+ props: ({ role }) => ({
390
+ role,
391
+ Panel: WorkflowArticle
392
+ })
239
393
  }),
240
394
  Surface.create({
241
395
  id: "edge.traces",
242
- filter: AppSurface.literal(AppSurface.Article, Devtools.Edge.Traces),
243
- component: EdgeTracesSurface
396
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Edge.Traces),
397
+ component: EdgeTracesSurface,
398
+ props: ({ role }) => ({ role })
244
399
  }),
245
400
  Surface.create({
246
401
  id: "edge.testing",
247
- filter: AppSurface.literal(AppSurface.Article, Devtools.Edge.Testing),
248
- component: EdgeTestingSurface
402
+ filter: AppSurface.literal(DebugSurface.Page, Devtools.Edge.Testing),
403
+ component: EdgeTestingSurface,
404
+ props: ({ role }) => ({ role })
249
405
  })
250
406
  ]);
251
407
  }));