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

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