@dxos/plugin-debug 0.8.4-main.3fbcb4aa9b → 0.8.4-main.4668b7de9b

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 (108) hide show
  1. package/LICENSE +102 -5
  2. package/PLUGIN.mdl +373 -0
  3. package/README.md +1 -1
  4. package/dist/lib/neutral/{DebugObjectPanel-UJ63CV25.mjs → DebugObjectPanel-OS65NC4M.mjs} +1 -1
  5. package/dist/lib/neutral/{DebugObjectPanel-UJ63CV25.mjs.map → DebugObjectPanel-OS65NC4M.mjs.map} +1 -1
  6. package/dist/lib/neutral/DebugPlugin.mjs +12 -0
  7. package/dist/lib/neutral/DebugPlugin.mjs.map +4 -4
  8. package/dist/lib/neutral/DebugPlugin.workerd.mjs +12 -0
  9. package/dist/lib/neutral/DebugPlugin.workerd.mjs.map +7 -0
  10. package/dist/lib/neutral/{DebugSettings-Z3XADRNK.mjs → DebugSettings-RKYNQIKH.mjs} +5 -6
  11. package/dist/lib/neutral/DebugSettings-RKYNQIKH.mjs.map +7 -0
  12. package/dist/lib/neutral/{DebugSpaceObjectsPanel-NISULU6U.mjs → DebugSpaceObjectsPanel-BHOCFWDJ.mjs} +1 -1
  13. package/dist/lib/neutral/{DebugSpaceObjectsPanel-NISULU6U.mjs.map → DebugSpaceObjectsPanel-BHOCFWDJ.mjs.map} +1 -1
  14. package/dist/lib/neutral/{DebugStatus-YB3KFP7G.mjs → DebugStatus-H2BAHN26.mjs} +2 -1
  15. package/dist/lib/neutral/DebugStatus-H2BAHN26.mjs.map +7 -0
  16. package/dist/lib/neutral/GithubPanel-QJKDJRVQ.mjs +177 -0
  17. package/dist/lib/neutral/GithubPanel-QJKDJRVQ.mjs.map +7 -0
  18. package/dist/lib/neutral/RegistryPanel-64GIYJHN.mjs +161 -0
  19. package/dist/lib/neutral/RegistryPanel-64GIYJHN.mjs.map +7 -0
  20. package/dist/lib/neutral/{SpaceGenerator-UBYB4NPD.mjs → SpaceGenerator-Y35G6DRV.mjs} +9 -6
  21. package/dist/lib/neutral/SpaceGenerator-Y35G6DRV.mjs.map +7 -0
  22. package/dist/lib/neutral/{Wireframe-7SNRUKET.mjs → Wireframe-WD7S2AUU.mjs} +2 -2
  23. package/dist/lib/neutral/Wireframe-WD7S2AUU.mjs.map +7 -0
  24. package/dist/lib/neutral/{app-graph-builder-YPYHL2K5.mjs → app-graph-builder-XYLTBYKN.mjs} +46 -11
  25. package/dist/lib/neutral/app-graph-builder-XYLTBYKN.mjs.map +7 -0
  26. package/dist/lib/neutral/capabilities/index.mjs +2 -2
  27. package/dist/lib/neutral/chunk-HOV6MV5B.mjs +43 -0
  28. package/dist/lib/neutral/chunk-HOV6MV5B.mjs.map +7 -0
  29. package/dist/lib/neutral/{chunk-NFIOTQRZ.mjs → chunk-UAAGABXZ.mjs} +2 -1
  30. package/dist/lib/neutral/{chunk-NFIOTQRZ.mjs.map → chunk-UAAGABXZ.mjs.map} +3 -3
  31. package/dist/lib/neutral/components/index.mjs +39 -48
  32. package/dist/lib/neutral/components/index.mjs.map +3 -3
  33. package/dist/lib/neutral/containers/index.mjs +9 -5
  34. package/dist/lib/neutral/containers/index.mjs.map +3 -3
  35. package/dist/lib/neutral/index.mjs +2 -2
  36. package/dist/lib/neutral/meta.json +1 -1
  37. package/dist/lib/neutral/meta.mjs +1 -1
  38. package/dist/lib/neutral/plugin.mjs +1 -1
  39. package/dist/lib/neutral/{react-surface-NH2H63KW.mjs → react-surface-3MDMZGCA.mjs} +23 -18
  40. package/dist/lib/neutral/react-surface-3MDMZGCA.mjs.map +7 -0
  41. package/dist/lib/neutral/translations.mjs +10 -2
  42. package/dist/lib/neutral/translations.mjs.map +2 -2
  43. package/dist/lib/neutral/types/index.mjs +1 -1
  44. package/dist/types/src/DebugPlugin.d.ts.map +1 -1
  45. package/dist/types/src/DebugPlugin.workerd.d.ts +5 -0
  46. package/dist/types/src/DebugPlugin.workerd.d.ts.map +1 -0
  47. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  48. package/dist/types/src/components/DebugSettings/DebugSettings.d.ts.map +1 -1
  49. package/dist/types/src/components/DebugSettings/DebugSettings.stories.d.ts +8 -1
  50. package/dist/types/src/components/DebugSettings/DebugSettings.stories.d.ts.map +1 -1
  51. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts +2 -3
  52. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -1
  53. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
  54. package/dist/types/src/containers/DebugStatus/DebugStatus.d.ts.map +1 -1
  55. package/dist/types/src/containers/GithubPanel/GithubComponent.d.ts +15 -0
  56. package/dist/types/src/containers/GithubPanel/GithubComponent.d.ts.map +1 -0
  57. package/dist/types/src/containers/GithubPanel/GithubComponent.stories.d.ts +106 -0
  58. package/dist/types/src/containers/GithubPanel/GithubComponent.stories.d.ts.map +1 -0
  59. package/dist/types/src/containers/GithubPanel/GithubPanel.d.ts +3 -0
  60. package/dist/types/src/containers/GithubPanel/GithubPanel.d.ts.map +1 -0
  61. package/dist/types/src/containers/GithubPanel/index.d.ts +2 -0
  62. package/dist/types/src/containers/GithubPanel/index.d.ts.map +1 -0
  63. package/dist/types/src/containers/RegistryPanel/RegistryPanel.d.ts +3 -0
  64. package/dist/types/src/containers/RegistryPanel/RegistryPanel.d.ts.map +1 -0
  65. package/dist/types/src/containers/RegistryPanel/index.d.ts +2 -0
  66. package/dist/types/src/containers/RegistryPanel/index.d.ts.map +1 -0
  67. package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts.map +1 -1
  68. package/dist/types/src/containers/index.d.ts +2 -0
  69. package/dist/types/src/containers/index.d.ts.map +1 -1
  70. package/dist/types/src/meta.d.ts +1 -1
  71. package/dist/types/src/meta.d.ts.map +1 -1
  72. package/dist/types/src/translations.d.ts +8 -1
  73. package/dist/types/src/translations.d.ts.map +1 -1
  74. package/dist/types/src/types/index.d.ts +1 -0
  75. package/dist/types/src/types/index.d.ts.map +1 -1
  76. package/dist/types/tsconfig.tsbuildinfo +1 -1
  77. package/package.json +56 -66
  78. package/src/DebugPlugin.tsx +6 -0
  79. package/src/DebugPlugin.workerd.ts +12 -0
  80. package/src/capabilities/app-graph-builder.ts +38 -10
  81. package/src/capabilities/react-surface.tsx +22 -15
  82. package/src/components/DebugSettings/DebugSettings.tsx +5 -8
  83. package/src/components/SpaceGenerator/ObjectGenerator.tsx +16 -14
  84. package/src/components/SpaceGenerator/presets.ts +13 -14
  85. package/src/containers/DebugObjectPanel/DebugObjectPanel.tsx +2 -2
  86. package/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx +2 -2
  87. package/src/containers/DebugStatus/DebugStatus.tsx +1 -0
  88. package/src/containers/GithubPanel/GithubComponent.stories.tsx +38 -0
  89. package/src/containers/GithubPanel/GithubComponent.tsx +192 -0
  90. package/src/containers/GithubPanel/GithubPanel.tsx +17 -0
  91. package/src/containers/GithubPanel/index.ts +5 -0
  92. package/src/containers/RegistryPanel/RegistryPanel.tsx +150 -0
  93. package/src/containers/RegistryPanel/index.ts +5 -0
  94. package/src/containers/SpaceGenerator/SpaceGenerator.tsx +6 -5
  95. package/src/containers/Wireframe/Wireframe.tsx +1 -1
  96. package/src/containers/index.ts +2 -0
  97. package/src/meta.ts +26 -6
  98. package/src/translations.ts +9 -1
  99. package/src/types/index.ts +1 -0
  100. package/src/vite-env.d.ts +10 -0
  101. package/dist/lib/neutral/DebugSettings-Z3XADRNK.mjs.map +0 -7
  102. package/dist/lib/neutral/DebugStatus-YB3KFP7G.mjs.map +0 -7
  103. package/dist/lib/neutral/SpaceGenerator-UBYB4NPD.mjs.map +0 -7
  104. package/dist/lib/neutral/Wireframe-7SNRUKET.mjs.map +0 -7
  105. package/dist/lib/neutral/app-graph-builder-YPYHL2K5.mjs.map +0 -7
  106. package/dist/lib/neutral/chunk-3OGPOE7H.mjs +0 -20
  107. package/dist/lib/neutral/chunk-3OGPOE7H.mjs.map +0 -7
  108. package/dist/lib/neutral/react-surface-NH2H63KW.mjs.map +0 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-debug",
