@dxos/plugin-debug 0.8.4-main.72ec0f3 → 0.8.4-main.937b3ca

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 (111) hide show
  1. package/dist/lib/browser/DebugGraph-6VMEOKEV.mjs +15 -0
  2. package/dist/lib/browser/DebugGraph-6VMEOKEV.mjs.map +7 -0
  3. package/dist/lib/browser/DevtoolsOverviewContainer-77PKFLYV.mjs +19 -0
  4. package/dist/lib/browser/{DevtoolsOverviewContainer-JXVZVPHN.mjs.map → DevtoolsOverviewContainer-77PKFLYV.mjs.map} +1 -1
  5. package/dist/lib/browser/{SpaceGenerator-46TAISVE.mjs → SpaceGenerator-ZHVZWGM7.mjs} +192 -195
  6. package/dist/lib/browser/SpaceGenerator-ZHVZWGM7.mjs.map +7 -0
  7. package/dist/lib/browser/app-graph-builder-FBDRMMYF.mjs +597 -0
  8. package/dist/lib/browser/app-graph-builder-FBDRMMYF.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-SRV2AIGJ.mjs → chunk-4UFQXPP7.mjs} +11 -1
  10. package/dist/lib/browser/chunk-4UFQXPP7.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-WZFZ4ESO.mjs → chunk-A5H5GRV6.mjs} +1 -1
  12. package/dist/lib/browser/chunk-A5H5GRV6.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +33 -38
  14. package/dist/lib/browser/index.mjs.map +4 -4
  15. package/dist/lib/browser/meta.json +1 -1
  16. package/dist/lib/browser/react-context-FSWBT3MH.mjs +17 -0
  17. package/dist/lib/browser/react-context-FSWBT3MH.mjs.map +7 -0
  18. package/dist/lib/browser/react-surface-W62RJ32U.mjs +757 -0
  19. package/dist/lib/browser/react-surface-W62RJ32U.mjs.map +7 -0
  20. package/dist/lib/browser/settings-KA4GN73K.mjs +31 -0
  21. package/dist/lib/browser/settings-KA4GN73K.mjs.map +7 -0
  22. package/dist/types/src/DebugPlugin.d.ts +2 -1
  23. package/dist/types/src/DebugPlugin.d.ts.map +1 -1
  24. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  25. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  26. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  27. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  28. package/dist/types/src/capabilities/index.d.ts +4 -8
  29. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  30. package/dist/types/src/capabilities/react-context/index.d.ts +7 -0
  31. package/dist/types/src/capabilities/react-context/index.d.ts.map +1 -0
  32. package/dist/types/src/capabilities/react-context/react-context.d.ts +10 -0
  33. package/dist/types/src/capabilities/react-context/react-context.d.ts.map +1 -0
  34. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  35. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  36. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  37. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  38. package/dist/types/src/capabilities/settings/index.d.ts +3 -0
  39. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  40. package/dist/types/src/capabilities/settings/settings.d.ts +5 -0
  41. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  42. package/dist/types/src/components/DebugGraph.d.ts +5 -4
  43. package/dist/types/src/components/DebugGraph.d.ts.map +1 -1
  44. package/dist/types/src/components/DebugObjectPanel.d.ts +1 -1
  45. package/dist/types/src/components/DebugObjectPanel.d.ts.map +1 -1
  46. package/dist/types/src/components/DebugSettings.d.ts +4 -2
  47. package/dist/types/src/components/DebugSettings.d.ts.map +1 -1
  48. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts +5 -5
  49. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -1
  50. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts +2 -2
  51. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts.map +1 -1
  52. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts.map +1 -1
  53. package/dist/types/src/components/SpaceGenerator/presets.d.ts +1 -4
  54. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
  55. package/dist/types/src/components/Wireframe.d.ts +1 -1
  56. package/dist/types/src/components/Wireframe.d.ts.map +1 -1
  57. package/dist/types/src/components/index.d.ts +4 -4
  58. package/dist/types/src/components/index.d.ts.map +1 -1
  59. package/dist/types/src/meta.d.ts +2 -2
  60. package/dist/types/src/meta.d.ts.map +1 -1
  61. package/dist/types/src/types.d.ts +5 -0
  62. package/dist/types/src/types.d.ts.map +1 -1
  63. package/dist/types/tsconfig.tsbuildinfo +1 -1
  64. package/package.json +76 -71
  65. package/src/DebugPlugin.tsx +16 -31
  66. package/src/capabilities/app-graph-builder/app-graph-builder.ts +419 -0
  67. package/src/capabilities/app-graph-builder/index.ts +7 -0
  68. package/src/capabilities/index.ts +4 -6
  69. package/src/capabilities/react-context/index.ts +7 -0
  70. package/src/capabilities/react-context/react-context.tsx +20 -0
  71. package/src/capabilities/react-surface/index.ts +7 -0
  72. package/src/capabilities/react-surface/react-surface.tsx +409 -0
  73. package/src/capabilities/settings/index.ts +7 -0
  74. package/src/capabilities/settings/settings.ts +30 -0
  75. package/src/components/DebugGraph.tsx +4 -3
  76. package/src/components/DebugObjectPanel.tsx +4 -4
  77. package/src/components/DebugSettings.tsx +10 -5
  78. package/src/components/SpaceGenerator/ObjectGenerator.tsx +15 -16
  79. package/src/components/SpaceGenerator/SpaceGenerator.stories.tsx +7 -5
  80. package/src/components/SpaceGenerator/SpaceGenerator.tsx +17 -12
  81. package/src/components/SpaceGenerator/presets.ts +151 -37
  82. package/src/components/Wireframe.tsx +2 -2
  83. package/src/components/index.ts +4 -1
  84. package/src/meta.ts +2 -2
  85. package/src/types.ts +8 -0
  86. package/dist/lib/browser/DebugGraph-EDOH6R2G.mjs +0 -20
  87. package/dist/lib/browser/DebugGraph-EDOH6R2G.mjs.map +0 -7
  88. package/dist/lib/browser/DevtoolsOverviewContainer-JXVZVPHN.mjs +0 -25
  89. package/dist/lib/browser/SpaceGenerator-46TAISVE.mjs.map +0 -7
  90. package/dist/lib/browser/app-graph-builder-CRH2HJKT.mjs +0 -588
  91. package/dist/lib/browser/app-graph-builder-CRH2HJKT.mjs.map +0 -7
  92. package/dist/lib/browser/chunk-SRV2AIGJ.mjs.map +0 -7
  93. package/dist/lib/browser/chunk-WZFZ4ESO.mjs.map +0 -7
  94. package/dist/lib/browser/react-context-P2YDWEWI.mjs +0 -16
  95. package/dist/lib/browser/react-context-P2YDWEWI.mjs.map +0 -7
  96. package/dist/lib/browser/react-surface-2SNVZDEA.mjs +0 -774
  97. package/dist/lib/browser/react-surface-2SNVZDEA.mjs.map +0 -7
  98. package/dist/lib/browser/settings-SQXR3OAH.mjs +0 -22
  99. package/dist/lib/browser/settings-SQXR3OAH.mjs.map +0 -7
  100. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  101. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  102. package/dist/types/src/capabilities/react-context.d.ts +0 -8
  103. package/dist/types/src/capabilities/react-context.d.ts.map +0 -1
  104. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  105. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  106. package/dist/types/src/capabilities/settings.d.ts +0 -4
  107. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  108. package/src/capabilities/app-graph-builder.ts +0 -431
  109. package/src/capabilities/react-context.tsx +0 -16
  110. package/src/capabilities/react-surface.tsx +0 -418
  111. package/src/capabilities/settings.ts +0 -19