3
- "version": "0.8.4-main.3fbcb4aa9b",
3
+ "version": "0.8.4-main.4668b7de9b",
4
4
  "description": "DXOS Surface plugin for testing.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -8,7 +8,7 @@
8
8
  "type": "git",
9
9
  "url": "https://github.com/dxos/dxos"
10
10
  },
11
- "license": "MIT",
11
+ "license": "FSL-1.1-Apache-2.0",
12
12
  "author": "DXOS.org",
13
13
  "sideEffects": true,
14
14
  "type": "module",
@@ -35,10 +35,12 @@
35
35
  },
36
36
  "#plugin": {
37
37
  "source": {
38
+ "workerd": "./src/DebugPlugin.workerd.ts",
38
39
  "node": "./src/DebugPlugin.node.ts",
39
40
  "default": "./src/DebugPlugin.tsx"
40
41
  },
41
42
  "types": "./dist/types/src/DebugPlugin.d.ts",
43
+ "workerd": "./dist/lib/neutral/DebugPlugin.workerd.mjs",
42
44
  "node": "./dist/lib/neutral/DebugPlugin.node.mjs",
43
45
  "default": "./dist/lib/neutral/DebugPlugin.mjs"
44
46
  },
@@ -59,6 +61,7 @@
59
61
  "types": "./dist/types/src/index.d.ts",
60
62
  "default": "./dist/lib/neutral/index.mjs"
61
63
  },
64
+ "./assets/PLUGIN.mdl": "./PLUGIN.mdl",
62
65
  "./plugin": {
63
66
  "source": "./src/plugin.ts",
64
67
  "types": "./dist/types/src/plugin.d.ts",
@@ -73,69 +76,56 @@
73
76
  "types": "dist/types/src/index.d.ts",
74
77
  "files": [
75
78
  "dist",
76
- "src"
79
+ "src",
80
+ "PLUGIN.mdl"
77
81
  ],
78
82
  "dependencies": {
79
83
  "@antv/graphlib": "^2.0.4",
80
84
  "@antv/layout": "^1.2.13",
81
- "@automerge/automerge": "3.2.6",
82
- "@effect-atom/atom": "^0.5.1",
83
85
  "@effect-atom/atom-react": "^0.5.0",
84
86
  "@tldraw/tldraw": "^3.0.0",
85
- "date-fns": "^3.6.0",
86
- "react-json-tree": "^0.18.0",
87
87
  "react-resize-detector": "^11.0.1",
88
- "workerize-loader": "^2.0.2",
89
- "@dxos/app-framework": "0.8.4-main.3fbcb4aa9b",
90
- "@dxos/client-services": "0.8.4-main.3fbcb4aa9b",
91
- "@dxos/app-toolkit": "0.8.4-main.3fbcb4aa9b",
92
- "@dxos/async": "0.8.4-main.3fbcb4aa9b",
93
- "@dxos/compute": "0.8.4-main.3fbcb4aa9b",
94
- "@dxos/conductor": "0.8.4-main.3fbcb4aa9b",
95
- "@dxos/compute-hyperformula": "0.8.4-main.3fbcb4aa9b",
96
- "@dxos/context": "0.8.4-main.3fbcb4aa9b",
97
- "@dxos/config": "0.8.4-main.3fbcb4aa9b",
98
- "@dxos/devtools": "0.8.4-main.3fbcb4aa9b",
99
- "@dxos/echo": "0.8.4-main.3fbcb4aa9b",
100
- "@dxos/echo-pipeline": "0.8.4-main.3fbcb4aa9b",
101
- "@dxos/echo-generator": "0.8.4-main.3fbcb4aa9b",
102
- "@dxos/invariant": "0.8.4-main.3fbcb4aa9b",
103
- "@dxos/effect": "0.8.4-main.3fbcb4aa9b",
104
- "@dxos/keys": "0.8.4-main.3fbcb4aa9b",
105
- "@dxos/assistant-toolkit": "0.8.4-main.3fbcb4aa9b",
106
- "@dxos/log": "0.8.4-main.3fbcb4aa9b",
107
- "@dxos/log-store-idb": "0.8.4-main.3fbcb4aa9b",
108
- "@dxos/plugin-client": "0.8.4-main.3fbcb4aa9b",
109
- "@dxos/operation": "0.8.4-main.3fbcb4aa9b",
110
- "@dxos/plugin-deck": "0.8.4-main.3fbcb4aa9b",
111
- "@dxos/plugin-graph": "0.8.4-main.3fbcb4aa9b",
112
- "@dxos/plugin-markdown": "0.8.4-main.3fbcb4aa9b",
113
- "@dxos/plugin-inbox": "0.8.4-main.3fbcb4aa9b",
114
- "@dxos/plugin-sketch": "0.8.4-main.3fbcb4aa9b",
115
- "@dxos/plugin-meeting": "0.8.4-main.3fbcb4aa9b",
116
- "@dxos/plugin-space": "0.8.4-main.3fbcb4aa9b",
117
- "@dxos/plugin-script": "0.8.4-main.3fbcb4aa9b",
118
- "@dxos/plugin-status-bar": "0.8.4-main.3fbcb4aa9b",
119
- "@dxos/plugin-theme": "0.8.4-main.3fbcb4aa9b",
120
- "@dxos/plugin-table": "0.8.4-main.3fbcb4aa9b",
121
- "@dxos/protocols": "0.8.4-main.3fbcb4aa9b",
122
- "@dxos/react-client": "0.8.4-main.3fbcb4aa9b",
123
- "@dxos/random": "0.8.4-main.3fbcb4aa9b",
124
- "@dxos/react-hooks": "0.8.4-main.3fbcb4aa9b",
125
- "@dxos/plugin-sheet": "0.8.4-main.3fbcb4aa9b",
126
- "@dxos/react-ui-attention": "0.8.4-main.3fbcb4aa9b",
127
- "@dxos/react-ui-canvas-editor": "0.8.4-main.3fbcb4aa9b",
128
- "@dxos/react-ui-canvas-compute": "0.8.4-main.3fbcb4aa9b",
129
- "@dxos/react-ui-introspect": "0.8.4-main.3fbcb4aa9b",
130
- "@dxos/react-ui-form": "0.8.4-main.3fbcb4aa9b",
131
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.3fbcb4aa9b",
132
- "@dxos/react-ui-stack": "0.8.4-main.3fbcb4aa9b",
133
- "@dxos/react-ui-table": "0.8.4-main.3fbcb4aa9b",
134
- "@dxos/react-ui-mosaic": "0.8.4-main.3fbcb4aa9b",
135
- "@dxos/schema": "0.8.4-main.3fbcb4aa9b",
136
- "@dxos/types": "0.8.4-main.3fbcb4aa9b",
137
- "@dxos/util": "0.8.4-main.3fbcb4aa9b",
138
- "@dxos/tracing": "0.8.4-main.3fbcb4aa9b"
88
+ "@dxos/app-toolkit": "0.8.4-main.4668b7de9b",
89
+ "@dxos/app-framework": "0.8.4-main.4668b7de9b",
90
+ "@dxos/async": "0.8.4-main.4668b7de9b",
91
+ "@dxos/client-services": "0.8.4-main.4668b7de9b",
92
+ "@dxos/compute": "0.8.4-main.4668b7de9b",
93
+ "@dxos/compute-hyperformula": "0.8.4-main.4668b7de9b",
94
+ "@dxos/config": "0.8.4-main.4668b7de9b",
95
+ "@dxos/conductor": "0.8.4-main.4668b7de9b",
96
+ "@dxos/devtools": "0.8.4-main.4668b7de9b",
97
+ "@dxos/echo": "0.8.4-main.4668b7de9b",
98
+ "@dxos/echo-pipeline": "0.8.4-main.4668b7de9b",
99
+ "@dxos/effect": "0.8.4-main.4668b7de9b",
100
+ "@dxos/invariant": "0.8.4-main.4668b7de9b",
101
+ "@dxos/keys": "0.8.4-main.4668b7de9b",
102
+ "@dxos/log-store-idb": "0.8.4-main.4668b7de9b",
103
+ "@dxos/log": "0.8.4-main.4668b7de9b",
104
+ "@dxos/plugin-client": "0.8.4-main.4668b7de9b",
105
+ "@dxos/operation": "0.8.4-main.4668b7de9b",
106
+ "@dxos/plugin-graph": "0.8.4-main.4668b7de9b",
107
+ "@dxos/assistant-toolkit": "0.8.4-main.4668b7de9b",
108
+ "@dxos/plugin-markdown": "0.8.4-main.4668b7de9b",
109
+ "@dxos/plugin-inbox": "0.8.4-main.4668b7de9b",
110
+ "@dxos/plugin-sketch": "0.8.4-main.4668b7de9b",
111
+ "@dxos/plugin-sheet": "0.8.4-main.4668b7de9b",
112
+ "@dxos/plugin-space": "0.8.4-main.4668b7de9b",
113
+ "@dxos/protocols": "0.8.4-main.4668b7de9b",
114
+ "@dxos/plugin-status-bar": "0.8.4-main.4668b7de9b",
115
+ "@dxos/random": "0.8.4-main.4668b7de9b",
116
+ "@dxos/react-client": "0.8.4-main.4668b7de9b",
117
+ "@dxos/react-ui-attention": "0.8.4-main.4668b7de9b",
118
+ "@dxos/react-ui-canvas-editor": "0.8.4-main.4668b7de9b",
119
+ "@dxos/react-ui-canvas-compute": "0.8.4-main.4668b7de9b",
120
+ "@dxos/plugin-script": "0.8.4-main.4668b7de9b",
121
+ "@dxos/react-ui-form": "0.8.4-main.4668b7de9b",
122
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.4668b7de9b",
123
+ "@dxos/react-ui-introspect": "0.8.4-main.4668b7de9b",
124
+ "@dxos/react-ui-table": "0.8.4-main.4668b7de9b",
125
+ "@dxos/schema": "0.8.4-main.4668b7de9b",
126
+ "@dxos/tracing": "0.8.4-main.4668b7de9b",
127
+ "@dxos/types": "0.8.4-main.4668b7de9b",
128
+ "@dxos/util": "0.8.4-main.4668b7de9b"
139
129
  },
140
130
  "devDependencies": {
141
131
  "@effect-atom/atom-react": "^0.5.0",
@@ -145,11 +135,11 @@
145
135
  "effect": "3.20.0",
146
136
  "react": "~19.2.3",
147
137
  "react-dom": "~19.2.3",
148
- "vite": "^8.0.10",
149
- "@dxos/plugin-testing": "0.8.4-main.3fbcb4aa9b",
150
- "@dxos/react-ui": "0.8.4-main.3fbcb4aa9b",
151
- "@dxos/storybook-utils": "0.8.4-main.3fbcb4aa9b",
152
- "@dxos/ui-theme": "0.8.4-main.3fbcb4aa9b"
138
+ "vite": "^8.0.14",
139
+ "@dxos/plugin-testing": "0.8.4-main.4668b7de9b",
140
+ "@dxos/react-ui": "0.8.4-main.4668b7de9b",
141
+ "@dxos/storybook-utils": "0.8.4-main.4668b7de9b",
142
+ "@dxos/ui-theme": "0.8.4-main.4668b7de9b"
153
143
  },
154
144
  "peerDependencies": {
155
145
  "@effect-atom/atom-react": "^0.5.0",
@@ -157,9 +147,9 @@
157
147
  "effect": "3.20.0",
158
148
  "react": "~19.2.3",
159
149
  "react-dom": "~19.2.3",
160
- "@dxos/random": "0.8.4-main.3fbcb4aa9b",
161
- "@dxos/ui-theme": "0.8.4-main.3fbcb4aa9b",
162
- "@dxos/react-ui": "0.8.4-main.3fbcb4aa9b"
150
+ "@dxos/ui-theme": "0.8.4-main.4668b7de9b",
151
+ "@dxos/random": "0.8.4-main.4668b7de9b",
152
+ "@dxos/react-ui": "0.8.4-main.4668b7de9b"
163
153
  },
164
154
  "publishConfig": {
165
155
  "access": "public"
@@ -13,6 +13,9 @@ import { meta } from '#meta';
13
13
  import { translations } from '#translations';
14
14
  import { type DebugPluginOptions } from '#types';
15
15
 
16
+ // eslint-disable-next-line import/no-relative-packages
17
+ import pluginSpec from '../PLUGIN.mdl?raw';
18
+
16
19
  // TODO(wittjosiah): Factor out DevtoolsPlugin?
17
20
 
18
21
  export const DebugPlugin = Plugin.define<DebugPluginOptions>(meta).pipe(
@@ -30,6 +33,9 @@ export const DebugPlugin = Plugin.define<DebugPluginOptions>(meta).pipe(
30
33
  activatesOn: ActivationEvents.Startup,
31
34
  activate: () => Effect.sync(() => setupDevtools()),
32
35
  }),
36
+ AppPlugin.addPluginAssetModule({
37
+ asset: { pluginId: meta.id, path: 'PLUGIN.mdl', content: pluginSpec, mimeType: 'application/x-mdl' },
38
+ }),
33
39
  Plugin.make,
34
40
  );
35
41
 
@@ -0,0 +1,12 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { Plugin } from '@dxos/app-framework';
6
+
7
+ import { meta } from '#meta';
8
+ import { type DebugPluginOptions } from '#types';
9
+
10
+ export const DebugPlugin = Plugin.define<DebugPluginOptions>(meta).pipe(Plugin.make);
11
+
12
+ export default DebugPlugin;
@@ -19,6 +19,25 @@ const DEVTOOLS_TYPE = `${meta.id}.devtools`;
19
19
  export default Capability.makeModule(
20
20
  Effect.fnUntraced(function* () {
21
21
  const extensions = yield* Effect.all([
22
+ GraphBuilder.createExtension({
23
+ id: 'root',
24
+ match: NodeMatcher.whenRoot,
25
+ actions: () =>
26
+ Effect.succeed([
27
+ Node.makeAction({
28
+ id: 'resetData',
29
+ data: () =>
30
+ Effect.sync(() => {
31
+ window.location.href = '/reset.html#continue';
32
+ }),
33
+ properties: {
34
+ label: ['reset-data.label', { ns: meta.id }],
35
+ icon: 'ph--warning--regular',
36
+ },
37
+ }),
38
+ ]),
39
+ }),
40
+
22
41
  GraphBuilder.createExtension({
23
42
  id: 'devtools',
24
43
  match: NodeMatcher.whenAny(NodeMatcher.whenRoot, NodeMatcher.whenNodeType(SPACE_TYPE)),
@@ -40,11 +59,11 @@ export default Capability.makeModule(
40
59
  label: ['devtools.label', { ns: meta.id }],
41
60
  icon: 'ph--hammer--regular',
42
61
  disposition: 'pin-end',
43
- position: 'fallback',
62
+ position: 'last',
44
63
  },
45
64
  nodes: [
46
65
  Node.make({
47
- id: 'app-graph',
66
+ id: 'appGraph',
48
67
  type: `${meta.id}.app-graph`,
49
68
  data: { graph: graph?.graph, root: node.id === Node.RootId ? node.id : getParentId(node.id) },
50
69
  properties: {
@@ -53,7 +72,7 @@ export default Capability.makeModule(
53
72
  },
54
73
  }),
55
74
  Node.make({
56
- id: 'tools-explorer',
75
+ id: 'toolsExplorer',
57
76
  data: Devtools.ToolsExplorer,
58
77
  type: DEVTOOLS_TYPE,
59
78
  properties: {
@@ -222,6 +241,15 @@ export default Capability.makeModule(
222
241
  icon: 'ph--database--regular',
223
242
  },
224
243
  }),
244
+ Node.make({
245
+ id: Devtools.Echo.Registry,
246
+ data: Devtools.Echo.Registry,
247
+ type: DEVTOOLS_TYPE,
248
+ properties: {
249
+ label: ['registry.label', { ns: meta.id }],
250
+ icon: 'ph--books--regular',
251
+ },
252
+ }),
225
253
  Node.make({
226
254
  id: Devtools.Echo.Automerge,
227
255
  data: Devtools.Echo.Automerge,
@@ -353,7 +381,7 @@ export default Capability.makeModule(
353
381
 
354
382
  // Debug object companion.
355
383
  GraphBuilder.createExtension({
356
- id: 'debug-object',
384
+ id: 'debugObject',
357
385
  match: NodeMatcher.whenEchoObject,
358
386
  connector: () =>
359
387
  Effect.succeed([
@@ -362,14 +390,14 @@ export default Capability.makeModule(
362
390
  label: ['debug.label', { ns: meta.id }],
363
391
  icon: 'ph--bug--regular',
364
392
  data: 'debug',
365
- position: 'fallback',
393
+ position: 'last',
366
394
  }),
367
395
  ]),
368
396
  }),
369
397
 
370
398
  // Devtools deck companion.
371
399
  GraphBuilder.createExtension({
372
- id: 'devtools-overview',
400
+ id: 'devtoolsOverview',
373
401
  match: NodeMatcher.whenRoot,
374
402
  connector: () =>
375
403
  Effect.succeed([
@@ -378,23 +406,23 @@ export default Capability.makeModule(
378
406
  label: ['devtools-overview.label', { ns: meta.id }],
379
407
  icon: 'ph--equalizer--regular',
380
408
  data: 'devtools' as const,
381
- position: 'fallback',
409
+ position: 'last',
382
410
  }),
383
411
  ]),
384
412
  }),
385
413
 
386
414
  // Object explorer.
387
415
  GraphBuilder.createExtension({
388
- id: 'space-objects',
416
+ id: 'spaceObjects',
389
417
  match: NodeMatcher.whenRoot,
390
418
  connector: () =>
391
419
  Effect.succeed([
392
420
  AppNode.makeDeckCompanion({
393
- id: 'space-objects',
421
+ id: 'spaceObjects',
394
422
  label: ['space-objects.label', { ns: meta.id }],
395
423
  icon: 'ph--cube--regular',
396
424
  data: 'space-objects' as const,
397
- position: 'fallback',
425
+ position: 'last',
398
426
  }),
399
427
  ]),
400
428
  }),
@@ -3,11 +3,12 @@
3
3
  //
4
4
 
5
5
  import * as Effect from 'effect/Effect';
6
+ import * as Option from 'effect/Option';
6
7
  import React, { useCallback } from 'react';
7
8
 
8
9
  import { Capabilities, Capability } from '@dxos/app-framework';
9
10
  import { Surface, useOperationInvoker, useSettingsState } from '@dxos/app-framework/ui';
10
- import { AppCapabilities, LayoutOperation, getObjectPathFromObject } from '@dxos/app-toolkit';
11
+ import { AppCapabilities, LayoutOperation, RootCollectionAnnotation, getObjectPathFromObject } from '@dxos/app-toolkit';
11
12
  import { AppSurface, useActiveSpace } from '@dxos/app-toolkit/ui';
12
13
  import {
13
14
  AutomergePanel,
@@ -35,8 +36,7 @@ import {
35
36
  TestingPanel,
36
37
  WorkflowPanel,
37
38
  } from '@dxos/devtools';
38
- import { Feed, Obj } from '@dxos/echo';
39
- import { Collection } from '@dxos/echo';
39
+ import { Annotation, Collection, Feed, Obj } from '@dxos/echo';
40
40
  import { log } from '@dxos/log';
41
41
  import { type IdbLogStore } from '@dxos/log-store-idb';
42
42
  import { type Graph } from '@dxos/plugin-graph';
@@ -52,6 +52,7 @@ import {
52
52
  DebugSpaceObjectsPanel,
53
53
  DebugStatus,
54
54
  DevtoolsOverviewContainer,
55
+ RegistryPanel,
55
56
  SpaceGenerator,
56
57
  Wireframe,
57
58
  } from '#containers';
@@ -92,7 +93,7 @@ export default Capability.makeModule(
92
93
 
93
94
  return Capability.contributes(Capabilities.ReactSurface, [
94
95
  Surface.create({
95
- id: 'plugin-settings',
96
+ id: 'pluginSettings',
96
97
  filter: AppSurface.settings(AppSurface.Article, meta.id),
97
98
  component: ({ data: { subject } }) => {
98
99
  const { settings, updateSettings } = useSettingsState<Settings.Settings>(subject.atom);
@@ -121,7 +122,8 @@ export default Capability.makeModule(
121
122
 
122
123
  const collection =
123
124
  data.subject.space.state.get() === SpaceState.SPACE_READY &&
124
- data.subject.space.properties[Collection.Collection.typename]?.target;
125
+ Annotation.get(data.subject.space.properties, RootCollectionAnnotation).pipe(Option.getOrUndefined)
126
+ ?.target;
125
127
  if (!Obj.instanceOf(Collection.Collection, collection)) {
126
128
  return;
127
129
  }
@@ -140,21 +142,26 @@ export default Capability.makeModule(
140
142
  },
141
143
  }),
142
144
  Surface.create({
143
- id: 'app-graph',
145
+ id: 'appGraph',
144
146
  role: 'article',
145
147
  filter: (data): data is { subject: GraphDebug } => isGraphDebug(data.subject),
146
148
  component: ({ data }) => <DebugGraph graph={data.subject.graph} root={data.subject.root} />,
147
149
  }),
148
150
  Surface.create({
149
- id: 'tools-explorer',
151
+ id: 'toolsExplorer',
150
152
  filter: AppSurface.literal(AppSurface.Article, Devtools.ToolsExplorer),
151
153
  component: () => <ToolsExplorer serverUrl={MCP_SERVER_URL} />,
152
154
  }),
155
+ Surface.create({
156
+ id: 'registry',
157
+ filter: AppSurface.literal(AppSurface.Article, Devtools.Echo.Registry),
158
+ component: () => <RegistryPanel />,
159
+ }),
153
160
  Surface.create({
154
161
  id: 'wireframe',
155
162
  // TODO(wittjosiah): Split into multiple surfaces if this filter proves too strict for non-article roles.
156
163
  role: ['article', 'section'],
157
- position: 'hoist',
164
+ position: 'first',
158
165
  filter: (data): data is { subject: Obj.Unknown } => {
159
166
  const settings = registry.get(settingsAtom);
160
167
  return Obj.isObject(data.subject) && !!settings.wireframe;
@@ -164,7 +171,7 @@ export default Capability.makeModule(
164
171
  ),
165
172
  }),
166
173
  Surface.create({
167
- id: 'object-debug',
174
+ id: 'objectDebug',
168
175
  filter: AppSurface.allOf(
169
176
  AppSurface.literal(AppSurface.Article, 'debug'),
170
177
  AppSurface.companion(AppSurface.Article),
@@ -172,12 +179,12 @@ export default Capability.makeModule(
172
179
  component: ({ role, data }) => <DebugObjectPanel role={role} companionTo={data.companionTo} />,
173
180
  }),
174
181
  Surface.create({
175
- id: 'devtools-overview',
182
+ id: 'devtoolsOverview',
176
183
  filter: AppSurface.literal(Surface.makeType<{ subject: string }>('deck-companion--devtools'), 'devtools'),
177
184
  component: () => <DevtoolsOverviewContainer />,
178
185
  }),
179
186
  Surface.create({
180
- id: 'space-objects',
187
+ id: 'spaceObjects',
181
188
  filter: AppSurface.literal(
182
189
  Surface.makeType<{ subject: string }>('deck-companion--space-objects'),
183
190
  'space-objects',
@@ -193,9 +200,9 @@ export default Capability.makeModule(
193
200
  }),
194
201
 
195
202
  Surface.create({
196
- id: 'status',
203
+ id: 'debugStatus',
197
204
  role: 'status-indicator',
198
- position: 'hoist',
205
+ position: 'first',
199
206
  component: () => <DebugStatus />,
200
207
  }),
201
208
 
@@ -398,8 +405,8 @@ export default Capability.makeModule(
398
405
  }
399
406
 
400
407
  const feed = space.properties.invocationTraceFeed?.target;
401
- const queueDxn = feed ? Feed.getQueueDxn(feed) : undefined;
402
- return <InvocationTraceContainer db={space.db} queueDxn={queueDxn} detailAxis='block' />;
408
+ const feedDXN = feed ? Feed.getQueueUri(feed) : undefined;
409
+ return <InvocationTraceContainer db={space.db} feedDXN={feedDXN} detailAxis='block' />;
403
410
  },
404
411
  }),
405
412
  Surface.create({
@@ -10,7 +10,7 @@ import { type ConfigProto, SaveConfig, Storage, defs } from '@dxos/config';
10
10
  import { log } from '@dxos/log';
11
11
  import { type IdbLogStore } from '@dxos/log-store-idb';
12
12
  import { useClient } from '@dxos/react-client';
13
- import { Icon, IconButton, Input, Select, Toast, useFileDownload, useTranslation } from '@dxos/react-ui';
13
+ import { IconButton, Input, Select, Toast, useFileDownload, useTranslation } from '@dxos/react-ui';
14
14
  import { Settings as SettingsForm } from '@dxos/react-ui-form';
15
15
  import { TRACE_ALL_KEY } from '@dxos/tracing';
16
16
  import { setDeep } from '@dxos/util';
@@ -209,13 +209,10 @@ export const DebugSettings = ({ settings, onSettingsChange, logStore, onUpload }
209
209
  {/* TODO(burdon): Move to layout? */}
210
210
  {toast && (
211
211
  <Toast.Root>
212
- <Toast.Body>
213
- <Toast.Title>
214
- <Icon icon='ph--gift--duotone' classNames='inline mr-1' />
215
- <span>{toast.title}</span>
216
- </Toast.Title>
217
- {toast.description && <Toast.Description>{toast.description}</Toast.Description>}
218
- </Toast.Body>
212
+ <Toast.Title icon='ph--gift--duotone'>
213
+ <span>{toast.title}</span>
214
+ </Toast.Title>
215
+ {toast.description && <Toast.Description>{toast.description}</Toast.Description>}
219
216
  </Toast.Root>
220
217
  )}
221
218
 
@@ -2,12 +2,9 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import type * as Schema from 'effect/Schema';
6
-
7
5
  import { addressToA1Notation } from '@dxos/compute-hyperformula';
8
6
  import { ComputeGraph, ComputeGraphModel, DEFAULT_OUTPUT, NODE_INPUT, NODE_OUTPUT } from '@dxos/conductor';
9
- import { DXN, Filter, Key, type Type } from '@dxos/echo';
10
- import { View } from '@dxos/echo';
7
+ import { EID, Filter, Key, Type, View } from '@dxos/echo';
11
8
  import { OperationInvoker } from '@dxos/operation';
12
9
  import { Markdown } from '@dxos/plugin-markdown';
13
10
  import { Sheet } from '@dxos/plugin-sheet';
@@ -32,16 +29,21 @@ export const createGenerator = <S extends Type.AnyObj>(
32
29
  client: Client,
33
30
  invokePromise: OperationInvoker.OperationInvoker['invokePromise'],
34
31
  schema: S,
35
- ): ObjectGenerator<Schema.Schema.Type<S>> => {
36
- return async (space: Space, n: number): Promise<Schema.Schema.Type<S>[]> => {
37
- const typename = schema.typename;
32
+ ): ObjectGenerator<Type.InstanceType<S>> => {
33
+ return async (space: Space, n: number): Promise<Type.InstanceType<S>[]> => {
34
+ const typename = Type.getTypename(schema);
38
35
 
39
36
  // Find or create table and view.
40
37
  const views = await space.db.query(Filter.type(View.View)).run();
41
38
  const view = await findViewByTypename(views, typename);
42
- const staticSchema = client?.graph.schemaRegistry.query({ typename }).runSync()[0];
39
+ const staticSchema = client
40
+ ? client.graph.registry
41
+ .list()
42
+ .filter(Type.isType)
43
+ .find((s) => Type.getTypename(s) === typename)
44
+ : undefined;
43
45
  if (!view && !staticSchema) {
44
- await invokePromise(SpaceOperation.AddSchema, { db: space.db, schema, show: false });
46
+ await invokePromise(SpaceOperation.AddType, { db: space.db, type: schema, show: false });
45
47
  }
46
48
 
47
49
  // Create objects.
@@ -52,7 +54,7 @@ export const createGenerator = <S extends Type.AnyObj>(
52
54
 
53
55
  export const staticGenerators = new Map<string, ObjectGenerator<any>>([
54
56
  [
55
- Markdown.Document.typename,
57
+ Type.getTypename(Markdown.Document),
56
58
  async (space, n, cb) => {
57
59
  const objects = range(n).map(() => {
58
60
  return space.db.add(
@@ -68,7 +70,7 @@ export const staticGenerators = new Map<string, ObjectGenerator<any>>([
68
70
  },
69
71
  ],
70
72
  [
71
- Sketch.Sketch.typename,
73
+ Type.getTypename(Sketch.Sketch),
72
74
  async (space, n, cb) => {
73
75
  const objects = range(n).map(() => {
74
76
  const obj = space.db.add(Sketch.make({ name: random.commerce.productName() }));
@@ -81,7 +83,7 @@ export const staticGenerators = new Map<string, ObjectGenerator<any>>([
81
83
  ],
82
84
  // TODO(burdon): Create unit tests.
83
85
  [
84
- Sheet.Sheet.typename,
86
+ Type.getTypename(Sheet.Sheet),
85
87
  async (space, n, cb) => {
86
88
  const objects = range(n).map(() => {
87
89
  const cells: Record<string, Sheet.CellValue> = {};
@@ -118,7 +120,7 @@ export const staticGenerators = new Map<string, ObjectGenerator<any>>([
118
120
  },
119
121
  ],
120
122
  [
121
- ComputeGraph.typename,
123
+ Type.getTypename(ComputeGraph),
122
124
  async (space, n, cb) => {
123
125
  const objects = range(n, () => {
124
126
  const model = ComputeGraphModel.create();
@@ -128,7 +130,7 @@ export const staticGenerators = new Map<string, ObjectGenerator<any>>([
128
130
  .createNode({
129
131
  id: 'gpt-QUEUE_ID',
130
132
  type: 'constant',
131
- value: new DXN(DXN.kind.QUEUE, ['data', space.id, Key.ObjectId.random()]).toString(),
133
+ value: EID.make({ spaceId: space.id, entityId: Key.EntityId.random() }),
132
134
  })
133
135
  .createNode({ id: 'gpt-APPEND', type: 'append' })
134
136
  .createNode({ id: 'gpt-OUTPUT', type: NODE_OUTPUT })
@@ -7,8 +7,9 @@ import * as Schema from 'effect/Schema';
7
7
  import { AgentPrompt, WebSearchBlueprint } from '@dxos/assistant-toolkit';
8
8
  import { Routine, Trigger, Operation } from '@dxos/compute';
9
9
  import { type ComputeGraphModel, NODE_INPUT } from '@dxos/conductor';
10
- import { DXN, Feed, Filter, JsonSchema, Key, Obj, Query, type QueryAST, Ref, Tag } from '@dxos/echo';
10
+ import { Feed, Filter, JsonSchema, Key, Obj, Query, type QueryAST, Ref, Scope, Tag } from '@dxos/echo';
11
11
  import { invariant } from '@dxos/invariant';
12
+ import { EID } from '@dxos/keys';
12
13
  import { InboxOperation } from '@dxos/plugin-inbox';
13
14
  import { Mailbox } from '@dxos/plugin-inbox';
14
15
  import { Markdown } from '@dxos/plugin-markdown';
@@ -71,9 +72,9 @@ export const generator = () => ({
71
72
  );
72
73
 
73
74
  const tag = space.db.add(Tag.make({ label: 'Investor' }));
74
- const tagDxn = Obj.getDXN(tag).toString();
75
+ const tagRef = Ref.make(tag);
75
76
  Obj.update(doc, (doc) => {
76
- Obj.getMeta(doc).tags = [tagDxn];
77
+ Obj.getMeta(doc).tags = [tagRef];
77
78
  });
78
79
 
79
80
  // space.db.add(
@@ -85,7 +86,7 @@ export const generator = () => ({
85
86
  // );
86
87
 
87
88
  space.db.add(
88
- Obj.make(Person.Person, { [Obj.Meta]: { tags: [tagDxn] }, fullName: 'Rich', organization: Ref.make(org) }),
89
+ Obj.make(Person.Person, { [Obj.Meta]: { tags: [tagRef] }, fullName: 'Rich', organization: Ref.make(org) }),
89
90
  );
90
91
  space.db.add(
91
92
  Obj.make(Person.Person, {
@@ -120,15 +121,15 @@ export const generator = () => ({
120
121
  invariant(mailbox, 'Mailbox not found');
121
122
  const mailboxFeed = await mailbox.feed?.tryLoad();
122
123
  invariant(mailboxFeed, 'Mailbox missing feed reference');
123
- const queueDxn = Feed.getQueueDxn(mailboxFeed)?.toString();
124
+ const queueDxn = Feed.getQueueUri(mailboxFeed);
124
125
  invariant(queueDxn, 'Mailbox feed missing queue DXN key');
125
126
  const tag = await space.db.query(Filter.type(Tag.Tag, { label: 'Investor' })).first();
126
- const tagDxn = Obj.getDXN(tag).toString();
127
+ const tagUri = Obj.getURI(tag);
127
128
 
128
129
  const objects = range(n, () => {
129
- const contactsQuery = Query.select(Filter.type(Person.Person)).select(Filter.tag(tagDxn));
130
- const organizationsQuery = Query.select(Filter.type(Organization.Organization)).select(Filter.tag(tagDxn));
131
- const notesQuery = Query.select(Filter.type(Markdown.Document)).select(Filter.tag(tagDxn));
130
+ const contactsQuery = Query.select(Filter.type(Person.Person)).select(Filter.tag(tagUri));
131
+ const organizationsQuery = Query.select(Filter.type(Organization.Organization)).select(Filter.tag(tagUri));
132
+ const notesQuery = Query.select(Filter.type(Markdown.Document)).select(Filter.tag(tagUri));
132
133
 
133
134
  space.db.add(
134
135
  Trigger.make({
@@ -178,9 +179,7 @@ export const generator = () => ({
178
179
  Filter.type(Message.Message, {
179
180
  properties: { labels: Filter.contains('investor') },
180
181
  }),
181
- ).from({
182
- queues: [queueDxn],
183
- }),
182
+ ).from(Scope.feed(Obj.getURI(mailboxFeed))),
184
183
  jsonSchema: JsonSchema.toJsonSchema(Message.Message),
185
184
  });
186
185
  const contactsView = ViewModel.make({
@@ -587,7 +586,7 @@ export const generator = () => ({
587
586
  );
588
587
  const queueId = canvasModel.createNode(
589
588
  createConstant({
590
- value: new DXN(DXN.kind.QUEUE, ['data', space.id, Key.ObjectId.random()]).toString(),
589
+ value: EID.make({ spaceId: space.id, entityId: Key.EntityId.random() }),
591
590
  ...position({ x: -10, y: 5 }),
592
591
  }),
593
592
  );
@@ -774,7 +773,7 @@ const setupQueue = (
774
773
  ) => {
775
774
  const queueId = canvasModel.createNode(
776
775
  createConstant({
777
- value: new DXN(DXN.kind.QUEUE, ['data', space.id, Key.ObjectId.random()]).toString(),
776
+ value: EID.make({ spaceId: space.id, entityId: Key.EntityId.random() }),
778
777
  ...(args?.idPosition ? rawPosition(args.idPosition) : position({ x: -18, y: 5, width: 8, height: 6 })),
779
778
  }),
780
779
  );