@@ -1,774 +0,0 @@
1
- import {
2
- Devtools
3
- } from "./chunk-SRV2AIGJ.mjs";
4
- import {
5
- meta
6
- } from "./chunk-WZFZ4ESO.mjs";
7
-
8
- // src/capabilities/react-surface.tsx
9
- import * as Function from "effect/Function";
10
- import React5, { useCallback } from "react";
11
- import { Capabilities as Capabilities2, LayoutAction, chain, contributes, createIntent, createSurface } from "@dxos/app-framework";
12
- import { useCapability, useIntentDispatcher } from "@dxos/app-framework/react";
13
- import { AutomergePanel, ConfigPanel, CredentialsPanel, DeviceListPanel, DiagnosticsPanel, EdgeDashboardPanel, FeedsPanel, IdentityPanel, InvocationTraceContainer, KeyringPanel, LoggingPanel, MembersPanel, MetadataPanel, NetworkPanel, ObjectsPanel, QueuesPanel, SchemaPanel, SignalPanel, SpaceInfoPanel, SpaceListPanel, StoragePanel, SwarmPanel, TestingPanel, TracingPanel, WorkflowPanel } from "@dxos/devtools";
14
- import { Obj as Obj2 } from "@dxos/echo";
15
- import { SettingsStore } from "@dxos/local-storage";
16
- import { log as log2 } from "@dxos/log";
17
- import { ClientCapabilities } from "@dxos/plugin-client";
18
- import { Graph } from "@dxos/plugin-graph";
19
- import { ScriptAction } from "@dxos/plugin-script/types";
20
- import { SpaceAction } from "@dxos/plugin-space/types";
21
- import { SpaceState, isSpace, parseId } from "@dxos/react-client/echo";
22
- import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
23
- import { Collection } from "@dxos/schema";
24
-
25
- // src/components/index.ts
26
- import { lazy } from "react";
27
-
28
- // src/components/DebugObjectPanel.tsx
29
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
30
- import React from "react";
31
- import { Clipboard, Input, Toolbar } from "@dxos/react-ui";
32
- import { StackItem } from "@dxos/react-ui-stack";
33
- import { Json } from "@dxos/react-ui-syntax-highlighter";
34
- var DebugObjectPanel = ({ object }) => {
35
- var _effect = _useSignals();
36
- try {
37
- const dxn = `dxn:echo:@:${object.id}`;
38
- return /* @__PURE__ */ React.createElement(Clipboard.Provider, null, /* @__PURE__ */ React.createElement(StackItem.Content, {
39
- toolbar: true
40
- }, /* @__PURE__ */ React.createElement(Toolbar.Root, null, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.TextInput, {
41
- disabled: true,
42
- value: dxn
43
- }), /* @__PURE__ */ React.createElement(Clipboard.IconButton, {
44
- value: dxn
45
- }))), /* @__PURE__ */ React.createElement(Json, {
46
- data: object
47
- })));
48
- } finally {
49
- _effect.f();
50
- }
51
- };
52
-
53
- // src/components/DebugSettings.tsx
54
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
55
- import React2, { useEffect, useState } from "react";
56
- import { Capabilities } from "@dxos/app-framework";
57
- import { useCapabilities } from "@dxos/app-framework/react";
58
- import { SaveConfig, Storage, defs } from "@dxos/config";
59
- import { log } from "@dxos/log";
60
- import { useClient } from "@dxos/react-client";
61
- import { Icon, IconButton, Input as Input2, Select, Toast, useFileDownload, useTranslation } from "@dxos/react-ui";
62
- import { ControlGroup, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
63
- import { setDeep } from "@dxos/util";
64
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-debug/src/components/DebugSettings.tsx";
65
- var StorageAdapters = {
66
- opfs: defs.Runtime.Client.Storage.StorageDriver.WEBFS,
67
- idb: defs.Runtime.Client.Storage.StorageDriver.IDB
68
- };
69
- var DebugSettings = ({ settings }) => {
70
- var _effect = _useSignals2();
71
- try {
72
- const { t } = useTranslation(meta.id);
73
- const [toast, setToast] = useState();
74
- const client = useClient();
75
- const download = useFileDownload();
76
- const [storageConfig, setStorageConfig] = useState({});
77
- const [upload] = useCapabilities(Capabilities.FileUploader);
78
- useEffect(() => {
79
- void Storage().then((config) => setStorageConfig(config));
80
- }, []);
81
- const handleToast = (toast2) => {
82
- setToast(toast2);
83
- const t2 = setTimeout(() => setToast(void 0), 5e3);
84
- return () => clearTimeout(t2);
85
- };
86
- const handleDownload = async () => {
87
- const data = await client.diagnostics();
88
- const file = new Blob([
89
- JSON.stringify(data, void 0, 2)
90
- ], {
91
- type: "text/plain"
92
- });
93
- const fileName = `composer-${(/* @__PURE__ */ new Date()).toISOString().replace(/\W/g, "-")}.json`;
94
- download(file, fileName);
95
- if (upload) {
96
- const info = await upload(client.spaces.default, new File([
97
- file
98
- ], fileName));
99
- if (!info) {
100
- log.error("diagnostics failed to upload to IPFS", void 0, {
101
- F: __dxlog_file,
102
- L: 59,
103
- S: void 0,
104
- C: (f, a) => f(...a)
105
- });
106
- return;
107
- }
108
- handleToast({
109
- title: t("settings uploaded"),
110
- description: t("settings uploaded to clipboard")
111
- });
112
- const url = client.config.values.runtime.services.ipfs.gateway + "/" + info.cid;
113
- void navigator.clipboard.writeText(url);
114
- handleToast({
115
- title: t("settings uploaded"),
116
- description: t("settings uploaded to clipboard")
117
- });
118
- log.info("diagnostics", {
119
- url
120
- }, {
121
- F: __dxlog_file,
122
- L: 74,
123
- S: void 0,
124
- C: (f, a) => f(...a)
125
- });
126
- }
127
- };
128
- const handleRepair = async () => {
129
- try {
130
- const info = await client.repair();
131
- setStorageConfig(await Storage());
132
- handleToast({
133
- title: t("settings repair success"),
134
- description: JSON.stringify(info, void 0, 2)
135
- });
136
- } catch (err) {
137
- handleToast({
138
- title: t("settings repair failed"),
139
- description: err.message
140
- });
141
- }
142
- };
143
- return /* @__PURE__ */ React2.createElement(ControlPage, null, /* @__PURE__ */ React2.createElement(ControlSection, {
144
- title: t("settings title", {
145
- ns: meta.id
146
- })
147
- }, /* @__PURE__ */ React2.createElement(ControlGroup, null, /* @__PURE__ */ React2.createElement(ControlItemInput, {
148
- title: t("settings wireframe")
149
- }, /* @__PURE__ */ React2.createElement(Input2.Switch, {
150
- checked: settings.wireframe,
151
- onCheckedChange: (checked) => settings.wireframe = !!checked
152
- })), /* @__PURE__ */ React2.createElement(ControlItemInput, {
153
- title: t("settings download diagnostics")
154
- }, /* @__PURE__ */ React2.createElement(IconButton, {
155
- icon: "ph--download-simple--regular",
156
- iconOnly: true,
157
- label: t("settings download diagnostics"),
158
- onClick: handleDownload
159
- })), /* @__PURE__ */ React2.createElement(ControlItemInput, {
160
- title: t("settings repair")
161
- }, /* @__PURE__ */ React2.createElement(IconButton, {
162
- icon: "ph--first-aid-kit--regular",
163
- iconOnly: true,
164
- label: t("settings repair"),
165
- onClick: handleRepair
166
- })), toast && /* @__PURE__ */ React2.createElement(Toast.Root, null, /* @__PURE__ */ React2.createElement(Toast.Body, null, /* @__PURE__ */ React2.createElement(Toast.Title, null, /* @__PURE__ */ React2.createElement(Icon, {
167
- icon: "ph--gift--duotone",
168
- size: 5,
169
- classNames: "inline mr-1"
170
- }), /* @__PURE__ */ React2.createElement("span", null, toast.title)), toast.description && /* @__PURE__ */ React2.createElement(Toast.Description, null, toast.description))), /* @__PURE__ */ React2.createElement(ControlItemInput, {
171
- title: t("settings choose storage adaptor")
172
- }, /* @__PURE__ */ React2.createElement(Select.Root, {
173
- value: Object.entries(StorageAdapters).find(([_name, value]) => value === storageConfig?.runtime?.client?.storage?.dataStore)?.[0],
174
- onValueChange: (value) => {
175
- if (confirm(t("settings storage adapter changed alert"))) {
176
- updateConfig(storageConfig, setStorageConfig, [
177
- "runtime",
178
- "client",
179
- "storage",
180
- "dataStore"
181
- ], StorageAdapters[value]);
182
- }
183
- }
184
- }, /* @__PURE__ */ React2.createElement(Select.TriggerButton, {
185
- placeholder: t("settings data store label")
186
- }), /* @__PURE__ */ React2.createElement(Select.Portal, null, /* @__PURE__ */ React2.createElement(Select.Content, null, /* @__PURE__ */ React2.createElement(Select.Viewport, null, Object.keys(StorageAdapters).map((key) => /* @__PURE__ */ React2.createElement(Select.Option, {
187
- key,
188
- value: key
189
- }, t(`settings storage adaptor ${key} label`)))), /* @__PURE__ */ React2.createElement(Select.Arrow, null))))))));
190
- } finally {
191
- _effect.f();
192
- }
193
- };
194
- var updateConfig = (config, setConfig, path, value) => {
195
- const storageConfigCopy = JSON.parse(JSON.stringify(config ?? {}));
196
- setDeep(storageConfigCopy, path, value);
197
- setConfig(storageConfigCopy);
198
- queueMicrotask(async () => {
199
- await SaveConfig(storageConfigCopy);
200
- });
201
- };
202
-
203
- // src/components/DebugStatus.tsx
204
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
205
- import React3, { useEffect as useEffect2, useRef, useState as useState2 } from "react";
206
- import { TimeoutError } from "@dxos/async";
207
- import { useActiveSpace } from "@dxos/plugin-space";
208
- import { StatusBar } from "@dxos/plugin-status-bar";
209
- import { ConnectionState } from "@dxos/protocols/proto/dxos/client/services";
210
- import { useNetworkStatus } from "@dxos/react-client/mesh";
211
- import { Icon as Icon2 } from "@dxos/react-ui";
212
- var styles = {
213
- success: "text-sky-300 dark:text-green-700",
214
- warning: "text-orange-300 dark:text-orange-600",
215
- error: "text-red-300 dark:text-red-600"
216
- };
217
- var ErrorIndicator = () => {
218
- var _effect = _useSignals3();
219
- try {
220
- const [, forceUpdate] = useState2({});
221
- const errorRef = useRef(null);
222
- useEffect2(() => {
223
- const errorListener = (event) => {
224
- const error = event.error ?? event.reason;
225
- if (errorRef.current !== error) {
226
- errorRef.current = error;
227
- forceUpdate({});
228
- }
229
- };
230
- window.addEventListener("error", errorListener);
231
- window.addEventListener("unhandledrejection", errorListener);
232
- return () => {
233
- window.removeEventListener("error", errorListener);
234
- window.removeEventListener("unhandledrejection", errorListener);
235
- };
236
- }, []);
237
- const handleReset = () => {
238
- errorRef.current = null;
239
- forceUpdate({});
240
- };
241
- if (errorRef.current) {
242
- return /* @__PURE__ */ React3.createElement(StatusBar.Button, {
243
- title: errorRef.current.message,
244
- onClick: handleReset
245
- }, /* @__PURE__ */ React3.createElement(Icon2, {
246
- icon: "ph--warning-circle--duotone",
247
- size: 4,
248
- classNames: styles.error
249
- }));
250
- } else {
251
- return /* @__PURE__ */ React3.createElement(StatusBar.Item, {
252
- title: "No errors."
253
- }, /* @__PURE__ */ React3.createElement(Icon2, {
254
- icon: "ph--check--regular",
255
- size: 4
256
- }));
257
- }
258
- } finally {
259
- _effect.f();
260
- }
261
- };
262
- var SwarmIndicator = () => {
263
- var _effect = _useSignals3();
264
- try {
265
- const [state, setState] = useState2(0);
266
- const { swarm } = useNetworkStatus();
267
- useEffect2(() => {
268
- setState(swarm === ConnectionState.ONLINE ? 0 : 1);
269
- }, [
270
- swarm
271
- ]);
272
- if (state === 0) {
273
- return /* @__PURE__ */ React3.createElement(StatusBar.Item, {
274
- title: "Connected to swarm."
275
- }, /* @__PURE__ */ React3.createElement(Icon2, {
276
- icon: "ph--lightning--regular",
277
- size: 4
278
- }));
279
- } else {
280
- return /* @__PURE__ */ React3.createElement(StatusBar.Item, {
281
- title: "Disconnected from swarm."
282
- }, /* @__PURE__ */ React3.createElement(Icon2, {
283
- icon: "ph--lightning-slash--regular",
284
- size: 4,
285
- classNames: styles.warning
286
- }));
287
- }
288
- } finally {
289
- _effect.f();
290
- }
291
- };
292
- var SavingIndicator = () => {
293
- var _effect = _useSignals3();
294
- try {
295
- const [state, _setState] = useState2(0);
296
- const _space = useActiveSpace();
297
- switch (state) {
298
- case 2:
299
- return /* @__PURE__ */ React3.createElement(StatusBar.Item, {
300
- title: "Edit not saved."
301
- }, /* @__PURE__ */ React3.createElement(Icon2, {
302
- icon: "ph--circle--duotone",
303
- size: 4,
304
- classNames: styles.warning
305
- }));
306
- case 1:
307
- return /* @__PURE__ */ React3.createElement(StatusBar.Item, {
308
- title: "Saving..."
309
- }, /* @__PURE__ */ React3.createElement(Icon2, {
310
- icon: "ph--circle--duotone",
311
- size: 4,
312
- classNames: styles.success
313
- }));
314
- case 0:
315
- default:
316
- return /* @__PURE__ */ React3.createElement(StatusBar.Item, {
317
- title: "Modified indicator."
318
- }, /* @__PURE__ */ React3.createElement(Icon2, {
319
- icon: "ph--circle--duotone",
320
- size: 4
321
- }));
322
- }
323
- } finally {
324
- _effect.f();
325
- }
326
- };
327
- var indicators = [
328
- SavingIndicator,
329
- SwarmIndicator,
330
- ErrorIndicator
331
- ];
332
- var DebugStatus = () => {
333
- var _effect = _useSignals3();
334
- try {
335
- return /* @__PURE__ */ React3.createElement(React3.Fragment, null, indicators.map((Indicator) => /* @__PURE__ */ React3.createElement(Indicator, {
336
- key: Indicator.name
337
- })));
338
- } finally {
339
- _effect.f();
340
- }
341
- };
342
-
343
- // src/components/Wireframe.tsx
344
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
345
- import React4 from "react";
346
- import { useResizeDetector } from "react-resize-detector";
347
- import { Obj } from "@dxos/echo";
348
- import { useAttentionAttributes } from "@dxos/react-ui-attention";
349
- import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
350
- import { mx } from "@dxos/react-ui-theme";
351
- var Wireframe = ({ classNames, label, object }) => {
352
- var _effect = _useSignals4();
353
- try {
354
- const attentionAttrs = useAttentionAttributes(Obj.getDXN(object).toString());
355
- const { width, height, ref } = useResizeDetector();
356
- return /* @__PURE__ */ React4.createElement("div", {
357
- ref,
358
- className: mx("relative grow min-bs-96", classNames),
359
- ...attentionAttrs
360
- }, /* @__PURE__ */ React4.createElement("div", {
361
- className: "absolute inset-2 flex flex-col gap-2 overflow-hidden font-mono"
362
- }, /* @__PURE__ */ React4.createElement("div", {
363
- className: "flex justify-between"
364
- }, /* @__PURE__ */ React4.createElement("div", null, label), /* @__PURE__ */ React4.createElement("div", null, `[${width}x${height}]`)), object && /* @__PURE__ */ React4.createElement(SyntaxHighlighter, {
365
- language: "json",
366
- classNames: "text-xs opacity-75 rounded"
367
- }, JSON.stringify(object, void 0, 2))), /* @__PURE__ */ React4.createElement("svg", {
368
- width,
369
- height,
370
- className: "bg-transparent *:text-subdued"
371
- }, /* @__PURE__ */ React4.createElement("rect", {
372
- x: 0,
373
- y: 0,
374
- width,
375
- height,
376
- strokeWidth: 1,
377
- fill: "none"
378
- }), /* @__PURE__ */ React4.createElement("line", {
379
- x1: 0,
380
- y1: 0,
381
- x2: width,
382
- y2: height,
383
- strokeWidth: 1
384
- }), /* @__PURE__ */ React4.createElement("line", {
385
- x1: 0,
386
- y1: height,
387
- x2: width,
388
- y2: 0,
389
- strokeWidth: 1
390
- })));
391
- } finally {
392
- _effect.f();
393
- }
394
- };
395
-
396
- // src/components/index.ts
397
- var DebugGraph = lazy(() => import("./DebugGraph-EDOH6R2G.mjs"));
398
- var DevtoolsOverviewContainer = lazy(() => import("./DevtoolsOverviewContainer-JXVZVPHN.mjs"));
399
- var SpaceGenerator = lazy(() => import("./SpaceGenerator-46TAISVE.mjs"));
400
-
401
- // src/capabilities/react-surface.tsx
402
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-debug/src/capabilities/react-surface.tsx";
403
- var isSpaceDebug = (data) => data?.type === `${meta.id}/space` && isSpace(data.space);
404
- var isGraphDebug = (data) => data?.graph instanceof Graph && typeof data?.root === "string";
405
- var useCurrentSpace = () => {
406
- const layout = useCapability(Capabilities2.Layout);
407
- const client = useCapability(ClientCapabilities.Client);
408
- const { spaceId } = parseId(layout.workspace);
409
- const space = spaceId ? client.spaces.get(spaceId) : void 0;
410
- return space;
411
- };
412
- var react_surface_default = ((context) => contributes(Capabilities2.ReactSurface, [
413
- createSurface({
414
- id: `${meta.id}/plugin-settings`,
415
- role: "article",
416
- filter: (data) => data.subject instanceof SettingsStore && data.subject.prefix === meta.id,
417
- component: ({ data: { subject } }) => /* @__PURE__ */ React5.createElement(DebugSettings, {
418
- settings: subject.value
419
- })
420
- }),
421
- createSurface({
422
- id: `${meta.id}/space`,
423
- role: "article",
424
- filter: (data) => isSpaceDebug(data.subject),
425
- component: ({ data }) => {
426
- const { dispatchPromise: dispatch } = useIntentDispatcher();
427
- const handleCreateObject = useCallback((objects) => {
428
- if (!isSpace(data.subject.space)) {
429
- return;
430
- }
431
- const collection = data.subject.space.state.get() === SpaceState.SPACE_READY && data.subject.space.properties[Collection.Collection.typename]?.target;
432
- if (!Obj2.instanceOf(Collection.Collection, collection)) {
433
- return;
434
- }
435
- objects.forEach((object) => {
436
- void dispatch(createIntent(SpaceAction.AddObject, {
437
- target: collection,
438
- object
439
- }));
440
- });
441
- }, [
442
- data.subject.space
443
- ]);
444
- return /* @__PURE__ */ React5.createElement(StackItem2.Content, null, /* @__PURE__ */ React5.createElement(SpaceGenerator, {
445
- space: data.subject.space,
446
- onCreateObjects: handleCreateObject
447
- }));
448
- }
449
- }),
450
- createSurface({
451
- id: `${meta.id}/app-graph`,
452
- role: "article",
453
- filter: (data) => isGraphDebug(data.subject),
454
- component: ({ data }) => /* @__PURE__ */ React5.createElement(DebugGraph, {
455
- graph: data.subject.graph,
456
- root: data.subject.root
457
- })
458
- }),
459
- createSurface({
460
- id: `${meta.id}/wireframe`,
461
- role: [
462
- "article",
463
- "section"
464
- ],
465
- position: "hoist",
466
- filter: (data) => {
467
- const settings = context.getCapability(Capabilities2.SettingsStore).getStore(meta.id).value;
468
- return Obj2.isObject(data.subject) && !!settings.wireframe;
469
- },
470
- component: ({ data, role }) => /* @__PURE__ */ React5.createElement(Wireframe, {
471
- label: `${role}:${name}`,
472
- object: data.subject,
473
- classNames: "row-span-2 overflow-hidden"
474
- })
475
- }),
476
- createSurface({
477
- id: `${meta.id}/object-debug`,
478
- role: "article",
479
- filter: (data) => data.subject === "debug" && Obj2.isObject(data.companionTo),
480
- component: ({ data }) => /* @__PURE__ */ React5.createElement(DebugObjectPanel, {
481
- object: data.companionTo
482
- })
483
- }),
484
- createSurface({
485
- id: `${meta.id}/devtools-overview`,
486
- role: "deck-companion--devtools",
487
- component: () => /* @__PURE__ */ React5.createElement(DevtoolsOverviewContainer, null)
488
- }),
489
- createSurface({
490
- id: `${meta.id}/status`,
491
- role: "status",
492
- component: () => /* @__PURE__ */ React5.createElement(DebugStatus, null)
493
- }),
494
- //
495
- // Devtools
496
- //
497
- createSurface({
498
- id: `${meta.id}/client/config`,
499
- role: "article",
500
- filter: (data) => data.subject === Devtools.Client.Config,
501
- component: () => /* @__PURE__ */ React5.createElement(ConfigPanel, {
502
- vaultSelector: false
503
- })
504
- }),
505
- createSurface({
506
- id: `${meta.id}/client/storage`,
507
- role: "article",
508
- filter: (data) => data.subject === Devtools.Client.Storage,
509
- component: () => /* @__PURE__ */ React5.createElement(StoragePanel, null)
510
- }),
511
- createSurface({
512
- id: `${meta.id}/client/logs`,
513
- role: "article",
514
- filter: (data) => data.subject === Devtools.Client.Logs,
515
- component: () => /* @__PURE__ */ React5.createElement(LoggingPanel, null)
516
- }),
517
- createSurface({
518
- id: `${meta.id}/client/diagnostics`,
519
- role: "article",
520
- filter: (data) => data.subject === Devtools.Client.Diagnostics,
521
- component: () => /* @__PURE__ */ React5.createElement(DiagnosticsPanel, null)
522
- }),
523
- createSurface({
524
- id: `${meta.id}/client/tracing`,
525
- role: "article",
526
- filter: (data) => data.subject === Devtools.Client.Tracing,
527
- component: () => /* @__PURE__ */ React5.createElement(TracingPanel, null)
528
- }),
529
- createSurface({
530
- id: `${meta.id}/halo/identity`,
531
- role: "article",
532
- filter: (data) => data.subject === Devtools.Halo.Identity,
533
- component: () => /* @__PURE__ */ React5.createElement(IdentityPanel, null)
534
- }),
535
- createSurface({
536
- id: `${meta.id}/halo/devices`,
537
- role: "article",
538
- filter: (data) => data.subject === Devtools.Halo.Devices,
539
- component: () => /* @__PURE__ */ React5.createElement(DeviceListPanel, null)
540
- }),
541
- createSurface({
542
- id: `${meta.id}/halo/keyring`,
543
- role: "article",
544
- filter: (data) => data.subject === Devtools.Halo.Keyring,
545
- component: () => /* @__PURE__ */ React5.createElement(KeyringPanel, null)
546
- }),
547
- createSurface({
548
- id: `${meta.id}/halo/credentials`,
549
- role: "article",
550
- filter: (data) => data.subject === Devtools.Halo.Credentials,
551
- component: () => {
552
- const space = useCurrentSpace();
553
- return /* @__PURE__ */ React5.createElement(CredentialsPanel, {
554
- space
555
- });
556
- }
557
- }),
558
- createSurface({
559
- id: `${meta.id}/echo/spaces`,
560
- role: "article",
561
- filter: (data) => data.subject === Devtools.Echo.Spaces,
562
- component: () => {
563
- const { dispatchPromise: dispatch } = useIntentDispatcher();
564
- const handleSelect = useCallback(() => dispatch(createIntent(LayoutAction.Open, {
565
- part: "main",
566
- subject: [
567
- Devtools.Echo.Space
568
- ]
569
- })), [
570
- dispatch
571
- ]);
572
- return /* @__PURE__ */ React5.createElement(SpaceListPanel, {
573
- onSelect: handleSelect
574
- });
575
- }
576
- }),
577
- createSurface({
578
- id: `${meta.id}/echo/space`,
579
- role: "article",
580
- filter: (data) => data.subject === Devtools.Echo.Space,
581
- component: () => {
582
- const space = useCurrentSpace();
583
- const { dispatchPromise: dispatch } = useIntentDispatcher();
584
- const handleSelect = useCallback(() => dispatch(createIntent(LayoutAction.Open, {
585
- part: "main",
586
- subject: [
587
- Devtools.Echo.Feeds
588
- ]
589
- })), [
590
- dispatch
591
- ]);
592
- return /* @__PURE__ */ React5.createElement(SpaceInfoPanel, {
593
- space,
594
- onSelectFeed: handleSelect,
595
- onSelectPipeline: handleSelect
596
- });
597
- }
598
- }),
599
- createSurface({
600
- id: `${meta.id}/echo/feeds`,
601
- role: "article",
602
- filter: (data) => data.subject === Devtools.Echo.Feeds,
603
- component: () => {
604
- const space = useCurrentSpace();
605
- return /* @__PURE__ */ React5.createElement(FeedsPanel, {
606
- space
607
- });
608
- }
609
- }),
610
- createSurface({
611
- id: `${meta.id}/echo/objects`,
612
- role: "article",
613
- filter: (data) => data.subject === Devtools.Echo.Objects,
614
- component: () => {
615
- const space = useCurrentSpace();
616
- return /* @__PURE__ */ React5.createElement(ObjectsPanel, {
617
- space
618
- });
619
- }
620
- }),
621
- createSurface({
622
- id: `${meta.id}/echo/schema`,
623
- role: "article",
624
- filter: (data) => data.subject === Devtools.Echo.Schema,
625
- component: () => {
626
- const space = useCurrentSpace();
627
- return /* @__PURE__ */ React5.createElement(SchemaPanel, {
628
- space
629
- });
630
- }
631
- }),
632
- createSurface({
633
- id: `${meta.id}/echo/automerge`,
634
- role: "article",
635
- filter: (data) => data.subject === Devtools.Echo.Automerge,
636
- component: () => {
637
- const space = useCurrentSpace();
638
- return /* @__PURE__ */ React5.createElement(AutomergePanel, {
639
- space
640
- });
641
- }
642
- }),
643
- createSurface({
644
- id: `${meta.id}/echo/queues`,
645
- role: "article",
646
- filter: (data) => data.subject === Devtools.Echo.Queues,
647
- component: () => /* @__PURE__ */ React5.createElement(QueuesPanel, null)
648
- }),
649
- createSurface({
650
- id: `${meta.id}/echo/members`,
651
- role: "article",
652
- filter: (data) => data.subject === Devtools.Echo.Members,
653
- component: () => {
654
- const space = useCurrentSpace();
655
- return /* @__PURE__ */ React5.createElement(MembersPanel, {
656
- space
657
- });
658
- }
659
- }),
660
- createSurface({
661
- id: `${meta.id}/echo/metadata`,
662
- role: "article",
663
- filter: (data) => data.subject === Devtools.Echo.Metadata,
664
- component: () => /* @__PURE__ */ React5.createElement(MetadataPanel, null)
665
- }),
666
- createSurface({
667
- id: `${meta.id}/mesh/signal`,
668
- role: "article",
669
- filter: (data) => data.subject === Devtools.Mesh.Signal,
670
- component: () => /* @__PURE__ */ React5.createElement(SignalPanel, null)
671
- }),
672
- createSurface({
673
- id: `${meta.id}/mesh/swarm`,
674
- role: "article",
675
- filter: (data) => data.subject === Devtools.Mesh.Swarm,
676
- component: () => /* @__PURE__ */ React5.createElement(SwarmPanel, null)
677
- }),
678
- createSurface({
679
- id: `${meta.id}/mesh/network`,
680
- role: "article",
681
- filter: (data) => data.subject === Devtools.Mesh.Network,
682
- component: () => {
683
- const space = useCurrentSpace();
684
- return /* @__PURE__ */ React5.createElement(NetworkPanel, {
685
- space
686
- });
687
- }
688
- }),
689
- // TODO(wittjosiah): Remove?
690
- // createSurface({
691
- // id: `${meta.id}/agent/dashboard`,
692
- // role: 'article',
693
- // filter: (data): data is any => data.subject === Devtools.Agent.Dashboard,
694
- // component: () => <DashboardPanel />,
695
- // }),
696
- createSurface({
697
- id: `${meta.id}/edge/dashboard`,
698
- role: "article",
699
- filter: (data) => data.subject === Devtools.Edge.Dashboard,
700
- component: () => /* @__PURE__ */ React5.createElement(EdgeDashboardPanel, null)
701
- }),
702
- createSurface({
703
- id: `${meta.id}/edge/workflows`,
704
- role: "article",
705
- filter: (data) => data.subject === Devtools.Edge.Workflows,
706
- component: () => {
707
- const space = useCurrentSpace();
708
- return /* @__PURE__ */ React5.createElement(WorkflowPanel, {
709
- space
710
- });
711
- }
712
- }),
713
- createSurface({
714
- id: `${meta.id}/edge/traces`,
715
- role: "article",
716
- filter: (data) => data.subject === Devtools.Edge.Traces,
717
- component: () => {
718
- const space = useCurrentSpace();
719
- return /* @__PURE__ */ React5.createElement(InvocationTraceContainer, {
720
- space,
721
- detailAxis: "block"
722
- });
723
- }
724
- }),
725
- createSurface({
726
- id: `${meta.id}/edge/testing`,
727
- role: "article",
728
- filter: (data) => data.subject === Devtools.Edge.Testing,
729
- component: () => {
730
- const { dispatchPromise: dispatch } = useIntentDispatcher();
731
- const onSpaceCreate = useCallback(async (space) => {
732
- await space.waitUntilReady();
733
- await dispatch(createIntent(SpaceAction.Migrate, {
734
- space
735
- }));
736
- await space.db.flush();
737
- }, [
738
- dispatch
739
- ]);
740
- const onScriptPluginOpen = useCallback(async (space) => {
741
- await space.waitUntilReady();
742
- const result = await dispatch(Function.pipe(createIntent(ScriptAction.CreateScript, {
743
- space
744
- }), chain(SpaceAction.AddObject, {
745
- target: space
746
- })));
747
- log2.info("script created", {
748
- result
749
- }, {
750
- F: __dxlog_file2,
751
- L: 405,
752
- S: void 0,
753
- C: (f, a) => f(...a)
754
- });
755
- await dispatch(createIntent(LayoutAction.Open, {
756
- part: "main",
757
- subject: [
758
- `${space.id}:${result.data?.object.id}`
759
- ]
760
- }));
761
- }, [
762
- dispatch
763
- ]);
764
- return /* @__PURE__ */ React5.createElement(TestingPanel, {
765
- onSpaceCreate,
766
- onScriptPluginOpen
767
- });
768
- }
769
- })
770
- ]));
771
- export {
772
- react_surface_default as default
773
- };
774
- //# sourceMappingURL=react-surface-2SNVZDEA.mjs.map